X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcputop.c;h=7df54696afdcb186159bab40ca6b34ba5b37ec73;hb=906c08f6245d165f7ccc3d0336714b425169d406;hp=eb7afb3e76a799f758b3d2b99ad00dceccf162a7;hpb=aa15ac1c699ea5f76f6c26fb14ab22f725ecc293;p=lttngtop.git diff --git a/src/cputop.c b/src/cputop.c index eb7afb3..7df5469 100644 --- a/src/cputop.c +++ b/src/cputop.c @@ -22,7 +22,7 @@ #include "cputop.h" void update_cputop_data(unsigned long timestamp, int64_t cpu, int prev_pid, - int next_pid, char *prev_comm, char *next_comm) + int next_pid, char *prev_comm, char *next_comm, char *hostname) { struct cputime *tmpcpu; unsigned long elapsed; @@ -33,12 +33,14 @@ void update_cputop_data(unsigned long timestamp, int64_t cpu, int prev_pid, elapsed = timestamp - tmpcpu->task_start; tmpcpu->current_task->totalcpunsec += elapsed; tmpcpu->current_task->threadstotalcpunsec += elapsed; - if (tmpcpu->current_task->pid != tmpcpu->current_task->tid) + if (tmpcpu->current_task->threadparent && + tmpcpu->current_task->pid != tmpcpu->current_task->tid) tmpcpu->current_task->threadparent->threadstotalcpunsec += elapsed; } if (next_pid != 0) - tmpcpu->current_task = get_proc(<tngtop, next_pid, next_comm, timestamp); + tmpcpu->current_task = get_proc(<tngtop, next_pid, next_comm, + timestamp, hostname); else tmpcpu->current_task = NULL; @@ -48,11 +50,12 @@ void update_cputop_data(unsigned long timestamp, int64_t cpu, int prev_pid, enum bt_cb_ret handle_sched_switch(struct bt_ctf_event *call_data, void *private_data) { - const struct definition *scope; + const struct bt_definition *scope; unsigned long timestamp; uint64_t cpu_id; char *prev_comm, *next_comm; int prev_tid, next_tid; + char *hostname; timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) @@ -87,11 +90,12 @@ enum bt_cb_ret handle_sched_switch(struct bt_ctf_event *call_data, fprintf(stderr, "Missing next_tid context info\n"); goto error; } + hostname = get_context_hostname(call_data); cpu_id = get_cpu_id(call_data); update_cputop_data(timestamp, cpu_id, prev_tid, next_tid, - prev_comm, next_comm); + prev_comm, next_comm, hostname); return BT_CB_OK; @@ -102,7 +106,7 @@ error: enum bt_cb_ret handle_sched_process_free(struct bt_ctf_event *call_data, void *private_data) { - const struct definition *scope; + const struct bt_definition *scope; unsigned long timestamp; char *comm; int tid;