Esempio n. 1
0
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;
}
Esempio n. 2
0
void
initialize(void)
{
	engine_initialize();

	initvmstat();
	initpigs();
	initifstat();
	initiostat();
	initsensors();
	initmembufs();
	initnetstat();
	initswap();
	initpftop();
	initpf();
	initpool();
	initmalloc();
	initnfs();
}
Esempio n. 3
0
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;
}