Bonjour,

Je suis tombé sur le code d'un module destiné à piloter une LED située en face avant d'un petit PC, pouvant prendre 3 états (rouge, orange, éteinte). J'ai globalement compris le code (fourni pour les versions 2.0 et 2.2 du noyau Linux) à l'exception de cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
static int read_base_addr(void){
    int addr;
    unsigned int msb, lsb;
    outb(0x07, 0x2E);
    outb(0x07, 0x2F);
    outb(0x60, 0x2E);
    msb = inb(0x2F);
    outb(0x61, 0x2E);
    lsb = inb(0x2F);
    addr = (msb << 8) + lsb;
    outb(0x0F, addr + 1);
    return addr;
}
Elle est censée lire l'adresse du port contrôlant la LED, je comprends la signification de chaque instruction (écrire l'octet 0x07 sur le port d'adresse 0x2E, etc), mais pourquoi fait-on cela ?

Merci par avance...