All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf_event: mount debugfs automatically
@ 2009-12-28  5:10 Xiao Guangrong
  2009-12-28  7:44 ` Ingo Molnar
  0 siblings, 1 reply; 10+ messages in thread
From: Xiao Guangrong @ 2009-12-28  5:10 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, Paul Mackerras, Frederic Weisbecker, LKML

Mount debugfs automatically if it's not mounted, umount it
when programme exit

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 tools/perf/perf.c         |   10 +++++++++-
 tools/perf/util/debugfs.c |   16 +++++++---------
 tools/perf/util/debugfs.h |    2 +-
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/tools/perf/perf.c b/tools/perf/perf.c
index 873e55f..ee84fc1 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -388,7 +388,7 @@ static int run_argv(int *argcp, const char ***argv)
 /* mini /proc/mounts parser: searching for "^blah /mount/point debugfs" */
 static void get_debugfs_mntpt(void)
 {
-	const char *path = debugfs_find_mountpoint();
+	const char *path = debugfs_mount(NULL);
 
 	if (path)
 		strncpy(debugfs_mntpt, path, sizeof(debugfs_mntpt));
@@ -396,6 +396,11 @@ static void get_debugfs_mntpt(void)
 		debugfs_mntpt[0] = '\0';
 }
 
+static void umount_debugfs(void)
+{
+	debugfs_umount();
+}
+
 int main(int argc, const char **argv)
 {
 	const char *cmd;
@@ -405,6 +410,9 @@ int main(int argc, const char **argv)
 		cmd = "perf-help";
 	/* get debugfs mount point from /proc/mounts */
 	get_debugfs_mntpt();
+
+	atexit(umount_debugfs);
+
 	/*
 	 * "perf-xxxx" is the same as "perf xxxx", but we obviously:
 	 *
diff --git a/tools/perf/util/debugfs.c b/tools/perf/util/debugfs.c
index 06b73ee..1f805fd 100644
--- a/tools/perf/util/debugfs.c
+++ b/tools/perf/util/debugfs.c
@@ -106,16 +106,14 @@ int debugfs_valid_entry(const char *path)
 	return 0;
 }
 
-/* mount the debugfs somewhere */
+/* mount the debugfs somewhere if it's not mounted */
 
-int debugfs_mount(const char *mountpoint)
+char *debugfs_mount(const char *mountpoint)
 {
-	char mountcmd[128];
-
 	/* see if it's already mounted */
 	if (debugfs_find_mountpoint()) {
 		debugfs_premounted = 1;
-		return 0;
+		return debugfs_mountpoint;
 	}
 
 	/* if not mounted and no argument */
@@ -127,13 +125,13 @@ int debugfs_mount(const char *mountpoint)
 			mountpoint = "/sys/kernel/debug";
 	}
 
+	if (mount(NULL, mountpoint, "debugfs", 0, NULL) < 0)
+		return NULL;
+
 	/* save the mountpoint */
 	strncpy(debugfs_mountpoint, mountpoint, sizeof(debugfs_mountpoint));
 
-	/* mount it */
-	snprintf(mountcmd, sizeof(mountcmd),
-		 "/bin/mount -t debugfs debugfs %s", mountpoint);
-	return system(mountcmd);
+	return debugfs_mountpoint;
 }
 
 /* umount the debugfs */
diff --git a/tools/perf/util/debugfs.h b/tools/perf/util/debugfs.h
index 3cd14f9..83a0287 100644
--- a/tools/perf/util/debugfs.h
+++ b/tools/perf/util/debugfs.h
@@ -15,7 +15,7 @@
 extern const char *debugfs_find_mountpoint(void);
 extern int debugfs_valid_mountpoint(const char *debugfs);
 extern int debugfs_valid_entry(const char *path);
-extern int debugfs_mount(const char *mountpoint);
+extern char *debugfs_mount(const char *mountpoint);
 extern int debugfs_umount(void);
 extern int debugfs_write(const char *entry, const char *value);
 extern int debugfs_read(const char *entry, char *buffer, size_t size);
-- 
1.6.1.2



^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2009-12-28 10:12 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-28  5:10 [PATCH] perf_event: mount debugfs automatically Xiao Guangrong
2009-12-28  7:44 ` Ingo Molnar
2009-12-28  8:02   ` Xiao Guangrong
2009-12-28  8:06     ` Ingo Molnar
2009-12-28  8:47       ` [PATCH v2 1/3] perf tools: " Xiao Guangrong
2009-12-28  8:48         ` [PATCH 2/3] perf trace: cleanup find_debugfs() Xiao Guangrong
2009-12-28  8:49           ` [PATCH 3/3] perf trace: fix forgetting close file/dir Xiao Guangrong
2009-12-28 10:09             ` [tip:perf/core] perf trace: Fix forgotten close of file/dir tip-bot for Xiao Guangrong
2009-12-28 10:09           ` [tip:perf/core] perf trace: Clean up find_debugfs() tip-bot for Xiao Guangrong
2009-12-28 10:09         ` [tip:perf/core] perf tools: Mount debugfs automatically tip-bot for Xiao Guangrong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.