47#define LM_SENSORS_REFRESHTIME 200000
50typedef struct _lmsensors_register
55 const sensors_chip_name *
name;
66typedef struct _lmsensors_native_event_entry
75typedef struct _lmsensors_reg_alloc
81typedef struct _lmsensors_control_state
87typedef struct _lmsensors_context
106 const sensors_chip_name *chip);
107static char *(*sensors_get_labelPtr)(
const sensors_chip_name *
name,
const sensors_feature *feature);
110static const sensors_chip_name *(*sensors_get_detected_chipsPtr)(
const sensors_chip_name
112static const sensors_feature *(*sensors_get_featuresPtr)(
const sensors_chip_name *
name,
int *nr);
113static const sensors_subfeature *(*sensors_get_all_subfeaturesPtr)(
const sensors_chip_name *
name,
114 const sensors_feature *feature,
int *nr);
146 const sensors_chip_name *chip_name;
149 while ( ( chip_name =
152 const sensors_feature *feature;
175 const sensors_chip_name *chip_name;
180 "lm-sensors provides tools for monitoring the hardware health" );
184 while ( ( chip_name =
187 const sensors_feature *feature;
188 const sensors_subfeature *sub;
204 fprintf(
stderr,
"ERROR: Can't get label of feature %s!\n",
216 while( (ptr = strchr(featurelabel,
' ')) != NULL ){ *ptr =
'_'; }
220 chipnamestring, featurelabel, sub->name );
238 free( featurelabel );
260 subfeat_nr, &value );
263 fprintf(
stderr,
"libsensors(): Could not read event #%d!\n",
268 return ( (
long_long ) ( value * 1000 ) );
299 SUBDBG (
"Dynamic link of lmsensors libraries failed, component will be disabled.\n");
300 SUBDBG (
"See disable reason in papi_component_avail output for more details.\n");
378 char path_name[1024];
379 char *lmsensors_root = getenv(
"PAPI_LMSENSORS_ROOT");
393 dl1 = dlopen(
"libsensors.so", RTLD_NOW | RTLD_GLOBAL);
397 if (
dl1 == NULL && lmsensors_root != NULL) {
398 snprintf(path_name, PATH_MAX,
"%s/lib64/libsensors.so", lmsensors_root);
399 dl1 = dlopen(path_name, RTLD_NOW | RTLD_GLOBAL);
403 if (
dl1 == NULL && lmsensors_root != NULL) {
404 snprintf(path_name, PATH_MAX,
"%s/lib/libsensors.so", lmsensors_root);
405 dl1 = dlopen(path_name, RTLD_NOW | RTLD_GLOBAL);
417 if (dlerror() != NULL)
424 if (dlerror() != NULL)
431 if (dlerror() != NULL)
438 if (dlerror() != NULL)
445 if (dlerror() != NULL)
452 if (dlerror() != NULL)
459 if (dlerror() != NULL)
466 if (dlerror() != NULL)
642 switch ( modifier ) {
651 int index = *EventCode;
654 *EventCode = *EventCode + 1;
673 int index = EventCode;
688 int index = EventCode;
705 .short_name =
"lmsensors",
707 .description =
"Linux LMsensor statistics",
716 .fast_real_timer = 0,
717 .fast_virtual_timer = 0,
719 .attach_must_ptrace = 0,
get real time counter value in microseconds
struct papi_vectors * _papi_hwd[]
char events[MAX_EVENTS][BUFSIZ]
static struct timeval start
static double a[MATRIX_SIZE][MATRIX_SIZE]
static double b[MATRIX_SIZE][MATRIX_SIZE]
static int _lmsensors_ntv_code_to_name(unsigned int EventCode, char *name, int len)
static _lmsensors_native_event_entry_t * lm_sensors_native_table
static long_long getEventValue(unsigned event_id)
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 long_long * cached_counts
static int _lmsensors_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
papi_vector_t _lmsensors_vector
static int _lmsensors_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _lmsensors_init_control_state(hwd_control_state_t *ctl)
static int _lmsensors_ntv_code_to_descr(unsigned int EventCode, char *name, int len)
static const sensors_chip_name *(* sensors_get_detected_chipsPtr)(const sensors_chip_name *match, int *nr)
static int _lmsensors_shutdown_thread(hwd_context_t *ctx)
static int _lmsensors_init_component(int cidx)
static unsigned createNativeEvents(void)
static int _lmsensors_ntv_enum_events(unsigned int *EventCode, int modifier)
static int(* sensors_initPtr)(FILE *input)
static const sensors_feature *(* sensors_get_featuresPtr)(const sensors_chip_name *name, int *nr)
static int link_lmsensors_libraries()
static char lmsensors_main[]
static const sensors_subfeature *(* sensors_get_all_subfeaturesPtr)(const sensors_chip_name *name, const sensors_feature *feature, int *nr)
static char *(* sensors_get_labelPtr)(const sensors_chip_name *name, const sensors_feature *feature)
void(* _dl_non_dynamic_init)(void)
static void(* sensors_cleanupPtr)(void)
static int(* sensors_get_valuePtr)(const sensors_chip_name *name, int subfeat_nr, double *value)
static int _lmsensors_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _lmsensors_init_thread(hwd_context_t *ctx)
static int _lmsensors_set_domain(hwd_control_state_t *ctl, int domain)
static int _lmsensors_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long_long **events, int flags)
static int(* sensors_snprintf_chip_namePtr)(char *str, size_t size, const sensors_chip_name *chip)
static int _lmsensors_shutdown_component(void)
unsigned long AO_t __attribute__((__aligned__(4)))
Return codes and api definitions.
#define SUBDBG(format, args...)
char description[PAPI_MAX_STR_LEN]
char short_name[PAPI_MIN_STR_LEN]
char name[PAPI_MAX_STR_LEN]
char disabled_reason[PAPI_HUGE_STR_LEN]
_lmsensors_control_state_t state
_lmsensors_register_t resources
char name[PAPI_MAX_STR_LEN]
char description[PAPI_MAX_STR_LEN]
_lmsensors_register_t ra_bits
const sensors_chip_name * name
PAPI_component_info_t cmp_info