On Friday, January 28, 2011 06:28:28 AM Andreas Mohr wrote:
> Hi,
>
> On Thu, Jan 27, 2011 at 09:41:58PM +0100, Thomas Renninger wrote:
> > This improves the error message to:
> > Registered 1021 perf events, failed due to file descriptor limits
> > Try again with increased limit: ulimit -n <limit>
>
> Thanks!
>
> > + if (errno == 24) {
>
> Why would one want to hard-code EMFILE??
> (/usr/include/asm-generic/errno-base.h).
Sure. I just quickly copied the errno dump.
Thanks.
New version:
---
Signed-off-by: Thomas Renninger <[email protected]>
diff --git a/perf/perf.cpp b/perf/perf.cpp
index 73682aa..38cd83d 100644
--- a/perf/perf.cpp
+++ b/perf/perf.cpp
@@ -72,6 +72,7 @@ void perf_event::create_perf_event(char *eventname, int _cpu)
{
struct perf_event_attr attr;
int ret;
+ static int file_count = 0;
struct {
__u64 count;
@@ -108,9 +109,14 @@ void perf_event::create_perf_event(char *eventname, int
_cpu)
if (perf_fd < 0) {
reset_display();
- fprintf(stderr, _("PowerTOP %s needs the kernel to support the
'perf' subsystem\n"), POWERTOP_VERSION);
- fprintf(stderr, _("as well as support for trace points in the
kernel:\n"));
- fprintf(stderr,
_("CONFIG_PERF_EVENTS=y\nCONFIG_PERF_COUNTERS=y\nCONFIG_TRACEPOINTS=y\nCONFIG_TRACING=y\n"));
+ if (errno == EMFILE) {
+ fprintf(stderr, _("Registered %d perf events, failed
due to file descriptor limits\n"), file_count);
+ fprintf(stderr, _("Try again with increased limit:
ulimit -n <limit>\n"));
+ } else {
+ fprintf(stderr, _("PowerTOP %s needs the kernel to
support the 'perf' subsystem\n"), POWERTOP_VERSION);
+ fprintf(stderr, _("as well as support for trace points
in the kernel:\n"));
+ fprintf(stderr,
_("CONFIG_PERF_EVENTS=y\nCONFIG_PERF_COUNTERS=y\nCONFIG_TRACEPOINTS=y\nCONFIG_TRACING=y\n"));
+ }
exit(EXIT_FAILURE);
}
if (read(perf_fd, &read_data, sizeof(read_data)) == -1) {
@@ -137,7 +143,7 @@ void perf_event::create_perf_event(char *eventname, int
_cpu)
pc = (perf_event_mmap_page *)perf_mmap;
data_mmap = (unsigned char *)perf_mmap + getpagesize();
-
+ file_count++;
}
void perf_event::set_event_name(const char *event_name)
_______________________________________________
Power mailing list
[email protected]
http://www.bughost.org/mailman/listinfo/power