My Project
Chargement...
Recherche...
Aucune correspondance
main-acces-concurrent.c
Aller à la documentation de ce fichier.
1
7#include <manux/config.h>
8#include <manux/errno.h>
9#include <manux/debug.h> // A virer j'espère !
10#include <manux/console.h>
11#include <manux/kmalloc.h> // Pour l'initialisation
12#include <manux/printk.h>
13#include <manux/memoire.h>
14#include <manux/journal.h> // initialiserJournal()
15#include <manux/fichier.h>
16#include <manux/bootloader.h>
17#include <manux/clavier.h>
18#include <manux/pagination.h>
19
23INoeud iNoeudConsole; // Le INoeud qui décrit la console
24
25extern void init(); // Faire un init.h
26
28{
29 // Récupération des informations depuis le bootloader
31
34
35 // Initialisation de la console noyau
36 consoleInitialisationINoeud(&iNoeudConsole);
37
38 /* Initilisation des descripteurs de segments */
39 printk_debug(DBG_KERNEL_START, "Initialisation de la GDT ...\n");
41
42 /* Initialisation de la table des interruptions */
44
45 // Initialisation de l'allocateur généraliste
47
48 // Le clavier nous permettra de basculer entre consoles
49 printk_debug(DBG_KERNEL_START, "Initialisation du clavier ...\n");
51
52 // Initialisation du journal
53 printk_debug(DBG_KERNEL_START, "Initialisation du journal ...\n");
55
56 // On va utiliser des appels systèmes
57 printk_debug(DBG_KERNEL_START, "Initialisation des AS ...\n");
59
60 // On va utiliser des tubes, donc le système de fichiers
61 //printk_debug(DBG_KERNEL_START, "Initialisation des fichiers ...\n");
63
64 // Initialisation de la gestion des processus
65 printk_debug(DBG_KERNEL_START, "Initialisation du scheduler ...\n");
67
68 // On a besoin de l'horloge pour l'ordonnanceur
69 printk_debug(DBG_KERNEL_START, "Initialisation de l'horloge...\n");
71
72 printk_debug(DBG_KERNEL_START, "On passe en usr ...\n");
73
74 // Avant de passer la main à init, on relâche le verrou global. On
75 // n'a donc plus accès au noyau, il faudra passer par des appels
76 // systèmes
77
78#if defined(MANUX_TACHES) && !defined(MANUX_REENTRANT)
79 tacheDansLeNoyau = 0;
80 sortirExclusionMutuelle(&verrouGeneralDuNoyau);
81#endif
82
83 init();
84} /* _startManuX */
85
86
void sfInitialiser(void)
Definition fichier.c:129
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.
Définition des outils de journalisation des messages du noyau.
void journalInitialiser(void)
Initialisation du système de journalisation.
Definition journal.c:84
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()
INoeud iNoeudConsole
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
void initialiserClavier(void)
Definition clavier.c:28
#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
: Un INoeud représente un fichier, d'un point de vue statique Il s'agit donc de la description d'un f...
Definition inoeud.h:27
uint32_t memoireDeBase
Definition bootloader.h:43
uint32_t memoireEtendue
Definition bootloader.h:44