return ppid;
}
+uint64_t get_context_vtid(const struct bt_ctf_event *event)
+{
+ const struct definition *scope;
+ uint64_t vtid;
+
+ scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
+ vtid = bt_ctf_get_int64(bt_ctf_get_field(event,
+ scope, "_vtid"));
+ if (bt_ctf_field_get_error()) {
+ return -1ULL;
+ }
+
+ return vtid;
+}
+
+uint64_t get_context_vpid(const struct bt_ctf_event *event)
+{
+ const struct definition *scope;
+ uint64_t vpid;
+
+ scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
+ vpid = bt_ctf_get_int64(bt_ctf_get_field(event,
+ scope, "_vpid"));
+ if (bt_ctf_field_get_error()) {
+ return -1ULL;
+ }
+
+ return vpid;
+}
+
+uint64_t get_context_vppid(const struct bt_ctf_event *event)
+{
+ const struct definition *scope;
+ uint64_t vppid;
+
+ scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
+ vppid = bt_ctf_get_int64(bt_ctf_get_field(event,
+ scope, "_vppid"));
+ if (bt_ctf_field_get_error()) {
+ return -1ULL;
+ }
+
+ return vppid;
+}
+
char *get_context_comm(const struct bt_ctf_event *event)
{
const struct bt_definition *scope;
}
struct processtop* update_proc(struct processtop* proc, int pid, int tid,
- int ppid, char *comm)
+ int ppid, int vpid, int vtid, int vppid, char *comm)
{
if (proc) {
proc->pid = pid;
proc->tid = tid;
proc->ppid = ppid;
+ proc->vpid = vpid;
+ proc->vtid = vtid;
+ proc->vppid = vppid;
if (strcmp(proc->comm, comm) != 0) {
free(proc->comm);
proc->comm = strdup(comm);
const struct bt_definition *scope;
struct processtop *proc;
unsigned long timestamp;
- int64_t pid, tid;
+ int64_t pid, tid, ppid, vtid, vpid, vppid;
char *procname;
timestamp = bt_ctf_get_timestamp(call_data);
fprintf(stderr, "Missing pid context info\n");
goto error;
}
+ ppid = bt_ctf_get_int64(bt_ctf_get_field(call_data,
+ scope, "_ppid"));
+ if (bt_ctf_field_get_error()) {
+ fprintf(stderr, "Missing pid context info\n");
+ goto error;
+ }
- scope = bt_ctf_get_top_level_scope(call_data,
- BT_EVENT_FIELDS);
tid = bt_ctf_get_int64(bt_ctf_get_field(call_data,
scope, "_tid"));
if (bt_ctf_field_get_error()) {
goto error;
}
+ vtid = bt_ctf_get_int64(bt_ctf_get_field(call_data,
+ scope, "_vtid"));
+ if (bt_ctf_field_get_error()) {
+ fprintf(stderr, "Missing vtid context info\n");
+ goto error;
+ }
+ vpid = bt_ctf_get_int64(bt_ctf_get_field(call_data,
+ scope, "_vpid"));
+ if (bt_ctf_field_get_error()) {
+ fprintf(stderr, "Missing vtid context info\n");
+ goto error;
+ }
+ vppid = bt_ctf_get_int64(bt_ctf_get_field(call_data,
+ scope, "_vppid"));
+ if (bt_ctf_field_get_error()) {
+ fprintf(stderr, "Missing vtid context info\n");
+ goto error;
+ }
+
/*
* FIXME
* I first tried with bt_ctf_get_string but doesn`t work at all
proc = find_process_tid(<tngtop, tid, procname);
if (proc == NULL)
proc = add_proc(<tngtop, tid, procname, timestamp);
+ update_proc(proc, pid, tid, ppid, vpid, vtid, vppid, procname);
free(proc->comm);
proc->comm = strdup(procname);