First commit, Vystem v0.1
This commit is contained in:
20
docs/shelter/cpu/tsc.md
Normal file
20
docs/shelter/cpu/tsc.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# TSC API
|
||||
|
||||
## Introduction
|
||||
|
||||
In order to be able to measure and approximate time as soon as the kernel start the boot process, the TSC API is implemented in a volontary minimal way. The TSC API is defined inside `shelter/lib/include/cpu/tsc.h` and implemented inside `shelter/lib/src/cpu/tsc.c`. The API prefix is `sh_tsc_`.
|
||||
|
||||
## Overview
|
||||
|
||||
The TSC API being intented for measuring time during the boot process, the provided features are extremely basic. In order for any TSC value to start at 0, we define two concept:
|
||||
- `kernel_init_tsc`: a TSC value initialized at the very start of the kernel boot process
|
||||
- `kernel_current_tsc`: a TSC value which is the result of `kernel_init_tsc` substracted to the value returned by `sh_asm_rdtsc()`
|
||||
|
||||
## API content
|
||||
|
||||
The API define the following elements:
|
||||
- `sh_tsc_TSC_VALUE`: a value of the TSC register, which is a wrapper of a `sh_uint64`
|
||||
- `sh_tsc_read_value()`: an inline function reading the TSC register using `sh_asm_rdtsc()`, return a `sh_tsc_TSC_VALUE`
|
||||
- `sh_tsc_init_tsc()`: a function initializing `kernel_init_tsc`. This function should only be called once as soon as the kernel start. Return a `SH_STATUS`
|
||||
- `sh_tsc_get_kernel_init_tsc()`: return `kernel_init_tsc` under a `sh_tsc_TSC_VALUE`
|
||||
- `sh_tsc_get_kernel_current_tsc()`: return the result of `sh_asm_rdtsc()` less `kernel_init_tsc`, under a `sh_tsc_TSC_VALUE`
|
||||
Reference in New Issue
Block a user