#include <errno.h>
#include <fcntl.h>
#include <linux/ioctl.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <unistd.h>
Go to the source code of this file.
|
| struct | csr_batch_op |
| | Structure holding information for a single read/write operation to an uncore register. More...
|
| |
| struct | csr_batch_array |
| | Structure holding multiple read/write operations to various MSRs. More...
|
| |
|
| int | init_csr (void) |
| | Open the module file descriptors exposed in the /dev filesystem.
|
| |
| int | finalize_csr (void) |
| | Close the module file descriptors exposed in the /dev filesystem.
|
| |
| int | csr_batch_storage (struct csr_batch_array **batchsel, const int batchnum, unsigned **opssize) |
| | Allocate space for uncore batch arrays.
|
| |
| int | allocate_csr_batch (const int batchnum, size_t bsize) |
| | Allocate space for new uncore batch operation.
|
| |
| int | free_csr_batch (const int batchnum) |
| | Deallocate memory for specific set of uncore batch operations.
|
| |
| int | create_csr_batch_op (off_t csr, uint8_t bus, uint8_t device, uint8_t function, uint8_t socket, uint8_t isread, size_t opsize, uint64_t **dest, const int batchnum) |
| | Create new uncore batch operation.
|
| |
| int | do_csr_batch_op (const int batchnum) |
| | Execute read/write batch operation on a specific set of batch uncore registers.
|
| |
| #define CSR_FILENAME_SIZE 128 |
| #define CSR_MODULE "/dev/cpu/csr_safe" |
| #define CSRSAFE_8086_BATCH _IOWR('a', 0x05, struct csr_batch_array) |
Enum encompassing type of data being read to/written from uncore registers.
- Enumerator:
| CSR_IMC_CTRS |
Integrated memory controller counter measurements.
|
| CSR_IMC_EVTS |
Integrated memory controller performance event measurements.
|
| CSR_IMC_PMONUNITCTRL |
UBox PMON global control data for integrated memory controller.
|
| CSR_IMC_PMONUNITSTAT |
UBox PMON global status data for integrated memory controller.
|
| int allocate_csr_batch |
( |
const int |
batchnum, |
|
|
size_t |
bsize |
|
) |
| |
Allocate space for new uncore batch operation.
- Parameters
-
| [in] | batchnum | csr_data_type_e data type of batch operation. |
| [in] | bsize | Size of batch operation. |
- Returns
- 0 if allocation was a success, else -1 if csr_batch_storage() fails.
| int create_csr_batch_op |
( |
off_t |
csr, |
|
|
uint8_t |
bus, |
|
|
uint8_t |
device, |
|
|
uint8_t |
function, |
|
|
uint8_t |
socket, |
|
|
uint8_t |
isread, |
|
|
size_t |
opsize, |
|
|
uint64_t ** |
dest, |
|
|
const int |
batchnum |
|
) |
| |
Create new uncore batch operation.
- Parameters
-
| [in] | csr | Address of uncore register for which operation will take place. |
| [in] | bus | Bus where batch operation will take place. |
| [in] | device | Device where batch operation will take place. |
| [in] | function | Function where batch operation will take place. |
| [in] | socket | Socket where batch operation will take place. |
| [in] | isread | Indicates read or write to uncore register. |
| [in] | opsize | Size of operation. |
| [in] | dest | Stores data resulting from read or necessary for write to uncore register. |
| [in] | batchnum | csr_data_type_e data type of batch operation. |
- Returns
- 0 if creation was a success, else -1 if csr_batch_storage() fails or if the number of batch operations exceeds the allocated size.
| int csr_batch_storage |
( |
struct csr_batch_array ** |
batchsel, |
|
|
const int |
batchnum, |
|
|
unsigned ** |
opssize |
|
) |
| |
Allocate space for uncore batch arrays.
- Parameters
-
| [out] | batchsel | Storage for uncore batch operations. |
| [in] | batchnum | csr_data_type_e data type of batch operation. |
| [out] | opssize | Size of specific set of batch operations. |
- Returns
- 0 if successful, else NULL pointer as a result of libmsr_calloc() or libmsr_realloc().
| int do_csr_batch_op |
( |
const int |
batchnum | ) |
|
Execute read/write batch operation on a specific set of batch uncore registers.
- Parameters
-
| [in] | batchnum | csr_data_type_e data type of batch operation. |
- Returns
- 0 if successful, else -1 if csr_batch_storage() fails or if batch allocation is for 0 or less operations.
- Todo:
- Debug stuff here.
| int finalize_csr |
( |
void |
| ) |
|
Close the module file descriptors exposed in the /dev filesystem.
- Returns
- 0 if finalization was a success, else -1 if could not close file descriptors.
| int free_csr_batch |
( |
const int |
batchnum | ) |
|
Deallocate memory for specific set of uncore batch operations.
- Parameters
-
| [in] | batchnum | csr_data_type_e data type of batch operation. |
- Returns
- 0 if successful, else -1 if csr_batch_storage() fails.
Open the module file descriptors exposed in the /dev filesystem.
- Returns
- 0 if initialization was a success, else -1 if could not stat file descriptors or open any csr module.