LIB_H += util/hist.h
 LIB_H += util/thread.h
 LIB_H += util/data_map.h
-LIB_H += util/process_events.h
 
 LIB_OBJS += util/abspath.o
 LIB_OBJS += util/alias.o
 LIB_OBJS += util/sort.o
 LIB_OBJS += util/hist.o
 LIB_OBJS += util/data_map.o
-LIB_OBJS += util/process_events.o
 
 BUILTIN_OBJS += builtin-annotate.o
 
 
 #include "perf.h"
 #include "util/debug.h"
 
+#include "util/event.h"
 #include "util/parse-options.h"
 #include "util/parse-events.h"
 #include "util/thread.h"
 #include "util/sort.h"
 #include "util/hist.h"
-#include "util/process_events.h"
 
 static char            const *input_name = "perf.data";
 
        return 0;
 }
 
-static int
-process_sample_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_sample_event(event_t *event)
 {
        char level;
        u64 ip = event->ip.ip;
        struct symbol *sym = NULL;
        struct thread *thread = threads__findnew(event->ip.pid);
 
-       dump_printf("%p [%p]: PERF_EVENT (IP, %d): %d: %p\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->header.misc,
-               event->ip.pid,
-               (void *)(long)ip);
+       dump_printf("(IP, %d): %d: %p\n", event->header.misc,
+                   event->ip.pid, (void *)(long)ip);
 
        if (thread == NULL) {
                fprintf(stderr, "problem processing %d event, skipping it.\n",
                                "skipping event\n");
                return -1;
        }
-       total++;
 
        return 0;
 }
 
