PAPI  5.6.0.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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_t
lm_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 voiddl1 = 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

#define LM_SENSORS_REFRESHTIME   200000

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

Function Documentation

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

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

514 {
515  ( void ) ctx;
516  ( void ) code;
517  ( void ) option;
518  return PAPI_OK;
519 }
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
static int _lmsensors_init_component ( int  cidx)
static

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

283 {
284  int res;
285  (void) cidx;
286 
287  /* link in all the lmsensor libraries and resolve the symbols we need to use */
289  SUBDBG ("Dynamic link of lmsensors libraries failed, component will be disabled.\n");
290  SUBDBG ("See disable reason in papi_component_avail output for more details.\n");
291  return (PAPI_ENOSUPP);
292  }
293 
294  /* Initialize libsensors library */
295  if ( ( res = sensors_initPtr( NULL ) ) != 0 ) {
297  "Cannot enable libsensors",PAPI_MAX_STR_LEN);
298  return res;
299  }
300 
301  /* Create dyanmic events table */
303  SUBDBG("Found %d sensors\n",num_events);
304 
307 
308  if ( ( lm_sensors_native_table =
309  calloc( num_events, sizeof ( _lmsensors_native_event_entry_t )))
310  == NULL ) {
312  "Could not malloc room",PAPI_MAX_STR_LEN);
313  return PAPI_ENOMEM;
314  }
315 
316  cached_counts = (long long*) calloc(num_events, sizeof(long long));
317 
318  if (cached_counts == NULL) {
320  "Could not malloc room",PAPI_MAX_STR_LEN);
321  return PAPI_ENOMEM;
322  }
323 
324  if ( ( unsigned ) num_events != createNativeEvents( ) ) {
326  "LM_SENSOR number mismatch",PAPI_MAX_STR_LEN);
327  return PAPI_ECMP;
328  }
329 
332 
333  return PAPI_OK;
334 }
static long_long * cached_counts
#define PAPI_ENOSUPP
Definition: papi.h:271
static unsigned createNativeEvents(void)
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
static int num_events
static int cidx
char disabled_reason[PAPI_MAX_STR_LEN]
Definition: papi.h:636
static unsigned detectSensors(void)
#define SUBDBG(format, args...)
Definition: papi_debug.h:63
#define PAPI_ECMP
Definition: papi.h:256
static _lmsensors_native_event_entry_t * lm_sensors_native_table
#define PAPI_ENOMEM
Definition: papi.h:254
#define PAPI_MAX_STR_LEN
Definition: papi.h:465
papi_vector_t _lmsensors_vector
static int link_lmsensors_libraries()
static int(* sensors_initPtr)(FILE *input)

Here is the call graph for this function:

static int _lmsensors_init_control_state ( hwd_control_state_t ctl)
static

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

421 {
422  int i;
423 
424  for ( i = 0; i < num_events; i++ )
425  cached_counts[i] = getEventValue( i );
426 
427  ( ( _lmsensors_control_state_t * ) ctl )->lastupdate =
429  return PAPI_OK;
430 }
static long_long * cached_counts
return PAPI_OK
Definition: linux-nvml.c:497
static int num_events
static long_long getEventValue(unsigned event_id)
int i
Definition: fileop.c:140
long long PAPI_get_real_usec(void)
Definition: papi.c:6264

Here is the call graph for this function:

static int _lmsensors_init_thread ( hwd_context_t ctx)
static

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

271 {
272  ( void ) ctx;
273  return PAPI_OK;
274 }
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
static int _lmsensors_ntv_code_to_descr ( unsigned int  EventCode,
char *  name,
int  len 
)
static

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

619 {
620  int index = EventCode;
621 
622  if (index>=0 && index<num_events) {
623  strncpy( name, lm_sensors_native_table[index].description, len );
624  }
625  return PAPI_OK;
626 }
return PAPI_OK
Definition: linux-nvml.c:497
static int num_events
static _lmsensors_native_event_entry_t * lm_sensors_native_table
char * name
Definition: iozone.c:23648
static int _lmsensors_ntv_code_to_name ( unsigned int  EventCode,
char *  name,
int  len 
)
static

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

