My Project
Chargement...
Recherche...
Aucune correspondance
main-registre.c
Aller à la documentation de ce fichier.
1
7#include <manux/config.h>
8#include <manux/types.h> // TRUE
9#include <manux/stdlib.h> // atoi
10#include <manux/console.h>
11#include <manux/printk.h>
12#include <manux/memoire.h>
13#include <manux/kmalloc.h>
14#include <manux/bootloader.h>
15#include <manux/registre.h>
16
17#include <manux/debug.h>
18
23uint16_t a = 1, b = 1, c = 1, d = 1;
24void miseAJourPararametre(void * prive, char * valeur)
25{
26 uint16_t * n = (uint16_t *)prive;
27
28 printk("Nouvelle valeur = '%s' pour 0x%x\n", valeur, prive);
29
30 // Une conversion bas de gamme
31 *n = atoihex(valeur);
32}
33
35{
36 // On doit commencer par ça a priori
38
39 // Initialisation de la console noyau
41
42 // On peut initialiser la gestion de la mémoire
45
46 // Initialisation du système kmalloc
48
49 // On initialise le registre
51
52 // Imaginons que la valeur 19 est affectée au paramètre a lors du
53 // boot (eg via le bootloader).
54 registreSystemeAjouterC("test.a=0x19");
55
56 // La valeur 0x42 est affectée au paramètre b, mais d'une autre façon
57 // (même résultat) idem pour d qui reçoit 0x17
59 "test", "b", NULL);
61 "test", "d", NULL);
62
63 // Maintenant le sous-système test s'initialise. Il a une valeur
64 // par défaut pour a, c et d, mais celles de a et b ne seront pas
65 // utilisées, puisqu'une valeur a déjà été donnée au boot.
67 "test", "a", NULL);
68
70 "test", "b", NULL);
71
73 "test", "c", NULL);
74
76 "test", "d", NULL);
77
78 // Imaginons que pour d on souhaite affecter une valeur (quitte à
79 // écraser celle définie au boot), par exemple une valeur donnée
80 // par une appli :
82 "test", "d", NULL);
83
84 // Quelques autres paramètres, juste histoire de peupler un
85 // registre plus riche
87 "systeme", "debug", "mask", NULL);
88
90 "systeme", "debug", "assert", NULL);
91
93 "reseau", "ip", "eth0", "addr", NULL);
94
96 "reseau", "ip", "eth1", "addr", NULL);
97
99
100 printk("Finalement, le systeme va demarrer avec a=0x%x, b=0x%x, c=0x%x et d=0x%x\n", a, b, c, d);
101
102} /* startManuX */
103
104
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 printk(char *format,...)
Fonction principale d'affichage dans le noyau.
Definition printk.c:166
Gestion des registres (outils permettant de stocker des paramètres)
void registreSystemeAfficher(void)
Affichage du registre de ManuX.
Definition registre.c:580
void registreSystemeInitialiser(void)
Initialisation du registre système.
Definition registre.c:536
void registreSystemeAjouterC(char *chaine)
Ajouter dans le registre système un paramètre décrit dans une chaîne de caractères.
Definition registre.c:552
void registreSystemeAffecterParametre(char *valeur, void *prive, registreMiseAJour miseAJour,...)
Ajouter un paramètre au registre système de ManuX.
Definition registre.c:565
#define NULL
Definition stddef.h:10
unsigned short uint16_t
Definition types.h:16
void kmallocInitialisation(void)
Initialisation du sytème kmalloc.
Definition kmalloc-zs.c:80
void startManuX()
uint16_t b
void miseAJourPararametre(void *prive, char *valeur)
uint16_t d
uint16_t a
Exemple de fonction de mise-à-jour d'un paramètre dans un registre.
uint16_t c
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
Définition de quelques fonctions de base (C) Manu Chaput 2020-2023.
int atoihex(char *ch)
Version hexadécimale de atoi()
Definition stdlib.c:36
uint32_t memoireDeBase
Definition bootloader.h:43
uint32_t memoireEtendue
Definition bootloader.h:44