-static int
-process_comm_event(event_t *event, unsigned long offset, unsigned long head)
+static int event__process(event_t *self)
 {
-       struct thread *thread = threads__findnew(event->comm.pid);
-
-       dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->comm.comm, event->comm.pid);
-
-       if (thread == NULL ||
-           thread__set_comm(thread, event->comm.comm)) {
-               dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
-               return -1;
-       }
-       total_comm++;
-
-       return 0;
-}
-
-static int
-process_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       switch (event->header.type) {
+       switch (self->header.type) {
        case PERF_RECORD_SAMPLE:
-               return process_sample_event(event, offset, head);
+               return process_sample_event(self);
 
        case PERF_RECORD_MMAP:
-               return process_mmap_event(event, offset, head);
+               return event__process_mmap(self);
 
        case PERF_RECORD_COMM:
-               return process_comm_event(event, offset, head);
+               return event__process_comm(self);
 
        case PERF_RECORD_FORK:
-               return process_task_event(event, offset, head);
+               return event__process_task(self);
        /*
         * We dont process them right now but they are fine:
         */
                        (void *)(long)event->header.size,
                        event->header.type);
 
-       if (!size || process_event(event, offset, head) < 0) {
+       if (!size || event__process(event) < 0) {
 
                dump_printf("%p [%p]: skipping unknown header type: %d\n",
                        (void *)(offset + head),
                        (void *)(long)(event->header.size),
                        event->header.type);
-
-               total_unknown++;
-
                /*
                 * assume we lost track of the stream, check alignment, and
                 * increment a single u64 in the hope to catch on again 'soon'.
        rc = EXIT_SUCCESS;
        close(input);
 
-       dump_printf("      IP events: %10ld\n", total);
-       dump_printf("    mmap events: %10ld\n", total_mmap);
-       dump_printf("    comm events: %10ld\n", total_comm);
-       dump_printf("    fork events: %10ld\n", total_fork);
-       dump_printf(" unknown events: %10ld\n", total_unknown);
 
-       if (dump_trace)
+       if (dump_trace) {
+               event__print_totals();
                return 0;
+       }
 
        if (verbose > 3)
                threads__fprintf(stdout);
                dsos__fprintf(stdout);
 
        collapse__resort();
-       output__resort(total);
+       output__resort(event__total[0]);
 
        find_annotations();
 
 
 
 static char                    default_sort_order[] = "frag,hit,bytes";
 
-static char                    *cwd;
-static int                     cwdlen;
-
 static int                     *cpunode_map;
 static int                     max_cpu_num;
 
        }
 }
 
-static int
-process_comm_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct thread *thread = threads__findnew(event->comm.pid);
-
-       dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->comm.comm, event->comm.pid);
-
-       if (thread == NULL ||
-           thread__set_comm(thread, event->comm.comm)) {
-               dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
-               return -1;
-       }
-
-       return 0;
-}
-
 static void insert_alloc_stat(unsigned long call_site, unsigned long ptr,
                              int bytes_req, int bytes_alloc, int cpu)
 {
        }
 }
 
-static int
-process_sample_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_sample_event(event_t *event)
 {
        u64 ip = event->ip.ip;
        u64 timestamp = -1;
                more_data += sizeof(u64);
        }
 
-       dump_printf("%p [%p]: PERF_RECORD_SAMPLE (IP, %d): %d/%d: %p period: %Ld\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
+       dump_printf("(IP, %d): %d/%d: %p period: %Ld\n",
                event->header.misc,
                event->ip.pid, event->ip.tid,
                (void *)(long)ip,
 
 static struct perf_file_handler file_handler = {
        .process_sample_event   = process_sample_event,
-       .process_comm_event     = process_comm_event,
+       .process_comm_event     = event__process_comm,
        .sample_type_check      = sample_type_check,
 };
 
        register_perf_file_handler(&file_handler);
 
        return mmap_dispatch_perf_file(&header, input_name, 0, 0,
-                                      &cwdlen, &cwd);
+                                      &event__cwdlen, &event__cwd);
 }
 
 static double fragmentation(unsigned long n_req, unsigned long n_alloc)
 
 #include "util/thread.h"
 #include "util/sort.h"
 #include "util/hist.h"
-#include "util/process_events.h"
 
 static char            const *input_name = "perf.data";
 
        return 0;
 }
 
-static int
-process_sample_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_sample_event(event_t *event)
 {
        char level;
        struct symbol *sym = NULL;
                more_data += sizeof(u64);
        }
 
-       dump_printf("%p [%p]: PERF_RECORD_SAMPLE (IP, %d): %d/%d: %p period: %Ld\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
+       dump_printf("(IP, %d): %d/%d: %p period: %Ld\n",
                event->header.misc,
                event->ip.pid, event->ip.tid,
                (void *)(long)ip,
                return -1;
        }
 
-       total += period;
+       event__stats.total += period;
 
        return 0;
 }
 
-static int
-process_comm_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_comm_event(event_t *event)
 {
        struct thread *thread = threads__findnew(event->comm.pid);
 
-       dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->comm.comm, event->comm.pid);
+       dump_printf(": %s:%d\n", event->comm.comm, event->comm.pid);
 
        if (thread == NULL ||
            thread__set_comm_adjust(thread, event->comm.comm)) {
                dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
                return -1;
        }
-       total_comm++;
-
-       return 0;
-}
-
-static int
-process_lost_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       dump_printf("%p [%p]: PERF_RECORD_LOST: id:%Ld: lost:%Ld\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->lost.id,
-               event->lost.lost);
-
-       total_lost += event->lost.lost;
 
        return 0;
 }
 
-static int
-process_read_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_read_event(event_t *event)
 {
        struct perf_event_attr *attr;
 
                                           event->read.value);
        }
 
-       dump_printf("%p [%p]: PERF_RECORD_READ: %d %d %s %Lu\n",
-                       (void *)(offset + head),
-                       (void *)(long)(event->header.size),
-                       event->read.pid,
-                       event->read.tid,
-                       attr ? __event_name(attr->type, attr->config)
-                            : "FAIL",
-                       event->read.value);
+       dump_printf(": %d %d %s %Lu\n", event->read.pid, event->read.tid,
+                   attr ? __event_name(attr->type, attr->config) : "FAIL",
+                   event->read.value);
 
        return 0;
 }
 
 static struct perf_file_handler file_handler = {
        .process_sample_event   = process_sample_event,
-       .process_mmap_event     = process_mmap_event,
+       .process_mmap_event     = event__process_mmap,
        .process_comm_event     = process_comm_event,
-       .process_exit_event     = process_task_event,
-       .process_fork_event     = process_task_event,
-       .process_lost_event     = process_lost_event,
+       .process_exit_event     = event__process_task,
+       .process_fork_event     = event__process_task,
+       .process_lost_event     = event__process_lost,
        .process_read_event     = process_read_event,
        .sample_type_check      = sample_type_check,
 };
        register_perf_file_handler(&file_handler);
 
        ret = mmap_dispatch_perf_file(&header, input_name, force,
-                                     full_paths, &cwdlen, &cwd);
+                                     full_paths, &event__cwdlen, &event__cwd);
        if (ret)
                return ret;
 
-       dump_printf("      IP events: %10ld\n", total);
-       dump_printf("    mmap events: %10ld\n", total_mmap);
-       dump_printf("    comm events: %10ld\n", total_comm);
-       dump_printf("    fork events: %10ld\n", total_fork);
-       dump_printf("    lost events: %10ld\n", total_lost);
-       dump_printf(" unknown events: %10ld\n", file_handler.total_unknown);
-
-       if (dump_trace)
+       if (dump_trace) {
+               event__print_totals();
                return 0;
+       }
 
        if (verbose > 3)
                threads__fprintf(stdout);
                dsos__fprintf(stdout);
 
        collapse__resort();
-       output__resort(total);
-       output__fprintf(stdout, total);
+       output__resort(event__stats.total);
+       output__fprintf(stdout, event__stats.total);
 
        if (show_threads)
                perf_read_values_destroy(&show_threads_values);
 
 
 static char                    const *input_name = "perf.data";
 
-static unsigned long           total_comm = 0;
-
 static struct perf_header      *header;
 static u64                     sample_type;
 
 
 static int                     profile_cpu = -1;
 
-static char                    *cwd;
-static int                     cwdlen;
-
 #define PR_SET_NAME            15               /* Set process name */
 #define MAX_CPUS               4096
 
        printf("the sleep test took %Ld nsecs\n", T1-T0);
 }
 
-static int
-process_comm_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct thread *thread = threads__findnew(event->comm.tid);
-
-       dump_printf("%p [%p]: perf_event_comm: %s:%d\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->comm.comm, event->comm.pid);
-
-       if (thread == NULL ||
-           thread__set_comm(thread, event->comm.comm)) {
-               dump_printf("problem processing perf_event_comm, skipping event.\n");
-               return -1;
-       }
-       total_comm++;
-
-       return 0;
-}
-
-
 struct raw_event_sample {
        u32 size;
        char data[0];
                process_sched_migrate_task_event(raw, event, cpu, timestamp, thread);
 }
 
-static int
-process_sample_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_sample_event(event_t *event)
 {
        struct thread *thread;
        u64 ip = event->ip.ip;
                more_data += sizeof(u64);
        }
 
-       dump_printf("%p [%p]: PERF_RECORD_SAMPLE (IP, %d): %d/%d: %p period: %Ld\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
+       dump_printf("(IP, %d): %d/%d: %p period: %Ld\n",
                event->header.misc,
                event->ip.pid, event->ip.tid,
                (void *)(long)ip,
        return 0;
 }
 
-static int
-process_lost_event(event_t *event __used,
-                  unsigned long offset __used,
-                  unsigned long head __used)
+static int process_lost_event(event_t *event __used)
 {
        nr_lost_chunks++;
        nr_lost_events += event->lost.lost;
 
 static struct perf_file_handler file_handler = {
        .process_sample_event   = process_sample_event,
-       .process_comm_event     = process_comm_event,
+       .process_comm_event     = event__process_comm,
        .process_lost_event     = process_lost_event,
        .sample_type_check      = sample_type_check,
 };
        register_perf_file_handler(&file_handler);
 
        return mmap_dispatch_perf_file(&header, input_name, 0, 0,
-                                      &cwdlen, &cwd);
+                                      &event__cwdlen, &event__cwd);
 }
 
 static void print_bad_events(void)
 
        }
 }
 
