- int i, n;
- struct psensor **tmp, **ss, *s;
-
- n = init();
-
- ss = sensors;
- for (i = 0; i < n; i++) {
- s = create_temp_sensor(i, values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_usage_sensor(i, SENSOR_TYPE_GRAPHICS, values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_usage_sensor(i, SENSOR_TYPE_VIDEO, values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_usage_sensor(i, SENSOR_TYPE_MEMORY, values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_usage_sensor(i, SENSOR_TYPE_PCIE, values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
+ struct psensor *s;
+
+ s = create_nvidia_sensor(id, type, values_len);
+
+ if (s)
+ psensor_list_append(sensors, s);
+}
+
+void nvidia_psensor_list_append(struct psensor ***ss, int values_len)
+{
+ int i, n, utype;
+ Bool ret;
+
+ if (!init())
+ return;
+
+ ret = XNVCTRLQueryTargetCount(display, NV_CTRL_TARGET_TYPE_GPU, &n);
+ if (ret == True) {
+ for (i = 0; i < n; i++) {
+ 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);
+ }