604 {
605  int index = EventCode;
606 
607  if (index>=0 && index<num_events) {
608  strncpy( name, lm_sensors_native_table[index].name, len );
609  }
610 
611  return PAPI_OK;
612 }
return PAPI_OK
Definition: linux-nvml.c:497
static int num_events
static _lmsensors_native_event_entry_t * lm_sensors_native_table
char * name
Definition: iozone.c:23648
static int _lmsensors_ntv_enum_events ( unsigned int EventCode,
int  modifier 
)
static

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

572 {
573 
574  switch ( modifier ) {
575  case PAPI_ENUM_FIRST:
576  *EventCode = 0;
577 
578  return PAPI_OK;
579  break;
580 
581  case PAPI_ENUM_EVENTS:
582  {
583  int index = *EventCode;
584 
585  if ( index < num_events - 1 ) {
586  *EventCode = *EventCode + 1;
587  return PAPI_OK;
588  } else
589  return PAPI_ENOEVNT;
590 
591  break;
592  }
593  default:
594  return PAPI_EINVAL;
595  }
596  return PAPI_EINVAL;
597 }
#define PAPI_ENOEVNT
Definition: papi.h:260
return PAPI_OK
Definition: linux-nvml.c:497
return PAPI_EINVAL
Definition: linux-nvml.c:436
static int num_events
static int _lmsensors_read ( hwd_context_t ctx,
hwd_control_state_t ctl,
long_long **  events,
int  flags 
)
static

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

465 {
466  ( void ) ctx;
467  ( void ) flags;
468  long long start = PAPI_get_real_usec( );
469  int i;
470 
472 
473  if ( start - control->lastupdate > 200000 ) { // cache refresh
474 
475  for ( i = 0; i < num_events; i++ ) {
476  cached_counts[i] = getEventValue( i );
477  }
478  control->lastupdate = PAPI_get_real_usec( );
479  }
480 
482  return PAPI_OK;
483 }
static long_long * cached_counts
long long flags
Definition: iozone.c:12330
start
Definition: iozone.c:22736
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
char events[MAX_EVENTS][BUFSIZ]
static int num_events
static long_long getEventValue(unsigned event_id)
int i
Definition: fileop.c:140
long long PAPI_get_real_usec(void)
Definition: papi.c:6264

Here is the call graph for this function:

static int _lmsensors_reset ( hwd_context_t ctx,
hwd_control_state_t ctl 
)
static

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

560 {
561  ( void ) ctx;
562  ( void ) ctl;
563  return PAPI_OK;
564 }
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
static int _lmsensors_set_domain ( hwd_control_state_t ctl,
int  domain 
)
static

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

546 {
547  (void) ctl;
548  if ( PAPI_DOM_ALL != domain )
549  return ( PAPI_EINVAL );
550 
551  return ( PAPI_OK );
552 }
#define PAPI_DOM_ALL
Definition: papi.h:303
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
return PAPI_EINVAL
Definition: linux-nvml.c:436
static int _lmsensors_shutdown_component ( void  )
static

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

488 {
489  if (cached_counts)
491 
492  /* Call the libsensors cleaning function before leaving */
494 
495  return PAPI_OK;
496 }
static long_long * cached_counts
return PAPI_OK
Definition: linux-nvml.c:497
static void(* sensors_cleanupPtr)(void)
free(dummyfile[xx])

Here is the call graph for this function:

static int _lmsensors_shutdown_thread ( hwd_context_t ctx)
static

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

500 {
501  ( void ) ctx;
502 
503  return PAPI_OK;
504 }
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
static int _lmsensors_start ( hwd_context_t ctx,
hwd_control_state_t ctl 
)
static

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

438 {
439  ( void ) ctx;
440  ( void ) ctl;
441 
442  return PAPI_OK;
443 }
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
static int _lmsensors_stop ( hwd_context_t ctx,
hwd_control_state_t ctl 
)
static

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

451 {
452  ( void ) ctx;
453  ( void ) ctl;
454 
455  return PAPI_OK;
456 }
return PAPI_OK
Definition: linux-nvml.c:497
void
Definition: iozone.c:18627
static int _lmsensors_update_control_state ( hwd_control_state_t ctl,
NativeInfo_t native,
int  count,
hwd_context_t ctx 
)
static

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

