hal: Branch 'master'
Richard Hughes
hughsient at kemper.freedesktop.org
Thu Nov 30 13:44:19 PST 2006
hald/.gitignore | 1 +
hald/hald.c | 13 ++++++++++++-
hald/massif-hald.sh | 29 +++++++++++++++++++++++++++++
3 files changed, 42 insertions(+), 1 deletion(-)
New commits:
diff-tree e3996a7b5fa880657458494ef4a4f99ed6d4fe5e (from 0aa15edea346a236441cf8bc2a5e7e53f8da7398)
Author: Richard Hughes <richard at hughsie.com>
Date: Thu Nov 30 21:42:29 2006 +0000
add --retain-privileges so we can use massif
I've been using massif, with local HAL patches to make it work -
I've found you can't drop privs, else massif won't write the output
files.
The default of dropping privs is the same as before.
diff --git a/hald/.gitignore b/hald/.gitignore
index b5a7e69..f70abcb 100644
--- a/hald/.gitignore
+++ b/hald/.gitignore
@@ -9,3 +9,4 @@ hald_marshal.h
*.o
*~
.local-fdi
+massif.*
diff --git a/hald/hald.c b/hald/hald.c
index 44ee2bf..4e3c8da 100644
--- a/hald/hald.c
+++ b/hald/hald.c
@@ -213,6 +213,7 @@ usage ()
"\n"
" --daemon=yes|no Become a daemon\n"
" --verbose=yes|no Print out debug (overrides HALD_VERBOSE)\n"
+ " --retain-privileges Retain privileges (for debugging)\n"
" --use-syslog Print out debug messages to syslog instead of\n"
" stderr. Use this option to get debug messages\n"
" if hald runs as a daemon.\n"
@@ -232,6 +233,9 @@ usage ()
/** If #TRUE, we will daemonize */
static dbus_bool_t opt_become_daemon = TRUE;
+/** If #TRUE, we will retain privs */
+static dbus_bool_t opt_retain_privileges = FALSE;
+
/** If #TRUE, we will spew out debug */
dbus_bool_t hald_is_verbose = FALSE;
dbus_bool_t hald_use_syslog = FALSE;
@@ -408,6 +412,7 @@ main (int argc, char *argv[])
{"exit-after-probing", 0, NULL, 0},
{"daemon", 1, NULL, 0},
{"verbose", 1, NULL, 0},
+ {"retain-privileges", 0, NULL, 0},
{"use-syslog", 0, NULL, 0},
{"help", 0, NULL, 0},
{"version", 0, NULL, 0},
@@ -449,6 +454,8 @@ main (int argc, char *argv[])
usage ();
return 1;
}
+ } else if (strcmp (opt, "retain-privileges") == 0) {
+ opt_retain_privileges = TRUE;
} else if (strcmp (opt, "use-syslog") == 0) {
hald_use_syslog = TRUE;
}
@@ -581,7 +588,11 @@ main (int argc, char *argv[])
/* initialize privileged operating system specific parts */
osspec_privileged_init ();
- drop_privileges(0);
+ /* sometimes we don't want to drop root privs, for instance
+ if we are profiling memory usage */
+ if (opt_retain_privileges == FALSE) {
+ drop_privileges(0);
+ }
/* initialize operating system specific parts */
osspec_init ();
diff --git a/hald/massif-hald.sh b/hald/massif-hald.sh
new file mode 100755
index 0000000..f53396c
--- /dev/null
+++ b/hald/massif-hald.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+export HALD_RUNNER_PATH=`pwd`/linux:`pwd`/linux/probing:`pwd`/linux/addons:`pwd`/.:`pwd`/../tools:`pwd`/../tools/linux
+export PATH=`pwd`/../hald-runner:$PATH
+
+if [ "$1" = "--skip-fdi-install" ] ; then
+ shift
+else
+ rm -rf .local-fdi
+ make -C ../fdi install DESTDIR=`pwd`/.local-fdi prefix=/
+fi
+export HAL_FDI_SOURCE_PREPROBE=.local-fdi/share/hal/fdi/preprobe
+export HAL_FDI_SOURCE_INFORMATION=.local-fdi/share/hal/fdi/information
+export HAL_FDI_SOURCE_POLICY=.local-fdi/share/hal/fdi/policy
+
+#delete all old memory outputs, else we get hundreds
+rm massif.*
+
+valgrind --tool=massif --format=html --depth=10 \
+ --alloc-fn=g_malloc --alloc-fn=g_realloc \
+ --alloc-fn=g_try_malloc --alloc-fn=g_malloc0 --alloc-fn=g_mem_chunk_alloc \
+ ./hald --daemon=no --verbose=yes --retain-privileges --exit-after-probing
+
+#massif uses the pid file, which is hard to process.
+mv massif.*.html massif.html
+mv massif.*.ps massif.ps
+#convert to pdf, and make readable by normal users
+ps2pdf massif.ps massif.pdf
+chmod a+r massif.*
More information about the hal-commit
mailing list