PAPI  5.7.0.0
linux-lmsensors.c File Reference

This file has the source code for a component that enables PAPI-C to access hardware monitoring sensors through the libsensors library. This code will dynamically create a native events table for all the sensors that can be accesed by the libsensors library. In order to learn more about libsensors, visit: (http://www.lm-sensors.org) More...

Include dependency graph for linux-lmsensors.c:

Go to the source code of this file.

Data Structures

struct  _lmsensors_register_t
 
struct  _lmsensors_native_event_entry_t
 
struct  _lmsensors_reg_alloc_t
 
struct  _lmsensors_control_state_t
 
struct  _lmsensors_context_t
 

Macros

#define LM_SENSORS_REFRESHTIME   200000
 

Functions

static int link_lmsensors_libraries ()
 
static unsigned detectSensors (void)
 
static unsigned createNativeEvents (void)
 
static long_long getEventValue (unsigned event_id)
 
static int _lmsensors_init_thread (hwd_context_t *ctx)
 
static int _lmsensors_init_component (int cidx)
 
static int _lmsensors_init_control_state (hwd_control_state_t *ctl)
 
static int _lmsensors_start (hwd_context_t *ctx, hwd_control_state_t *ctl)
 
static int _lmsensors_stop (hwd_context_t *ctx, hwd_control_state_t *ctl)
 
static int _lmsensors_read (hwd_context_t *ctx, hwd_control_state_t *ctl, long_long **events, int flags)
 
static int _lmsensors_shutdown_component (void)
 
static int _lmsensors_shutdown_thread (hwd_context_t *ctx)
 
static int _lmsensors_ctl (hwd_context_t *ctx, int code, _papi_int_option_t *option)
 
static int _lmsensors_update_control_state (hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
 
static int _lmsensors_set_domain (hwd_control_state_t *ctl, int domain)
 
static int _lmsensors_reset (hwd_context_t *ctx, hwd_control_state_t *ctl)
 
static int _lmsensors_ntv_enum_events (unsigned int *EventCode, int modifier)
 
static int _lmsensors_ntv_code_to_name (unsigned int EventCode, char *name, int len)
 
static int _lmsensors_ntv_code_to_descr (unsigned int EventCode, char *name, int len)
 

Variables

static _lmsensors_native_event_entry_tlm_sensors_native_table
 
static int num_events = 0
 
static long_longcached_counts = NULL
 
static int(* sensors_initPtr )(FILE *input)
 
static void(* sensors_cleanupPtr )(void)
 
static int(* sensors_snprintf_chip_namePtr )(char *str, size_t size, const sensors_chip_name *chip)
 
static char *(* sensors_get_labelPtr )(const sensors_chip_name *name, const sensors_feature *feature)
 
static int(* sensors_get_valuePtr )(const sensors_chip_name *name, int subfeat_nr, double *value)
 
static const sensors_chip_name *(* sensors_get_detected_chipsPtr )(const sensors_chip_name *match, int *nr)
 
static const sensors_feature *(* sensors_get_featuresPtr )(const sensors_chip_name *name, int *nr)
 
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr )(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
 
static void * dl1 = NULL
 
papi_vector_t _lmsensors_vector
 

Detailed Description

Author
Daniel Lucio
Joachim Protze
Heike Jagode jagod.nosp@m.e@ee.nosp@m.cs.ut.nosp@m.k.ed.nosp@m.u

LM_SENSORS component

Tested version of lm_sensors: 3.1.1

Notes:

  • I used the ACPI and MX components to write this component. A lot of the code in this file mimics what other components already do.
  • The return values are scaled by 1000 because PAPI can not return decimals.
  • A call of PAPI_read can take up to 2 seconds while using lm_sensors!
  • Please remember that libsensors uses the GPL license.

Definition in file linux-lmsensors.c.

Macro Definition Documentation

◆ LM_SENSORS_REFRESHTIME

#define LM_SENSORS_REFRESHTIME   200000

Definition at line 47 of file linux-lmsensors.c.

Function Documentation

◆ _lmsensors_ctl()

static int _lmsensors_ctl ( hwd_context_t ctx,
int  code,
_papi_int_option_t option 
)
static

Definition at line 527 of file linux-lmsensors.c.

528 {
529  ( void ) ctx;
530  ( void ) code;
531  ( void ) option;
532  return PAPI_OK;
533 }
#define PAPI_OK
Definition: fpapi.h:105

◆ _lmsensors_init_component()

static int _lmsensors_init_component ( int  cidx)
static

Definition at line 283 of file linux-lmsensors.c.

284 {
285  int res;
286  (void) cidx;
287 
288  /* link in all the lmsensor libraries and resolve the symbols we need to use */
290  SUBDBG ("Dynamic link of lmsensors libraries failed, component will be disabled.\n");
291  SUBDBG ("See disable reason in papi_component_avail output for more details.\n");
292  return (PAPI_ENOSUPP);
293  }
294 
295  /* Initialize libsensors library */
296  if ( ( res = sensors_initPtr( NULL ) ) != 0 ) {
298  "Cannot enable libsensors",PAPI_MAX_STR_LEN);
299  return res;
300  }
301 
302  /* Create dyanmic events table */
304  SUBDBG("Found %d sensors\n",num_events);
305 
308 
309  if ( ( lm_sensors_native_table =
310  calloc( num_events, sizeof ( _lmsensors_native_event_entry_t )))
311  == NULL ) {
313  "Could not malloc room",PAPI_MAX_STR_LEN);
314  return PAPI_ENOMEM;
315  }
316 
317  cached_counts = (long long*) calloc(num_events, sizeof(long long));
318 
319  if (cached_counts == NULL) {
321  "Could not malloc room",PAPI_MAX_STR_LEN);
324  return PAPI_ENOMEM;
325  }
326 
327  if ( ( unsigned ) num_events != createNativeEvents( ) ) {
329  "LM_SENSOR number mismatch",PAPI_MAX_STR_LEN);
330  free(cached_counts);
331  cached_counts = NULL;
334  return PAPI_ECMP;
335  }
336 
339 
340  return PAPI_OK;
341 }
#define PAPI_OK
Definition: fpapi.h:105
char disabled_reason[PAPI_MAX_STR_LEN]
Definition: papi.h:637
#define PAPI_ENOMEM
Definition: fpapi.h:107
static long_long * cached_counts
#define PAPI_ENOSUPP
Definition: fpapi.h:123
static unsigned createNativeEvents(void)
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
#define PAPI_ECMP
Definition: fpapi.h:109
static int num_events
static int cidx
static unsigned detectSensors(void)
#define SUBDBG(format, args...)
Definition: papi_debug.h:63
static _lmsensors_native_event_entry_t * lm_sensors_native_table
static int(* sensors_initPtr)(FILE *input)
papi_vector_t _lmsensors_vector
static int link_lmsensors_libraries()
#define PAPI_MAX_STR_LEN
Definition: fpapi.h:43
Here is the call graph for this function:

