varch/doc/cpul.en.md

68 lines
2.3 KiB
Markdown

### Introduction
`cpul` is a simple CPU load (cpuload) module for the C language. It defines a series of data structures, macros, and function interfaces related to CPU load management, aiming to facilitate developers to control and monitor CPU load in C language projects.
### Interfaces
#### Functions
##### `cpul_init` Function
```c
int cpul_init(CPUL *cpul);
```
**Function Description**: This function is used to initialize an instance of `CPUL`. It initializes the `CPUL` structure to its default values and checks the validity of the passed-in pointer. For the initialization, a function method for obtaining the original load needs to be provided. For the Linux cpuload, you can refer to [test_cpul.c](/test/test_cpul.c).
##### `cpul_get` Function
```c
int cpul_get(CPUL *cpul, uint16_t *load);
```
**Function Description**: This function retrieves the current CPU load value from the `CPUL` instance. It also checks the validity of the parameters and the status.
##### `cpul_set` Function
```c
int cpul_set(CPUL *cpul, uint16_t load);
```
**Function Description**: This function is used to set the target CPU load value for the `CPUL` instance. It checks the validity of the passed-in parameter.
##### `cpul_task` Function
```c
int cpul_task(CPUL *cpul);
```
**Function Description**: This function executes a CPU load management task. It manages the CPU load based on the current load value and the target load value.
**Usage Example**:
```c
void *loadgen_entry(void *ptr)
{
#define PERIOD 10
const int coreid = *(int *)ptr;
CPUL cpul;
int ret = 0;
uint32_t count = 0;
uint16_t load = 0;
cpul.coreid = coreid;
cpul.resolution = 10;
cpul.raw = cpul_raw;
ret = cpul_init(&cpul);
ret = cpul_set(&cpul, 5000);
while(1)
{
count += PERIOD;
if (count >= 25200000) count = 0;
if (count % 1000 == 0)
{
ret = cpul_get(&cpul, &load);
printf("cpul_get<%d> %2d.%02d%%, %d, %d\r\n", coreid, (uint16_t)(load / 100), load % 100, cpul.ctrl.tload, cpul.ctrl.refine);
}
cpul_task(&cpul);
usleep(1000 * PERIOD);
}
}
```
Through these function interfaces, developers can conveniently implement functions such as initialization, retrieval, setting, and management of CPU load in C language programs.