diff options
Diffstat (limited to 'tools/perf/util/intlist.c')
-rw-r--r-- | tools/perf/util/intlist.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/tools/perf/util/intlist.c b/tools/perf/util/intlist.c index 11a8d86f7fea..89715b64a315 100644 --- a/tools/perf/util/intlist.c +++ b/tools/perf/util/intlist.c | |||
@@ -20,6 +20,7 @@ static struct rb_node *intlist__node_new(struct rblist *rblist __maybe_unused, | |||
20 | 20 | ||
21 | if (node != NULL) { | 21 | if (node != NULL) { |
22 | node->i = i; | 22 | node->i = i; |
23 | node->priv = NULL; | ||
23 | rc = &node->rb_node; | 24 | rc = &node->rb_node; |
24 | } | 25 | } |
25 | 26 | ||
@@ -57,22 +58,36 @@ void intlist__remove(struct intlist *ilist, struct int_node *node) | |||
57 | rblist__remove_node(&ilist->rblist, &node->rb_node); | 58 | rblist__remove_node(&ilist->rblist, &node->rb_node); |
58 | } | 59 | } |
59 | 60 | ||
60 | struct int_node *intlist__find(struct intlist *ilist, int i) | 61 | static struct int_node *__intlist__findnew(struct intlist *ilist, |
62 | int i, bool create) | ||
61 | { | 63 | { |
62 | struct int_node *node; | 64 | struct int_node *node = NULL; |
63 | struct rb_node *rb_node; | 65 | struct rb_node *rb_node; |
64 | 66 | ||
65 | if (ilist == NULL) | 67 | if (ilist == NULL) |
66 | return NULL; | 68 | return NULL; |
67 | 69 | ||
68 | node = NULL; | 70 | if (create) |
69 | rb_node = rblist__find(&ilist->rblist, (void *)((long)i)); | 71 | rb_node = rblist__findnew(&ilist->rblist, (void *)((long)i)); |
72 | else | ||
73 | rb_node = rblist__find(&ilist->rblist, (void *)((long)i)); | ||
74 | |||
70 | if (rb_node) | 75 | if (rb_node) |
71 | node = container_of(rb_node, struct int_node, rb_node); | 76 | node = container_of(rb_node, struct int_node, rb_node); |
72 | 77 | ||
73 | return node; | 78 | return node; |
74 | } | 79 | } |
75 | 80 | ||
81 | struct int_node *intlist__find(struct intlist *ilist, int i) | ||
82 | { | ||
83 | return __intlist__findnew(ilist, i, false); | ||
84 | } | ||
85 | |||
86 | struct int_node *intlist__findnew(struct intlist *ilist, int i) | ||
87 | { | ||
88 | return __intlist__findnew(ilist, i, true); | ||
89 | } | ||
90 | |||
76 | static int intlist__parse_list(struct intlist *ilist, const char *s) | 91 | static int intlist__parse_list(struct intlist *ilist, const char *s) |
77 | { | 92 | { |
78 | char *sep; | 93 | char *sep; |