return psensor;
}
-struct psensor **lmsensor_psensor_list_add(struct psensor **sensors,
- int vn)
+void lmsensor_init()
+{
+ int err = sensors_init(NULL);
+
+ if (err) {
+ log_err(_("lmsensor: initialization failure: %s."),
+ sensors_strerror(err));
+ init_done = 0;
+ } else {
+ init_done = 1;
+ }
+}
+
+void lmsensor_psensor_list_append(struct psensor ***sensors, int vn)
{
const sensors_chip_name *chip;
int chip_nr = 0;
- struct psensor **tmp, **result;
const sensors_feature *feature;
struct psensor *s;
int i;
if (!init_done)
- return NULL;
+ lmsensor_init();
+
+ if (!init_done)
+ return;
- result = sensors;
while ((chip = sensors_get_detected_chips(NULL, &chip_nr))) {
i = 0;
s = lmsensor_psensor_create(chip, feature, vn);
- if (s) {
- tmp = psensor_list_add(result, s);
-
- if (tmp != sensors)
- free(result);
-
- result = tmp;
- }
+ if (s)
+ psensor_list_append(sensors, s);
}
}
}
-
- return result;
-}
-
-void lmsensor_init()
-{
- int err = sensors_init(NULL);
-
- if (err) {
- log_err(_("lmsensor: initialization failure: %s."),
- sensors_strerror(err));
- init_done = 0;
- } else {
- init_done = 1;
- }
}
void lmsensor_cleanup()
Display *display;
+static const char *PROVIDER_NAME = "nvctrl";
+
static char *get_product_name(int id, int type)
{
char *name;
name = malloc(n);
sprintf(name, "%s %s %s", pname, strnid, stype);
- sid = malloc(strlen("nvidia") + 1 + strlen(name) + 1);
- sprintf(sid, "nvidia %s", name);
+ sid = malloc(strlen(PROVIDER_NAME) + 1 + strlen(name) + 1);
+ sprintf(sid, "%s %s", PROVIDER_NAME, name);
s = psensor_create(sid, name, pname, type, value_len);
s->nvidia_id = id;
psensor_list_append(sensors, s);
}
-struct psensor **
-nvidia_psensor_list_add(struct psensor **ss, int values_len)
+void nvidia_psensor_list_append(struct psensor ***ss, int values_len)
{
int i, n, utype;
Bool ret;
if (!init())
- return ss;
+ return;
ret = XNVCTRLQueryTargetCount(display, NV_CTRL_TARGET_TYPE_GPU, &n);
if (ret == True) {
for (i = 0; i < n; i++) {
- add(&ss,
+ add(ss,
i,
SENSOR_TYPE_GPU | SENSOR_TYPE_TEMP,
values_len);
utype = SENSOR_TYPE_GPU | SENSOR_TYPE_PERCENT;
- add(&ss, i, utype | SENSOR_TYPE_AMBIENT, values_len);
- add(&ss, i, utype | SENSOR_TYPE_GRAPHICS, values_len);
- add(&ss, i, utype | SENSOR_TYPE_VIDEO, values_len);
- add(&ss, i, utype | SENSOR_TYPE_MEMORY, values_len);
- add(&ss, i, utype | SENSOR_TYPE_PCIE, values_len);
+ add(ss, i, utype | SENSOR_TYPE_AMBIENT, values_len);
+ add(ss, i, utype | SENSOR_TYPE_GRAPHICS, values_len);
+ add(ss, i, utype | SENSOR_TYPE_VIDEO, values_len);
+ add(ss, i, utype | SENSOR_TYPE_MEMORY, values_len);
+ add(ss, i, utype | SENSOR_TYPE_PCIE, values_len);
}
}
for (i = 0; i < n; i++) {
utype = SENSOR_TYPE_FAN | SENSOR_TYPE_RPM;
if (check_sensor(i, utype))
- add(&ss, i, utype, values_len);
+ add(ss, i, utype, values_len);
utype = SENSOR_TYPE_FAN | SENSOR_TYPE_PERCENT;
if (check_sensor(i, utype))
- add(&ss, i, utype, values_len);
+ add(ss, i, utype, values_len);
}
} else {
log_err(_("NVIDIA: failed to retrieve number of fans."));
}
-
- return ss;
}
void nvidia_cleanup()
#include <hdd.h>
#include <psensor.h>
-#include <lmsensor.h>
#include <temperature.h>
struct psensor *psensor_create(char *id,
struct psensor **psensors;
struct psensor **tmp_psensors;
- psensors = lmsensor_psensor_list_add(NULL, values_max_length);
+ psensors = NULL;
if (!use_libatasmart) {
tmp_psensors = hddtemp_psensor_list_add(psensors,
void psensor_list_update_measures(struct psensor **sensors)
{
- lmsensor_psensor_list_update(sensors);
-
if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDDTEMP))
hddtemp_psensor_list_update(sensors);
void psensor_init()
{
- lmsensor_init();
}
void psensor_cleanup()
{
- lmsensor_cleanup();
}
struct psensor **psensor_list_copy(struct psensor **sensors)
update_psensor_values_size(sensors, cfg);
psensor_list_update_measures(sensors);
+
+ lmsensor_psensor_list_update(sensors);
#ifdef HAVE_REMOTE_SUPPORT
remote_psensor_list_update(sensors);
#endif
} else {
sensors = get_all_sensors(use_libatasmart, 600);
+ if (config_is_lmsensor_enabled())
+ lmsensor_psensor_list_append(&sensors, 600);
+
#ifdef HAVE_NVIDIA
if (config_is_nvctrl_enabled())
- sensors = nvidia_psensor_list_add(sensors, 600);
+ nvidia_psensor_list_append(&sensors, 600);
#endif
#ifdef HAVE_LIBATIADL
if (config_is_atiadlsdk_enabled())