LONG morphos_cputemp(void) { DOUBLE maxtemperature = -1000.0; if (initsensors()) { static const struct TagItem sensortags[] = { {SENSORS_Type, SensorType_Temperature}, {SENSORS_SensorPlacement, SensorPlacement_Processor}, {TAG_DONE, 0} }; DOUBLE temperature = 0.0; struct TagItem ttemperature[] = { {SENSORS_Temperature_Temperature, (IPTR)&temperature}, {TAG_DONE, 0} }; APTR sensor; if (!cputemperaturesensors) cputemperaturesensors = ObtainSensorsList((struct TagItem *) sensortags); sensor = NULL; while ((sensor = NextSensor(sensor, cputemperaturesensors, NULL)) != NULL) { if (GetSensorAttr(sensor, ttemperature) > 0 && temperature > maxtemperature) { maxtemperature = temperature; } } } if (maxtemperature > -1000.0) { //Log("Current CPU temperature : %5.2fK (%2.2fC)\n", maxtemperature + 273.15, maxtemperature); return (LONG) (maxtemperature * 100.0) + 27315; } else { Log("Temperature monitoring disabled (no sensor found)\n"); } return -1; }
void initialize(void) { engine_initialize(); initvmstat(); initpigs(); initifstat(); initiostat(); initsensors(); initmembufs(); initnetstat(); initswap(); initpftop(); initpf(); initpool(); initmalloc(); initnfs(); }
int morphos_isrunningonbattery(void) { int disableme = 2; /* assume further checking should be disabled */ LONG pluggedin = 0; LONG charging = 0; if (initsensors()) { static const struct TagItem acpowersensortags[] = { {SENSORS_Type, SensorType_ACPower}, {TAG_DONE, 0} }; static const struct TagItem batterysensortags[] = { {SENSORS_Type, SensorType_Battery}, {TAG_DONE, 0} }; struct TagItem tpluggedin[] = { {SENSORS_ACPower_PluggedIn, (IPTR)&pluggedin}, {TAG_DONE, 0} }; struct TagItem tcharging[] = { {SENSORS_Battery_Charging, (IPTR)&charging}, {TAG_DONE, 0} }; APTR sensor; /* Check if AC mains power is connected - if not, pause crunching */ if (!acpowersensors) acpowersensors = ObtainSensorsList((struct TagItem *) acpowersensortags); sensor = NULL; while ((sensor = NextSensor(sensor, acpowersensors, NULL)) != NULL) { if (GetSensorAttr(sensor, tpluggedin) > 0) { disableme--; break; } } /* Also check if we're currently charging - if so, pause crunching */ /* Full CPU load while the battery is charging can shorten the lifespan of the battery. */ if (!batterysensors) batterysensors = ObtainSensorsList((struct TagItem *) batterysensortags); sensor = NULL; while ((sensor = NextSensor(sensor, batterysensors, NULL)) != NULL) { if (GetSensorAttr(sensor, tcharging) > 0) { disableme--; break; } } } return disableme ? -1 : (pluggedin && !charging) ? 0 : 1; }