527 {
528  int i, index;
529  ( void ) ctx;
530  ( void ) ctl;
531 
532  for ( i = 0; i < count; i++ ) {
533  index = native[i].ni_event;
534  native[i].ni_position =
536  }
537  return PAPI_OK;
538 }
return PAPI_OK
Definition: linux-nvml.c:497
int count
Definition: iozone.c:22422
void
Definition: iozone.c:18627
int i
Definition: fileop.c:140
static _lmsensors_native_event_entry_t * lm_sensors_native_table
_lmsensors_register_t resources
static unsigned createNativeEvents ( void  )
static

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

160 {
161  unsigned id = 0;
162  unsigned int count;
163 
164  int chip_nr = 0;
165  const sensors_chip_name *chip_name;
166 
167  /* component name and description */
168  strcpy( _lmsensors_vector.cmp_info.short_name, "lm_sensors" );
170  "lm-sensors provides tools for monitoring the hardware health" );
171 
172 
173  /* Loop through all the chips found */
174  while ( ( chip_name =
175  sensors_get_detected_chipsPtr( NULL, &chip_nr ) ) != NULL ) {
176  int a, b;
177  const sensors_feature *feature;
178  const sensors_subfeature *sub;
179  char chipnamestring[PAPI_MIN_STR_LEN];
180 
181  // lm_sensors_native_table[id].count = 0;
182 
183  /* get chip name from its internal representation */
184  sensors_snprintf_chip_namePtr( chipnamestring,
185  PAPI_MIN_STR_LEN, chip_name );
186 
187  a = 0;
188 
189  /* Loop through all the features found */
190  while ( ( feature = sensors_get_featuresPtr( chip_name, &a ) ) ) {
191  char *featurelabel;
192 
193  if ( !( featurelabel = sensors_get_labelPtr( chip_name, feature ))) {
194  fprintf( stderr, "ERROR: Can't get label of feature %s!\n",
195  feature->name );
196  continue;
197  }
198 
199  b = 0;
200 
201  /* Loop through all the subfeatures found */
202  while ((sub=sensors_get_all_subfeaturesPtr(chip_name,feature,&b))) {
203 
204  count = 0;
205 
206  /* Save native event data */
207  sprintf( lm_sensors_native_table[id].name, "%s.%s.%s",
208  chipnamestring, featurelabel, sub->name );
209 
210  strncpy( lm_sensors_native_table[id].description,
213 
214  /* The selector has to be !=0 . Starts with 1 */
216 
217  /* Save the actual references to this event */
218  lm_sensors_native_table[id].resources.name = chip_name;
219  lm_sensors_native_table[id].resources.subfeat_nr = sub->number;
220 
221  count = sub->number;
222 
223  /* increment the table index counter */
224  id++;
225  }
226 
227  // lm_sensors_native_table[id].count = count + 1;
228  free( featurelabel );
229  }
230  }
231 
232  /* Return the number of events created */
233  return id;
234 }
sprintf(splash[splash_line++],"\tIozone: Performance Test of File I/O\n")
char description[PAPI_MAX_STR_LEN]
int count
Definition: iozone.c:22422
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
char short_name[PAPI_MIN_STR_LEN]
Definition: papi.h:630
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
free(dummyfile[xx])
static _lmsensors_native_event_entry_t * lm_sensors_native_table
char description[PAPI_MAX_STR_LEN]
Definition: papi.h:632
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)
strcpy(filename, default_filename)
static const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
char * name
Definition: iozone.c:23648
#define PAPI_MIN_STR_LEN
Definition: papi.h:464
#define PAPI_MAX_STR_LEN
Definition: papi.h:465
papi_vector_t _lmsensors_vector
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
const sensors_chip_name * name
static double b[MATRIX_SIZE][MATRIX_SIZE]
Definition: libmsr_basic.c:39
_lmsensors_register_t resources
static double a[MATRIX_SIZE][MATRIX_SIZE]
Definition: libmsr_basic.c:38

Here is the call graph for this function:

Here is the caller graph for this function:

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_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 const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, 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:

static long_long getEventValue ( unsigned  event_id)
static

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