-static void event__process_mmap(event_t *self)
-{
-       struct thread *thread = threads__findnew(self->mmap.pid);
-
-       if (thread != NULL) {
-               struct map *map = map__new(&self->mmap, MAP__FUNCTION, NULL, 0);
-               if (map != NULL)
-                       thread__insert_map(thread, map);
-       }
-}
-
-static void event__process_comm(event_t *self)
-{
-       struct thread *thread = threads__findnew(self->comm.pid);
-
-       if (thread != NULL)
-               thread__set_comm(thread, self->comm.comm);
-}
-
 static int event__process(event_t *event)
 {
        switch (event->header.type) {
 
 
 static char            const *input_name = "perf.data";
 
-static unsigned long   total = 0;
-static unsigned long   total_comm = 0;
-
 static struct perf_header *header;
 static u64             sample_type;
 
-static char            *cwd;
-static int             cwdlen;
-
-
-static int
-process_comm_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct thread *thread = threads__findnew(event->comm.pid);
-
-       dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->comm.comm, event->comm.pid);
-
-       if (thread == NULL ||
-           thread__set_comm(thread, event->comm.comm)) {
-               dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
-               return -1;
-       }
-       total_comm++;
-
-       return 0;
-}
-
-static int
-process_sample_event(event_t *event, unsigned long offset, unsigned long head)
+static int process_sample_event(event_t *event)
 {
        u64 ip = event->ip.ip;
        u64 timestamp = -1;
                more_data += sizeof(u64);
        }
 
