= GIET-VM usage information = == __A) Mapping_Info data structure__ == == __B) Peripherals Drivers__ == === [wiki:bdv_driver B1) BDV (Block Device controller)] === [wiki:bdv_driver B2) CMA (Chained Buffer DMA controller)] === [wiki:bdv_driver B3) DMA (Multi-Channels DMA controller)] === [wiki:bdv_driver B4) FBF (Frame Buffer controller)] === [wiki:bdv_driver B5) HBA (AHCI Disk controller)] === [wiki:bdv_driver B6) IOB (I/O Bridge controller)] === [wiki:bdv_driver B7) IOC (Generic I/O controller)] === [wiki:bdv_driver B8) MMC (Memory Cache controller)] === [wiki:bdv_driver B9) NIC (Gigabit Ethernet Network controller)] === [wiki:bdv_driver B10) PIC (External Peripherals Interrupt controller)] === [wiki:bdv_driver B11) SIM (Monitor controller)] === [wiki:bdv_driver B12) SPI (SPI Disk controller)] === [wiki:bdv_driver B13) TIM (Multi Timers controller)] === [wiki:bdv_driver B14) TTY (Multi Terminals TTY controller)] === [wiki:bdv_driver B15) XCU (Extended Interrupt controller)] == __C) Shared kernel functions__ == The boot code and the kernel code are two separated compilation units, but some ''common'' functions can be used by both the boot code and the kernel code: === [wiki:kernel_utils C1) Utility functions] === === [wiki:kernel_pmem C2) Physical memory allocators] === === [wiki:kernel_vmem C3) 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). === [wiki:kernel_interrupts W1) Interrupt Handler] === === [wiki:kernel_exceptions W2) Exception Handler] === === [wiki:kernel_syscalls W3) Syscall Handler] === === [wiki:kernel_context W4) Context Switch Handler] === == __Z) User level libraries__ == This section describes the user libraries : === [wiki:library_stdio 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. === [wiki:library_stdlib Z2) stdlib library] === This library contains various utility functions that do not use system calls. === [wiki:library_mwmr 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. === [wiki:library_barrier 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. === [wiki:library_locks 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. === [wiki:library_malloc 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.