47 #define LM_SENSORS_REFRESHTIME 200000 50 typedef struct _lmsensors_register
55 const sensors_chip_name *
name;
66 typedef struct _lmsensors_native_event_entry
75 typedef struct _lmsensors_reg_alloc
81 typedef struct _lmsensors_control_state
87 typedef struct _lmsensors_context
106 const sensors_chip_name *chip);
107 static char *(*sensors_get_labelPtr)(
const sensors_chip_name *
name,
const sensors_feature *feature);
110 static const sensors_chip_name *(*sensors_get_detected_chipsPtr)(
const sensors_chip_name
112 static const sensors_feature *(*sensors_get_featuresPtr)(
const sensors_chip_name *
name,
int *nr);
113 static const sensors_subfeature *(*sensors_get_all_subfeaturesPtr)(
const sensors_chip_name *
name,
114 const sensors_feature *feature,
int *nr);
134 const sensors_chip_name *chip_name;
137 while ( ( chip_name =
140 const sensors_feature *feature;
166 const sensors_chip_name *chip_name;
171 "lm-sensors provides tools for monitoring the hardware health" );
175 while ( ( chip_name =
178 const sensors_feature *feature;
179 const sensors_subfeature *sub;
195 fprintf( stderr,
"ERROR: Can't get label of feature %s!\n",
209 chipnamestring, featurelabel, sub->name );
229 free( featurelabel );
251 subfeat_nr, &value );
254 fprintf( stderr,
"libsensors(): Could not read event #%d!\n",
259 return ( (
long_long ) ( value * 1000 ) );
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");
355 dl1 = dlopen(
"libsensors.so", RTLD_NOW | RTLD_GLOBAL);
363 if (dlerror() != NULL)
370 if (dlerror() != NULL)
377 if (dlerror() != NULL)
384 if (dlerror() != NULL)
391 if (dlerror() != NULL)
398 if (dlerror() != NULL)
405 if (dlerror() != NULL)
412 if (dlerror() != NULL)
588 switch ( modifier ) {
597 int index = *EventCode;
600 *EventCode = *EventCode + 1;
619 int index = EventCode;
634 int index = EventCode;
651 .short_name =
"lmsensors",
653 .description =
"Linux LMsensor statistics",
662 .fast_real_timer = 0,
663 .fast_virtual_timer = 0,
665 .attach_must_ptrace = 0,
static void(* sensors_cleanupPtr)(void)
static int _lmsensors_init_component(int cidx)
char disabled_reason[PAPI_MAX_STR_LEN]
static long_long * cached_counts
static int _lmsensors_ntv_code_to_name(unsigned int EventCode, char *name, int len)
static int _lmsensors_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _lmsensors_shutdown_thread(hwd_context_t *ctx)
static int(* sensors_get_valuePtr)(const sensors_chip_name *name, int subfeat_nr, double *value)
char description[PAPI_MAX_STR_LEN]
static int _lmsensors_init_thread(hwd_context_t *ctx)
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
static unsigned createNativeEvents(void)
static int _lmsensors_shutdown_component(void)
static struct timeval start
PAPI_component_info_t cmp_info
static int _lmsensors_set_domain(hwd_control_state_t *ctl, int domain)
char short_name[PAPI_MIN_STR_LEN]
Return codes and api definitions.
char events[MAX_EVENTS][BUFSIZ]
static int _lmsensors_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
static char *(* sensors_get_labelPtr)(const sensors_chip_name *name, const sensors_feature *feature)
static unsigned detectSensors(void)
static long_long getEventValue(unsigned event_id)
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
static int _lmsensors_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define SUBDBG(format, args...)
static _lmsensors_native_event_entry_t * lm_sensors_native_table
char name[PAPI_MAX_STR_LEN]
static int _lmsensors_ntv_enum_events(unsigned int *EventCode, int modifier)
char name[PAPI_MAX_STR_LEN]
static const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
static int _lmsensors_ntv_code_to_descr(unsigned int EventCode, char *name, int len)
static int(* sensors_snprintf_chip_namePtr)(char *str, size_t size, const sensors_chip_name *chip)
long long PAPI_get_real_usec(void)
static int(* sensors_initPtr)(FILE *input)
_lmsensors_control_state_t state
char description[PAPI_MAX_STR_LEN]
static int _lmsensors_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
static int _lmsensors_ctl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
papi_vector_t _lmsensors_vector
const sensors_chip_name * name
static int _lmsensors_init_control_state(hwd_control_state_t *ctl)
static double b[MATRIX_SIZE][MATRIX_SIZE]
_lmsensors_register_t resources
static int link_lmsensors_libraries()
static int _lmsensors_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long_long **events, int flags)
static double a[MATRIX_SIZE][MATRIX_SIZE]
_lmsensors_register_t ra_bits