-       dump_printf("%p [%p]: PERF_RECORD_SAMPLE (IP, %d): %d/%d: %p period: %Ld\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
+       dump_printf("(IP, %d): %d/%d: %p period: %Ld\n",
                event->header.misc,
                event->ip.pid, event->ip.tid,
                (void *)(long)ip,
                 */
                print_event(cpu, raw->data, raw->size, timestamp, thread->comm);
        }
-       total += period;
+       event__stats.total += period;
 
        return 0;
 }
 
 static struct perf_file_handler file_handler = {
        .process_sample_event   = process_sample_event,
-       .process_comm_event     = process_comm_event,
+       .process_comm_event     = event__process_comm,
        .sample_type_check      = sample_type_check,
 };
 
        register_perf_file_handler(&file_handler);
 
        return mmap_dispatch_perf_file(&header, input_name,
-                                      0, 0, &cwdlen, &cwd);
+                                      0, 0, &event__cwdlen, &event__cwd);
 }
 
 static const char * const annotate_usage[] = {
 
 static unsigned long   mmap_window = 32;
 static char            __cwd[PATH_MAX];
 
-static int
-process_event_stub(event_t *event __used,
-                  unsigned long offset __used,
-                  unsigned long head __used)
+static int process_event_stub(event_t *event __used)
 {
+       dump_printf(": unhandled!\n");
        return 0;
 }
 
        curr_handler = handler;
 }
 
