[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/5] trace-cmd: Use tracing directory to count CPUs
From: |
Yoshihiro YUNOMAE |
Subject: |
[Qemu-devel] [PATCH 2/5] trace-cmd: Use tracing directory to count CPUs |
Date: |
Wed, 22 Aug 2012 17:43:12 +0900 |
User-agent: |
StGIT/0.14.3 |
From: Masami Hiramatsu <address@hidden>
Count debugfs/tracing/per_cpu/cpu* to determine the
number of CPUs.
Signed-off-by: Masami Hiramatsu <address@hidden>
Signed-off-by: Yoshihiro YUNOMAE <address@hidden>
---
trace-record.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/trace-record.c b/trace-record.c
index 9dc18a9..ed18951 100644
--- a/trace-record.c
+++ b/trace-record.c
@@ -1179,6 +1179,41 @@ static void expand_event_list(void)
}
}
+static int count_tracingdir_cpus(void)
+{
+ char *tracing_dir = NULL;
+ char *percpu_dir = NULL;
+ struct dirent **namelist;
+ int count = 0, n;
+
+ /* Count cpus in per_cpu directory */
+ tracing_dir = tracecmd_find_tracing_dir();
+ if (!tracing_dir)
+ return 0;
+ percpu_dir = malloc_or_die(strlen(tracing_dir) + 9);
+ if (!percpu_dir)
+ goto err;
+
+ sprintf(percpu_dir, "%s/per_cpu", tracing_dir);
+
+ n = scandir(percpu_dir, &namelist, NULL, alphasort);
+ if (n > 0) {
+ while (n--) {
+ if (strncmp("cpu", namelist[n]->d_name, 3) == 0)
+ count++;
+ free(namelist[n]);
+ }
+ free(namelist);
+ }
+
+ if (percpu_dir)
+ free(percpu_dir);
+err:
+ if (tracing_dir)
+ free(tracing_dir);
+ return count;
+}
+
static int count_cpus(void)
{
FILE *fp;
@@ -1189,6 +1224,12 @@ static int count_cpus(void)
size_t n;
int r;
+ cpus = count_tracingdir_cpus();
+ if (cpus > 0)
+ return cpus;
+
+ warning("failed to use tracing_dir to determine number of CPUS");
+
cpus = sysconf(_SC_NPROCESSORS_CONF);
if (cpus > 0)
return cpus;
[Qemu-devel] [PATCH 3/5] trace-cmd: Support trace-agent of virtio-trace, Yoshihiro YUNOMAE, 2012/08/22
[Qemu-devel] [PATCH 4/5] trace-cmd: Add non-blocking option for open() and splice_read(), Yoshihiro YUNOMAE, 2012/08/22
[Qemu-devel] [PATCH 5/5] trace-cmd: Use polling function, Yoshihiro YUNOMAE, 2012/08/22