◆ _lmsensors_init_control_state()

static int _lmsensors_init_control_state ( hwd_control_state_t ctl)
static

Definition at line 427 of file linux-lmsensors.c.

428 {
429  int i;
430 
431  for ( i = 0; i < num_events; i++ )
433 
434  ( ( _lmsensors_control_state_t * ) ctl )->lastupdate =
436  return PAPI_OK;
437 }
#define PAPI_OK
Definition: fpapi.h:105
static long_long * cached_counts
static int num_events
static long_long getEventValue(unsigned event_id)
long long PAPI_get_real_usec(void)
Definition: papi.c:6264
int i
Definition: fileop.c:140
Here is the call graph for this function:

◆ _lmsensors_init_thread()

static int _lmsensors_init_thread ( hwd_context_t ctx)
static

Definition at line 271 of file linux-lmsensors.c.

272 {
273  ( void ) ctx;
274  return PAPI_OK;
275 }
#define PAPI_OK
Definition: fpapi.h:105

◆ _lmsensors_ntv_code_to_descr()

static int _lmsensors_ntv_code_to_descr ( unsigned int  EventCode,
char *  name,
int  len 
)
static

Definition at line 632 of file linux-lmsensors.c.

633 {
634  int index = EventCode;
635 
636  if (index>=0 && index<num_events) {
637  strncpy( name, lm_sensors_native_table[index].description, len );
638  }
639  return PAPI_OK;
640 }
#define PAPI_OK
Definition: fpapi.h:105
static const char * name
Definition: fork_overflow.c:31
static int num_events
static _lmsensors_native_event_entry_t * lm_sensors_native_table

◆ _lmsensors_ntv_code_to_name()

