diff options
Diffstat (limited to 'tools/lib/api')
| -rw-r--r-- | tools/lib/api/fs/fs.c | 2 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracing_path.c | 40 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracing_path.h | 9 | 
3 files changed, 41 insertions, 10 deletions
diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index 6a12bbf39f7b..7aba8243a0e7 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c @@ -201,7 +201,7 @@ static void mem_toupper(char *f, size_t len)  /*   * Check for "NAME_PATH" environment variable to override fs location (for - * testing). This matches the recommendation in Documentation/sysfs-rules.txt + * testing). This matches the recommendation in Documentation/admin-guide/sysfs-rules.rst   * for SYSFS_PATH.   */  static bool fs__env_override(struct fs *fs) diff --git a/tools/lib/api/fs/tracing_path.c b/tools/lib/api/fs/tracing_path.c index 7b7fd0b18551..120037496f77 100644 --- a/tools/lib/api/fs/tracing_path.c +++ b/tools/lib/api/fs/tracing_path.c @@ -13,11 +13,9 @@  #include "tracing_path.h" - -char tracing_mnt[PATH_MAX]         = "/sys/kernel/debug"; -char tracing_path[PATH_MAX]        = "/sys/kernel/debug/tracing"; -char tracing_events_path[PATH_MAX] = "/sys/kernel/debug/tracing/events"; - +static char tracing_mnt[PATH_MAX]  = "/sys/kernel/debug"; +static char tracing_path[PATH_MAX]        = "/sys/kernel/debug/tracing"; +static char tracing_events_path[PATH_MAX] = "/sys/kernel/debug/tracing/events";  static void __tracing_path_set(const char *tracing, const char *mountpoint)  { @@ -76,7 +74,7 @@ char *get_tracing_file(const char *name)  {  	char *file; -	if (asprintf(&file, "%s/%s", tracing_path, name) < 0) +	if (asprintf(&file, "%s/%s", tracing_path_mount(), name) < 0)  		return NULL;  	return file; @@ -87,6 +85,34 @@ void put_tracing_file(char *file)  	free(file);  } +char *get_events_file(const char *name) +{ +	char *file; + +	if (asprintf(&file, "%s/events/%s", tracing_path_mount(), name) < 0) +		return NULL; + +	return file; +} + +void put_events_file(char *file) +{ +	free(file); +} + +DIR *tracing_events__opendir(void) +{ +	DIR *dir = NULL; +	char *path = get_tracing_file("events"); + +	if (path) { +		dir = opendir(path); +		put_events_file(path); +	} + +	return dir; +} +  int tracing_path__strerror_open_tp(int err, char *buf, size_t size,  				   const char *sys, const char *name)  { @@ -129,7 +155,7 @@ int tracing_path__strerror_open_tp(int err, char *buf, size_t size,  		snprintf(buf, size,  			 "Error:\tNo permissions to read %s/%s\n"  			 "Hint:\tTry 'sudo mount -o remount,mode=755 %s'\n", -			 tracing_events_path, filename, tracing_mnt); +			 tracing_events_path, filename, tracing_path_mount());  	}  		break;  	default: diff --git a/tools/lib/api/fs/tracing_path.h b/tools/lib/api/fs/tracing_path.h index 0066f06cc381..a19136b086dc 100644 --- a/tools/lib/api/fs/tracing_path.h +++ b/tools/lib/api/fs/tracing_path.h @@ -3,9 +3,9 @@  #define __API_FS_TRACING_PATH_H  #include <linux/types.h> +#include <dirent.h> -extern char tracing_path[]; -extern char tracing_events_path[]; +DIR *tracing_events__opendir(void);  void tracing_path_set(const char *mountpoint);  const char *tracing_path_mount(void); @@ -13,5 +13,10 @@ const char *tracing_path_mount(void);  char *get_tracing_file(const char *name);  void put_tracing_file(char *file); +char *get_events_file(const char *name); +void put_events_file(char *file); + +#define zput_events_file(ptr) ({ free(*ptr); *ptr = NULL; }) +  int tracing_path__strerror_open_tp(int err, char *buf, size_t size, const char *sys, const char *name);  #endif /* __API_FS_TRACING_PATH_H */  |