diff options
author | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
commit | 62b8c978ee6b8d135d9e7953221de58000dba986 (patch) | |
tree | 683b04b2e627f6710c22c151b23c8cc9a165315e /tools/perf/util/comm.c | |
parent | 78fd82238d0e5716578c326404184a27ba67fd6e (diff) | |
download | linux-fsl-qoriq-62b8c978ee6b8d135d9e7953221de58000dba986.tar.xz |
Rewind v3.13-rc3+ (78fd82238d0e5716) to v3.12
Diffstat (limited to 'tools/perf/util/comm.c')
-rw-r--r-- | tools/perf/util/comm.c | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/tools/perf/util/comm.c b/tools/perf/util/comm.c deleted file mode 100644 index ee0df0e..0000000 --- a/tools/perf/util/comm.c +++ /dev/null @@ -1,121 +0,0 @@ -#include "comm.h" -#include "util.h" -#include <stdlib.h> -#include <stdio.h> - -struct comm_str { - char *str; - struct rb_node rb_node; - int ref; -}; - -/* Should perhaps be moved to struct machine */ -static struct rb_root comm_str_root; - -static void comm_str__get(struct comm_str *cs) -{ - cs->ref++; -} - -static void comm_str__put(struct comm_str *cs) -{ - if (!--cs->ref) { - rb_erase(&cs->rb_node, &comm_str_root); - free(cs->str); - free(cs); - } -} - -static struct comm_str *comm_str__alloc(const char *str) -{ - struct comm_str *cs; - - cs = zalloc(sizeof(*cs)); - if (!cs) - return NULL; - - cs->str = strdup(str); - if (!cs->str) { - free(cs); - return NULL; - } - - return cs; -} - -static struct comm_str *comm_str__findnew(const char *str, struct rb_root *root) -{ - struct rb_node **p = &root->rb_node; - struct rb_node *parent = NULL; - struct comm_str *iter, *new; - int cmp; - - while (*p != NULL) { - parent = *p; - iter = rb_entry(parent, struct comm_str, rb_node); - - cmp = strcmp(str, iter->str); - if (!cmp) - return iter; - - if (cmp < 0) - p = &(*p)->rb_left; - else - p = &(*p)->rb_right; - } - - new = comm_str__alloc(str); - if (!new) - return NULL; - - rb_link_node(&new->rb_node, parent, p); - rb_insert_color(&new->rb_node, root); - - return new; -} - -struct comm *comm__new(const char *str, u64 timestamp) -{ - struct comm *comm = zalloc(sizeof(*comm)); - - if (!comm) - return NULL; - - comm->start = timestamp; - - comm->comm_str = comm_str__findnew(str, &comm_str_root); - if (!comm->comm_str) { - free(comm); - return NULL; - } - - comm_str__get(comm->comm_str); - - return comm; -} - -void comm__override(struct comm *comm, const char *str, u64 timestamp) -{ - struct comm_str *old = comm->comm_str; - - comm->comm_str = comm_str__findnew(str, &comm_str_root); - if (!comm->comm_str) { - comm->comm_str = old; - return; - } - - comm->start = timestamp; - comm_str__get(comm->comm_str); - comm_str__put(old); -} - -void comm__free(struct comm *comm) -{ - comm_str__put(comm->comm_str); - free(comm); -} - -const char *comm__str(const struct comm *comm) -{ - return comm->comm_str->str; -} |