static int _lmsensors_ntv_code_to_name ( unsigned int  EventCode,
char *  name,
int  len 
)
static

Definition at line 617 of file linux-lmsensors.c.

618 {
619  int index = EventCode;
620 
621  if (index>=0 && index<num_events) {
622  strncpy( name, lm_sensors_native_table[index].name, len );
623  }
624 
625  return PAPI_OK;
626 }
#define PAPI_OK
Definition: fpapi.h:105
static const char * name
Definition: fork_overflow.c:31
static int num_events
static _lmsensors_native_event_entry_t * lm_sensors_native_table

◆ _lmsensors_ntv_enum_events()

static int _lmsensors_ntv_enum_events ( unsigned int *  EventCode,
int  modifier 
)
static

Definition at line 585 of file linux-lmsensors.c.

586 {
587 
588  switch ( modifier ) {
589  case PAPI_ENUM_FIRST:
590  *EventCode = 0;
591 
592  return PAPI_OK;
593  break;
594 
595  case PAPI_ENUM_EVENTS:
596  {
597  int index = *EventCode;
598 
599  if ( index < num_events - 1 ) {
600  *EventCode = *EventCode + 1;
601  return PAPI_OK;
602  } else
603  return PAPI_ENOEVNT;
604 
605  break;
606  }
607  default:
608  return PAPI_EINVAL;
609  }
610  return PAPI_EINVAL;
611 }
#define PAPI_OK
Definition: fpapi.h:105
#define PAPI_EINVAL
Definition: fpapi.h:106
static int num_events
#define PAPI_ENOEVNT
Definition: fpapi.h:112

◆ _lmsensors_read()

static int _lmsensors_read ( hwd_context_t ctx,
hwd_control_state_t ctl,
long_long **  events,
int  flags 
)
static

Definition at line 470 of file linux-lmsensors.c.

472 {
473  ( void ) ctx;
474  ( void ) flags;
475  long long start = PAPI_get_real_usec( );
476  int i;
477 
479 
480  if ( start - control->lastupdate > 200000 ) { // cache refresh
481 
482  for ( i = 0; i < num_events; i++ ) {
484  }
485  control->lastupdate = PAPI_get_real_usec( );
486  }
487 
489  return PAPI_OK;
490 }
#define PAPI_OK
Definition: fpapi.h:105
static long_long * cached_counts
static struct timeval start
char events[MAX_EVENTS][BUFSIZ]
static int num_events
static long_long getEventValue(unsigned event_id)
long long PAPI_get_real_usec(void)
Definition: papi.c:6264
int i
Definition: fileop.c:140
Here is the call graph for this function:

◆ _lmsensors_reset()

static int _lmsensors_reset ( hwd_context_t ctx,
hwd_control_state_t ctl 
)
static

Definition at line 573 of file linux-lmsensors.c.

574 {
575  ( void ) ctx;
576  ( void ) ctl;
577  return PAPI_OK;
578 }
#define PAPI_OK
Definition: fpapi.h:105

◆ _lmsensors_set_domain()

static int _lmsensors_set_domain ( hwd_control_state_t ctl,
int  domain 
)
static

Definition at line 559 of file linux-lmsensors.c.

560 {
561  (void) ctl;
562  if ( PAPI_DOM_ALL != domain )
563  return ( PAPI_EINVAL );
564 
565  return ( PAPI_OK );
566 }
#define PAPI_OK
Definition: fpapi.h:105
#define PAPI_EINVAL
Definition: fpapi.h:106
#define PAPI_DOM_ALL
Definition: fpapi.h:25

◆ _lmsensors_shutdown_component()

static int _lmsensors_shutdown_component ( void  )
static

Definition at line 494 of file linux-lmsensors.c.

495 {
496  if (cached_counts) {
497  free(cached_counts);
498  cached_counts = NULL;
499  }
500 
501  /* Call the libsensors cleaning function before leaving */
503 
507  }
508 
509  return PAPI_OK;
510 }
#define PAPI_OK
Definition: fpapi.h:105
static void(* sensors_cleanupPtr)(void)
static long_long * cached_counts
static _lmsensors_native_event_entry_t * lm_sensors_native_table

◆ _lmsensors_shutdown_thread()

static int _lmsensors_shutdown_thread ( hwd_context_t ctx)
static

Definition at line 513 of file linux-lmsensors.c.

514 {
515  ( void ) ctx;
516 
517  return PAPI_OK;
518 }
#define PAPI_OK
Definition: fpapi.h:105

