perf timechart: Add create_pidcomm helper
authorShang XiaoJing <shangxiaojing@huawei.com>
Thu, 8 Sep 2022 02:11:40 +0000 (10:11 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 4 Oct 2022 11:55:21 +0000 (08:55 -0300)
Wrap repeated code combined with alloc of per_pidcomm in helper function
create_pidcomm.

Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20220908021141.27134-4-shangxiaojing@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-timechart.c

index e2e9ad929bafaeb3df8de6fa3568348461694d82..667a94d45493f7eaf03b0b1982658aa9ad215821 100644 (file)
@@ -215,6 +215,19 @@ static struct per_pid *find_create_pid(struct timechart *tchart, int pid)
        return cursor;
 }
 
+static struct per_pidcomm *create_pidcomm(struct per_pid *p)
+{
+       struct per_pidcomm *c;
+
+       c = zalloc(sizeof(*c));
+       if (!c)
+               return NULL;
+       p->current = c;
+       c->next = p->all;
+       p->all = c;
+       return c;
+}
+
 static void pid_set_comm(struct timechart *tchart, int pid, char *comm)
 {
        struct per_pid *p;
@@ -233,12 +246,9 @@ static void pid_set_comm(struct timechart *tchart, int pid, char *comm)
                }
                c = c->next;
        }
-       c = zalloc(sizeof(*c));
+       c = create_pidcomm(p);
        assert(c != NULL);
        c->comm = strdup(comm);
-       p->current = c;
-       c->next = p->all;
-       p->all = c;
 }
 
 static void pid_fork(struct timechart *tchart, int pid, int ppid, u64 timestamp)
@@ -277,11 +287,8 @@ static void pid_put_sample(struct timechart *tchart, int pid, int type,
        p = find_create_pid(tchart, pid);
        c = p->current;
        if (!c) {
-               c = zalloc(sizeof(*c));
+               c = create_pidcomm(p);
                assert(c != NULL);
-               p->current = c;
-               c->next = p->all;
-               p->all = c;
        }
 
        sample = zalloc(sizeof(*sample));
@@ -726,12 +733,9 @@ static int pid_begin_io_sample(struct timechart *tchart, int pid, int type,
        struct io_sample *prev;
 
        if (!c) {
-               c = zalloc(sizeof(*c));
+               c = create_pidcomm(p);
                if (!c)
                        return -ENOMEM;
-               p->current = c;
-               c->next = p->all;
-               p->all = c;
        }
 
        prev = c->io_samples;