Version 45 (modified by 10 years ago) (diff) | ,
---|
GIET-VM documentation
A) Mapping_Info data structure
B) Peripherals Drivers
C) Shared kernel functions
Y) Boot-loader
The boot_init function makes the initialisation in two steps: The first step is sequencially executed by proc[0][0][0], while other processors are in wait state:
- Physical memory allocators initialisation : boot_pmem_init()
- Page table initialisation : boot_ptabs_init()
- Proc[0][0][0] MMU activation
- Private vobjs initialisation : boot_vobjs_init()
- Schedulers initialisation : boot_schedulers init()
- Peripherals initialisation : boot_peripherals_init()
- Kernel & application code loading : boot_elf_load()
- Start all other processors
The second step is executed in parallel by all processors:
- CP0_SCHED register initialisation
- MMU Activation
- Status Register Initialisation (to use the GIET_VM exception handler).
- Jump to kernel_init()
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).
Interrupt Handler
Exception Handler
Syscall Handler
Context Switch Handler
Z) User level libraries
This section describes the user libraries :
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.
Stdlib user library
This library contains various utility functions that do not use system calls.
MWMR user library
This library defines a communication middleware supporting channelised communications in a multi-tasks parallel application. This middleware does not use system calls.
Barrier user 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.
Spin_lock user 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.
Malloc user 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.