◆ _lmsensors_start()

static int _lmsensors_start ( hwd_context_t ctx,
hwd_control_state_t ctl 
)
static

Definition at line 444 of file linux-lmsensors.c.

445 {
446  ( void ) ctx;
447  ( void ) ctl;
448 
449  return PAPI_OK;
450 }
#define PAPI_OK
Definition: fpapi.h:105

◆ _lmsensors_stop()

static int _lmsensors_stop ( hwd_context_t ctx,
hwd_control_state_t ctl 
)
static

Definition at line 457 of file linux-lmsensors.c.

458 {
459  ( void ) ctx;
460  ( void ) ctl;
461 
462  return PAPI_OK;
463 }
#define PAPI_OK
Definition: fpapi.h:105

◆ _lmsensors_update_control_state()

static int _lmsensors_update_control_state ( hwd_control_state_t ctl,
NativeInfo_t native,
int  count,
hwd_context_t ctx 
)
static

Definition at line 537 of file linux-lmsensors.c.

541 {
542  int i, index;
543  ( void ) ctx;
544  ( void ) ctl;
545 
546  for ( i = 0; i < count; i++ ) {
547  index = native[i].ni_event;
548  native[i].ni_position =
550  }
551  return PAPI_OK;
552 }
#define PAPI_OK
Definition: fpapi.h:105
static int native
static _lmsensors_native_event_entry_t * lm_sensors_native_table
_lmsensors_register_t resources
static long count
int i
Definition: fileop.c:140

◆ createNativeEvents()

static unsigned createNativeEvents ( void  )
static

Definition at line 159 of file linux-lmsensors.c.

160 {
161  unsigned id = 0;
162  unsigned int count;
163  (void) count; // Ignore not used warnings.
164 
165  int chip_nr = 0;
166  const sensors_chip_name *chip_name;
167 
168  /* component name and description */
169  strcpy( _lmsensors_vector.cmp_info.short_name, "lm_sensors" );
171  "lm-sensors provides tools for monitoring the hardware health" );
172 
173 
174  /* Loop through all the chips found */
175  while ( ( chip_name =
176  sensors_get_detected_chipsPtr( NULL, &chip_nr ) ) != NULL ) {
177  int a, b;
178  const sensors_feature *feature;
179  const sensors_subfeature *sub;
180  char chipnamestring[PAPI_MIN_STR_LEN];
181 
182  // lm_sensors_native_table[id].count = 0;
183 
184  /* get chip name from its internal representation */
185  sensors_snprintf_chip_namePtr( chipnamestring,
186  PAPI_MIN_STR_LEN, chip_name );
187 
188  a = 0;
189 
190  /* Loop through all the features found */
191  while ( ( feature = sensors_get_featuresPtr( chip_name, &a ) ) ) {
192  char *featurelabel;
193 
194  if ( !( featurelabel = sensors_get_labelPtr( chip_name, feature ))) {
195  fprintf( stderr, "ERROR: Can't get label of feature %s!\n",
196  feature->name );
197  continue;
198  }
199 
200  b = 0;
201 
202  /* Loop through all the subfeatures found */
203  while ((sub=sensors_get_all_subfeaturesPtr(chip_name,feature,&b))) {
204 
205  count = 0;
206 
207  /* Save native event data */
208  sprintf( lm_sensors_native_table[id].name, "%s.%s.%s",
209  chipnamestring, featurelabel, sub->name );
210 
211  strncpy( lm_sensors_native_table[id].description,
214 
215  /* The selector has to be !=0 . Starts with 1 */
217 
218  /* Save the actual references to this event */
219  lm_sensors_native_table[id].resources.name = chip_name;
220  lm_sensors_native_table[id].resources.subfeat_nr = sub->number;
221 
222  count = sub->number;
223 
224  /* increment the table index counter */
225  id++;
226  }
227 
228  // lm_sensors_native_table[id].count = count + 1;
229  free( featurelabel );
230  }
231  }
232 
233  /* Return the number of events created */
234  return id;
235 }
static const char * name
Definition: fork_overflow.c:31
char description[PAPI_MAX_STR_LEN]
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
char short_name[PAPI_MIN_STR_LEN]
Definition: papi.h:631
static char *(* sensors_get_labelPtr)(const sensors_chip_name *name, const sensors_feature *feature)
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
#define PAPI_MIN_STR_LEN
Definition: fpapi.h:41
static _lmsensors_native_event_entry_t * lm_sensors_native_table
static const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
static int(* sensors_snprintf_chip_namePtr)(char *str, size_t size, const sensors_chip_name *chip)
char description[PAPI_MAX_STR_LEN]
Definition: papi.h:633
papi_vector_t _lmsensors_vector
const sensors_chip_name * name
static double b[MATRIX_SIZE][MATRIX_SIZE]
Definition: libmsr_basic.c:39
_lmsensors_register_t resources
static long count
static double a[MATRIX_SIZE][MATRIX_SIZE]
Definition: libmsr_basic.c:38
#define PAPI_MAX_STR_LEN
Definition: fpapi.h:43
Here is the caller graph for this function:

