Blame SOURCES/powertop-2.3-fd-limit-err.patch
|
|
4d24b8 |
diff -up powertop-2.4/src/perf/perf.cpp.orig powertop-2.4/src/perf/perf.cpp
|
|
|
4d24b8 |
--- powertop-2.4/src/perf/perf.cpp.orig 2013-01-31 16:39:27.000000000 -0500
|
|
|
4d24b8 |
+++ powertop-2.4/src/perf/perf.cpp 2013-09-19 10:36:02.298839248 -0400
|
|
|
4d24b8 |
@@ -26,6 +26,7 @@
|
|
|
4d24b8 |
#include <iostream>
|
|
|
4d24b8 |
#include <fstream>
|
|
|
4d24b8 |
|
|
|
4d24b8 |
+#include <errno.h>
|
|
|
4d24b8 |
#include <unistd.h>
|
|
|
4d24b8 |
#include <stdio.h>
|
|
|
4d24b8 |
#include <stdlib.h>
|
|
|
4d24b8 |
@@ -72,6 +73,7 @@ void perf_event::create_perf_event(char
|
|
|
4d24b8 |
{
|
|
|
4d24b8 |
struct perf_event_attr attr;
|
|
|
4d24b8 |
int ret;
|
|
|
4d24b8 |
+ int err;
|
|
|
4d24b8 |
|
|
|
4d24b8 |
struct {
|
|
|
4d24b8 |
__u64 count;
|
|
|
4d24b8 |
@@ -107,10 +109,15 @@ void perf_event::create_perf_event(char
|
|
|
4d24b8 |
perf_fd = sys_perf_event_open(&attr, -1, _cpu, -1, 0);
|
|
|
4d24b8 |
|
|
|
4d24b8 |
if (perf_fd < 0) {
|
|
|
4d24b8 |
+ err = errno;
|
|
|
4d24b8 |
reset_display();
|
|
|
4d24b8 |
- fprintf(stderr, _("PowerTOP %s needs the kernel to support the 'perf' subsystem\n"), POWERTOP_VERSION);
|
|
|
4d24b8 |
- fprintf(stderr, _("as well as support for trace points in the kernel:\n"));
|
|
|
4d24b8 |
- fprintf(stderr, "CONFIG_PERF_EVENTS=y\nCONFIG_PERF_COUNTERS=y\nCONFIG_TRACEPOINTS=y\nCONFIG_TRACING=y\n");
|
|
|
4d24b8 |
+ if (err == EMFILE)
|
|
|
4d24b8 |
+ fprintf(stderr, _("Too many open files, please increase the limit of open file descriptors.\n"));
|
|
|
4d24b8 |
+ else {
|
|
|
4d24b8 |
+ fprintf(stderr, _("PowerTOP %s needs the kernel to support the 'perf' subsystem\n"), POWERTOP_VERSION);
|
|
|
4d24b8 |
+ fprintf(stderr, _("as well as support for trace points in the kernel:\n"));
|
|
|
4d24b8 |
+ fprintf(stderr, "CONFIG_PERF_EVENTS=y\nCONFIG_PERF_COUNTERS=y\nCONFIG_TRACEPOINTS=y\nCONFIG_TRACING=y\n");
|
|
|
4d24b8 |
+ }
|
|
|
4d24b8 |
exit(EXIT_FAILURE);
|
|
|
4d24b8 |
}
|
|
|
4d24b8 |
if (read(perf_fd, &read_data, sizeof(read_data)) == -1) {
|