Commit 872a878fb1ee53e21c90040de2c01b3fc53b5942

Authored by Frederic Weisbecker
1 parent d797fdc5c5

perf tools: Make sort operations static

These don't need to be globally visible.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Sam Liao <phyomh@gmail.com>

Showing 2 changed files with 99 additions and 120 deletions Side-by-side Diff

tools/perf/util/sort.c
... ... @@ -15,95 +15,6 @@
15 15  
16 16 LIST_HEAD(hist_entry__sort_list);
17 17  
18   -static int hist_entry__thread_snprintf(struct hist_entry *self, char *bf,
19   - size_t size, unsigned int width);
20   -static int hist_entry__comm_snprintf(struct hist_entry *self, char *bf,
21   - size_t size, unsigned int width);
22   -static int hist_entry__dso_snprintf(struct hist_entry *self, char *bf,
23   - size_t size, unsigned int width);
24   -static int hist_entry__sym_snprintf(struct hist_entry *self, char *bf,
25   - size_t size, unsigned int width);
26   -static int hist_entry__parent_snprintf(struct hist_entry *self, char *bf,
27   - size_t size, unsigned int width);
28   -static int hist_entry__cpu_snprintf(struct hist_entry *self, char *bf,
29   - size_t size, unsigned int width);
30   -
31   -struct sort_entry sort_thread = {
32   - .se_header = "Command: Pid",
33   - .se_cmp = sort__thread_cmp,
34   - .se_snprintf = hist_entry__thread_snprintf,
35   - .se_width_idx = HISTC_THREAD,
36   -};
37   -
38   -struct sort_entry sort_comm = {
39   - .se_header = "Command",
40   - .se_cmp = sort__comm_cmp,
41   - .se_collapse = sort__comm_collapse,
42   - .se_snprintf = hist_entry__comm_snprintf,
43   - .se_width_idx = HISTC_COMM,
44   -};
45   -
46   -struct sort_entry sort_dso = {
47   - .se_header = "Shared Object",
48   - .se_cmp = sort__dso_cmp,
49   - .se_snprintf = hist_entry__dso_snprintf,
50   - .se_width_idx = HISTC_DSO,
51   -};
52   -
53   -struct sort_entry sort_sym = {
54   - .se_header = "Symbol",
55   - .se_cmp = sort__sym_cmp,
56   - .se_snprintf = hist_entry__sym_snprintf,
57   - .se_width_idx = HISTC_SYMBOL,
58   -};
59   -
60   -struct sort_entry sort_parent = {
61   - .se_header = "Parent symbol",
62   - .se_cmp = sort__parent_cmp,
63   - .se_snprintf = hist_entry__parent_snprintf,
64   - .se_width_idx = HISTC_PARENT,
65   -};
66   -
67   -struct sort_entry sort_cpu = {
68   - .se_header = "CPU",
69   - .se_cmp = sort__cpu_cmp,
70   - .se_snprintf = hist_entry__cpu_snprintf,
71   - .se_width_idx = HISTC_CPU,
72   -};
73   -
74   -struct sort_dimension {
75   - const char *name;
76   - struct sort_entry *entry;
77   - int taken;
78   -};
79   -
80   -static struct sort_dimension sort_dimensions[] = {
81   - { .name = "pid", .entry = &sort_thread, },
82   - { .name = "comm", .entry = &sort_comm, },
83   - { .name = "dso", .entry = &sort_dso, },
84   - { .name = "symbol", .entry = &sort_sym, },
85   - { .name = "parent", .entry = &sort_parent, },
86   - { .name = "cpu", .entry = &sort_cpu, },
87   -};
88   -
89   -int64_t cmp_null(void *l, void *r)
90   -{
91   - if (!l && !r)
92   - return 0;
93   - else if (!l)
94   - return -1;
95   - else
96   - return 1;
97   -}
98   -
99   -/* --sort pid */
100   -
101   -int64_t
102   -sort__thread_cmp(struct hist_entry *left, struct hist_entry *right)
103   -{
104   - return right->thread->pid - left->thread->pid;
105   -}
106   -
107 18 static int repsep_snprintf(char *bf, size_t size, const char *fmt, ...)
108 19 {
109 20 int n;
... ... @@ -125,6 +36,24 @@
125 36 return n;
126 37 }
127 38  
  39 +static int64_t cmp_null(void *l, void *r)
  40 +{
  41 + if (!l && !r)
  42 + return 0;
  43 + else if (!l)
  44 + return -1;
  45 + else
  46 + return 1;
  47 +}
  48 +
  49 +/* --sort pid */
  50 +
  51 +static int64_t
  52 +sort__thread_cmp(struct hist_entry *left, struct hist_entry *right)
  53 +{
  54 + return right->thread->pid - left->thread->pid;
  55 +}
  56 +