+static const char *event__name[] = {
+       [0]                      = "TOTAL",
+       [PERF_RECORD_MMAP]       = "MMAP",
+       [PERF_RECORD_LOST]       = "LOST",
+       [PERF_RECORD_COMM]       = "COMM",
+       [PERF_RECORD_EXIT]       = "EXIT",
+       [PERF_RECORD_THROTTLE]   = "THROTTLE",
+       [PERF_RECORD_UNTHROTTLE] = "UNTHROTTLE",
+       [PERF_RECORD_FORK]       = "FORK",
+       [PERF_RECORD_READ]       = "READ",
+       [PERF_RECORD_SAMPLE]     = "SAMPLE",
+};
+
+unsigned long event__total[PERF_RECORD_MAX];
+
+void event__print_totals(void)
+{
+       int i;
+       for (i = 0; i < PERF_RECORD_MAX; ++i)
+               pr_info("%10s events: %10ld\n",
+                       event__name[i], event__total[i]);
+}
+
 static int
 process_event(event_t *event, unsigned long offset, unsigned long head)
 {
        trace_event(event);
 
+       if (event->header.type < PERF_RECORD_MAX) {
+               dump_printf("%p [%p]: PERF_RECORD_%s",
+                           (void *)(offset + head),
+                           (void *)(long)(event->header.size),
+                           event__name[event->header.type]);
+               ++event__total[0];
+               ++event__total[event->header.type];
+       }
+
        switch (event->header.type) {
        case PERF_RECORD_SAMPLE:
-               return curr_handler->process_sample_event(event, offset, head);
+               return curr_handler->process_sample_event(event);
        case PERF_RECORD_MMAP:
-               return curr_handler->process_mmap_event(event, offset, head);
+               return curr_handler->process_mmap_event(event);
        case PERF_RECORD_COMM:
-               return curr_handler->process_comm_event(event, offset, head);
+               return curr_handler->process_comm_event(event);
        case PERF_RECORD_FORK:
-               return curr_handler->process_fork_event(event, offset, head);
+               return curr_handler->process_fork_event(event);
        case PERF_RECORD_EXIT:
-               return curr_handler->process_exit_event(event, offset, head);
+               return curr_handler->process_exit_event(event);
        case PERF_RECORD_LOST:
-               return curr_handler->process_lost_event(event, offset, head);
+               return curr_handler->process_lost_event(event);
        case PERF_RECORD_READ:
-               return curr_handler->process_read_event(event, offset, head);
+               return curr_handler->process_read_event(event);
        case PERF_RECORD_THROTTLE:
-               return curr_handler->process_throttle_event(event, offset, head);
+               return curr_handler->process_throttle_event(event);
        case PERF_RECORD_UNTHROTTLE:
-               return curr_handler->process_unthrottle_event(event, offset, head);
+               return curr_handler->process_unthrottle_event(event);
        default:
                curr_handler->total_unknown++;
                return -1;
 
 #include "event.h"
 #include "header.h"
 
-typedef int (*event_type_handler_t)(event_t *, unsigned long, unsigned long);
+typedef int (*event_type_handler_t)(event_t *);
 
 struct perf_file_handler {
        event_type_handler_t    process_sample_event;
 
 #include "event.h"
 #include "debug.h"
 #include "string.h"
+#include "thread.h"
 
 static pid_t event__synthesize_comm(pid_t pid, int full,
                                    int (*process)(event_t *event))
 
        closedir(proc);
 }
+
+char *event__cwd;
+int  event__cwdlen;
+
+struct events_stats event__stats;
+
+int event__process_comm(event_t *self)
+{
+       struct thread *thread = threads__findnew(self->comm.pid);
+
+       dump_printf("PERF_RECORD_COMM: %s:%d\n",
+                   self->comm.comm, self->comm.pid);
+
+       if (thread == NULL || thread__set_comm(thread, self->comm.comm)) {
+               dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
+               return -1;
+       }
+
+       return 0;
+}
+
+int event__process_lost(event_t *self)
+{
+       dump_printf(": id:%Ld: lost:%Ld\n", self->lost.id, self->lost.lost);
+       event__stats.lost += self->lost.lost;
+       return 0;
+}
+
+int event__process_mmap(event_t *self)
+{
+       struct thread *thread = threads__findnew(self->mmap.pid);
+       struct map *map = map__new(&self->mmap, MAP__FUNCTION,
+                                  event__cwd, event__cwdlen);
+
+       dump_printf(" %d/%d: [%p(%p) @ %p]: %s\n",
+                   self->mmap.pid, self->mmap.tid,
+                   (void *)(long)self->mmap.start,
+                   (void *)(long)self->mmap.len,
+                   (void *)(long)self->mmap.pgoff,
+                   self->mmap.filename);
+
+       if (thread == NULL || map == NULL)
+               dump_printf("problem processing PERF_RECORD_MMAP, skipping event.\n");
+       else
+               thread__insert_map(thread, map);
+
+       return 0;
+}
+
+int event__process_task(event_t *self)
+{
+       struct thread *thread = threads__findnew(self->fork.pid);
+       struct thread *parent = threads__findnew(self->fork.ppid);
+
+       dump_printf("(%d:%d):(%d:%d)\n", self->fork.pid, self->fork.tid,
+                   self->fork.ppid, self->fork.ptid);
+       /*
+        * A thread clone will have the same PID for both parent and child.
+        */
+       if (thread == parent)
+               return 0;
+
+       if (self->header.type == PERF_RECORD_EXIT)
+               return 0;
+
+       if (thread == NULL || parent == NULL ||
+           thread__fork(thread, parent) < 0) {
+               dump_printf("problem processing PERF_RECORD_FORK, skipping event.\n");
+               return -1;
+       }
+
+       return 0;
+}
 
        struct sample_event             sample;
 } event_t;
 
+struct events_stats {
+       unsigned long total;
+       unsigned long lost;
+};
+
+void event__print_totals(void);
+
 enum map_type {
        MAP__FUNCTION = 0,
 
 int event__synthesize_thread(pid_t pid, int (*process)(event_t *event));
 void event__synthesize_threads(int (*process)(event_t *event));
 
+extern char *event__cwd;
+extern int  event__cwdlen;
+extern struct events_stats event__stats;
+extern unsigned long event__total[PERF_RECORD_MAX];
+
+int event__process_comm(event_t *self);
+int event__process_lost(event_t *self);
+int event__process_mmap(event_t *self);
+int event__process_task(event_t *self);
+
 #endif /* __PERF_RECORD_H */
 
        .min_percent = 0.5
 };
 
-unsigned long total;
-unsigned long total_mmap;
-unsigned long total_comm;
-unsigned long total_fork;
-unsigned long total_unknown;
-unsigned long total_lost;
-
 /*
  * histogram, sorted on item, collects counts
  */
 
+++ /dev/null
-#include "process_event.h"
-
-char   *cwd;
-int    cwdlen;
-
-int
-process_mmap_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct map *map = map__new(&event->mmap, cwd, cwdlen);
-       struct thread *thread = threads__findnew(event->mmap.pid);
-
-       dump_printf("%p [%p]: PERF_RECORD_MMAP %d/%d: [%p(%p) @ %p]: %s\n",
-                       (void *)(offset + head),
-                       (void *)(long)(event->header.size),
-                       event->mmap.pid,
-                       event->mmap.tid,
-                       (void *)(long)event->mmap.start,
-                       (void *)(long)event->mmap.len,
-                       (void *)(long)event->mmap.pgoff,
-                       event->mmap.filename);
-
-       if (thread == NULL || map == NULL) {
-               dump_printf("problem processing PERF_RECORD_MMAP, skipping event.\n");
-               return 0;
-       }
-
-       thread__insert_map(thread, map);
-       total_mmap++;
-
-       return 0;
-
-}
-
-int
-process_comm_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct thread *thread = threads__findnew(event->comm.pid);
-
-       dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->comm.comm, event->comm.pid);
-
-       if (thread == NULL ||
-           thread__set_comm_adjust(thread, event->comm.comm)) {
-               dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
-               return -1;
-       }
-       total_comm++;
-
-       return 0;
-}
-
 
