Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 147716
b: refs/heads/master
c: ea1900e
h: refs/heads/master
v: v3
  • Loading branch information
Peter Zijlstra authored and Ingo Molnar committed Jun 11, 2009
1 parent 02420a2 commit 12f0d3b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 66fff22483d8542dfb4d61a28d21277bbde321e8
refs/heads/master: ea1900e571d40a3ce60c835c2f21e1fd8c5cb663
3 changes: 2 additions & 1 deletion trunk/tools/perf/builtin-record.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,8 +350,9 @@ static void create_counter(int counter, int cpu, pid_t pid)
struct perf_counter_attr *attr = attrs + counter;
int track = 1;

attr->sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_TID | PERF_SAMPLE_PERIOD;
attr->sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_TID;
if (freq) {
attr->sample_type |= PERF_SAMPLE_PERIOD;
attr->freq = 1;
attr->sample_freq = freq;
}
Expand Down
18 changes: 11 additions & 7 deletions trunk/tools/perf/builtin-report.c
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ struct hist_entry {
uint64_t ip;
char level;

uint32_t count;
uint64_t count;
};

/*
Expand Down Expand Up @@ -726,7 +726,7 @@ hist_entry__fprintf(FILE *fp, struct hist_entry *self, uint64_t total_samples)

static int
hist_entry__add(struct thread *thread, struct map *map, struct dso *dso,
struct symbol *sym, uint64_t ip, char level)
struct symbol *sym, uint64_t ip, char level, uint64_t count)
{
struct rb_node **p = &hist.rb_node;
struct rb_node *parent = NULL;
Expand All @@ -738,7 +738,7 @@ hist_entry__add(struct thread *thread, struct map *map, struct dso *dso,
.sym = sym,
.ip = ip,
.level = level,
.count = 1,
.count = count,
};
int cmp;

Expand All @@ -749,7 +749,7 @@ hist_entry__add(struct thread *thread, struct map *map, struct dso *dso,
cmp = hist_entry__cmp(&entry, he);

if (!cmp) {
he->count++;
he->count += count;
return 0;
}

Expand Down Expand Up @@ -942,15 +942,19 @@ process_overflow_event(event_t *event, unsigned long offset, unsigned long head)
struct dso *dso = NULL;
struct thread *thread = threads__findnew(event->ip.pid);
uint64_t ip = event->ip.ip;
uint64_t period = 1;
struct map *map = NULL;

if (event->header.type & PERF_SAMPLE_PERIOD)
period = event->ip.period;

dprintf("%p [%p]: PERF_EVENT (IP, %d): %d: %p period: %Ld\n",
(void *)(offset + head),
(void *)(long)(event->header.size),
event->header.misc,
event->ip.pid,
(void *)(long)ip,
(long long)event->ip.period);
(long long)period);

dprintf(" ... thread: %s:%d\n", thread->comm, thread->pid);

Expand Down Expand Up @@ -1001,13 +1005,13 @@ process_overflow_event(event_t *event, unsigned long offset, unsigned long head)
if (dso)
sym = dso->find_symbol(dso, ip);

if (hist_entry__add(thread, map, dso, sym, ip, level)) {
if (hist_entry__add(thread, map, dso, sym, ip, level, period)) {
fprintf(stderr,
"problem incrementing symbol count, skipping event\n");
return -1;
}
}
total++;
total += period;

return 0;
}
Expand Down

0 comments on commit 12f0d3b

Please sign in to comment.