From c6d9fd757f429c0889e1a7620c7e7be69e6f71c9 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Mon, 18 Jul 2011 16:31:24 +0000 Subject: [PATCH] fixed amd support build --- po/Makefile.in | 6 +- src/Makefile.am | 7 +- src/Makefile.in | 42 ++++---- src/lib/Makefile.am | 1 + src/lib/Makefile.in | 27 ++++- src/lib/amd.h | 283 +++------------------------------------------------- 6 files changed, 65 insertions(+), 301 deletions(-) diff --git a/po/Makefile.in b/po/Makefile.in index 03604dc..1d3f8f1 100644 --- a/po/Makefile.in +++ b/po/Makefile.in @@ -34,12 +34,12 @@ INSTALL_DATA = ${INSTALL} -m 644 # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, -# ${SHELL} /home/jporsini/work.local/wpitchoune.net/svnpub/psensor/trunk/install-sh does not start with $(SHELL), so we add it. +# ${SHELL} /home/jporsini/work/wpitchoune/svnpub/psensor/trunk/install-sh does not start with $(SHELL), so we add it. # In automake >= 1.10, /bin/mkdir -p is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. -mkinstalldirs = $(SHELL) ${SHELL} /home/jporsini/work.local/wpitchoune.net/svnpub/psensor/trunk/install-sh -d -install_sh = $(SHELL) ${SHELL} /home/jporsini/work.local/wpitchoune.net/svnpub/psensor/trunk/install-sh +mkinstalldirs = $(SHELL) ${SHELL} /home/jporsini/work/wpitchoune/svnpub/psensor/trunk/install-sh -d +install_sh = $(SHELL) ${SHELL} /home/jporsini/work/wpitchoune/svnpub/psensor/trunk/install-sh MKDIR_P = /bin/mkdir -p mkdir_p = /bin/mkdir -p diff --git a/src/Makefile.am b/src/Makefile.am index bde5a54..a165593 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -12,13 +12,18 @@ SUBDIRS += server endif endif -AM_CPPFLAGS = -Wall -pedantic -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\"\ +AM_CPPFLAGS = -Wall -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\"\ -I$(top_srcdir)/src/lib \ -I$(top_srcdir)/src/unity \ $(GTK_CFLAGS)\ $(GCONF_CFLAGS)\ $(SENSORS_CFLAGS) +if LIBATIADL +else +AM_CPPFLAGS += -pedantic +endif + DEFS = -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" -DLOCALEDIR=\"$(localedir)\" @DEFS@ LIBS = \ diff --git a/src/Makefile.in b/src/Makefile.in index c975416..30a577d 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -36,20 +36,21 @@ build_triplet = @build@ host_triplet = @host@ @JSON_TRUE@am__append_1 = libpsensor_json @JSON_TRUE@@LIBMICROHTTPD_TRUE@am__append_2 = server +@LIBATIADL_FALSE@am__append_3 = -pedantic bin_PROGRAMS = psensor$(EXEEXT) -@LIBNOTIFY_TRUE@am__append_3 = ui_notify.h ui_notify.c -@LIBNOTIFY_TRUE@am__append_4 = $(LIBNOTIFY_LIBS) -@LIBNOTIFY_TRUE@am__append_5 = $(LIBNOTIFY_CFLAGS) -@APPINDICATOR_TRUE@am__append_6 = ui_appindicator.h ui_appindicator.c -@APPINDICATOR_TRUE@am__append_7 = $(APPINDICATOR_LIBS) -@APPINDICATOR_TRUE@am__append_8 = $(APPINDICATOR_CFLAGS) -@NVIDIA_TRUE@am__append_9 = $(NVIDIA_CFLAGS) -@NVIDIA_TRUE@am__append_10 = $(NVIDIA_LIBS) -@UNITY_TRUE@am__append_11 = $(UNITY_CFLAGS) -@UNITY_TRUE@am__append_12 = unity/libpsensor_unity.a $(UNITY_LIBS) -@CURL_TRUE@@JSON_TRUE@am__append_13 = rsensor.h rsensor.c plib/url.c plib/url.h -@CURL_TRUE@@JSON_TRUE@am__append_14 = $(CURL_LIBS) $(JSON_LIBS) -@CURL_TRUE@@JSON_TRUE@am__append_15 = $(CURL_CFLAGS) $(JSON_CFLAGS) +@LIBNOTIFY_TRUE@am__append_4 = ui_notify.h ui_notify.c +@LIBNOTIFY_TRUE@am__append_5 = $(LIBNOTIFY_LIBS) +@LIBNOTIFY_TRUE@am__append_6 = $(LIBNOTIFY_CFLAGS) +@APPINDICATOR_TRUE@am__append_7 = ui_appindicator.h ui_appindicator.c +@APPINDICATOR_TRUE@am__append_8 = $(APPINDICATOR_LIBS) +@APPINDICATOR_TRUE@am__append_9 = $(APPINDICATOR_CFLAGS) +@NVIDIA_TRUE@am__append_10 = $(NVIDIA_CFLAGS) +@NVIDIA_TRUE@am__append_11 = $(NVIDIA_LIBS) +@UNITY_TRUE@am__append_12 = $(UNITY_CFLAGS) +@UNITY_TRUE@am__append_13 = unity/libpsensor_unity.a $(UNITY_LIBS) +@CURL_TRUE@@JSON_TRUE@am__append_14 = rsensor.h rsensor.c plib/url.c plib/url.h +@CURL_TRUE@@JSON_TRUE@am__append_15 = $(CURL_LIBS) $(JSON_LIBS) +@CURL_TRUE@@JSON_TRUE@am__append_16 = $(CURL_CFLAGS) $(JSON_CFLAGS) subdir = src DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @@ -208,8 +209,8 @@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = plib/libplib.a lib/libpsensor.a $(GTK_LIBS) $(GCONF_LIBS) \ - $(SENSORS_LIBS) $(am__append_4) $(am__append_7) \ - $(am__append_10) $(am__append_12) $(am__append_14) + $(SENSORS_LIBS) $(am__append_5) $(am__append_8) \ + $(am__append_11) $(am__append_13) $(am__append_15) LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ @@ -302,17 +303,16 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = plib lib unity glade $(am__append_1) $(am__append_2) AM_LDFLAGS = -Wl,--as-needed -AM_CPPFLAGS = -Wall -pedantic -Werror \ - -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\" \ +AM_CPPFLAGS = -Wall -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\" \ -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/unity \ $(GTK_CFLAGS) $(GCONF_CFLAGS) $(SENSORS_CFLAGS) \ - $(am__append_5) $(am__append_8) $(am__append_9) \ - $(am__append_11) $(am__append_15) + $(am__append_3) $(am__append_6) $(am__append_9) \ + $(am__append_10) $(am__append_12) $(am__append_16) psensor_SOURCES = compat.h cfg.h cfg.c graph.h graph.c main.c ui.h \ ui.c ui_color.h ui_color.c ui_graph.h ui_graph.c ui_pref.h \ ui_pref.c ui_sensorlist.h ui_sensorlist.c ui_sensorpref.h \ - ui_sensorpref.c $(am__append_3) $(am__append_6) \ - $(am__append_13) + ui_sensorpref.c $(am__append_4) $(am__append_7) \ + $(am__append_14) dist_man_MANS = psensor.1 EXTRA_DIST = description.txt all: all-recursive diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index bf596dc..32ea765 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -18,6 +18,7 @@ endif if LIBATIADL LIBS += $(LIBATIADL_LIBS) AM_CPPFLAGS = $(LIBATIADL_CFLAGS) +libpsensor_a_SOURCES += amd.c else libpsensor_a_CFLAGS += -pedantic endif diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in index 64027fd..59b1b8c 100644 --- a/src/lib/Makefile.in +++ b/src/lib/Makefile.in @@ -36,7 +36,8 @@ build_triplet = @build@ host_triplet = @host@ @NVIDIA_TRUE@am__append_1 = nvidia.c @LIBATIADL_TRUE@am__append_2 = $(LIBATIADL_LIBS) -@LIBATIADL_FALSE@am__append_3 = -pedantic +@LIBATIADL_TRUE@am__append_3 = amd.c +@LIBATIADL_FALSE@am__append_4 = -pedantic subdir = src/lib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -54,12 +55,13 @@ libpsensor_a_AR = $(AR) $(ARFLAGS) libpsensor_a_LIBADD = am__libpsensor_a_SOURCES_DIST = amd.h measure.h measure.c color.h \ color.c psensor.h psensor.c hdd.h hdd.c nvidia.h lmsensor.h \ - lmsensor.c nvidia.c + lmsensor.c nvidia.c amd.c @NVIDIA_TRUE@am__objects_1 = libpsensor_a-nvidia.$(OBJEXT) +@LIBATIADL_TRUE@am__objects_2 = libpsensor_a-amd.$(OBJEXT) am_libpsensor_a_OBJECTS = libpsensor_a-measure.$(OBJEXT) \ libpsensor_a-color.$(OBJEXT) libpsensor_a-psensor.$(OBJEXT) \ libpsensor_a-hdd.$(OBJEXT) libpsensor_a-lmsensor.$(OBJEXT) \ - $(am__objects_1) + $(am__objects_1) $(am__objects_2) libpsensor_a_OBJECTS = $(am_libpsensor_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -219,10 +221,10 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libpsensor.a -libpsensor_a_CFLAGS = -Werror $(am__append_3) +libpsensor_a_CFLAGS = -Werror $(am__append_4) libpsensor_a_SOURCES = amd.h measure.h measure.c color.h color.c \ psensor.h psensor.c hdd.h hdd.c nvidia.h lmsensor.h lmsensor.c \ - $(am__append_1) + $(am__append_1) $(am__append_3) @LIBATIADL_TRUE@AM_CPPFLAGS = $(LIBATIADL_CFLAGS) EXTRA_DIST = $(libpsensor_a_SOURCES) \ amd.c \ @@ -276,6 +278,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpsensor_a-amd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpsensor_a-color.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpsensor_a-hdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpsensor_a-lmsensor.Po@am__quote@ @@ -381,6 +384,20 @@ libpsensor_a-nvidia.obj: nvidia.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpsensor_a_CFLAGS) $(CFLAGS) -c -o libpsensor_a-nvidia.obj `if test -f 'nvidia.c'; then $(CYGPATH_W) 'nvidia.c'; else $(CYGPATH_W) '$(srcdir)/nvidia.c'; fi` +libpsensor_a-amd.o: amd.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpsensor_a_CFLAGS) $(CFLAGS) -MT libpsensor_a-amd.o -MD -MP -MF $(DEPDIR)/libpsensor_a-amd.Tpo -c -o libpsensor_a-amd.o `test -f 'amd.c' || echo '$(srcdir)/'`amd.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpsensor_a-amd.Tpo $(DEPDIR)/libpsensor_a-amd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='amd.c' object='libpsensor_a-amd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpsensor_a_CFLAGS) $(CFLAGS) -c -o libpsensor_a-amd.o `test -f 'amd.c' || echo '$(srcdir)/'`amd.c + +libpsensor_a-amd.obj: amd.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpsensor_a_CFLAGS) $(CFLAGS) -MT libpsensor_a-amd.obj -MD -MP -MF $(DEPDIR)/libpsensor_a-amd.Tpo -c -o libpsensor_a-amd.obj `if test -f 'amd.c'; then $(CYGPATH_W) 'amd.c'; else $(CYGPATH_W) '$(srcdir)/amd.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpsensor_a-amd.Tpo $(DEPDIR)/libpsensor_a-amd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='amd.c' object='libpsensor_a-amd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpsensor_a_CFLAGS) $(CFLAGS) -c -o libpsensor_a-amd.obj `if test -f 'amd.c'; then $(CYGPATH_W) 'amd.c'; else $(CYGPATH_W) '$(srcdir)/amd.c'; fi` + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ diff --git a/src/lib/amd.h b/src/lib/amd.h index 57e1149..78e6c46 100644 --- a/src/lib/amd.h +++ b/src/lib/amd.h @@ -16,285 +16,26 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef LINUX -#define LINUX 1 -#endif -#ifdef HAVE_LIBATIADL - /* AMD id for the aticonfig */ - int amd_id; -#endif - -#include -#include -#define _(str) gettext(str) -#include -#include /* dyopen, dlsym, dlclose */ -#include -#include -#include /* memeset */ +#ifndef _PSENSOR_AMD_H_ +#define _PSENSOR_AMD_H_ #include "psensor.h" -/* Definitions of the used function pointers. - Add more if you use other ADL APIs */ -typedef int (*ADL_MAIN_CONTROL_CREATE)(ADL_MAIN_MALLOC_CALLBACK, int); -typedef int (*ADL_MAIN_CONTROL_DESTROY)(); -typedef int (*ADL_ADAPTER_NUMBEROFADAPTERS_GET) (int *); -typedef int (*ADL_ADAPTER_ADAPTERINFO_GET) (LPAdapterInfo, int); -typedef int (*ADL_ADAPTER_ACTIVE_GET) (int, int*); -typedef int (*ADL_OVERDRIVE5_TEMPERATURE_GET) (int, int, ADLTemperature*); -typedef int (*ADL_OVERDRIVE5_FANSPEED_GET) (int, int, ADLFanSpeedValue*); - -static ADL_MAIN_CONTROL_CREATE adl_main_control_create; -static ADL_MAIN_CONTROL_DESTROY adl_main_control_destroy; -static ADL_ADAPTER_NUMBEROFADAPTERS_GET adl_adapter_numberofadapters_get; -static ADL_ADAPTER_ADAPTERINFO_GET adl_adapter_adapterinfo_get; -static ADL_ADAPTER_ACTIVE_GET adl_adapter_active_get; -static ADL_OVERDRIVE5_TEMPERATURE_GET adl_overdrive5_temperature_get; -static ADL_OVERDRIVE5_FANSPEED_GET adl_overdrive5_fanspeed_get; - -static void *hdll; -static int adl_main_control_done; -static int *active_amd_adapters; - -/* Memory allocation function */ -static void __stdcall *adl_main_memory_alloc(int isize) -{ - void *lpbuffer = malloc(isize); - return lpbuffer; -} - -/* Optional Memory de-allocation function */ -static void __stdcall adl_main_memory_free(void** lpbuffer) -{ - if (*lpbuffer) { - free(*lpbuffer); - *lpbuffer = NULL; - } -} - -static void *getprocaddress(void * plibrary, const char * name) -{ - return dlsym(plibrary, name); -} - /* - Returns the temperature (Celcius) of an AMD/Ati GPU. + Updates temperatures of AMD sensors. */ -static int get_temp(struct psensor *sensor) -{ - ADLTemperature temperature; - - temperature.iSize = sizeof(ADLTemperature); - temperature.iTemperature = -273; - if (ADL_OK != adl_overdrive5_temperature_get(sensor->amd_id, - 0, &temperature)) - return -273; - - return temperature.iTemperature/1000; -} - -static int get_fanspeed(struct psensor *sensor) -{ - ADLFanSpeedValue fanspeedvalue; - - fanspeedvalue.iSize = sizeof(ADLFanSpeedValue); - fanspeedvalue.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_RPM; - fanspeedvalue.iFanSpeed = -1; - if (ADL_OK != adl_overdrive5_fanspeed_get(sensor->amd_id, - 0, &fanspeedvalue)) - return -1; - - return fanspeedvalue.iFanSpeed; -} - -static struct psensor *create_sensor(int id, int values_len) -{ - char name[200]; - char *sid; - int sensor_type; - - struct psensor *s; - - if (id & 1) {/* odd number ids represent fan sensors */ - id = id >> 1; - sprintf(name, "GPU%dfan", id); - sensor_type = SENSOR_TYPE_AMD_FAN; - } else {/* even number ids represent temperature sensors */ - id = id >> 1; - sprintf(name, "GPU%dtemp", id); - sensor_type = SENSOR_TYPE_AMD_TEMP; - } - - sid = malloc(strlen("AMD") + 1 + strlen(name) + 1); - sprintf(sid, "AMD %s", name); - - s = psensor_create(sid, strdup(name), - sensor_type, values_len); - - s->amd_id = active_amd_adapters[id]; - - return s; -} +void amd_psensor_list_update(struct psensor **sensors); /* - Returns the number of AMD/Ati GPU sensors (temperature and fan speed). - - Return 0 if no AMD/Ati gpus or cannot get information. -*/ -static int init() -{ - LPAdapterInfo lpadapterinfo = NULL; - int i, inumberadapters, inumberadaptersactive = 0; - int lpstatus, iadapterindex; - - hdll = NULL; - adl_main_control_done = 0; - active_amd_adapters = NULL; - hdll = dlopen("libatiadlxx.so", RTLD_LAZY|RTLD_GLOBAL); + Adds AMD sensors to a given list of sensors. + Returns the new allocated list of sensors if sensors have been added + otherwise returns 'sensors'. The list is 'NULL' terminated. + */ +struct psensor **amd_psensor_list_add(struct psensor **sensors, + int values_max_length); - if (!hdll) { - fprintf(stderr, - _("ERROR: ADL library not found!\n")); - return 0; - } +void amd_cleanup(); - adl_main_control_create = (ADL_MAIN_CONTROL_CREATE) - getprocaddress(hdll, "ADL_Main_Control_Create"); - adl_main_control_destroy = (ADL_MAIN_CONTROL_DESTROY) - getprocaddress(hdll, "ADL_Main_Control_Destroy"); - adl_adapter_numberofadapters_get = (ADL_ADAPTER_NUMBEROFADAPTERS_GET) - getprocaddress(hdll, "ADL_Adapter_NumberOfAdapters_Get"); - adl_adapter_adapterinfo_get = (ADL_ADAPTER_ADAPTERINFO_GET) - getprocaddress(hdll, "ADL_Adapter_AdapterInfo_Get"); - adl_adapter_active_get = (ADL_ADAPTER_ACTIVE_GET) - getprocaddress(hdll, "ADL_Adapter_Active_Get"); - adl_overdrive5_temperature_get = (ADL_OVERDRIVE5_TEMPERATURE_GET) - getprocaddress(hdll, "ADL_Overdrive5_Temperature_Get"); - adl_overdrive5_fanspeed_get = (ADL_OVERDRIVE5_FANSPEED_GET) - getprocaddress(hdll, "ADL_Overdrive5_FanSpeed_Get"); - if (!adl_main_control_create || - !adl_main_control_destroy || - !adl_adapter_numberofadapters_get || - !adl_adapter_adapterinfo_get || - !adl_overdrive5_temperature_get || - !adl_overdrive5_fanspeed_get) { - fprintf(stderr, - _("ERROR: ADL's API is missing!\n")); - return 0; - } - - /* Initialize ADL. The second parameter is 1, which 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)) { - fprintf(stderr, - _("ERROR: ADL Initialization Error!\n")); - return 0; - } - adl_main_control_done = 1; - - /* Obtain the number of adapters for the system */ - if (ADL_OK != adl_adapter_numberofadapters_get(&inumberadapters)) { - fprintf(stderr, - _("ERROR: Cannot get the number of adapters!\n")); - return 0; - } - - if (!inumberadapters) - return 0; - - lpadapterinfo = malloc(sizeof(AdapterInfo) * inumberadapters); - memset(lpadapterinfo, '\0', sizeof(AdapterInfo) * inumberadapters); - - /* Get the AdapterInfo structure for all adapters in the system */ - adl_adapter_adapterinfo_get(lpadapterinfo, - sizeof(AdapterInfo) * inumberadapters); - - /* Repeat for all available adapters in the system */ - for (i = 0; i < inumberadapters; i++) { - iadapterindex = lpadapterinfo[i].iAdapterIndex; - if (ADL_OK != adl_adapter_active_get(iadapterindex, &lpstatus)) - continue; - if (lpstatus != ADL_TRUE) - /* count only if the adapter is active */ - continue; - - if (!active_amd_adapters) { - active_amd_adapters = (int *) malloc(sizeof(int)); - inumberadaptersactive = 1; - } else { - ++inumberadaptersactive; - active_amd_adapters = - (int *) realloc(active_amd_adapters, - sizeof(int)*inumberadaptersactive); - } - active_amd_adapters[inumberadaptersactive-1] = iadapterindex; - } - - adl_main_memory_free((void **) &lpadapterinfo); - - /* Each Adapter has one GPU temperature - sensor and one fan control sensor */ - return 2*inumberadaptersactive; -} - -void amd_psensor_list_update(struct psensor **sensors) -{ - struct psensor **ss, *s; - - ss = sensors; - while (*ss) { - s = *ss; - - if (s->type == SENSOR_TYPE_AMD_TEMP) - psensor_set_current_value(s, get_temp(s)); - else if (s->type == SENSOR_TYPE_AMD_FAN) - psensor_set_current_value(s, get_fanspeed(s)); - - ss++; - } -} - -struct psensor * * -amd_psensor_list_add(struct psensor **sensors, int values_len) -{ - int i, n; - struct psensor **tmp, **ss, *s; - - n = init(); - - ss = sensors; - for (i = 0; i < n; i++) { - s = create_sensor(i, values_len); - - tmp = psensor_list_add(ss, s); - - if (ss != tmp) - free(ss); - - ss = tmp; - } - - if (active_amd_adapters) { - free(active_amd_adapters); - active_amd_adapters = NULL; - } - - return ss; -} - -void amd_cleanup() -{ - if (hdll) { - if (adl_main_control_done) - adl_main_control_destroy(); - dlclose(hdll); - } - if (active_amd_adapters) { - free(active_amd_adapters); - active_amd_adapters = NULL; - } -} +#endif -- 2.7.4