X-Git-Url: http://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Fcputop.c;h=65cafb5fdb992703a01c0d72422207be724caa45;hp=2cf1ea25880ae8bd46e44684eded71004bd8c136;hb=1d2391b4818d470a92437e77892b0c5d7c10a466;hpb=d67167cde319ac9d257f5b59b5a4664e558f4cb4 diff --git a/src/cputop.c b/src/cputop.c index 2cf1ea2..65cafb5 100644 --- a/src/cputop.c +++ b/src/cputop.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Julien Desfossez + * Copyright (C) 2011-2012 Julien Desfossez * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License Version 2 as @@ -10,10 +10,9 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include @@ -23,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; @@ -34,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; @@ -49,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) { - 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 = NULL; timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) @@ -92,7 +94,7 @@ enum bt_cb_ret handle_sched_switch(struct bt_ctf_event *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; @@ -103,7 +105,7 @@ error: enum bt_cb_ret handle_sched_process_free(struct bt_ctf_event *call_data, void *private_data) { - struct definition *scope; + const struct bt_definition *scope; unsigned long timestamp; char *comm; int tid; @@ -124,7 +126,7 @@ enum bt_cb_ret handle_sched_process_free(struct bt_ctf_event *call_data, tid = bt_ctf_get_int64(bt_ctf_get_field(call_data, scope, "_tid")); if (bt_ctf_field_get_error()) { - fprintf(stderr, "Missing tid context info\n"); + fprintf(stderr, "Missing tid field\n"); goto error; }