wrapper to access context fields
[lttngtop.git] / src / common.c
index f0b7af064d6a6cd4cd954c88aff14f5d38e29e57..d9ec95b33281f07628cece74325414109647fac5 100644 (file)
  * MA 02111-1307, USA.
  */
 
+#include <babeltrace/ctf/events.h>
 #include <stdlib.h>
 #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;
+}
+
+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;
This page took 0.023106 seconds and 4 git commands to generate.