Merge branch 'perf/test' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux...
authorIngo Molnar <mingo@elte.hu>
Tue, 4 Jan 2011 07:10:28 +0000 (08:10 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 4 Jan 2011 07:10:28 +0000 (08:10 +0100)
1  2 
tools/perf/util/header.c

diff --combined tools/perf/util/header.c
index 4b8c8397a94706e0002fe3b1b126fc77d81c1aea,05dec98fc3ffde857db25b1313056d6fe511cbe4..989fa2dee2fd2ae441d98921b9e69a56c4fe50e2
@@@ -270,16 -270,15 +270,16 @@@ int build_id_cache__add_s(const char *s
                          const char *name, bool is_kallsyms)
  {
        const size_t size = PATH_MAX;
 -      char *filename = malloc(size),
 +      char *realname = realpath(name, NULL),
 +           *filename = malloc(size),
             *linkname = malloc(size), *targetname;
        int len, err = -1;
  
 -      if (filename == NULL || linkname == NULL)
 +      if (realname == NULL || filename == NULL || linkname == NULL)
                goto out_free;
  
        len = snprintf(filename, size, "%s%s%s",
 -                     debugdir, is_kallsyms ? "/" : "", name);
 +                     debugdir, is_kallsyms ? "/" : "", realname);
        if (mkdir_p(filename, 0755))
                goto out_free;
  
                if (is_kallsyms) {
                         if (copyfile("/proc/kallsyms", filename))
                                goto out_free;
 -              } else if (link(name, filename) && copyfile(name, filename))
 +              } else if (link(realname, filename) && copyfile(name, filename))
                        goto out_free;
        }
  
        if (symlink(targetname, linkname) == 0)
                err = 0;
  out_free:
 +      free(realname);
        free(filename);
        free(linkname);
        return err;
@@@ -463,7 -461,7 +463,7 @@@ static int perf_header__adds_write(stru
  
                /* Write trace info */
                trace_sec->offset = lseek(fd, 0, SEEK_CUR);
-               read_tracing_data(fd, attrs, nr_counters);
+               read_tracing_data(fd, &evsel_list);
                trace_sec->size = lseek(fd, 0, SEEK_CUR) - trace_sec->offset;
        }
  
@@@ -606,7 -604,7 +606,7 @@@ int perf_header__write(struct perf_head
  static int perf_header__getbuffer64(struct perf_header *self,
                                    int fd, void *buf, size_t size)
  {
-       if (do_read(fd, buf, size) <= 0)
+       if (readn(fd, buf, size) <= 0)
                return -1;
  
        if (self->needs_swap)
@@@ -662,7 -660,7 +662,7 @@@ int perf_file_header__read(struct perf_
  {
        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)))
                return -1;
  
@@@ -823,7 -821,7 +823,7 @@@ static int perf_file_header__read_pipe(
                                       struct perf_header *ph, int fd,
                                       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)))
                return -1;
  
@@@ -1133,8 -1131,7 +1133,7 @@@ int event__process_event_type(event_t *
        return 0;
  }
  
- int event__synthesize_tracing_data(int fd, struct perf_event_attr *pattrs,
-                                  int nb_events,
+ int event__synthesize_tracing_data(int fd, struct list_head *pattrs,
                                   event__handler_t process,
                                   struct perf_session *session __unused)
  {
        memset(&ev, 0, sizeof(ev));
  
        ev.tracing_data.header.type = PERF_RECORD_HEADER_TRACING_DATA;
-       size = read_tracing_data_size(fd, pattrs, nb_events);
+       size = read_tracing_data_size(fd, pattrs);
        if (size <= 0)
                return size;
        aligned_size = ALIGN(size, sizeof(u64));
  
        process(&ev, NULL, session);
  
-       err = read_tracing_data(fd, pattrs, nb_events);
+       err = read_tracing_data(fd, pattrs);
        write_padded(fd, NULL, 0, padding);
  
        return aligned_size;