My Project
Chargement...
Recherche...
Aucune correspondance
main-reentrance.c
Aller à la documentation de ce fichier.
1
8#include <manux/config.h>
9#include <manux/errno.h>
10#include <manux/debug.h> // A virer j'espère !
11#include <manux/console.h>
12#include <manux/kmalloc.h> // Pour l'initialisation
13#include <manux/printk.h>
14#include <manux/memoire.h>
15#include <manux/bootloader.h>
16
17extern void init(); // Faire un init.h
18
20{
21 // Récupération des informations depuis le bootloader
23
26
27 // Initialisation de la console noyau
29
30 /* Initilisation des descripteurs de segments */
31 printk_debug(DBG_KERNEL_START, "Initialisation de la GDT ...\n");
33
34 /* Initialisation de la table des interruptions */
36
37 // Initialisation de l'allocateur généraliste
39
40 // On va utiliser des appels systèmes
41 printk_debug(DBG_KERNEL_START, "Initialisation des AS ...\n");
43
44 // Initialisation de la gestion des processus
45 printk_debug(DBG_KERNEL_START, "Initialisation du scheduler ...\n");
47
48 // On a besoin de l'horloge pour l'ordonnanceur
49 printk_debug(DBG_KERNEL_START, "Initialisation de l'horloge...\n");
51
52 printk_debug(DBG_KERNEL_START, "On passe en usr ...\n");
53
54 // Avant de passer la main à init, on relâche le verrou global. On
55 // n'a donc plus accès au noyau, il faudra passer par des appels
56 // systèmes
57
58#if defined(MANUX_TACHES) && !defined(MANUX_REENTRANT)
59 tacheDansLeNoyau = 0;
60 sortirExclusionMutuelle(&verrouGeneralDuNoyau);
61#endif
62
63 init();
64} /* _startManuX */
65
66
void initialiserHorloge(void)
Initialisation du système d'horloge.
Definition horloge.c:95
void initialiserAppelsSysteme(void)
Définition des fonctions de base d'accés à la console.
int consoleInitialisation(void)
Initialisation du système de console sans notion de fichier.
Definition console.c:869
Définition de kmalloc.
void initialiserMemoire(uint32_t tailleMemoireDeBase, uint32_t tailleMemoireEtendue)
Initialisation de la mémoire au niveau pages.
Definition memoire.c:103
Définition des fonctions de base d'entrée-sortie du noyau.
void initialiserIDT(void)
! Initialiser l'IDT (Interrupt Description Table)
void kmallocInitialisation(void)
Initialisation du sytème kmalloc.
Definition kmalloc-zs.c:80
void init()
void startManuX()
Interfaçage avec les bootloader.
InfoSysteme infoSysteme
Stockage des informations décrivant le système fournies par le bootloader.
Definition bootloader.c:29
void bootloaderInitialiser(void)
Lecture des informations fournies par le bootloader.
Definition bootloader.c:46
#define DBG_KERNEL_START
Definition debug.h:22
#define printk_debug(lvl, fmt, args...)
Definition debug.h:86
void initialiserScheduler(void)
Identifiant de la tâche actuellement en cours d'exécution dans le noyau (0 si aucune)
Definition scheduler.c:181
void initialiserGDT(void)
Definition segment.c:156
uint32_t memoireDeBase
Definition bootloader.h:43
uint32_t memoireEtendue
Definition bootloader.h:44