Get rid of exit_syscall pretty printing
[lttngtop.git] / src / lttngtop.c
index 554406aba21582b6d61dff59ae9de5154377c86c..b024c9a5ed70c33d08dcf34393157b60a2596554 100644 (file)
@@ -217,7 +217,6 @@ enum bt_cb_ret print_timestamp(struct bt_ctf_event *call_data, void *private_dat
        struct tm start;
        uint64_t ts_nsec_start;
        int pid, cpu_id;
-       int64_t syscall_ret;
        const struct bt_definition *scope;
        const char *hostname, *procname;
 
@@ -238,46 +237,45 @@ 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);
 
-       if ((strcmp(bt_ctf_event_name(call_data), "exit_syscall") == 0) &&
-                       !last_textdump_print_newline) {
-               scope = bt_ctf_get_top_level_scope(call_data,
-                               BT_EVENT_FIELDS);
-               syscall_ret = bt_ctf_get_int64(bt_ctf_get_field(call_data,
-                                       scope, "_ret"));
-               printf("= %ld\n", syscall_ret);
-               last_textdump_print_newline = 1;
+       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 {
-               /* we might have lost the exit_syscall event, so need to
-                * print the newline in this case */
-               if (last_textdump_print_newline == 0)
-                       printf("\n");
-               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) {
-                       printf("\n");
-                       last_textdump_print_newline = 1;
-               } else {
-                       last_textdump_print_newline = 0;
-               }
+               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(")\n");
 
 end:
        return BT_CB_OK;
@@ -662,7 +660,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:
@@ -742,6 +739,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,
This page took 0.024414 seconds and 4 git commands to generate.