On (08/23/14 23:22), Nanley Chery wrote:
---
src/tuning/tuningusb.cpp | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/tuning/tuningusb.cpp b/src/tuning/tuningusb.cpp
index 27a6dca..ee86335 100644
--- a/src/tuning/tuningusb.cpp
+++ b/src/tuning/tuningusb.cpp
@@ -28,6 +28,7 @@
#include "unistd.h"
#include "tuningusb.h"
#include <string.h>
+#include <dirent.h>
#include <utility>
#include <iostream>
#include <fstream>
@@ -126,6 +127,25 @@ static void add_usb_callback(const char *d_name)
if (access(filename, R_OK)!=0)
return;
+ /* every interface of this device should support autosuspend */
+ sprintf(filename, "/sys/bus/usb/devices/%s", d_name);
+ DIR *dir = opendir(filename);
+ if (!dir)
+ return;
+ while (1) {
+ struct dirent *entry = readdir(dir);
+ if (!entry)
+ break;
+ if (entry->d_name[0] == '.')
+ continue;
+ sprintf(filename, "/sys/bus/usb/devices/%s/%s/supports_autosuspend", d_name,
entry->d_name);
+ bool intf_path_found;
+ bool intf_supports_auto = read_sysfs(filename, &intf_path_found);
+ if (intf_path_found && !intf_supports_auto)
return; with dir open?
please consider to use process_directory() from lib.cpp
-ss
+ }
+ closedir(dir);
+
sprintf(filename, "/sys/bus/usb/devices/%s", d_name);
usb = new class usb_tunable(filename, d_name);
all_tunables.push_back(usb);
--
2.0.4
_______________________________________________
PowerTop mailing list
PowerTop(a)lists.01.org
https://lists.01.org/mailman/listinfo/powertop