128 57 static int hist_entry__thread_snprintf(struct hist_entry *self, char *bf,
129 58 size_t size, unsigned int width)
130 59 {
131 60  
132 61  
... ... @@ -132,15 +61,50 @@
132 61 self->thread->comm ?: "", self->thread->pid);
133 62 }
134 63  
  64 +struct sort_entry sort_thread = {
  65 + .se_header = "Command: Pid",
  66 + .se_cmp = sort__thread_cmp,
  67 + .se_snprintf = hist_entry__thread_snprintf,
  68 + .se_width_idx = HISTC_THREAD,
  69 +};
  70 +
  71 +/* --sort comm */
  72 +
  73 +static int64_t
  74 +sort__comm_cmp(struct hist_entry *left, struct hist_entry *right)
  75 +{
  76 + return right->thread->pid - left->thread->pid;
  77 +}
  78 +
  79 +static int64_t
  80 +sort__comm_collapse(struct hist_entry *left, struct hist_entry *right)
  81 +{
  82 + char *comm_l = left->thread->comm;
  83 + char *comm_r = right->thread->comm;
  84 +
  85 + if (!comm_l || !comm_r)
  86 + return cmp_null(comm_l, comm_r);
  87 +
  88 + return strcmp(comm_l, comm_r);
  89 +}
  90 +
135 91 static int hist_entry__comm_snprintf(struct hist_entry *self, char *bf,
136 92 size_t size, unsigned int width)
137 93 {
138 94 return repsep_snprintf(bf, size, "%*s", width, self->thread->comm);
139 95 }
140 96  
  97 +struct sort_entry sort_comm = {
  98 + .se_header = "Command",
  99 + .se_cmp = sort__comm_cmp,
  100 + .se_collapse = sort__comm_collapse,
  101 + .se_snprintf = hist_entry__comm_snprintf,
  102 + .se_width_idx = HISTC_COMM,
  103 +};
  104 +
141 105 /* --sort dso */
142 106  
143   -int64_t
  107 +static int64_t
144 108 sort__dso_cmp(struct hist_entry *left, struct hist_entry *right)
145 109 {
146 110 struct dso *dso_l = left->ms.map ? left->ms.map->dso : NULL;
147 111  
... ... @@ -173,9 +137,16 @@
173 137 return repsep_snprintf(bf, size, "%-*s", width, "[unknown]");
174 138 }
175 139  
  140 +struct sort_entry sort_dso = {
  141 + .se_header = "Shared Object",
  142 + .se_cmp = sort__dso_cmp,
  143 + .se_snprintf = hist_entry__dso_snprintf,
  144 + .se_width_idx = HISTC_DSO,
  145 +};
  146 +
176 147 /* --sort symbol */
177 148  
178   -int64_t
  149 +static int64_t
179 150 sort__sym_cmp(struct hist_entry *left, struct hist_entry *right)
180 151 {
181 152 u64 ip_l, ip_r;
182 153  
183 154  
... ... @@ -211,29 +182,16 @@
211 182 return ret;
212 183 }
213 184  
214   -/* --sort comm */
  185 +struct sort_entry sort_sym = {
  186 + .se_header = "Symbol",
  187 + .se_cmp = sort__sym_cmp,
  188 + .se_snprintf = hist_entry__sym_snprintf,
  189 + .se_width_idx = HISTC_SYMBOL,
  190 +};
