All of lore.kernel.org
 help / color / mirror / Atom feed
From: kan.liang@intel.com
To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
	linux-kernel@vger.kernel.org
Cc: tglx@linutronix.de, eranian@google.com, jolsa@kernel.org,
	ak@linux.intel.com, Kan Liang <Kan.liang@intel.com>
Subject: [PATCH 2/3] tools lib api fs: Add sysfs__write_int function
Date: Thu, 23 Mar 2017 11:25:50 -0700	[thread overview]
Message-ID: <1490293551-5552-3-git-send-email-kan.liang@intel.com> (raw)
In-Reply-To: <1490293551-5552-1-git-send-email-kan.liang@intel.com>

From: Kan Liang <Kan.liang@intel.com>

Adding sysfs__write_int function to ease up writing int to sysfs.
New interface is:

  int sysfs__write_int(const char *entry, int value);

Also, introducing filename__write_int which is useful for new helpers to
write sysctl values.

Signed-off-by: Kan Liang <Kan.liang@intel.com>
---
 tools/lib/api/fs/fs.c | 29 +++++++++++++++++++++++++++++
 tools/lib/api/fs/fs.h |  4 ++++
 2 files changed, 33 insertions(+)

diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c
index 809c772..de4f74e 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,16 @@ 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;
+
+	snprintf(path, sizeof(path), "%s/%s", sysfs, entry);
+
+	return filename__write_int(path, value);
+}
diff --git a/tools/lib/api/fs/fs.h b/tools/lib/api/fs/fs.h
index 956c211..4560534 100644
--- a/tools/lib/api/fs/fs.h
+++ b/tools/lib/api/fs/fs.h
@@ -31,6 +31,8 @@ int filename__read_int(const char *filename, int *value);
 int filename__read_ull(const char *filename, unsigned long long *value);
 int filename__read_str(const char *filename, char **buf, size_t *sizep);
 
+int filename__write_int(const char *filename, int value);
+
 int procfs__read_str(const char *entry, char **buf, size_t *sizep);
 
 int sysctl__read_int(const char *sysctl, int *value);
@@ -38,4 +40,6 @@ int sysfs__read_int(const char *entry, int *value);
 int sysfs__read_ull(const char *entry, unsigned long long *value);
 int sysfs__read_str(const char *entry, char **buf, size_t *sizep);
 int sysfs__read_bool(const char *entry, bool *value);
+
+int sysfs__write_int(const char *entry, int value);
 #endif /* __API_FS__ */
-- 
2.7.4

  parent reply	other threads:[~2017-03-23 18:37 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-23 18:25 [PATCH 0/3]measure SMI cost kan.liang
2017-03-23 18:25 ` [PATCH 1/3] perf/x86: add sysfs entry to freeze counter on SMI kan.liang
2017-03-23 20:31   ` Peter Zijlstra
2017-03-23 20:48     ` Liang, Kan
2017-03-23 22:23     ` Andi Kleen
2017-03-24  8:16       ` Peter Zijlstra
2017-03-23 20:32   ` Peter Zijlstra
2017-03-24  8:31     ` Thomas Gleixner
2017-03-24 14:15       ` Liang, Kan
2017-03-24 14:23         ` Peter Zijlstra
2017-03-23 18:25 ` kan.liang [this message]
2017-03-28  3:38   ` [PATCH 2/3] tools lib api fs: Add sysfs__write_int function Elliott, Robert (Persistent Memory)
2017-03-23 18:25 ` [PATCH 3/3] perf stat: Add support to measure SMI cost kan.liang
2017-03-24  8:44 ` [PATCH 0/3]measure " Thomas Gleixner
2017-03-24 11:40   ` Andi Kleen
2017-03-24 12:07     ` Thomas Gleixner
2017-03-24 14:14       ` Liang, Kan
2017-03-31 21:51 ` Stephane Eranian
2017-04-01  1:41   ` Liang, Kan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1490293551-5552-3-git-send-email-kan.liang@intel.com \
    --to=kan.liang@intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=eranian@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.