On (09/16/12 23:17), Namhyung Kim wrote:
The third argument of PERF_EVENT_IOC_{ENABLE,DISABLE} ioctl is a
flag
to determine whether the command should be applied to group members.
Since the powertop doesn't use the event grouping feature, it'd better
passing 0 as a third argument explicitly.
[..]
<+629>: mov -0x88(%rbp),%rax
<+636>: mov 0x8(%rax),%eax
<+639>: mov $0x2400,%esi
<+644>: mov %eax,%edi
<+646>: mov $0x0,%eax
<+651>: callq 0x404460 <ioctl@plt>
[..]
agree, let's pass 0 explicitly to perf_ioctl():
3307
3308 if (flags & PERF_IOC_FLAG_GROUP)
3309 perf_event_for_each(event, func);
3310 else
3311 perf_event_for_each_child(event, func);
3312
good catch, thank you!
-ss
Signed-off-by: Namhyung Kim <namhyung(a)gmail.com>
---
src/perf/perf.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/perf/perf.cpp b/src/perf/perf.cpp
index 69f1da3..c8ba7a8 100644
--- a/src/perf/perf.cpp
+++ b/src/perf/perf.cpp
@@ -128,7 +128,7 @@ void perf_event::create_perf_event(char *eventname, int _cpu)
return;
}
- ret = ioctl(perf_fd, PERF_EVENT_IOC_ENABLE);
+ ret = ioctl(perf_fd, PERF_EVENT_IOC_ENABLE, 0);
if (ret < 0) {
fprintf(stderr, "failed to enable perf \n");
@@ -210,7 +210,7 @@ void perf_event::start(void)
void perf_event::stop(void)
{
int ret;
- ret = ioctl(perf_fd, PERF_EVENT_IOC_DISABLE);
+ ret = ioctl(perf_fd, PERF_EVENT_IOC_DISABLE, 0);
if (ret)
cout << "stop failing\n";
}