+++ /dev/null
-#ifndef __PROCESS_EVENT_H
-#define __PROCESS_EVENT_H
-
-#include "../builtin.h"
-#include "util.h"
-
-#include "color.h"
-#include <linux/list.h>
-#include "cache.h"
-#include <linux/rbtree.h>
-#include "symbol.h"
-#include "string.h"
-
-#include "../perf.h"
-#include "debug.h"
-
-#include "parse-options.h"
-#include "parse-events.h"
-
-#include "thread.h"
-#include "sort.h"
-#include "hist.h"
-
-extern char    *cwd;
-extern int     cwdlen;
-extern int process_mmap_event(event_t *, unsigned long, unsigned long);
-extern int process_comm_event(event_t *, unsigned long , unsigned long);
-
-#endif /* __PROCESS_H */
 
+++ /dev/null
-#include "process_events.h"
-
-char   *cwd;
-int    cwdlen;
-
-int
-process_mmap_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct map *map = map__new(&event->mmap, MAP__FUNCTION, cwd, cwdlen);
-       struct thread *thread = threads__findnew(event->mmap.pid);
-
-       dump_printf("%p [%p]: PERF_RECORD_MMAP %d/%d: [%p(%p) @ %p]: %s\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->mmap.pid,
-               event->mmap.tid,
-               (void *)(long)event->mmap.start,
-               (void *)(long)event->mmap.len,
-               (void *)(long)event->mmap.pgoff,
-               event->mmap.filename);
-
-       if (thread == NULL || map == NULL) {
-               dump_printf("problem processing PERF_RECORD_MMAP, skipping event.\n");
-               return 0;
-       }
-
-       thread__insert_map(thread, map);
-       total_mmap++;
-
-       return 0;
-}
-
-int
-process_task_event(event_t *event, unsigned long offset, unsigned long head)
-{
-       struct thread *thread = threads__findnew(event->fork.pid);
-       struct thread *parent = threads__findnew(event->fork.ppid);
-
-       dump_printf("%p [%p]: PERF_RECORD_%s: (%d:%d):(%d:%d)\n",
-               (void *)(offset + head),
-               (void *)(long)(event->header.size),
-               event->header.type == PERF_RECORD_FORK ? "FORK" : "EXIT",
-               event->fork.pid, event->fork.tid,
-               event->fork.ppid, event->fork.ptid);
-
-       /*
-        * A thread clone will have the same PID for both
-        * parent and child.
-        */
-       if (thread == parent)
-               return 0;
-
-       if (event->header.type == PERF_RECORD_EXIT)
-               return 0;
-
-       if (!thread || !parent || thread__fork(thread, parent)) {
-               dump_printf("problem processing PERF_RECORD_FORK, skipping event.\n");
-               return -1;
-       }
-       total_fork++;
-
-       return 0;
-}
-
 
+++ /dev/null
-#ifndef __PROCESS_EVENTS_H
-#define __PROCESS_EVENTS_H
-
-#include "../builtin.h"
-
-#include "util.h"
-#include "color.h"
-#include <linux/list.h>
-#include "cache.h"
-#include <linux/rbtree.h>
-#include "symbol.h"
-#include "string.h"
-#include "callchain.h"
-#include "strlist.h"
-#include "values.h"
-
-#include "../perf.h"
-#include "debug.h"
-#include "header.h"
-
-#include "parse-options.h"
-#include "parse-events.h"
-
-#include "data_map.h"
-#include "thread.h"
-#include "sort.h"
-#include "hist.h"
-
-extern char    *cwd;
-extern int     cwdlen;
-
-extern int process_mmap_event(event_t *, unsigned long , unsigned long);
-extern int process_task_event(event_t *, unsigned long, unsigned long);
-
-#endif /* __PROCESS_EVENTS_H */