PAPI 7.1.0.0
Loading...
Searching...
No Matches
linux-sensors-ppc.h File Reference

OCC Inband Sensors component for PowerPC This file contains the source code for a component that enables PAPI to read counters and sensors on PowerPC (Power9) architecture. More...

Include dependency graph for linux-sensors-ppc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _sensors_ppc_register_t
 
struct  _sensors_ppc_native_event_entry_t
 
struct  _sensors_ppc_reg_alloc_t
 
struct  occ_sensor_data_header_s
 
struct  occ_sensor_name_s
 
struct  occ_sensor_record_s
 
struct  occ_sensor_counter_s
 
struct  _sensors_ppc_control_state_t
 
struct  _sensors_ppc_context_t
 

Macros

#define papi_sensors_ppc_lock()   _papi_hwi_lock(COMPONENT_LOCK);
 
#define papi_sensors_ppc_unlock()   _papi_hwi_unlock(COMPONENT_LOCK);
 
#define OCC_SENSOR_READING_FULL   0x01
 
#define OCC_SENSOR_READING_COUNTER   0x02
 
#define MAX_OCCS   8
 
#define OCC_SENSOR_DATA_BLOCK_OFFSET   0x00580000
 
#define OCC_SENSOR_DATA_BLOCK_SIZE   0x00025800
 
#define OCC_PING_DATA_BLOCK_SIZE   0xA000
 
#define OCC_REFRESH_TIME   100000
 
#define MAX_CHARS_SENSOR_NAME   16
 
#define MAX_CHARS_SENSOR_UNIT   4
 
#define SENSORS_PPC_MAX_COUNTERS   MAX_OCCS * 512 * OCC_SENSORS_MASKS
 

Enumerations

enum  occ_sensor_type_t {
  OCC_SENSOR_TYPE_GENERIC = 0x0001 , OCC_SENSOR_TYPE_CURRENT = 0x0002 , OCC_SENSOR_TYPE_VOLTAGE = 0x0004 , OCC_SENSOR_TYPE_TEMPERATURE = 0x0008 ,
  OCC_SENSOR_TYPE_UTILIZATION = 0x0010 , OCC_SENSOR_TYPE_TIME = 0x0020 , OCC_SENSOR_TYPE_FREQUENCY = 0x0040 , OCC_SENSOR_TYPE_POWER = 0x0080 ,
  OCC_SENSOR_TYPE_PERFORMANCE = 0x0200
}
 
enum  occ_sensor_loc_t {
  OCC_SENSOR_LOC_SYSTEM = 0x0001 , OCC_SENSOR_LOC_PROCESSOR = 0x0002 , OCC_SENSOR_LOC_PARTITION = 0x0004 , OCC_SENSOR_LOC_MEMORY = 0x0008 ,
  OCC_SENSOR_LOC_VRM = 0x0010 , OCC_SENSOR_LOC_OCC = 0x0020 , OCC_SENSOR_LOC_CORE = 0x0040 , OCC_SENSOR_LOC_GPU = 0x0080 ,
  OCC_SENSOR_LOC_QUAD = 0x0100
}
 
enum  occ_sensors_mask_t {
  OCC_SENSORS_SAMPLE = 0 , OCC_SENSORS_SAMPLE_MIN = 1 , OCC_SENSORS_SAMPLE_MAX = 2 , OCC_SENSORS_CSM_MIN = 3 ,
  OCC_SENSORS_CSM_MAX = 4 , OCC_SENSORS_PROFILER_MIN = 5 , OCC_SENSORS_PROFILER_MAX = 6 , OCC_SENSORS_JOB_SCHED_MIN = 7 ,
  OCC_SENSORS_JOB_SCHED_MAX = 8 , OCC_SENSORS_ACCUMULATOR_TAG = 9 , OCC_SENSORS_MASKS
}
 

Functions

struct occ_sensor_data_header_s __attribute__ ((__packed__)) occ_sensor_data_header_t
 

Variables

static int num_events =0
 
static char * pkg_sys_name = "occ_inband_sensors"
 
static mode_t pkg_sys_flag = O_RDONLY
 
uint8_t valid
 
uint8_t version
 
uint16_t nr_sensors
 
uint8_t reading_version
 
uint8_t pad [3]
 
uint32_t names_offset
 
uint8_t names_version
 
uint8_t name_length
 
uint16_t reserved
 
uint32_t reading_ping_offset
 
uint32_t reading_pong_offset
 
struct occ_sensor_data_header_socc_hdr [MAX_OCCS]
 
static int event_fd
 
static long long last_refresh [MAX_OCCS]
 
static int num_occs
 
static int occ_num_events [MAX_OCCS+1]
 
static uint32_t * ping [MAX_OCCS]
 
