My Project
Chargement...
Recherche...
Aucune correspondance
debug.h
Aller à la documentation de ce fichier.
1
6#ifndef MANUX_DEBUG_DEF
7#define MANUX_DEBUG_DEF
8
9#include <manux/config.h>
10#include <manux/printk.h>
11#include <manux/stdarg.h>
12#include <manux/scheduler.h> // tacheEnCours
13#ifdef MANUX_LIBI386
14# include <manux/i386.h> // halt()
15# include <manux/horloge.h> // nbTopHorloge
16#endif
17
21#define DBG_KERNEL_ERREUR 0x00000001
22#define DBG_KERNEL_START 0x00000002
23#define DBG_KERNEL_PAGIN 0x00000004
24#define DBG_KERNEL_SYSFI 0x00000008
25#define DBG_KERNEL_ORDON 0x00000010
26#define DBG_KERNEL_TACHE 0x00000020
27#define DBG_KERNEL_MEMOIRE 0x00000040
28#define DBG_KERNEL_AS 0x00000080
29#define DBG_KERNEL_PCI 0x00000100
30#define DBG_KERNEL_NET 0x00000200
31#define DBG_KERNEL_VIRTIO 0x00000400
32#define DBG_KERNEL_A_FAIRE 0x00000800
33#define DBG_KERNEL_BOOTLOADER 0x00001000
34#define DBG_KERNEL_TUBE 0x00002000
35#define DBG_KERNEL_REGISTRE 0x00004000
36#define DBG_KERNEL_ALL 0xFFFFFFFF
37
41#define _masqueDebugageConsole (0x00000000 \
42 | DBG_KERNEL_VIRTIO \
43 | DBG_KERNEL_START \
44 )
45# define _masqueDebugageFichier (0x00000000\
46 )
47
48#ifdef MANUX_DEBUGMASK_VAR
51#else
52# define masqueDebugageConsole _masqueDebugageConsole
53# define masqueDebugageFichier _masqueDebugageFichier
54#endif // MANUX_DEBUGMASK_VAR
55/*
56 | DBG_KERNEL_ERREUR \
57 | DBG_KERNEL_START \
58 | DBG_KERNEL_PAGIN \
59 | DBG_KERNEL_MEMOIRE \
60 | DBG_KERNEL_TACHE \
61 | DBG_KERNEL_ORDON \
62 | DBG_KERNEL_ALL \
63 | DBG_KERNEL_AS \
64 | DBG_KERNEL_SYSFI \
65 | DBG_KERNEL_BOOTLOADER \
66 | DBG_KERNEL_TUBE \
67 | DBG_KERNEL_VIRTIO \
68 | DBG_KERNEL_NET \
69 | DBG_KERNEL_REGISTRE \
70*/
71
76#ifdef MANUX_LIBI386 // pour les tops horloge
77#define printk_debug(lvl, fmt, args...) \
78 if (((lvl)& masqueDebugageConsole) && ((lvl)& masqueDebugageFichier)) { \
79 printk("{7} [%d] %s line %d : " fmt, nbTopHorloge, __FUNCTION__ , __LINE__, ## args); \
80 } else if ((lvl)& masqueDebugageFichier) { \
81 printk("(7) [%d] %s line %d : " fmt, nbTopHorloge, __FUNCTION__ , __LINE__, ## args); \
82 } else if ((lvl)& masqueDebugageConsole) { \
83 printk("[7] [%d] %s line %d : " fmt, nbTopHorloge, __FUNCTION__ , __LINE__, ## args); \
84 }
85#else
86#define printk_debug(lvl, fmt, args...) \
87 if (((lvl)& masqueDebugageConsole) && ((lvl)& masqueDebugageFichier)) { \
88 printk("{7} %s line %d : " fmt, __FUNCTION__ , __LINE__, ## args); \
89 } else if ((lvl)& masqueDebugageFichier) { \
90 printk("(7) %s line %d : " fmt, __FUNCTION__ , __LINE__, ## args); \
91 } else if ((lvl)& masqueDebugageConsole) { \
92 printk("[7] %s line %d : " fmt, __FUNCTION__ , __LINE__, ## args); \
93 }
94#endif
95/*
96 * Affichage d'un message de panique
97 */
98#ifdef MANUX_TACHES
99#define paniqueNoyau(fmt, args...) \
100 { \
101 printk("\n*** PANIQUE NOYAU (tache %d) ***\n", tacheEnCours->numero); \
102 printk("%s (dans %s ligne %d)\n", __FUNCTION__, __FILE__, __LINE__); \
103 printk("" fmt, ## args); \
104 asm( "hlt" ); \
105}
106#else
107#define paniqueNoyau(fmt, args...) \
108{\
109 printk("\n*** PANIQUE NOYAU ***\n"); \
110 printk("%s (dans %s ligne %d)\n", __FUNCTION__, __FILE__, __LINE__); \
111 printk("" fmt, ## args); \
112 asm( "hlt" ); \
113}
114#endif
115
116/*
117 * Ma version simplifiée de assert
118 */
119#ifdef MANUX_ASSERT_ACTIVES
120#define assert(cond) \
121 if (!(cond)) { \
122 paniqueNoyau("L'assertion '"#cond"' n'est pas verifiee"); \
123 }
124
125#else
126#define assert(cond) {}
127#endif
128
138void debugInitialiser(void);
139#endif
Définition des fonctions de base d'entrée-sortie du noyau.
unsigned long uint32_t
Definition types.h:20
#define masqueDebugageFichier
Definition debug.h:53
#define masqueDebugageConsole
Definition debug.h:52
void debugInitialiser(void)
Initialisation du sytème de débogage.
Definition debug.c:37