Version 26 (modified by 10 years ago) (diff) | ,
---|
GIET-VM documentation
-
GIET-VM documentation
- A) Mapping_Info data structure
-
B) Peripherals Drivers
- BDV (Block Device controller)
- CMA (Chained Buffer DMA controller)
- DMA (Multi-Channels DMA controller)
- FBF (Frame Buffer controller)?
- HBA (AHCI Disk controller)
- ICU (Interrupt controller)?
- IOB (I/O Bridge controller)
- IOC (Generic I/O controller)
- MMC (Memory Cache controller)
- NIC (Gigabit Ethernet Network controller)
- PIC (External Peripherals Interrupt controller)
- SIM (Monitor controller)
- SPI (SPI Disk controller)?
- TIM (Multi Timers controller)
- TTY (Multi Terminals TTY controller)
- XCU (Extended Interrupt controller)
- C) Shared kernel functions
- Y) Boot-loader functions
- W) Kernel functions
- Z) User level libraries
A) Mapping_Info data structure
B) Peripherals Drivers
BDV (Block Device controller)
CMA (Chained Buffer DMA controller)
DMA (Multi-Channels DMA controller)
FBF (Frame Buffer controller)?
HBA (AHCI Disk controller)
ICU (Interrupt controller)?
IOB (I/O Bridge controller)
IOC (Generic I/O controller)
MMC (Memory Cache controller)
NIC (Gigabit Ethernet Network controller)
PIC (External Peripherals Interrupt controller)
SIM (Monitor controller)
SPI (SPI Disk controller)?
TIM (Multi Timers controller)
TTY (Multi Terminals TTY controller)
XCU (Extended Interrupt controller)
C) Shared kernel functions
The boot code and the kernel code are two separated compilation units, but some functions are used by both the boot code and the kernel code:
- They are used by the boot-loader in the static phase, to build the page tables and initialize the schedulers and the peripherals.
- They are used by the kernel in the dynamic phase, to handle events such as interrupts, exceptions and syscalls.
utility functions?
CP0 registers access
CP2 registers access
Physical addressing
Locks access
TTY access
Tasks context access
Physical memory allocators
Virtual to physical address translation
Y) Boot-loader functions
W) Kernel functions
The GIET acronym stands for Gestionnaire Interruptions, Exceptions & Trappes.
This section describe the kernel functions, supporting Interrupts, Exceptions and Traps (i.e. syscalls).
W1) Interrupt Handler
W2) Exception Handler
W3) Syscall Handler
W4) Context Switch Handler
Z) User level libraries
This section describes the user libraries :
Z1) stdio library
This library contains all system calls allowing an application to access a protected ressource (peripheral register, or protected processor register). Each function in this library contains at least one SYSCALL instruction to enter the kernel mode.
Z2) stdlib library
This library contains various utility functions that do not use system calls.
Z3) MWMR library
This library defines a communication middleware supporting channelised communications in a multi-tasks parallel application. This middleware does not use system calls.
Z4) barrier library
This library contains functions used to synchronize severals tasks in a multi-task parallel application. Most of these functions do not use system calls.
Z5) spin_lock library
This library contains functions used to provide exclusive access to a shared ressource in a multi-task parallel application. These functions do not use system calls.
Z6) malloc library
This library contains functions allowing an user application to dynamically allocate virtual memory from the application heap. When the target architecture is clusterized (several physical banks), the heap is physically distributed on the clusters, and there is actually on allocator per cluster.