libperf: Adopt the readn()/writen() functions from tools/perf
authorJiri Olsa <jolsa@kernel.org>
Sun, 21 Jul 2019 11:24:47 +0000 (13:24 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 29 Jul 2019 21:34:46 +0000 (18:34 -0300)
Move the readn()/writen() functions into libperf.

Keep those non-namespaced names because they will be shared only between
perf and libperf.

Again, these are not exported functions.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20190721112506.12306-61-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/lib/Build
tools/perf/lib/include/internal/lib.h [new file with mode: 0644]
tools/perf/lib/lib.c [new file with mode: 0644]
tools/perf/util/util.c
tools/perf/util/util.h

index 4f78ec0b4e100292e54d8b93ce651734eef1a974..c31f1c111f8f18bb52c76be2ab836931fa28573d 100644 (file)
@@ -5,6 +5,7 @@ libperf-y += evsel.o
 libperf-y += evlist.o
 libperf-y += zalloc.o
 libperf-y += xyarray.o
+libperf-y += lib.o
 
 $(OUTPUT)zalloc.o: ../../lib/zalloc.c FORCE
        $(call rule_mkdir)
diff --git a/tools/perf/lib/include/internal/lib.h b/tools/perf/lib/include/internal/lib.h
new file mode 100644 (file)
index 0000000..0b56f12
--- /dev/null
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __LIBPERF_INTERNAL_LIB_H
+#define __LIBPERF_INTERNAL_LIB_H
+
+#include <unistd.h>
+
+ssize_t readn(int fd, void *buf, size_t n);
+ssize_t writen(int fd, const void *buf, size_t n);
+
+#endif /* __LIBPERF_INTERNAL_CPUMAP_H */
diff --git a/tools/perf/lib/lib.c b/tools/perf/lib/lib.c
new file mode 100644 (file)
index 0000000..2a81819
--- /dev/null
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <unistd.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <linux/kernel.h>
+#include <internal/lib.h>
+
+static ssize_t ion(bool is_read, int fd, void *buf, size_t n)
+{
+       void *buf_start = buf;
+       size_t left = n;
+
+       while (left) {
+               /* buf must be treated as const if !is_read. */
+               ssize_t ret = is_read ? read(fd, buf, left) :
+                                       write(fd, buf, left);
+
+               if (ret < 0 && errno == EINTR)
+                       continue;
+               if (ret <= 0)
+                       return ret;
+
+               left -= ret;
+               buf  += ret;
+       }
+
+       BUG_ON((size_t)(buf - buf_start) != n);
+       return n;
+}
+
+/*
+ * Read exactly 'n' bytes or return an error.
+ */
+ssize_t readn(int fd, void *buf, size_t n)
+{
+       return ion(true, fd, buf, n);
+}
+
+/*
+ * Write exactly 'n' bytes or return an error.
+ */
+ssize_t writen(int fd, const void *buf, size_t n)
+{
+       /* ion does not modify buf. */
+       return ion(false, fd, (void *)buf, n);
+}
index a61535cf1bca287e6a26cb27ecc9f2093cceb8c8..9c3c97697387822de7940de09cdd96358c6abea8 100644 (file)
@@ -384,46 +384,6 @@ int copyfile(const char *from, const char *to)
        return copyfile_mode(from, to, 0755);
 }
 
-static ssize_t ion(bool is_read, int fd, void *buf, size_t n)
-{
-       void *buf_start = buf;
-       size_t left = n;
-
-       while (left) {
-               /* buf must be treated as const if !is_read. */
-               ssize_t ret = is_read ? read(fd, buf, left) :
-                                       write(fd, buf, left);
-
-               if (ret < 0 && errno == EINTR)
-                       continue;
-               if (ret <= 0)
-                       return ret;
-
-               left -= ret;
-               buf  += ret;
-       }
-
-       BUG_ON((size_t)(buf - buf_start) != n);
-       return n;
-}
-
-/*
- * Read exactly 'n' bytes or return an error.
- */
-ssize_t readn(int fd, void *buf, size_t n)
-{
-       return ion(true, fd, buf, n);
-}
-
-/*
- * Write exactly 'n' bytes or return an error.
- */
-ssize_t writen(int fd, const void *buf, size_t n)
-{
-       /* ion does not modify buf. */
-       return ion(false, fd, (void *)buf, n);
-}
-
 size_t hex_width(u64 v)
 {
        size_t n = 1;
index dc7a469921e96547908c0a387c47508b684fc7b3..0dab140c65170b897ea9a1c0cb0de78e700c1433 100644 (file)
@@ -11,6 +11,7 @@
 #include <stddef.h>
 #include <linux/compiler.h>
 #include <sys/types.h>
+#include <internal/lib.h>
 
 /* General helper functions */
 void usage(const char *err) __noreturn;
@@ -30,9 +31,6 @@ int copyfile_mode(const char *from, const char *to, mode_t mode);
 int copyfile_ns(const char *from, const char *to, struct nsinfo *nsi);
 int copyfile_offset(int ifd, loff_t off_in, int ofd, loff_t off_out, u64 size);
 
-ssize_t readn(int fd, void *buf, size_t n);
-ssize_t writen(int fd, const void *buf, size_t n);
-
 size_t hex_width(u64 v);
 
 extern unsigned int page_size;