diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index b8d0df8878d1e8847c0c62dfb999fb5f1f95854e..65d9be3f988747ae300db30d3b62cf0e8213dd69 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c @@ -184,3 +184,16 @@ int filename__read_int(const char *filename, int *value) close(fd); return err; } + +int sysctl__read_int(const char *sysctl, int *value) +{ + char path[PATH_MAX]; + const char *procfs = procfs__mountpoint(); + + if (!procfs) + return -1; + + snprintf(path, sizeof(path), "%s/sys/%s", procfs, sysctl); + + return filename__read_int(path, value); +} diff --git a/tools/lib/api/fs/fs.h b/tools/lib/api/fs/fs.h index 4d0aef6e71639f3e43bbf5b5e3e3c041de48f87d..6caa2bbc6cecdc2f7fa39b69fa1cf30f8653f15e 100644 --- a/tools/lib/api/fs/fs.h +++ b/tools/lib/api/fs/fs.h @@ -13,4 +13,5 @@ const char *sysfs__mountpoint(void); const char *procfs__mountpoint(void); int filename__read_int(const char *filename, int *value); +int sysctl__read_int(const char *sysctl, int *value); #endif /* __API_FS__ */