* [Powertop] [RFC/PATCH] devices: Use new(std::nothrow) for creating devices
@ 2012-10-18 15:32 Namhyung Kim
0 siblings, 0 replies; 3+ messages in thread
From: Namhyung Kim @ 2012-10-18 15:32 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 5520 bytes --]
When allocation fails, just skip the device and proceed if possible.
This is also for consistency with others.
Signed-off-by: Namhyung Kim <namhyung(a)gmail.com>
---
src/devices/ahci.cpp | 5 ++++-
src/devices/alsa.cpp | 5 ++++-
src/devices/backlight.cpp | 5 ++++-
src/devices/i915-gpu.cpp | 6 ++++--
src/devices/rfkill.cpp | 5 ++++-
src/devices/runtime_pm.cpp | 4 +++-
src/devices/thinkpad-fan.cpp | 8 +++++---
src/devices/thinkpad-light.cpp | 6 ++++--
src/devices/usb.cpp | 6 ++++--
9 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/src/devices/ahci.cpp b/src/devices/ahci.cpp
index 1fe39c7..13d881f 100644
--- a/src/devices/ahci.cpp
+++ b/src/devices/ahci.cpp
@@ -275,7 +275,10 @@ void create_all_ahcis(void)
file.close();
sprintf(filename, "/sys/class/scsi_host/%s", entry->d_name);
- bl = new class ahci(entry->d_name, filename);
+ bl = new(std::nothrow) class ahci(entry->d_name, filename);
+ if (!bl)
+ continue;
+
all_devices.push_back(bl);
register_parameter("ahci-link-power-active", 0.6); /* active sata link takes about 0.6 W */
register_parameter("ahci-link-power-partial");
diff --git a/src/devices/alsa.cpp b/src/devices/alsa.cpp
index 4f5d3f9..e42146d 100644
--- a/src/devices/alsa.cpp
+++ b/src/devices/alsa.cpp
@@ -176,7 +176,10 @@ void create_all_alsa(void)
sprintf(filename, "/sys/class/sound/card0/%s", entry->d_name);
- bl = new class alsa(entry->d_name, filename);
+ bl = new(std::nothrow) class alsa(entry->d_name, filename);
+ if (!bl)
+ continue;
+
all_devices.push_back(bl);
register_parameter("alsa-codec-power", 0.5);
}
diff --git a/src/devices/backlight.cpp b/src/devices/backlight.cpp
index b8c9147..447e6dc 100644
--- a/src/devices/backlight.cpp
+++ b/src/devices/backlight.cpp
@@ -171,7 +171,10 @@ void create_all_backlights(void)
if (entry->d_name[0] == '.')
continue;
sprintf(filename, "/sys/class/backlight/%s", entry->d_name);
- bl = new class backlight(entry->d_name, filename);
+ bl = new(std::nothrow) class backlight(entry->d_name, filename);
+ if (!bl)
+ continue;
+
all_devices.push_back(bl);
register_parameter("backlight");
register_parameter("backlight-power");
diff --git a/src/devices/i915-gpu.cpp b/src/devices/i915-gpu.cpp
index bcc07cc..1e68ee5 100644
--- a/src/devices/i915-gpu.cpp
+++ b/src/devices/i915-gpu.cpp
@@ -76,10 +76,12 @@ void create_i915_gpu(void)
return;
}
- register_parameter("gpu-operations");
+ gpu = new(std::nothrow) class i915gpu();
+ if (!gpu)
+ return;
- gpu = new class i915gpu();
all_devices.push_back(gpu);
+ register_parameter("gpu-operations");
}
diff --git a/src/devices/rfkill.cpp b/src/devices/rfkill.cpp
index 2404432..ec98000 100644
--- a/src/devices/rfkill.cpp
+++ b/src/devices/rfkill.cpp
@@ -163,7 +163,10 @@ void create_all_rfkills(void)
}
sprintf(filename, "/sys/class/rfkill/%s", entry->d_name);
- bl = new class rfkill(name, filename);
+ bl = new(std::nothrow) class rfkill(name, filename);
+ if (!bl)
+ continue;
+
all_devices.push_back(bl);
}
closedir(dir);
diff --git a/src/devices/runtime_pm.cpp b/src/devices/runtime_pm.cpp
index 0d13cab..c8dc0f5 100644
--- a/src/devices/runtime_pm.cpp
+++ b/src/devices/runtime_pm.cpp
@@ -199,7 +199,9 @@ static void do_bus(const char *bus)
if (!device_has_runtime_pm(filename))
continue;
- dev = new class runtime_pmdevice(entry->d_name, filename);
+ dev = new(std::nothrow) class runtime_pmdevice(entry->d_name, filename);
+ if (!dev)
+ continue;
if (strcmp(bus, "pci") == 0) {
uint16_t vendor = 0, device = 0;
diff --git a/src/devices/thinkpad-fan.cpp b/src/devices/thinkpad-fan.cpp
index 9f470e4..3b1684c 100644
--- a/src/devices/thinkpad-fan.cpp
+++ b/src/devices/thinkpad-fan.cpp
@@ -82,12 +82,14 @@ void create_thinkpad_fan(void)
if (access(filename, R_OK) !=0)
return;
+ fan = new(std::nothrow) class thinkpad_fan();
+ if (!fan)
+ return;
+
+ all_devices.push_back(fan);
register_parameter("thinkpad-fan", 10);
register_parameter("thinkpad-fan-sqr", 5);
register_parameter("thinkpad-fan-cub", 10);
-
- fan = new class thinkpad_fan();
- all_devices.push_back(fan);
}
diff --git a/src/devices/thinkpad-light.cpp b/src/devices/thinkpad-light.cpp
index e5fde10..4316be3 100644
--- a/src/devices/thinkpad-light.cpp
+++ b/src/devices/thinkpad-light.cpp
@@ -80,10 +80,12 @@ void create_thinkpad_light(void)
if (access(filename, R_OK) !=0)
return;
- register_parameter("thinkpad-light", 10);
+ light = new(std::nothrow) class thinkpad_light();
+ if (!light)
+ return;
- light = new class thinkpad_light();
all_devices.push_back(light);
+ register_parameter("thinkpad-light", 10);
}
diff --git a/src/devices/usb.cpp b/src/devices/usb.cpp
index e7542a8..f637e63 100644
--- a/src/devices/usb.cpp
+++ b/src/devices/usb.cpp
@@ -233,9 +233,11 @@ void create_all_usb_devices(void)
if (result_device_exists(device_name))
continue;
- usb = new class usbdevice(device_name, filename, devid_name);
- all_devices.push_back(usb);
+ usb = new(std::nothrow) class usbdevice(device_name, filename, devid_name);
+ if (!usb)
+ continue;
+ all_devices.push_back(usb);
register_parameter(devid_name, 0.1);
}
closedir(dir);
--
1.7.9.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Powertop] [RFC/PATCH] devices: Use new(std::nothrow) for creating devices
@ 2012-10-18 15:36 Arjan van de Ven
0 siblings, 0 replies; 3+ messages in thread
From: Arjan van de Ven @ 2012-10-18 15:36 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 499 bytes --]
On 10/18/2012 8:32 AM, Namhyung Kim wrote:
> When allocation fails, just skip the device and proceed if possible.
> This is also for consistency with others.
hmm...
if we're that low on memory something is so seriously wrong, exiting is the right answer really.
I'm getting strong advice from other userspace coders that checking allocations like this is actually
pointless...
based on that, I'd say we need to go for better code readability, not more complexity for no actual gain.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Powertop] [RFC/PATCH] devices: Use new(std::nothrow) for creating devices
@ 2012-10-18 15:44 Namhyung Kim
0 siblings, 0 replies; 3+ messages in thread
From: Namhyung Kim @ 2012-10-18 15:44 UTC (permalink / raw)
To: powertop
[-- Attachment #1: Type: text/plain, Size: 629 bytes --]
2012-10-18 (목), 08:36 -0700, Arjan van de Ven:
> On 10/18/2012 8:32 AM, Namhyung Kim wrote:
> > When allocation fails, just skip the device and proceed if possible.
> > This is also for consistency with others.
>
> hmm...
> if we're that low on memory something is so seriously wrong, exiting is the right answer really.
>
> I'm getting strong advice from other userspace coders that checking allocations like this is actually
> pointless...
> based on that, I'd say we need to go for better code readability, not more complexity for no actual gain.
>
Understood. Thanks for the quick reply!
Namhyung
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-10-18 15:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-18 15:36 [Powertop] [RFC/PATCH] devices: Use new(std::nothrow) for creating devices Arjan van de Ven
-- strict thread matches above, loose matches on Subject: below --
2012-10-18 15:44 Namhyung Kim
2012-10-18 15:32 Namhyung Kim
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.