aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/api/fs/fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lib/api/fs/fs.c')
-rw-r--r--tools/lib/api/fs/fs.c30
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)
387 return err; 387 return err;
388} 388}
389 389
390int filename__write_int(const char *filename, int value)
391{
392 int fd = open(filename, O_WRONLY), err = -1;
393 char buf[64];
394
395 if (fd < 0)
396 return err;
397
398 sprintf(buf, "%d", value);
399 if (write(fd, buf, sizeof(buf)) == sizeof(buf))
400 err = 0;
401
402 close(fd);
403 return err;
404}
405
390int procfs__read_str(const char *entry, char **buf, size_t *sizep) 406int procfs__read_str(const char *entry, char **buf, size_t *sizep)
391{ 407{
392 char path[PATH_MAX]; 408 char path[PATH_MAX];
@@ -480,3 +496,17 @@ int sysctl__read_int(const char *sysctl, int *value)
480 496
481 return filename__read_int(path, value); 497 return filename__read_int(path, value);
482} 498}
499
500int sysfs__write_int(const char *entry, int value)
501{
502 char path[PATH_MAX];
503 const char *sysfs = sysfs__mountpoint();
504
505 if (!sysfs)
506 return -1;
507
508 if (snprintf(path, sizeof(path), "%s/%s", sysfs, entry) >= PATH_MAX)
509 return -1;
510
511 return filename__write_int(path, value);
512}