My Project
Chargement...
Recherche...
Aucune correspondance
intel-8259a.h
Aller à la documentation de ce fichier.
1/*----------------------------------------------------------------------------*/
2/* Définition des sous-programmes de gestion du PIC intel 8259A. */
3/* */
4/* (C) Manu Chaput 2000-2021 */
5/*----------------------------------------------------------------------------*/
6#ifndef INTEL_8259A
7#define INTEL_8259A
8
9#include <manux/types.h>
10/*
11 * Les ports utilisés pour dialoguer avec les deux PICs
12 */
13#define PIC_MAITRE_PORT_COMMANDE 0x20
14#define PIC_MAITRE_PORT_DONNEE 0x21
15#define PIC_ESCLAVE_PORT_COMMANDE 0xA0
16#define PIC_ESCLAVE_PORT_DONNEE 0xA1
17
18/*
19 * Initialisation du PIC. Le circuit doit être initialisé une fois et
20 * une seule au démarrage du système.
21 */
22void i8259aInit(uint8_t intBase);
23
24/*
25 * Ajout d'une fonction de gestion d'un matériel sur une IRQ. Lors
26 * d'une interruption, la fonction handler sera invoquée avec le
27 * paramètre private.
28 *
29 * La valeur retournée est
30 * 1 en cas de succès,
31 * 0 en cas d'erreur (pour le moment, ManuX ne permet pas de
32 * partager une IRQ)
33 */
34int i8259aAjouterHandler(int numIRQ, void (*handler)(void *), void * private);
35
36/*
37 * Le handler de gestion effective des IRQ. C'est cette fonction qui
38 * est invoquée lors d'une interruption matérielle.
39 */
40void i8259aGestionIRQ(TousRegistres registres, uint32_t numIRQ,
41 uint32_t eip, uint32_t cs, uint32_t eFlags);
42
43/*
44 * Masquage d'une IRQ
45 */
46void i8259aInterdireIRQ(uint8_t numIRQ);
47
48/*
49 * Démasquage d'une IRQ
50 */
51void i8259aAutoriserIRQ(uint8_t numIRQ);
52
53/*
54 * Accusé de réception d'une IRQ
55 */
56void i8259aAckIRQ(uint8_t numIRQ);
57
58#endif
unsigned long uint32_t
Definition types.h:20
unsigned char uint8_t
Definition types.h:12
void i8259aInterdireIRQ(uint8_t numIRQ)
void i8259aGestionIRQ(TousRegistres registres, uint32_t numIRQ, uint32_t eip, uint32_t cs, uint32_t eFlags)
Le handler de gestion effective des IRQ.
int i8259aAjouterHandler(int numIRQ, void(*handler)(void *), void *private)
Ajout d'un handler.
void i8259aAutoriserIRQ(uint8_t numIRQ)
Masquage d'une IRQ.
void i8259aInit(uint8_t intBase)
Definition intel-8259a.c:61
void i8259aAckIRQ(uint8_t numIRQ)
Accusé de réception d'une IRQ.