Discussion:Interrupt Descriptor Table
- Admissibilité
- Neutralité
- Droit d'auteur
- Article de qualité
- Bon article
- Lumière sur
- À faire
- Archives
- Commons
Il me semble qu'une erreur s'est glissée dans l'article ...
Il est en effet spécifié :
Chaque descripteur a la structure suivante : (des bits les plus hauts vers les bits les plus bas)
* 16 bits : les 16 bits les plus hauts de l'offset de la fonction (gestionnaire d'interruption ou d'exception ) associée à l'interruption * 16 bits : le sélecteur du segment de code * 1 bit : Drapeau IF ( sur "1" pour activer le masquage des interruptions masquables) * 2 bits : DPL, de 0 à 3 inclus, qui indique le niveau de privilèges requis pour appeler l'interruption (0 est le plus élevé) * 1 bit : doit être mis à 0 * 4 bits : le type d'interruption ( Porte d'interruption, de trappe ou de tâche) * 8 bits : tout à 0 * 16 bits : les 16 bits les plus faibles de l'offset de la fonction associée à l'interruption
Si l'on se réfère au Tanenbaum (Operating System : design and implementation, 3rd Edition), on pourra trouver dans le fichier kernel/protect.c la structure suivante :
08317 struct gatedesc_s { 08318 u16_t offset_low; 08319 u16_t selector; 08320 u8_t pad; /* |000|XXXXX| ig & trpg, |XXXXXXXX| task g */ 08321 u8_t p_dpl_type; /* |P|DL|0|TYPE| */ 08322 u16_t offset_high; 08323 };
08357 PRIVATE struct gatedesc_s idt[IDT_SIZE]; /* zero-init so none present */
Les numéros de lignes font référence au fichier "listing.pdf" (page 98) présentant les principaux fichiers contenant le code du noyaux du système d'exploitation Minix 3.
Le document peut être trouvé ici : http://www.minix3.org/doc/AppendixB.html
Les 16 premiers bits du descripteur sont nommés "offset_low" alors que l'article de wikipedia parle des "16 bits les plus hauts de l'offset de la fonction".
Quelqu'un aurait-il un avis pertinent sur la question ?
Minix 3 étant protégé par la license BSD, il m'est donc permis d'effectuer ce copier/coller, sauf erreur inintentionnelle de ma part.