◆ detectSensors()

static unsigned detectSensors ( void  )
static

Definition at line 130 of file linux-lmsensors.c.

131 {
132  unsigned id = 0;
133  int chip_nr = 0;
134  const sensors_chip_name *chip_name;
135 
136  /* Loop through all the chips, features, subfeatures found */
137  while ( ( chip_name =
138  sensors_get_detected_chipsPtr( NULL, &chip_nr ) ) != NULL ) {
139  int a = 0, b;
140  const sensors_feature *feature;
141 
142  while ( ( feature = sensors_get_featuresPtr( chip_name, &a ) ) ) {
143  b = 0;
144  while ( ( sensors_get_all_subfeaturesPtr( chip_name, feature,
145  &b ) ) ) {
146  id++;
147  }
148  }
149  }
150 
151  return id;
152 }
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
static const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
static double b[MATRIX_SIZE][MATRIX_SIZE]
Definition: libmsr_basic.c:39
static double a[MATRIX_SIZE][MATRIX_SIZE]
Definition: libmsr_basic.c:38
Here is the caller graph for this function:

◆ getEventValue()

static long_long getEventValue ( unsigned  event_id)
static

Definition at line 244 of file linux-lmsensors.c.

245 {
246  double value;
247  int res;
248 
249  res = sensors_get_valuePtr( lm_sensors_native_table[event_id].resources.name,
251  subfeat_nr, &value );
252 
253  if ( res < 0 ) {
254  fprintf( stderr, "libsensors(): Could not read event #%d!\n",
255  event_id );
256  return -1;
257  }
258 
259  return ( ( long_long ) ( value * 1000 ) );
260 }
static int(* sensors_get_valuePtr)(const sensors_chip_name *name, int subfeat_nr, double *value)
static _lmsensors_native_event_entry_t * lm_sensors_native_table
char name[PAPI_MAX_STR_LEN]
#define long_long
Definition: papi.h:553
_lmsensors_register_t resources
Here is the caller graph for this function:

◆ link_lmsensors_libraries()

static int link_lmsensors_libraries ( )
static

Definition at line 352 of file linux-lmsensors.c.

