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
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@
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
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
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
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 \
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@
@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 \
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 <locale.h>
-#include <libintl.h>
-#define _(str) gettext(str)
-#include <adl_sdk.h>
-#include <dlfcn.h> /* dyopen, dlsym, dlclose */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h> /* 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