Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.6.
 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
14int 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 */
31bool 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}