Commit 569c746b authored by Shang XiaoJing's avatar Shang XiaoJing Committed by Arnaldo Carvalho de Melo

perf timechart: Add create_pidcomm helper

Wrap repeated code combined with alloc of per_pidcomm in helper function
create_pidcomm.
Signed-off-by: default avatarShang XiaoJing <shangxiaojing@huawei.com>
Acked-by: default avatarNamhyung 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.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 0f405f87
...@@ -215,6 +215,19 @@ static struct per_pid *find_create_pid(struct timechart *tchart, int pid) ...@@ -215,6 +215,19 @@ static struct per_pid *find_create_pid(struct timechart *tchart, int pid)
return cursor; 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) static void pid_set_comm(struct timechart *tchart, int pid, char *comm)
{ {
struct per_pid *p; struct per_pid *p;
...@@ -233,12 +246,9 @@ static void pid_set_comm(struct timechart *tchart, int pid, char *comm) ...@@ -233,12 +246,9 @@ static void pid_set_comm(struct timechart *tchart, int pid, char *comm)
} }
c = c->next; c = c->next;
} }
c = zalloc(sizeof(*c)); c = create_pidcomm(p);
assert(c != NULL); assert(c != NULL);
c->comm = strdup(comm); 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) 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, ...@@ -277,11 +287,8 @@ static void pid_put_sample(struct timechart *tchart, int pid, int type,
p = find_create_pid(tchart, pid); p = find_create_pid(tchart, pid);
c = p->current; c = p->current;
if (!c) { if (!c) {
c = zalloc(sizeof(*c)); c = create_pidcomm(p);
assert(c != NULL); assert(c != NULL);
p->current = c;
c->next = p->all;
p->all = c;
} }
sample = zalloc(sizeof(*sample)); sample = zalloc(sizeof(*sample));
...@@ -726,12 +733,9 @@ static int pid_begin_io_sample(struct timechart *tchart, int pid, int type, ...@@ -726,12 +733,9 @@ static int pid_begin_io_sample(struct timechart *tchart, int pid, int type,
struct io_sample *prev; struct io_sample *prev;
if (!c) { if (!c) {
c = zalloc(sizeof(*c)); c = create_pidcomm(p);
if (!c) if (!c)
return -ENOMEM; return -ENOMEM;
p->current = c;
c->next = p->all;
p->all = c;
} }
prev = c->io_samples; prev = c->io_samples;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment