]> Git Repo - J-linux.git/blob - tools/perf/util/tracepoint.c
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / tools / perf / util / tracepoint.c
1 // SPDX-License-Identifier: GPL-2.0
2 #include "tracepoint.h"
3
4 #include <errno.h>
5 #include <fcntl.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <sys/param.h>
9 #include <unistd.h>
10
11 #include <api/fs/tracing_path.h>
12 #include "fncache.h"
13
14 int tp_event_has_id(const char *dir_path, struct dirent *evt_dir)
15 {
16         char evt_path[MAXPATHLEN];
17         int fd;
18
19         snprintf(evt_path, MAXPATHLEN, "%s/%s/id", dir_path, evt_dir->d_name);
20         fd = open(evt_path, O_RDONLY);
21         if (fd < 0)
22                 return -EINVAL;
23         close(fd);
24
25         return 0;
26 }
27
28 /*
29  * Check whether event is in <debugfs_mount_point>/tracing/events
30  */
31 bool is_valid_tracepoint(const char *event_string)
32 {
33         char *dst, *path = malloc(strlen(event_string) + 4); /* Space for "/id\0". */
34         bool have_file = false; /* Conservatively return false if memory allocation failed. */
35         const char *src;
36
37         if (!path)
38                 return false;
39
40         /* Copy event_string replacing the ':' with '/'. */
41         for (src = event_string, dst = path; *src; src++, dst++)
42                 *dst = (*src == ':') ? '/' : *src;
43         /* Add "/id\0". */
44         memcpy(dst, "/id", 4);
45
46         dst = get_events_file(path);
47         if (dst)
48                 have_file = file_available(dst);
49         free(dst);
50         free(path);
51         return have_file;
52 }
This page took 0.029495 seconds and 4 git commands to generate.