244 {
245  double value;
246  int res;
247 
248  res = sensors_get_valuePtr( lm_sensors_native_table[event_id].resources.name,
250  subfeat_nr, &value );
251 
252  if ( res < 0 ) {
253  fprintf( stderr, "libsensors(): Could not read event #%d!\n",
254  event_id );
255  return -1;
256  }
257 
258  return ( ( long_long ) ( value * 1000 ) );
259 }
void double value
Definition: iozone.c:18781
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:552
_lmsensors_register_t resources

Here is the caller graph for this function:

static int link_lmsensors_libraries ( )
static

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

346 {
347  /* Need to link in the lmsensors libraries, if not found disable the component */
348  dl1 = dlopen("libsensors.so", RTLD_NOW | RTLD_GLOBAL);
349  if (!dl1)
350  {
352  "lmsensors library libsensors.so not found.",PAPI_MAX_STR_LEN);
353  return ( PAPI_ENOSUPP );
354  }
355  sensors_initPtr = dlsym(dl1, "sensors_init");
356  if (dlerror() != NULL)
357  {
359  "lmsensor function sensors_init.",PAPI_MAX_STR_LEN);
360  return ( PAPI_ENOSUPP );
361  }
362  sensors_cleanupPtr = dlsym(dl1, "sensors_cleanup");
363  if (dlerror() != NULL)
364  {
366  "lmsensor function sensors_cleanup.",PAPI_MAX_STR_LEN);
367  return ( PAPI_ENOSUPP );
368  }
369  sensors_snprintf_chip_namePtr = dlsym(dl1, "sensors_snprintf_chip_name");
370  if (dlerror() != NULL)
371  {
373  "lmsensor function sensors_snprintf_chip_name.",PAPI_MAX_STR_LEN);
374  return ( PAPI_ENOSUPP );
375  }
376  sensors_get_labelPtr = dlsym(dl1, "sensors_get_label");
377  if (dlerror() != NULL)
378  {
380  "lmsensor function sensors_get_label.",PAPI_MAX_STR_LEN);
381  return ( PAPI_ENOSUPP );
382  }
383  sensors_get_valuePtr = dlsym(dl1, "sensors_get_value");
384  if (dlerror() != NULL)
385  {
387  "lmsensor function sensors_get_value.",PAPI_MAX_STR_LEN);
388  return ( PAPI_ENOSUPP );
389  }
390  sensors_get_detected_chipsPtr = dlsym(dl1, "sensors_get_detected_chips");
391  if (dlerror() != NULL)
392  {
394  "lmsensor function sensors_get_detected_chips.",PAPI_MAX_STR_LEN);
395  return ( PAPI_ENOSUPP );
396  }
397  sensors_get_featuresPtr = dlsym(dl1, "sensors_get_features");
398  if (dlerror() != NULL)
399  {
401  "lmsensor function sensors_get_features.",PAPI_MAX_STR_LEN);
402  return ( PAPI_ENOSUPP );
403  }
404  sensors_get_all_subfeaturesPtr = dlsym(dl1, "sensors_get_all_subfeatures");
405  if (dlerror() != NULL)
406  {
408  "lmsensor function sensors_get_all_subfeatures.",PAPI_MAX_STR_LEN);
409  return ( PAPI_ENOSUPP );
410  }
411 
412  return ( PAPI_OK );
413 }
#define PAPI_ENOSUPP
Definition: papi.h:271
return PAPI_OK
Definition: linux-nvml.c:497
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
static void(* sensors_cleanupPtr)(void)
char disabled_reason[PAPI_MAX_STR_LEN]
Definition: papi.h:636
static int(* sensors_get_valuePtr)(const sensors_chip_name *name, int subfeat_nr, double *value)
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 const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
static void * dl1
#define PAPI_MAX_STR_LEN
Definition: papi.h:465
papi_vector_t _lmsensors_vector
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
static int(* sensors_initPtr)(FILE *input)

Here is the caller graph for this function:

Variable Documentation

papi_vector_t _lmsensors_vector

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

long_long* cached_counts = NULL
static

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

void* dl1 = NULL
static

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

_lmsensors_native_event_entry_t* lm_sensors_native_table
static

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

int num_events = 0
static

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

void(* sensors_cleanupPtr)(void)
static

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

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.

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.

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

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

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

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

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

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

int(* sensors_initPtr)(FILE *input)
static

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

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.