function to extract cpu_id
authorJulien Desfossez <julien.desfossez@efficios.com>
Thu, 23 Feb 2012 01:58:17 +0000 (20:58 -0500)
committerJulien Desfossez <julien.desfossez@efficios.com>
Thu, 23 Feb 2012 01:58:17 +0000 (20:58 -0500)
Signed-off-by: Julien Desfossez <julien.desfossez@efficios.com>
src/common.c
src/common.h
src/cputop.c
src/iostreamtop.c
src/lttngtop.c
src/lttngtoptypes.h

index f0b7af064d6a6cd4cd954c88aff14f5d38e29e57..f628ed56d5961673017aef03c3f256913b23f080 100644 (file)
 #include <string.h>
 #include "common.h"
 
+uint64_t get_cpu_id(struct bt_ctf_event *event)
+{
+       struct definition *scope;
+       uint64_t cpu_id;
+
+       scope = bt_ctf_get_top_level_scope(event, BT_STREAM_PACKET_CONTEXT);
+       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(event, scope, "cpu_id"));
+       if (bt_ctf_field_get_error()) {
+               fprintf(stderr, "[error] get cpu_id\n");
+               return -1ULL;
+       }
+
+       return cpu_id;
+}
+
 struct processtop *find_process_tid(struct lttngtop *ctx, int tid, char *comm)
 {
        gint i;
index e81256c65915efa8c4248c580db42e0e98f46748..8be30bbb1951afe6e0fefd52fcf80b6a4cc4c845 100644 (file)
@@ -52,4 +52,7 @@ struct perfcounter *add_perf_counter(GPtrArray *perf, GQuark quark,
 struct perfcounter *get_perf_counter(const char *name, struct processtop *proc,
                struct cputime *cpu);
 
+/* common field access functions */
+uint64_t get_cpu_id(struct bt_ctf_event *event);
+
 #endif /* _COMMON_H */
index 2ade0db7cbeff18c58348ec77645e620891de94c..2cf1ea25880ae8bd46e44684eded71004bd8c136 100644 (file)
@@ -89,14 +89,7 @@ enum bt_cb_ret handle_sched_switch(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       scope = bt_ctf_get_top_level_scope(call_data,
-                       BT_STREAM_PACKET_CONTEXT);
-       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(call_data,
-                               scope, "cpu_id"));
-       if (bt_ctf_field_get_error()) {
-               fprintf(stderr, "Missing cpu_id context info\n");
-               goto error;
-       }
+       cpu_id = get_cpu_id(call_data);
 
        update_cputop_data(timestamp, cpu_id, prev_tid, next_tid,
                        prev_comm, next_comm);
index a1c78a98a63e13329eaafd0b342727f3b5894cdd..dfffd1d81512e3b993a2ca4201d62a7e6bbde2b1 100644 (file)
@@ -101,7 +101,7 @@ void show_table(GPtrArray *tab)
 }
 
 int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm,
-               unsigned long timestamp, int cpu_id, int ret)
+               unsigned long timestamp, uint64_t cpu_id, int ret)
 {
        struct processtop *tmp;
        struct files *tmpfile;
@@ -134,7 +134,7 @@ int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm,
        return err;
 }
 
-struct syscalls *create_syscall_info(unsigned int type, unsigned int cpu_id,
+struct syscalls *create_syscall_info(unsigned int type, uint64_t cpu_id,
                unsigned int tid, int fd)
 {
        struct syscalls *syscall_info;
@@ -171,7 +171,7 @@ enum bt_cb_ret handle_exit_syscall(struct bt_ctf_event *call_data,
        unsigned long timestamp;
        char *comm;
        uint64_t ret, tid;
-       int64_t cpu_id;
+       uint64_t cpu_id;
 
        timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
@@ -202,14 +202,7 @@ enum bt_cb_ret handle_exit_syscall(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       scope = bt_ctf_get_top_level_scope(call_data,
-                       BT_STREAM_PACKET_CONTEXT);
-       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(call_data,
-                               scope, "cpu_id"));
-       if (bt_ctf_field_get_error()) {
-               fprintf(stderr, "Missing cpu_id context info\n");
-               goto error;
-       }
+       cpu_id = get_cpu_id(call_data);
 
        /*
         * if we encounter an exit_syscall and
@@ -257,14 +250,7 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       scope = bt_ctf_get_top_level_scope(call_data,
-                       BT_STREAM_PACKET_CONTEXT);
-       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(call_data,
-                               scope, "cpu_id"));
-       if (bt_ctf_field_get_error()) {
-               fprintf(stderr, "Missing cpu_id context info\n");
-               goto error;
-       }
+       cpu_id = get_cpu_id(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -317,14 +303,7 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       scope = bt_ctf_get_top_level_scope(call_data,
-                       BT_STREAM_PACKET_CONTEXT);
-       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(call_data,
-                               scope, "cpu_id"));
-       if (bt_ctf_field_get_error()) {
-               fprintf(stderr, "Missing cpu_id context info\n");
-               goto error;
-       }
+       cpu_id = get_cpu_id(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -379,14 +358,7 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       scope = bt_ctf_get_top_level_scope(call_data,
-                       BT_STREAM_PACKET_CONTEXT);
-       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(call_data,
-                               scope, "cpu_id"));
-       if (bt_ctf_field_get_error()) {
-               fprintf(stderr, "Missing cpu_id context info\n");
-               goto error;
-       }
+       cpu_id = get_cpu_id(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
index 8dc96ae33e27be3d7732313f79074af225511b9f..6bb03ac760c20c1a3f9daa121475af0c7fd72b70 100644 (file)
@@ -227,17 +227,10 @@ end:
 
 void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
 {
-       struct definition *scope;
-       uint64_t cpu_id;
        struct cputime *cpu;
+       struct definition *scope;
 
-       scope = bt_ctf_get_top_level_scope(event, BT_STREAM_PACKET_CONTEXT);
-       cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(event, scope, "cpu_id"));
-       if (bt_ctf_field_get_error()) {
-               fprintf(stderr, "[error] get cpu_id\n");
-               goto end;
-       }
-       cpu = get_cpu(cpu_id);
+       cpu = get_cpu(get_cpu_id(event));
 
        scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
        extract_perf_counter_scope(event, scope, proc, cpu);
@@ -247,9 +240,6 @@ void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
 
        scope = bt_ctf_get_top_level_scope(event, BT_EVENT_CONTEXT);
        extract_perf_counter_scope(event, scope, proc, cpu);
-
-end:
-       return;
 }
 
 enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
index 7e105f91a79dfca38692863413e141aeeff63f54..480d122f57826e428900ca13d48e82b6b4997408 100644 (file)
@@ -154,7 +154,7 @@ struct vmas {
 struct syscalls {
        unsigned int id;
        unsigned long count;
-       unsigned int cpu_id;
+       uint64_t cpu_id;
        unsigned int type;
        unsigned int tid;
        unsigned int fd;
This page took 0.037234 seconds and 4 git commands to generate.