#include <adl_sdk.h>
-#include "psensor.h"
+#include <psensor.h>
typedef int (*ADL_MAIN_CONTROL_CREATE)(ADL_MAIN_MALLOC_CALLBACK, int);
typedef int (*ADL_MAIN_CONTROL_DESTROY)();
return dlsym(plibrary, name);
}
-/*
- Returns the temperature (Celcius) of an AMD/ATI GPU.
-*/
+/* Returns the temperature (Celsius) of an AMD/ATI GPU. */
static double get_temp(struct psensor *sensor)
{
ADLTemperature v;
v.iSize = sizeof(ADLTemperature);
v.iTemperature = -273;
- if (ADL_OK == adl_od5_temperature_get(sensor->amd_id, 0, &v))
+
+ if (adl_od5_temperature_get(sensor->amd_id, 0, &v) == ADL_OK)
return v.iTemperature/1000;
- else
- return UNKNOWN_DBL_VALUE;
+
+ return UNKNOWN_DBL_VALUE;
}
static double get_fanspeed(struct psensor *sensor)
v.iSize = sizeof(ADLFanSpeedValue);
v.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_RPM;
v.iFanSpeed = -1;
- if (ADL_OK == adl_od5_fanspeed_get(sensor->amd_id, 0, &v))
+
+ if (adl_od5_fanspeed_get(sensor->amd_id, 0, &v) == ADL_OK)
return v.iFanSpeed;
- else
- return UNKNOWN_DBL_VALUE;
+
+ return UNKNOWN_DBL_VALUE;
}
static double get_usage(struct psensor *sensor)
ADLPMActivity v;
v.iSize = sizeof(ADLPMActivity);
- if (ADL_OK == adl_od5_currentactivity_get(sensor->amd_id, &v))
+
+ if (adl_od5_currentactivity_get(sensor->amd_id, &v) == ADL_OK)
return v.iActivityPercent;
- else
- return UNKNOWN_DBL_VALUE;
+
+ return UNKNOWN_DBL_VALUE;
}
static struct psensor *create_sensor(int id, int type, int values_len)
/* GPU Usage (Activity/Load %) */
case 2:
sprintf(name, "AMD GPU%d Usage", id);
- sensor_type |= SENSOR_TYPE_GPU | SENSOR_TYPE_USAGE;
+ sensor_type |= SENSOR_TYPE_GPU | SENSOR_TYPE_PERCENT;
break;
}
}
/*
- Returns the number of active AMD/ATI GPU adapters
-
- Return 0 if no AMD/ATI GPUs or cannot get information.
-*/
-static int init()
+ * Returns the number of active AMD/ATI GPU adapters
+ *
+ * Return 0 if no AMD/ATI GPUs or cannot get information.
+ */
+static int init(void)
{
LPAdapterInfo lpadapterinfo;
int i, inumberadapters, inumberadaptersactive, lpstatus, iadapterindex;
}
/*
- 1 in 2nd parameter means retrieve adapter information only
- for adapters that are physically present and enabled in the
- system
+ * 1 in 2nd parameter means retrieve adapter information only
+ * for adapters that are physically present and enabled in the
+ * system
*/
- if (ADL_OK != adl_main_control_create(adl_main_memory_alloc, 1)) {
+ if (adl_main_control_create(adl_main_memory_alloc, 1) != ADL_OK) {
log_err(_("AMD: failed to initialize ADL."));
return 0;
}
adl_main_control_done = 1;
- if (ADL_OK != adl_adapter_numberofadapters_get(&inumberadapters)) {
+ if (adl_adapter_numberofadapters_get(&inumberadapters) != ADL_OK) {
log_err(_("AMD: cannot get the number of adapters."));
return 0;
}
iadapterindex = lpadapterinfo[i].iAdapterIndex;
- if (ADL_OK != adl_adapter_active_get(iadapterindex, &lpstatus))
+ if (adl_adapter_active_get(iadapterindex, &lpstatus) != ADL_OK)
continue;
if (lpstatus != ADL_TRUE)
continue;
psensor_set_current_value(s, get_temp(s));
else if (s->type & SENSOR_TYPE_RPM)
psensor_set_current_value(s, get_fanspeed(s));
- else if (s->type & SENSOR_TYPE_USAGE)
+ else if (s->type & SENSOR_TYPE_PERCENT)
psensor_set_current_value(s, get_usage(s));
}
}
/* Entry point for AMD sensors */
-struct psensor * *
-amd_psensor_list_add(struct psensor **sensors, int values_len)
+void amd_psensor_list_append(struct psensor ***sensors, int values_len)
{
int i, j, n;
- struct psensor **tmp, **ss, *s;
+ struct psensor *s;
n = init();
- ss = sensors;
for (i = 0; i < n; i++)
/* Each GPU Adapter has 3 sensors: temp, fan speed and usage */
for (j = 0; j < 3; j++) {
s = create_sensor(i, j, values_len);
- tmp = psensor_list_add(ss, s);
-
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
+ psensor_list_append(sensors, s);
}
-
- return ss;
}
-void amd_cleanup()
+void amd_cleanup(void)
{
if (hdll) {
if (adl_main_control_done)