static uint32_t * pong [MAX_OCCS]
 
static uint32_t * double_ping [MAX_OCCS]
 
static uint32_t * double_pong [MAX_OCCS]
 
char name [MAX_CHARS_SENSOR_NAME]
 
char units [MAX_CHARS_SENSOR_UNIT]
 
uint16_t gsid
 
uint32_t freq
 
uint32_t scale_factor
 
uint16_t type
 
uint16_t location
 
uint8_t structure_type
 
uint32_t reading_offset
 
uint8_t sensor_data
 
struct occ_sensor_name_socc_names [MAX_OCCS]
 
uint64_t timestamp
 
uint16_t sample
 
uint16_t sample_min
 
uint16_t sample_max
 
uint16_t csm_min
 
uint16_t csm_max
 
uint16_t profiler_min
 
uint16_t profiler_max
 
uint16_t job_scheduler_min
 
uint16_t job_scheduler_max
 
uint64_t accumulator
 
uint32_t update_tag
 
static const char * sensors_ppc_fake_qualifiers []
 
static const char * sensors_ppc_fake_qualif_desc []
 

Detailed Description

CVS: $Id$

Author
PAPI team UTK/ICL dgene.nosp@m.t@ic.nosp@m.l.utk.nosp@m..edu

Definition in file linux-sensors-ppc.h.

Macro Definition Documentation

◆ MAX_CHARS_SENSOR_NAME

#define MAX_CHARS_SENSOR_NAME   16

Definition at line 119 of file linux-sensors-ppc.h.

◆ MAX_CHARS_SENSOR_UNIT

#define MAX_CHARS_SENSOR_UNIT   4

Definition at line 120 of file linux-sensors-ppc.h.

◆ MAX_OCCS

#define MAX_OCCS   8

Definition at line 89 of file linux-sensors-ppc.h.

◆ OCC_PING_DATA_BLOCK_SIZE

#define OCC_PING_DATA_BLOCK_SIZE   0xA000

Definition at line 92 of file linux-sensors-ppc.h.

◆ OCC_REFRESH_TIME

#define OCC_REFRESH_TIME   100000

Definition at line 93 of file linux-sensors-ppc.h.

◆ OCC_SENSOR_DATA_BLOCK_OFFSET

#define OCC_SENSOR_DATA_BLOCK_OFFSET   0x00580000

Definition at line 90 of file linux-sensors-ppc.h.

◆ OCC_SENSOR_DATA_BLOCK_SIZE

#define OCC_SENSOR_DATA_BLOCK_SIZE   0x00025800

Definition at line 91 of file linux-sensors-ppc.h.

◆ OCC_SENSOR_READING_COUNTER

#define OCC_SENSOR_READING_COUNTER   0x02

Definition at line 78 of file linux-sensors-ppc.h.

◆ OCC_SENSOR_READING_FULL

#define OCC_SENSOR_READING_FULL   0x01

Definition at line 77 of file linux-sensors-ppc.h.

◆ papi_sensors_ppc_lock

#define papi_sensors_ppc_lock ( )    _papi_hwi_lock(COMPONENT_LOCK);

Definition at line 28 of file linux-sensors-ppc.h.

◆ papi_sensors_ppc_unlock

#define papi_sensors_ppc_unlock ( )    _papi_hwi_unlock(COMPONENT_LOCK);

Definition at line 29 of file linux-sensors-ppc.h.

◆ SENSORS_PPC_MAX_COUNTERS

#define SENSORS_PPC_MAX_COUNTERS   MAX_OCCS * 512 * OCC_SENSORS_MASKS

Definition at line 200 of file linux-sensors-ppc.h.

Enumeration Type Documentation

◆ occ_sensor_loc_t

Enumerator
OCC_SENSOR_LOC_SYSTEM 
OCC_SENSOR_LOC_PROCESSOR 
OCC_SENSOR_LOC_PARTITION 
OCC_SENSOR_LOC_MEMORY 
OCC_SENSOR_LOC_VRM 
OCC_SENSOR_LOC_OCC 
OCC_SENSOR_LOC_CORE 
OCC_SENSOR_LOC_GPU 
OCC_SENSOR_LOC_QUAD 

Definition at line 65 of file linux-sensors-ppc.h.

