add_proc now takes hostname param
[lttngtop.git] / src / iostreamtop.c
index bda9c7ce9d8c098b86b6116ba85385e92b084c00..367fdee6ef2e281c2cbcbde3bc0019b74872ac08 100644 (file)
@@ -189,14 +189,19 @@ void show_history(struct file_history *history)
 }
 
 int update_iostream_ret(struct lttngtop *ctx, int tid, char *comm,
-               unsigned long timestamp, uint64_t cpu_id, int ret)
+               unsigned long timestamp, uint64_t cpu_id, int ret,
+               char *hostname)
 {
        struct processtop *tmp;
        struct files *tmpfile;
        int err = 0;
 
-       tmp = get_proc(ctx, tid, comm, timestamp);
+       tmp = get_proc(ctx, tid, comm, timestamp, hostname);
 
+       if (!tmp) {
+               err = -1;
+               goto end;
+       }
        if (tmp->syscall_info != NULL) {
                if (tmp->syscall_info->type == __NR_read
                        && ret > 0) {
@@ -223,6 +228,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,11 +267,12 @@ 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;
+       char *hostname;
 
        timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
@@ -283,13 +291,15 @@ enum bt_cb_ret handle_exit_syscall(struct bt_ctf_event *call_data,
        }
 
        cpu_id = get_cpu_id(call_data);
+       hostname = get_context_hostname(call_data);
 
        /*
         * if we encounter an exit_syscall and
         * it is not for a syscall read or write
         * we just abort the execution of this callback
         */
-       if ((update_iostream_ret(&lttngtop, tid, comm, timestamp, cpu_id, ret)) < 0)
+       if ((update_iostream_ret(&lttngtop, tid, comm, timestamp, cpu_id,
+                                       ret, hostname)) < 0)
                return BT_CB_ERROR_CONTINUE;
 
        return BT_CB_OK;
@@ -302,12 +312,12 @@ 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;
        int64_t tid;
-       char *procname;
+       char *procname, *hostname;
        int fd;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -318,6 +328,7 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
        cpu_id = get_cpu_id(call_data);
 
        procname = get_context_comm(call_data);
+       hostname = get_context_hostname(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -328,11 +339,15 @@ enum bt_cb_ret handle_sys_write(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp, hostname);
+       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,12 +358,13 @@ 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;
+       char *hostname;
 
        timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
@@ -358,6 +374,7 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
        cpu_id = get_cpu_id(call_data);
 
        procname = get_context_comm(call_data);
+       hostname = get_context_hostname(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -368,11 +385,15 @@ enum bt_cb_ret handle_sys_read(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp, hostname);
+       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,11 +406,11 @@ 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 *procname, *hostname;
        char *file;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -400,6 +421,7 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
        cpu_id = get_cpu_id(call_data);
 
        procname = get_context_comm(call_data);
+       hostname = get_context_hostname(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -410,11 +432,15 @@ enum bt_cb_ret handle_sys_open(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp, hostname);
+       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,12 +451,13 @@ 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;
+       char *hostname;
 
        timestamp = bt_ctf_get_timestamp(call_data);
        if (timestamp == -1ULL)
@@ -439,6 +466,7 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
        tid = get_context_tid(call_data);
 
        procname = get_context_comm(call_data);
+       hostname = get_context_hostname(call_data);
 
        scope = bt_ctf_get_top_level_scope(call_data,
                        BT_EVENT_FIELDS);
@@ -449,10 +477,13 @@ enum bt_cb_ret handle_sys_close(struct bt_ctf_event *call_data,
                goto error;
        }
 
-       tmp = get_proc(&lttngtop, tid, procname, timestamp);
+       tmp = get_proc(&lttngtop, tid, procname, timestamp, hostname);
+       if (!tmp)
+               goto end;
 
        close_file(tmp, fd);
 
+end:
        return BT_CB_OK;
 
 error:
@@ -462,12 +493,12 @@ 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;
        int64_t pid;
-       char *file_name;
+       char *file_name, *hostname;
        int fd;
 
        timestamp = bt_ctf_get_timestamp(call_data);
@@ -500,12 +531,17 @@ enum bt_cb_ret handle_statedump_file_descriptor(struct bt_ctf_event *call_data,
                fprintf(stderr, "Missing file name context info\n");
                goto error;
        }
+       hostname = get_context_hostname(call_data);
+
+       parent = get_proc_pid(&lttngtop, pid, pid, timestamp, hostname);
+       if (!parent)
+               goto end;
 
-       parent = get_proc_pid(&lttngtop, pid, pid, timestamp);
        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:
This page took 0.025 seconds and 4 git commands to generate.