libperf: Move to tools/lib/perf
Move libperf from its current location under tools/perf to a separate directory under tools/lib/. Also change various paths (mainly includes) to reflect the libperf move to a separate directory and add a new directory under MANIFEST. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20191206210612.8676-2-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
6ae9c10b7c
commit
3ce311afb5
48
tools/lib/perf/lib.c
Normal file
48
tools/lib/perf/lib.c
Normal file
@@ -0,0 +1,48 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <unistd.h>
|
||||
#include <stdbool.h>
|
||||
#include <errno.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <internal/lib.h>
|
||||
|
||||
unsigned int page_size;
|
||||
|
||||
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);
|
||||
}
|
Reference in New Issue
Block a user