perf: Use read() instead of lseek() in trace_event_read.c:skip()
[safe/jmp/linux-2.6] / tools / perf / util / trace-event-read.c
index cb54cd0..f55cc3a 100644 (file)
@@ -53,12 +53,6 @@ static unsigned long page_size;
 static ssize_t calc_data_size;
 static bool repipe;
 
-/* If it fails, the next read will report it */
-static void skip(int size)
-{
-       lseek(input_fd, size, SEEK_CUR);
-}
-
 static int do_read(int fd, void *buf, int size)
 {
        int rsize = size;
@@ -98,6 +92,19 @@ static int read_or_die(void *data, int size)
        return r;
 }
 
+/* If it fails, the next read will report it */
+static void skip(int size)
+{
+       char buf[BUFSIZ];
+       int r;
+
+       while (size) {
+               r = size > BUFSIZ ? BUFSIZ : size;
+               read_or_die(buf, r);
+               size -= r;
+       };
+}
+
 static unsigned int read4(void)
 {
        unsigned int data;