diff options
Diffstat (limited to 'tools/lib/api/fs/fs.c')
| -rw-r--r-- | tools/lib/api/fs/fs.c | 30 | 
1 files changed, 30 insertions, 0 deletions
| diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index 809c7721cd24..a7ecf8f469f4 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c @@ -387,6 +387,22 @@ int filename__read_str(const char *filename, char **buf, size_t *sizep)  	return err;  } +int filename__write_int(const char *filename, int value) +{ +	int fd = open(filename, O_WRONLY), err = -1; +	char buf[64]; + +	if (fd < 0) +		return err; + +	sprintf(buf, "%d", value); +	if (write(fd, buf, sizeof(buf)) == sizeof(buf)) +		err = 0; + +	close(fd); +	return err; +} +  int procfs__read_str(const char *entry, char **buf, size_t *sizep)  {  	char path[PATH_MAX]; @@ -480,3 +496,17 @@ int sysctl__read_int(const char *sysctl, int *value)  	return filename__read_int(path, value);  } + +int sysfs__write_int(const char *entry, int value) +{ +	char path[PATH_MAX]; +	const char *sysfs = sysfs__mountpoint(); + +	if (!sysfs) +		return -1; + +	if (snprintf(path, sizeof(path), "%s/%s", sysfs, entry) >= PATH_MAX) +		return -1; + +	return filename__write_int(path, value); +} |