backport error handling add_trace_recursive from babeltrace
[lttngtop.git] / src / iostreamtop.c
index 62b926ecb76de51934a864292153d19d582217d8..33b901938b9356e65690694c297f403483edd84b 100644 (file)
@@ -199,13 +199,15 @@ int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm,
                        tmp->totalfileread += ret;
                        tmp->fileread += ret;
                        tmpfile = get_file(tmp, tmp->syscall_info->fd);
-                       tmpfile->read += ret;
+                       if (tmpfile)
+                               tmpfile->read += ret;
                } else if (tmp->syscall_info->type == __NR_write
                        && ret > 0) {
                        tmp->totalfilewrite += ret;
                        tmp->filewrite += ret;
                        tmpfile = get_file(tmp, tmp->syscall_info->fd);
-                       tmpfile->write += ret;
+                       if (tmpfile)
+                               tmpfile->write += ret;
                } else if (tmp->syscall_info->type == __NR_open
                        && ret > 0) {
                        tmpfile = tmp->files_history->file;
@@ -300,7 +302,8 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
        struct processtop *tmp;
        unsigned long timestamp;
        uint64_t cpu_id;
-       int64_t tid, pid;
+       int64_t tid;
+       char *procname;
        int fd;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -310,7 +313,7 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
        tid = get_context_tid(call_data);
        cpu_id = get_cpu_id(call_data);
 
-       pid = get_context_pid(call_data);
+       procname = get_context_comm(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -321,7 +324,7 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc_pid(&lttngtop, tid, pid, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp);
        tmp->syscall_info = create_syscall_info(__NR_write, cpu_id, tid, fd);
 
        insert_file(tmp, fd);
@@ -339,7 +342,8 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
        const struct definition *scope;
        unsigned long timestamp;
        uint64_t cpu_id;
-       int64_t tid, pid;
+       int64_t tid;
+       char *procname;
        int fd;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -349,7 +353,7 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
        tid = get_context_tid(call_data);
        cpu_id = get_cpu_id(call_data);
 
-       pid = get_context_pid(call_data);
+       procname = get_context_comm(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -360,7 +364,7 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc_pid(&lttngtop, tid, pid, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp);
        tmp->syscall_info = create_syscall_info(__NR_read, cpu_id, tid, fd);
 
        insert_file(tmp, fd);
@@ -380,7 +384,8 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
        const struct definition *scope;
        unsigned long timestamp;
        uint64_t cpu_id;
-       int64_t tid, pid;
+       int64_t tid;
+       char *procname;
        char *file;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -390,7 +395,7 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
        tid = get_context_tid(call_data);
        cpu_id = get_cpu_id(call_data);
 
-       pid = get_context_pid(call_data);
+       procname = get_context_comm(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -401,7 +406,7 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc_pid(&lttngtop, tid, pid, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp);
        tmp->syscall_info = create_syscall_info(__NR_open, cpu_id, tid, -1);
 
        tmp->files_history = create_file(tmp->files_history, file);
@@ -417,9 +422,10 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
                void *private_data)
 {
        const struct definition *scope;
-       unsigned long timestamp;
-       int64_t tid, pid;
        struct processtop *tmp;
+       unsigned long timestamp;
+       int64_t tid;
+       char *procname;
        int fd;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -428,7 +434,7 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
 
        tid = get_context_tid(call_data);
 
-       pid = get_context_pid(call_data);
+       procname = get_context_comm(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -439,7 +445,7 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc_pid(&lttngtop, tid, pid, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp);
 
        close_file(tmp, fd);
 
This page took 0.024415 seconds and 4 git commands to generate.