From 850c80cb3c81b5bd24245ebf98165a98e47baa71 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Wed, 24 Sep 2014 21:06:49 +0200 Subject: [PATCH] avoid specific nvidia struct field --- src/lib/nvidia.c | 20 +++++++++++++++++--- src/lib/psensor.h | 4 ---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/lib/nvidia.c b/src/lib/nvidia.c index 807aec0..d3bbb58 100644 --- a/src/lib/nvidia.c +++ b/src/lib/nvidia.c @@ -38,6 +38,16 @@ static Display *display; static const char *PROVIDER_NAME = "nvctrl"; +static void set_nvidia_id(struct psensor *s, int id) +{ + *(int *)s->provider_data = id; +} + +static int get_nvidia_id(struct psensor *s) +{ + return *(int *)s->provider_data; +} + static char *get_product_name(int id, int type) { char *name; @@ -220,15 +230,18 @@ static double get_value(int id, int type) static void update(struct psensor *sensor) { double v; + int id; - v = get_value(sensor->nvidia_id, sensor->type); + id = get_nvidia_id(sensor); + + v = get_value(id, sensor->type); if (v == UNKNOWN_DBL_VALUE) log_err(_("%s: Failed to retrieve measure of type %x " "for NVIDIA GPU %d"), PROVIDER_NAME, sensor->type, - sensor->nvidia_id); + id); psensor_set_current_value(sensor, v); } @@ -277,7 +290,8 @@ static struct psensor *create_nvidia_sensor(int id, int subtype, int value_len) sprintf(sid, "%s %s", PROVIDER_NAME, name); s = psensor_create(sid, name, pname, type, value_len); - s->nvidia_id = id; + s->provider_data = malloc(sizeof(int)); + set_nvidia_id(s, id); free(strnid); diff --git a/src/lib/psensor.h b/src/lib/psensor.h index cec6d0f..37891c3 100644 --- a/src/lib/psensor.h +++ b/src/lib/psensor.h @@ -115,10 +115,6 @@ struct psensor { void (*cb_alarm_raised)(struct psensor *, void *); void *cb_alarm_raised_data; -#ifdef HAVE_NVIDIA - /* Nvidia id for the nvctrl */ - int nvidia_id; -#endif #ifdef HAVE_LIBATIADL /* AMD id for the aticonfig */ int amd_id; -- 2.7.4