perf util: Move do_read from session to util

Not really something to be exported from session.c. Rename it to
'readn' as others did in the past.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 daec78a0
...@@ -604,7 +604,7 @@ int perf_header__write(struct perf_header *self, int fd, bool at_exit) ...@@ -604,7 +604,7 @@ int perf_header__write(struct perf_header *self, int fd, bool at_exit)
static int perf_header__getbuffer64(struct perf_header *self, static int perf_header__getbuffer64(struct perf_header *self,
int fd, void *buf, size_t size) int fd, void *buf, size_t size)
{ {
if (do_read(fd, buf, size) <= 0) if (readn(fd, buf, size) <= 0)
return -1; return -1;
if (self->needs_swap) if (self->needs_swap)
...@@ -660,7 +660,7 @@ int perf_file_header__read(struct perf_file_header *self, ...@@ -660,7 +660,7 @@ int perf_file_header__read(struct perf_file_header *self,
{ {
lseek(fd, 0, SEEK_SET); lseek(fd, 0, SEEK_SET);
if (do_read(fd, self, sizeof(*self)) <= 0 || if (readn(fd, self, sizeof(*self)) <= 0 ||
memcmp(&self->magic, __perf_magic, sizeof(self->magic))) memcmp(&self->magic, __perf_magic, sizeof(self->magic)))
return -1; return -1;
...@@ -821,7 +821,7 @@ static int perf_file_header__read_pipe(struct perf_pipe_file_header *self, ...@@ -821,7 +821,7 @@ static int perf_file_header__read_pipe(struct perf_pipe_file_header *self,
struct perf_header *ph, int fd, struct perf_header *ph, int fd,
bool repipe) bool repipe)
{ {
if (do_read(fd, self, sizeof(*self)) <= 0 || if (readn(fd, self, sizeof(*self)) <= 0 ||
memcmp(&self->magic, __perf_magic, sizeof(self->magic))) memcmp(&self->magic, __perf_magic, sizeof(self->magic)))
return -1; return -1;
......
...@@ -838,23 +838,6 @@ static struct thread *perf_session__register_idle_thread(struct perf_session *se ...@@ -838,23 +838,6 @@ static struct thread *perf_session__register_idle_thread(struct perf_session *se
return thread; return thread;
} }
int do_read(int fd, void *buf, size_t size)
{
void *buf_start = buf;
while (size) {
int ret = read(fd, buf, size);
if (ret <= 0)
return ret;
size -= ret;
buf += ret;
}
return buf - buf_start;
}
#define session_done() (*(volatile int *)(&session_done)) #define session_done() (*(volatile int *)(&session_done))
volatile int session_done; volatile int session_done;
...@@ -872,7 +855,7 @@ static int __perf_session__process_pipe_events(struct perf_session *self, ...@@ -872,7 +855,7 @@ static int __perf_session__process_pipe_events(struct perf_session *self,
head = 0; head = 0;
more: more:
err = do_read(self->fd, &event, sizeof(struct perf_event_header)); err = readn(self->fd, &event, sizeof(struct perf_event_header));
if (err <= 0) { if (err <= 0) {
if (err == 0) if (err == 0)
goto done; goto done;
...@@ -892,8 +875,7 @@ static int __perf_session__process_pipe_events(struct perf_session *self, ...@@ -892,8 +875,7 @@ static int __perf_session__process_pipe_events(struct perf_session *self,
p += sizeof(struct perf_event_header); p += sizeof(struct perf_event_header);
if (size - sizeof(struct perf_event_header)) { if (size - sizeof(struct perf_event_header)) {
err = do_read(self->fd, p, err = readn(self->fd, p, size - sizeof(struct perf_event_header));
size - sizeof(struct perf_event_header));
if (err <= 0) { if (err <= 0) {
if (err == 0) { if (err == 0) {
pr_err("unexpected end of event stream\n"); pr_err("unexpected end of event stream\n");
......
...@@ -109,7 +109,6 @@ void mem_bswap_64(void *src, int byte_size); ...@@ -109,7 +109,6 @@ void mem_bswap_64(void *src, int byte_size);
int perf_session__create_kernel_maps(struct perf_session *self); int perf_session__create_kernel_maps(struct perf_session *self);
int do_read(int fd, void *buf, size_t size);
void perf_session__update_sample_type(struct perf_session *self); void perf_session__update_sample_type(struct perf_session *self);
void perf_session__set_sample_id_all(struct perf_session *session, bool value); void perf_session__set_sample_id_all(struct perf_session *session, bool value);
void perf_session__set_sample_type(struct perf_session *session, u64 type); void perf_session__set_sample_type(struct perf_session *session, u64 type);
......
...@@ -114,3 +114,20 @@ unsigned long convert_unit(unsigned long value, char *unit) ...@@ -114,3 +114,20 @@ unsigned long convert_unit(unsigned long value, char *unit)
return value; return value;
} }
int readn(int fd, void *buf, size_t n)
{
void *buf_start = buf;
while (n) {
int ret = read(fd, buf, n);
if (ret <= 0)
return ret;
n -= ret;
buf += ret;
}
return buf - buf_start;
}
...@@ -265,6 +265,7 @@ void argv_free(char **argv); ...@@ -265,6 +265,7 @@ void argv_free(char **argv);
bool strglobmatch(const char *str, const char *pat); bool strglobmatch(const char *str, const char *pat);
bool strlazymatch(const char *str, const char *pat); bool strlazymatch(const char *str, const char *pat);
unsigned long convert_unit(unsigned long value, char *unit); unsigned long convert_unit(unsigned long value, char *unit);
int readn(int fd, void *buf, size_t size);
#define _STR(x) #x #define _STR(x) #x
#define STR(x) _STR(x) #define STR(x) _STR(x)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册