My Project
Chargement...
Recherche...
Aucune correspondance
interruptions.h
Aller à la documentation de ce fichier.
1/*----------------------------------------------------------------------------*/
2/* Définition des éléments liés aux interruptions. */
3/* (C) Manu Chaput 2000, 2001, 2002, 2003 */
4/*----------------------------------------------------------------------------*/
5#ifndef INTERRUPTION_DEF
6#define INTERRUPTION_DEF
7
8#include <manux/types.h>
9
10/*
11 * Définition d'un Task Gate Descriptor ([1] p 6-9, 5-14)
12 */
20
21/*
22 * Définition d'une Interrupt Gate ([1] p 5-14)
23 */
30
31/*
32 * Définition d'une Trap Gate ([1] p 5-14)
33 */
40
41/*
42 * Description des enregistrements de l'IDT
43 */
49
50/*
51 * L'IDT est un tableau de 256 (max) IDTGate
52 */
53typedef IDTGate * IDT;
54
55/*
56 * Type des fonctions servant de handler d'interruption
57 */
58typedef void (Handler(void));
59
63void initialiserIDT(void);
64
68typedef void (* FonctionGestionException)(TousRegistres registres,
69 uint32_t eip, uint32_t cs, uint32_t eFlags,
70 uint32_t numEx,uint32_t errCode);
71
75typedef void (* FonctionGestionInterruption)(TousRegistres registres,
76 uint32_t eip, uint32_t cs, uint32_t eFlags,
77 uint32_t numIt);
78
86#define cli() __asm__("cli"::);
87/*
88 * Interdire les interruptions
89 * WARNING : ce n'est peut être pas le meilleur endroit où le définir
90 */
91
92#define sti() __asm__("sti"::);
93/*
94 * Autoriser les interruptions
95 * WARNING : ce n'est peut être pas le meilleur endroit où le définir
96 */
97
98/*
99 * Nombre de tops d'horloge depuis le boot
100 */
101
106void gestionInterruption(TousRegistres registres,
107 uint32_t numIt,
108 uint32_t eip, uint32_t cs, uint32_t eFlags);
109
114void gestionException(TousRegistres registres,
115 uint32_t numEx, uint32_t errCode,
116 uint32_t eip, uint32_t cs, uint32_t eFlags);
117
119/*
120 * Positionne la fréquence du timer 0
121 */
122
126#ifdef MANUX_INT_AUDIT
127extern uint32_t nbItRecues[MANUX_NB_INTERRUPTIONS];
128#endif // MANUX_INT_AUDIT
129
130#endif // INTERRUPTION_DEF
131
void gestionInterruption(TousRegistres registres, uint32_t numIt, uint32_t eip, uint32_t cs, uint32_t eFlags)
: Fonction de base de gestion d'une exception
int definirFonctionGestionInterruption(int num, FonctionGestionInterruption fg)
void(* FonctionGestionException)(TousRegistres registres, uint32_t eip, uint32_t cs, uint32_t eFlags, uint32_t numEx, uint32_t errCode)
typedef void(Handler(void))
IDTGate * IDT
void initialiserIDT(void)
! Initialiser l'IDT (Interrupt Description Table)
void gestionException(TousRegistres registres, uint32_t numEx, uint32_t errCode, uint32_t eip, uint32_t cs, uint32_t eFlags)
: Fonction de base de gestion d'une exception
void setFrequenceTimer(uint16_t freqHz)
void(* FonctionGestionInterruption)(TousRegistres registres, uint32_t eip, uint32_t cs, uint32_t eFlags, uint32_t numIt)
unsigned long uint32_t
Definition types.h:20
unsigned short uint16_t
Definition types.h:16
unsigned char uint8_t
Definition types.h:12
#define MANUX_NB_INTERRUPTIONS
Definition pc-i386.h:25
uint16_t selSegment
uint16_t offsetFort
uint16_t offsetFaible
uint16_t parametres
uint16_t selSegment
uint16_t offsetFaible
uint16_t offsetFort
uint16_t parametres
TaskGateDescriptor tsg
InterruptGate itg
TrapGate trg