X-Git-Url: https://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Fiostreamtop.c;h=d3172f0648a3a8f49e1f6107c9e6d8efb0b75f88;hp=30797c529bd3dd8a3315ff4fe8996bde3850c891;hb=96aa77debf3aee00361101fb2e76781c65f02ba9;hpb=094632060f50c0a268794c70e0650167c5c51fb8 diff --git a/src/iostreamtop.c b/src/iostreamtop.c index 30797c5..d3172f0 100644 --- a/src/iostreamtop.c +++ b/src/iostreamtop.c @@ -197,6 +197,10 @@ int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm, tmp = get_proc(ctx, tid, comm, timestamp); + if (!tmp) { + err = -1; + goto end; + } if (tmp->syscall_info != NULL) { if (tmp->syscall_info->type == __NR_read && ret > 0) { @@ -223,6 +227,8 @@ int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm, g_free(tmp->syscall_info); tmp->syscall_info = NULL; } + +end: return err; } @@ -260,13 +266,13 @@ struct file_history *create_file(struct file_history *history, char *file_name) enum bt_cb_ret handle_exit_syscall(struct bt_ctf_event *call_data, void *private_data) { - const struct definition *scope; + const struct bt_definition *scope; unsigned long timestamp; char *comm; uint64_t ret, tid; uint64_t cpu_id; - timestamp = bt_ctf_get_real_timestamp(call_data); + timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) goto error; @@ -302,7 +308,7 @@ error: enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data, void *private_data) { - const struct definition *scope; + const struct bt_definition *scope; struct processtop *tmp; unsigned long timestamp; uint64_t cpu_id; @@ -310,7 +316,7 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data, char *procname; int fd; - timestamp = bt_ctf_get_real_timestamp(call_data); + timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) goto error; @@ -329,10 +335,14 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data, } tmp = get_proc(<tngtop, tid, procname, timestamp); + if (!tmp) + goto end; + tmp->syscall_info = create_syscall_info(__NR_write, cpu_id, tid, fd); insert_file(tmp, fd); +end: return BT_CB_OK; error: @@ -343,14 +353,14 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data, void *private_data) { struct processtop *tmp; - const struct definition *scope; + const struct bt_definition *scope; unsigned long timestamp; uint64_t cpu_id; int64_t tid; char *procname; int fd; - timestamp = bt_ctf_get_real_timestamp(call_data); + timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) goto error; @@ -369,10 +379,14 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data, } tmp = get_proc(<tngtop, tid, procname, timestamp); + if (!tmp) + goto end; + tmp->syscall_info = create_syscall_info(__NR_read, cpu_id, tid, fd); insert_file(tmp, fd); +end: return BT_CB_OK; error: @@ -385,14 +399,14 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data, { struct processtop *tmp; - const struct definition *scope; + const struct bt_definition *scope; unsigned long timestamp; uint64_t cpu_id; int64_t tid; char *procname; char *file; - timestamp = bt_ctf_get_real_timestamp(call_data); + timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) goto error; @@ -411,10 +425,14 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data, } tmp = get_proc(<tngtop, tid, procname, timestamp); + if (!tmp) + goto end; + tmp->syscall_info = create_syscall_info(__NR_open, cpu_id, tid, -1); tmp->files_history = create_file(tmp->files_history, file); +end: return BT_CB_OK; error: @@ -425,14 +443,14 @@ error: enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data, void *private_data) { - const struct definition *scope; + const struct bt_definition *scope; struct processtop *tmp; unsigned long timestamp; int64_t tid; char *procname; int fd; - timestamp = bt_ctf_get_real_timestamp(call_data); + timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) goto error; @@ -450,9 +468,12 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data, } tmp = get_proc(<tngtop, tid, procname, timestamp); + if (!tmp) + goto end; close_file(tmp, fd); +end: return BT_CB_OK; error: @@ -462,7 +483,7 @@ error: enum bt_cb_ret handle_statedump_file_descriptor(struct bt_ctf_event *call_data, void *private_data) { - const struct definition *scope; + const struct bt_definition *scope; struct processtop *parent; struct files *file; unsigned long timestamp; @@ -470,7 +491,7 @@ enum bt_cb_ret handle_statedump_file_descriptor(struct bt_ctf_event *call_data, char *file_name; int fd; - timestamp = bt_ctf_get_real_timestamp(call_data); + timestamp = bt_ctf_get_timestamp(call_data); if (timestamp == -1ULL) goto error; @@ -502,10 +523,14 @@ enum bt_cb_ret handle_statedump_file_descriptor(struct bt_ctf_event *call_data, } parent = get_proc_pid(<tngtop, pid, pid, timestamp); + if (!parent) + goto end; + parent->files_history = create_file(parent->files_history, file_name); file = parent->files_history->file; edit_file(parent, file, fd); +end: return BT_CB_OK; error: