Allow userspace do something special on overtemp

Pavel Machek
2004-08-11T08:53:47Z

Hi!

This patch cleans up thermal.c a bit, and adds possibility to react to
critical overtemp: it tries to call /sbin/overtemp, and only if that
fails calls /sbin/poweroff.

Could it be applied?
Pavel

--- tmp/linux/drivers/acpi/thermal.c 2004-08-11 10:47:04.000000000 +0200
+++ linux/drivers/acpi/thermal.c 2004-08-11 10:45:36.000000000 +0200
@@ -60,7 +60,6 @@
#define ACPI_THERMAL_NOTIFY_HOT 0xF1
#define ACPI_THERMAL_MODE_ACTIVE 0x00
#define ACPI_THERMAL_MODE_PASSIVE 0x01
-#define ACPI_THERMAL_PATH_POWEROFF "/sbin/poweroff"

#define ACPI_THERMAL_MAX_ACTIVE 10

@@ -424,24 +423,25 @@

static int
-acpi_thermal_call_usermode (
- char *path)
+acpi_thermal_call_usermode(void)
{
char *argv[2] = {NULL, NULL};
char *envp[3] = {NULL, NULL, NULL};

ACPI_FUNCTION_TRACE("acpi_thermal_call_usermode");

- if (!path)
- return_VALUE(-EINVAL);
-
- argv[0] = path;
-
/* minimal command environment */
envp[0] = "HOME=/";
envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-
- call_usermodehelper(argv[0], argv, envp, 0);
+
+ argv[0] = "/sbin/overtemp";
+ if (call_usermodehelper(argv[0], argv, envp, 0)) {
+ argv[0] = "/sbin/poweroff";
+ if (call_usermodehelper(argv[0], argv, envp, 0)) {
+ /* What to do here? Should we just cut the power? */
+ printk(KERN_CRIT "attempts to poweroff failed, please power me down manually\n");
+ }
+ }

return_VALUE(0);
}
@@ -483,7 +483,7 @@
printk(KERN_EMERG "Critical temperature reached (%ld C), shutting down.\n", KELVIN_TO_CELSIUS(tz->temperature));
acpi_bus_generate_event(device, ACPI_THERMAL_NOTIFY_CRITICAL, tz->trips.critical.flags.enabled);

- acpi_thermal_call_usermode(ACPI_THERMAL_PATH_POWEROFF);
+ acpi_thermal_call_usermode();

return_VALUE(0);
}

--
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!