215 191  
216   -int64_t
217   -sort__comm_cmp(struct hist_entry *left, struct hist_entry *right)
218   -{
219   - return right->thread->pid - left->thread->pid;
220   -}
221   -
222   -int64_t
223   -sort__comm_collapse(struct hist_entry *left, struct hist_entry *right)
224   -{
225   - char *comm_l = left->thread->comm;
226   - char *comm_r = right->thread->comm;
227   -
228   - if (!comm_l || !comm_r)
229   - return cmp_null(comm_l, comm_r);
230   -
231   - return strcmp(comm_l, comm_r);
232   -}
233   -
234 192 /* --sort parent */
235 193  
236   -int64_t
  194 +static int64_t
237 195 sort__parent_cmp(struct hist_entry *left, struct hist_entry *right)
238 196 {
239 197 struct symbol *sym_l = left->parent;
240 198  
... ... @@ -252,9 +210,16 @@
252 210 self->parent ? self->parent->name : "[other]");
253 211 }
254 212  
  213 +struct sort_entry sort_parent = {
  214 + .se_header = "Parent symbol",
  215 + .se_cmp = sort__parent_cmp,
  216 + .se_snprintf = hist_entry__parent_snprintf,
  217 + .se_width_idx = HISTC_PARENT,
  218 +};
  219 +
255 220 /* --sort cpu */
256 221  
257   -int64_t
  222 +static int64_t
258 223 sort__cpu_cmp(struct hist_entry *left, struct hist_entry *right)
259 224 {
260 225 return right->cpu - left->cpu;
... ... @@ -265,6 +230,28 @@
265 230 {
266 231 return repsep_snprintf(bf, size, "%-*d", width, self->cpu);
267 232 }
  233 +
  234 +struct sort_entry sort_cpu = {
  235 + .se_header = "CPU",
  236 + .se_cmp = sort__cpu_cmp,
  237 + .se_snprintf = hist_entry__cpu_snprintf,
  238 + .se_width_idx = HISTC_CPU,
  239 +};
  240 +
  241 +struct sort_dimension {
  242 + const char *name;
  243 + struct sort_entry *entry;
  244 + int taken;
  245 +};
  246 +
  247 +static struct sort_dimension sort_dimensions[] = {
  248 + { .name = "pid", .entry = &sort_thread, },
  249 + { .name = "comm", .entry = &sort_comm, },
  250 + { .name = "dso", .entry = &sort_dso, },
  251 + { .name = "symbol", .entry = &sort_sym, },
  252 + { .name = "parent", .entry = &sort_parent, },
  253 + { .name = "cpu", .entry = &sort_cpu, },
  254 +};
268 255  
269 256 int sort_dimension__add(const char *tok)
270 257 {
tools/perf/util/sort.h
... ... @@ -108,14 +108,6 @@
108 108 extern size_t sort__comm_print(FILE *, struct hist_entry *, unsigned int);
109 109 extern size_t sort__dso_print(FILE *, struct hist_entry *, unsigned int);
110 110 extern size_t sort__sym_print(FILE *, struct hist_entry *, unsigned int __used);
111   -extern int64_t cmp_null(void *, void *);
112   -extern int64_t sort__thread_cmp(struct hist_entry *, struct hist_entry *);
113   -extern int64_t sort__comm_cmp(struct hist_entry *, struct hist_entry *);
114   -extern int64_t sort__comm_collapse(struct hist_entry *, struct hist_entry *);
115   -extern int64_t sort__dso_cmp(struct hist_entry *, struct hist_entry *);
116   -extern int64_t sort__sym_cmp(struct hist_entry *, struct hist_entry *);
117   -extern int64_t sort__parent_cmp(struct hist_entry *, struct hist_entry *);
118   -int64_t sort__cpu_cmp(struct hist_entry *left, struct hist_entry *right);
119 111 extern size_t sort__parent_print(FILE *, struct hist_entry *, unsigned int);
120 112 extern int sort_dimension__add(const char *);
121 113 void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list,