65 {
66 OCC_SENSOR_LOC_SYSTEM = 0x0001,
69 OCC_SENSOR_LOC_MEMORY = 0x0008,
70 OCC_SENSOR_LOC_VRM = 0x0010,
71 OCC_SENSOR_LOC_OCC = 0x0020,
72 OCC_SENSOR_LOC_CORE = 0x0040,
73 OCC_SENSOR_LOC_GPU = 0x0080,
74 OCC_SENSOR_LOC_QUAD = 0x0100,
occ_sensor_loc_t
@ OCC_SENSOR_LOC_OCC
@ OCC_SENSOR_LOC_PARTITION
@ OCC_SENSOR_LOC_SYSTEM
@ OCC_SENSOR_LOC_GPU
@ OCC_SENSOR_LOC_CORE
@ OCC_SENSOR_LOC_QUAD
@ OCC_SENSOR_LOC_PROCESSOR
@ OCC_SENSOR_LOC_VRM
@ OCC_SENSOR_LOC_MEMORY

◆ occ_sensor_type_t

Enumerator
OCC_SENSOR_TYPE_GENERIC 
OCC_SENSOR_TYPE_CURRENT 
OCC_SENSOR_TYPE_VOLTAGE 
OCC_SENSOR_TYPE_TEMPERATURE 
OCC_SENSOR_TYPE_UTILIZATION 
OCC_SENSOR_TYPE_TIME 
OCC_SENSOR_TYPE_FREQUENCY 
OCC_SENSOR_TYPE_POWER 
OCC_SENSOR_TYPE_PERFORMANCE 

Definition at line 53 of file linux-sensors-ppc.h.

53 {
59 OCC_SENSOR_TYPE_TIME = 0x0020,
61 OCC_SENSOR_TYPE_POWER = 0x0080,
occ_sensor_type_t
@ OCC_SENSOR_TYPE_GENERIC
@ OCC_SENSOR_TYPE_TIME
@ OCC_SENSOR_TYPE_VOLTAGE
@ OCC_SENSOR_TYPE_FREQUENCY
@ OCC_SENSOR_TYPE_UTILIZATION
@ OCC_SENSOR_TYPE_TEMPERATURE
@ OCC_SENSOR_TYPE_CURRENT
@ OCC_SENSOR_TYPE_POWER
@ OCC_SENSOR_TYPE_PERFORMANCE

◆ occ_sensors_mask_t

Enumerator
OCC_SENSORS_SAMPLE 
OCC_SENSORS_SAMPLE_MIN 
OCC_SENSORS_SAMPLE_MAX 
OCC_SENSORS_CSM_MIN 
OCC_SENSORS_CSM_MAX 
OCC_SENSORS_PROFILER_MIN 
OCC_SENSORS_PROFILER_MAX 
OCC_SENSORS_JOB_SCHED_MIN 
OCC_SENSORS_JOB_SCHED_MAX 
OCC_SENSORS_ACCUMULATOR_TAG 
OCC_SENSORS_MASKS 

Definition at line 172 of file linux-sensors-ppc.h.

172 {
occ_sensors_mask_t
@ OCC_SENSORS_PROFILER_MAX
@ OCC_SENSORS_JOB_SCHED_MIN
@ OCC_SENSORS_SAMPLE
@ OCC_SENSORS_MASKS
@ OCC_SENSORS_PROFILER_MIN
@ OCC_SENSORS_CSM_MAX
@ OCC_SENSORS_JOB_SCHED_MAX
@ OCC_SENSORS_SAMPLE_MIN
@ OCC_SENSORS_SAMPLE_MAX
@ OCC_SENSORS_ACCUMULATOR_TAG
@ OCC_SENSORS_CSM_MIN

Function Documentation

◆ __attribute__()

struct occ_sensor_data_header_s __attribute__ ( (__packed__)  )

Variable Documentation

◆ accumulator

uint64_t accumulator

Definition at line 11 of file linux-sensors-ppc.h.

◆ csm_max

uint16_t csm_max

Definition at line 6 of file linux-sensors-ppc.h.

◆ csm_min

uint16_t csm_min

Definition at line 5 of file linux-sensors-ppc.h.

◆ double_ping

uint32_t* double_ping[MAX_OCCS]
static

Definition at line 117 of file linux-sensors-ppc.h.

◆ double_pong

uint32_t * double_pong[MAX_OCCS]
static

Definition at line 117 of file linux-sensors-ppc.h.

◆ event_fd

int event_fd
static

Definition at line 112 of file linux-sensors-ppc.h.

◆ freq

uint32_t freq

Definition at line 3 of file linux-sensors-ppc.h.

◆ gsid

uint16_t gsid

Definition at line 2 of file linux-sensors-ppc.h.

◆ job_scheduler_max

uint16_t job_scheduler_max

Definition at line 10 of file linux-sensors-ppc.h.

◆ job_scheduler_min

uint16_t job_scheduler_min

Definition at line 9 of file linux-sensors-ppc.h.

◆ last_refresh

long long last_refresh[MAX_OCCS]
static

Definition at line 113 of file linux-sensors-ppc.h.

◆ location

uint16_t location

Definition at line 6 of file linux-sensors-ppc.h.

◆ name

Definition at line 0 of file linux-sensors-ppc.h.

◆ name_length

uint8_t name_length

Definition at line 7 of file linux-sensors-ppc.h.

◆ names_offset

uint32_t names_offset

Definition at line 5 of file linux-sensors-ppc.h.

◆ names_version

uint8_t names_version

Definition at line 6 of file linux-sensors-ppc.h.

◆ nr_sensors

uint16_t nr_sensors

Definition at line 2 of file linux-sensors-ppc.h.

◆ num_events

int num_events =0
static

Definition at line 51 of file linux-sensors-ppc.h.

◆ num_occs

int num_occs
static

Definition at line 114 of file linux-sensors-ppc.h.

◆ occ_hdr

Definition at line 111 of file linux-sensors-ppc.h.

◆ occ_names

struct occ_sensor_name_s* occ_names[MAX_OCCS]

Definition at line 139 of file linux-sensors-ppc.h.

◆ occ_num_events

int occ_num_events[MAX_OCCS+1]
static

Definition at line 115 of file linux-sensors-ppc.h.

◆ pad

uint8_t pad

Definition at line 4 of file linux-sensors-ppc.h.

◆ ping

uint32_t* ping[MAX_OCCS]
static

Definition at line 116 of file linux-sensors-ppc.h.

◆ pkg_sys_flag

mode_t pkg_sys_flag = O_RDONLY
static

Definition at line 81 of file linux-sensors-ppc.h.

◆ pkg_sys_name

char* pkg_sys_name = "occ_inband_sensors"
static

Definition at line 80 of file linux-sensors-ppc.h.

◆ pong

uint32_t * pong[MAX_OCCS]
static

Definition at line 116 of file linux-sensors-ppc.h.

◆ profiler_max

uint16_t profiler_max

Definition at line 8 of file linux-sensors-ppc.h.

◆ profiler_min

uint16_t profiler_min

Definition at line 7 of file linux-sensors-ppc.h.

◆ reading_offset

uint32_t reading_offset

Definition at line 8 of file linux-sensors-ppc.h.

◆ reading_ping_offset

uint32_t reading_ping_offset

Definition at line 9 of file linux-sensors-ppc.h.

◆ reading_pong_offset

uint32_t reading_pong_offset

Definition at line 10 of file linux-sensors-ppc.h.

◆ reading_version

uint8_t reading_version

Definition at line 3 of file linux-sensors-ppc.h.

◆ reserved

uint16_t reserved

Definition at line 8 of file linux-sensors-ppc.h.

◆ sample

uint8_t sample

Definition at line 2 of file linux-sensors-ppc.h.

◆ sample_max

uint16_t sample_max

Definition at line 4 of file linux-sensors-ppc.h.

◆ sample_min

uint16_t sample_min

Definition at line 3 of file linux-sensors-ppc.h.

◆ scale_factor

uint32_t scale_factor

Definition at line 4 of file linux-sensors-ppc.h.

◆ sensor_data

uint8_t sensor_data

Definition at line 9 of file linux-sensors-ppc.h.

◆ sensors_ppc_fake_qualif_desc

const char* sensors_ppc_fake_qualif_desc[]
static
Initial value:
= {
"Last sample of this sensor",
"Minimum value since last OCC reset (node reboot)",
"Maximum value since last OCC reset (node reboot)",
"Minimum value since last reset request by CSM",
"Maximum value since last reset request by CSM",
"Minimum value since last reset request by profiler",
"Maximum value since last reset request by profiler",
"Minimum value since last reset by job scheduler",
"Maximum value since last reset by job scheduler",
"Accumulator register for this sensor", NULL}

Definition at line 188 of file linux-sensors-ppc.h.

◆ sensors_ppc_fake_qualifiers

const char* sensors_ppc_fake_qualifiers[]
static
Initial value:
= {"", ":min", ":max", ":csm_min",
":csm_max", ":profiler_min", ":profiler_max", ":job_scheduler_min", ":job_scheduler_max", ":accumulator", NULL}

Definition at line 186 of file linux-sensors-ppc.h.

◆ structure_type

uint8_t structure_type

Definition at line 7 of file linux-sensors-ppc.h.

◆ timestamp

uint64_t timestamp

Definition at line 1 of file linux-sensors-ppc.h.

◆ type

uint16_t type

Definition at line 5 of file linux-sensors-ppc.h.

◆ units

char units[MAX_CHARS_SENSOR_UNIT]

Definition at line 1 of file linux-sensors-ppc.h.

◆ update_tag

uint32_t update_tag

Definition at line 12 of file linux-sensors-ppc.h.

◆ valid

uint8_t valid

Definition at line 0 of file linux-sensors-ppc.h.

◆ version

uint8_t version

Definition at line 1 of file linux-sensors-ppc.h.