X-Git-Url: https://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Fcommon.c;h=d9ec95b33281f07628cece74325414109647fac5;hp=f0b7af064d6a6cd4cd954c88aff14f5d38e29e57;hb=1dec520a9e8e0654fa7fab2310a0191b2836d424;hpb=b093de8aa1ac7555d20b3aa4227d4675b39ef008 diff --git a/src/common.c b/src/common.c index f0b7af0..d9ec95b 100644 --- a/src/common.c +++ b/src/common.c @@ -16,10 +16,90 @@ * MA 02111-1307, USA. */ +#include #include #include #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; +} + +uint64_t get_context_tid(struct bt_ctf_event *event) +{ + struct definition *scope; + uint64_t tid; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + tid = bt_ctf_get_int64(bt_ctf_get_field(event, + scope, "_tid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing tid context info\n"); + return -1ULL; + } + + return tid; +} + +uint64_t get_context_pid(struct bt_ctf_event *event) +{ + struct definition *scope; + uint64_t pid; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + pid = bt_ctf_get_int64(bt_ctf_get_field(event, + scope, "_pid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing pid context info\n"); + return -1ULL; + } + + return pid; +} + +uint64_t get_context_ppid(struct bt_ctf_event *event) +{ + struct definition *scope; + uint64_t ppid; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + ppid = bt_ctf_get_int64(bt_ctf_get_field(event, + scope, "_ppid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing ppid context info\n"); + return -1ULL; + } + + return ppid; +} + +char *get_context_comm(struct bt_ctf_event *event) +{ + struct definition *scope; + char *comm; + + scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); + comm = bt_ctf_get_char_array(bt_ctf_get_field(event, + scope, "_procname")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing comm context info\n"); + return NULL; + } + + return comm; +} + struct processtop *find_process_tid(struct lttngtop *ctx, int tid, char *comm) { gint i;