353 {
354  /* Need to link in the lmsensors libraries, if not found disable the component */
355  dl1 = dlopen("libsensors.so", RTLD_NOW | RTLD_GLOBAL);
356  if (!dl1)
357  {
359  "lmsensors library libsensors.so not found.",PAPI_MAX_STR_LEN);
360  return ( PAPI_ENOSUPP );
361  }
362  sensors_initPtr = dlsym(dl1, "sensors_init");
363  if (dlerror() != NULL)
364  {
366  "lmsensor function sensors_init.",PAPI_MAX_STR_LEN);
367  return ( PAPI_ENOSUPP );
368  }
369  sensors_cleanupPtr = dlsym(dl1, "sensors_cleanup");
370  if (dlerror() != NULL)
371  {
373  "lmsensor function sensors_cleanup.",PAPI_MAX_STR_LEN);
374  return ( PAPI_ENOSUPP );
375  }
376  sensors_snprintf_chip_namePtr = dlsym(dl1, "sensors_snprintf_chip_name");
377  if (dlerror() != NULL)
378  {
380  "lmsensor function sensors_snprintf_chip_name.",PAPI_MAX_STR_LEN);
381  return ( PAPI_ENOSUPP );
382  }
383  sensors_get_labelPtr = dlsym(dl1, "sensors_get_label");
384  if (dlerror() != NULL)
385  {
387  "lmsensor function sensors_get_label.",PAPI_MAX_STR_LEN);
388  return ( PAPI_ENOSUPP );
389  }
390  sensors_get_valuePtr = dlsym(dl1, "sensors_get_value");
391  if (dlerror() != NULL)
392  {
394  "lmsensor function sensors_get_value.",PAPI_MAX_STR_LEN);
395  return ( PAPI_ENOSUPP );
396  }
397  sensors_get_detected_chipsPtr = dlsym(dl1, "sensors_get_detected_chips");
398  if (dlerror() != NULL)
399  {
401  "lmsensor function sensors_get_detected_chips.",PAPI_MAX_STR_LEN);
402  return ( PAPI_ENOSUPP );
403  }
404  sensors_get_featuresPtr = dlsym(dl1, "sensors_get_features");
405  if (dlerror() != NULL)
406  {
408  "lmsensor function sensors_get_features.",PAPI_MAX_STR_LEN);
409  return ( PAPI_ENOSUPP );
410  }
411  sensors_get_all_subfeaturesPtr = dlsym(dl1, "sensors_get_all_subfeatures");
412  if (dlerror() != NULL)
413  {
415  "lmsensor function sensors_get_all_subfeatures.",PAPI_MAX_STR_LEN);
416  return ( PAPI_ENOSUPP );
417  }
418 
419  return ( PAPI_OK );
420 }
#define PAPI_OK
Definition: fpapi.h:105
static void(* sensors_cleanupPtr)(void)
char disabled_reason[PAPI_MAX_STR_LEN]
Definition: papi.h:637
static int(* sensors_get_valuePtr)(const sensors_chip_name *name, int subfeat_nr, double *value)
#define PAPI_ENOSUPP
Definition: fpapi.h:123
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
static char *(* sensors_get_labelPtr)(const sensors_chip_name *name, const sensors_feature *feature)
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
static const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
static int(* sensors_snprintf_chip_namePtr)(char *str, size_t size, const sensors_chip_name *chip)
static int(* sensors_initPtr)(FILE *input)
static void * dl1
papi_vector_t _lmsensors_vector
#define PAPI_MAX_STR_LEN
Definition: fpapi.h:43
Here is the caller graph for this function:

Variable Documentation

◆ _lmsensors_vector

papi_vector_t _lmsensors_vector

Definition at line 121 of file linux-lmsensors.c.

◆ cached_counts

long_long* cached_counts = NULL
static

Definition at line 100 of file linux-lmsensors.c.

◆ dl1

void* dl1 = NULL
static

Definition at line 117 of file linux-lmsensors.c.

◆ lm_sensors_native_table

_lmsensors_native_event_entry_t* lm_sensors_native_table
static

Definition at line 97 of file linux-lmsensors.c.

◆ num_events

int num_events = 0
static

Definition at line 99 of file linux-lmsensors.c.

◆ sensors_cleanupPtr

void(* sensors_cleanupPtr) (void)
static

Definition at line 104 of file linux-lmsensors.c.

◆ sensors_get_all_subfeaturesPtr

const sensors_subfeature*(* sensors_get_all_subfeaturesPtr) (const sensors_chip_name *name, const sensors_feature *feature, int *nr)
static

Definition at line 113 of file linux-lmsensors.c.

◆ sensors_get_detected_chipsPtr

const sensors_chip_name*(* sensors_get_detected_chipsPtr) (const sensors_chip_name *match, int *nr)
static

Definition at line 110 of file linux-lmsensors.c.

◆ sensors_get_featuresPtr

const sensors_feature*(* sensors_get_featuresPtr) (const sensors_chip_name *name, int *nr)
static

Definition at line 112 of file linux-lmsensors.c.

◆ sensors_get_labelPtr

char*(* sensors_get_labelPtr) (const sensors_chip_name *name, const sensors_feature *feature)
static

Definition at line 107 of file linux-lmsensors.c.

◆ sensors_get_valuePtr

int(* sensors_get_valuePtr) (const sensors_chip_name *name, int subfeat_nr, double *value)
static

Definition at line 108 of file linux-lmsensors.c.

◆ sensors_initPtr

int(* sensors_initPtr) (FILE *input)
static

Definition at line 103 of file linux-lmsensors.c.

◆ sensors_snprintf_chip_namePtr

int(* sensors_snprintf_chip_namePtr) (char *str, size_t size, const sensors_chip_name *chip)
static

Definition at line 105 of file linux-lmsensors.c.