Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Interrupt Service Routines: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
kGeen bewerkingssamenvatting |
Lintfouten: Verouderde HTML-elementen |
||
Regel 4:
De eerste 32 indices in de IDT (index 0 tot en met 31) reageren op foutmeldingen. Zoals in [[../../Foutenopsporing/Foutmeldingen|de theorie over foutmeldingen]] aangegeven, pushen sommige fouten een foutcode op de stack, en andere niet. Om het makkelijker te maken pushen we een 0 op de stack als de foutmelding geen foutcode pusht, zodat de stack altijd evenveel elementen bevat. Daarna pushen we altijd de index van de interrupt die vuurde.
Voor elke mogelijke foutmelding moet er een routine worden geschreven. De interrupts moeten worden uitgeschakeld (met de <
De volgende zeer repetitieve code kan je zelf verder invullen. Let op het verschil tussen een interrupt die geen foutcode op de stack pusht (zoals interrupt 0) en een interrupt die dat wel doet (bijvoorbeeld interrupt 8).
Regel 43:
== Algemene routine ==
De volgende routine wordt voor alle interrupts aangeroepen, en geeft de controle door aan onze C code van waaruit we kunnen bepalen wat we ermee doen. De code voor <
{{Code|Titel=/kernel/'''isrs.asm'''|Code=<syntaxhighlight lang="asm">
; We roepen Isrs_Handler() aan, in isrs.c.
Regel 89:
== Interrupts afhandelen ==
De <
{{Code|Titel=/kernel/'''isrs.c'''|Code=<syntaxhighlight lang="c">
// Een array met een naam voor elk van de 32 foutmeldingen.
Regel 113:
</syntaxhighlight>}}
De <
{{Code|Titel=/kernel/include/'''isrs.h'''|Code=<syntaxhighlight lang="c">
#ifndef __ISRS_H
Regel 167:
<!-- ----------- Hieronder onderhoudsmeldingen -------------- -->
{{
|