Skip to content

Commit 11e1442

Browse files
committed
utils: enable @k as an abbreviated form of @kernel
this commit allows to pass '@k' for kernel option as an abbreviated form of '@kernel' created a util function for strstr(buf, '@k') // before $uftrace -K 2 -F sys_openat@kernel --force ./echo-sync // after $uftrace -K 2 -F sys_openat@k --force ./echo-sync Signed-off-by: Daniel T. Lee <[email protected]>
1 parent d11bc79 commit 11e1442

File tree

5 files changed

+34
-8
lines changed

5 files changed

+34
-8
lines changed

libmcount/event.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ int mcount_setup_events(char *dirname, char *event_str,
160160
if (sep) {
161161
*sep++ = '\0';
162162

163-
kernel = strstr(sep, "@kernel");
163+
kernel = has_kernel_filter(sep);
164164
if (kernel)
165165
continue;
166166

utils/filter.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,7 @@ static void setup_trigger(char *filter_str, struct symtabs *symtabs,
960960
goto next;
961961

962962
/* skip unintended kernel symbols */
963-
if (module && !strcasecmp(module, "kernel") &&
963+
if (module && has_kernel_opt(module) &&
964964
!setting->allow_kernel)
965965
goto next;
966966

@@ -997,7 +997,7 @@ static void setup_trigger(char *filter_str, struct symtabs *symtabs,
997997
&symtabs->dinfo,
998998
setting);
999999
}
1000-
else if (!strcasecmp(module, "kernel")) {
1000+
else if (has_kernel_opt(module)) {
10011001
ret = add_trigger_entry(root, get_kernel_symtab(),
10021002
&patt, &tr,
10031003
&symtabs->dinfo,
@@ -1195,13 +1195,13 @@ char * uftrace_clear_kernel(char *filter_str)
11951195
if (filter_str == NULL)
11961196
return NULL;
11971197

1198-
if (strstr(filter_str, "@kernel") == NULL)
1198+
if (has_kernel_filter(filter_str) == NULL)
11991199
return xstrdup(filter_str);
12001200

12011201
strv_split(&filters, filter_str, ";");
12021202

12031203
strv_for_each(&filters, pos, j) {
1204-
if (strstr(pos, "@kernel") == NULL)
1204+
if (has_kernel_filter(pos) == NULL)
12051205
ret = strjoin(ret, pos, ";");
12061206
}
12071207
strv_free(&filters);

utils/kernel.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ static void build_kernel_filter(struct uftrace_kernel_writer *kernel,
339339
strv_for_each(&strv, name, j) {
340340
struct uftrace_pattern patt;
341341

342-
pos = strstr(name, "@kernel");
342+
pos = has_kernel_filter(name);
343343
if (pos == NULL)
344344
continue;
345345
*pos = '\0';
@@ -430,7 +430,7 @@ static void build_kernel_event(struct uftrace_kernel_writer *kernel,
430430
strv_for_each(&strv, name, j) {
431431
struct uftrace_pattern patt;
432432

433-
pos = strstr(name, "@kernel");
433+
pos = has_kernel_filter(name);
434434
if (pos == NULL)
435435
continue;
436436
*pos = '\0';

utils/kernel.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define UFTRACE_KERNEL_H
33

44
#include "libtraceevent/event-parse.h"
5+
#include "utils/utils.h"
56

67
#define KERNEL_NOP_TRACER "nop"
78
#define KERNEL_GRAPH_TRACER "function_graph"
@@ -76,7 +77,7 @@ static inline bool has_kernel_data(struct uftrace_kernel_reader *kernel)
7677

7778
static inline bool has_kernel_event(char *events)
7879
{
79-
return events && strstr(events, "@kernel");
80+
return events && has_kernel_filter(events);
8081
}
8182

8283
bool check_kernel_pid_filter(void);

utils/utils.h

+25
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,31 @@ static inline bool host_is_lp64(void)
263263
return get_elf_class() == ELFCLASS64;
264264
}
265265

266+
static inline char* has_kernel_opt(char *buf)
267+
{
268+
int idx = 0;
269+
270+
if (!strncasecmp(buf, "kernel", 6))
271+
idx = 6;
272+
else if (!strncasecmp(buf, "k", 1))
273+
idx = 1;
274+
275+
if (idx && (buf[idx] == '\0' || buf[idx] == ','))
276+
return buf;
277+
278+
return NULL;
279+
}
280+
281+
static inline char* has_kernel_filter(char *buf)
282+
{
283+
char *opt = strchr(buf, '@');
284+
285+
if (opt && has_kernel_opt(opt + 1))
286+
return opt;
287+
288+
return NULL;
289+
}
290+
266291
struct uftrace_time_range {
267292
uint64_t first;
268293
uint64_t start;

0 commit comments

Comments
 (0)