X-Git-Url: http://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Flttngtop.c;h=6b41e65049615b77d242d0c36edc5026e1217990;hp=374f3e90c8d578ec71d6502f53438fd2d194c5c6;hb=b301de1a2cdfbf5324a7b17fa41de9439c9f67dc;hpb=12a91e9dd6c9cc18989351762d19ed1e69fe627c diff --git a/src/lttngtop.c b/src/lttngtop.c index 374f3e9..6b41e65 100644 --- a/src/lttngtop.c +++ b/src/lttngtop.c @@ -238,9 +238,28 @@ enum bt_cb_ret print_timestamp(struct bt_ctf_event *call_data, void *private_dat } hostname = get_context_hostname(call_data); - if (opt_tid || opt_hostname) - if (!lookup_filter_tid_list(pid)) - goto end; + if (opt_tid || opt_hostname) { + if (!lookup_filter_tid_list(pid)) { + /* To display when a process of ours in getting scheduled in */ + if (strcmp(bt_ctf_event_name(call_data), "sched_switch") == 0) { + int next_tid; + + scope = bt_ctf_get_top_level_scope(call_data, + BT_EVENT_FIELDS); + next_tid = bt_ctf_get_int64(bt_ctf_get_field(call_data, + scope, "_next_tid")); + if (bt_ctf_field_get_error()) { + fprintf(stderr, "Missing next_tid field\n"); + goto error; + } + if (!lookup_filter_tid_list(next_tid)) { + goto end; + } + } else { + goto end; + } + } + } cpu_id = get_cpu_id(call_data); procname = get_context_comm(call_data); @@ -258,10 +277,17 @@ enum bt_cb_ret print_timestamp(struct bt_ctf_event *call_data, void *private_dat * print the newline in this case */ if (last_textdump_print_newline == 0) printf("\n"); - printf("%02d:%02d:%02d.%09" PRIu64 " (%s) (cpu %d) [%s (%d)] %s (", - start.tm_hour, start.tm_min, start.tm_sec, - ts_nsec_start, hostname, cpu_id, procname, pid, - bt_ctf_event_name(call_data)); + if (hostname) { + printf("%02d:%02d:%02d.%09" PRIu64 " (%s) (cpu %d) [%s (%d)] %s (", + start.tm_hour, start.tm_min, start.tm_sec, + ts_nsec_start, hostname, cpu_id, procname, pid, + bt_ctf_event_name(call_data)); + } else { + printf("%02d:%02d:%02d.%09" PRIu64 " (cpu %d) [%s (%d)] %s (", + start.tm_hour, start.tm_min, start.tm_sec, + ts_nsec_start, cpu_id, procname, pid, + bt_ctf_event_name(call_data)); + } print_fields(call_data); printf(") "); if (strncmp(bt_ctf_event_name(call_data), "sys_", 4) != 0) { @@ -655,7 +681,6 @@ static int parse_options(int argc, char **argv) opt_textdump = 1; break; case OPT_CHILD: - opt_textdump = 1; opt_child = 1; break; case OPT_PID: @@ -735,6 +760,10 @@ void iter_trace(struct bt_context *bt_ctx) bt_ctf_iter_add_callback(iter, 0, NULL, 0, fix_process_table, NULL, NULL, NULL); + /* to handle the follow child option */ + bt_ctf_iter_add_callback(iter, + g_quark_from_static_string("sched_process_fork"), + NULL, 0, handle_sched_process_fork, NULL, NULL, NULL); if (opt_textdump) { bt_ctf_iter_add_callback(iter, 0, NULL, 0, print_timestamp,