Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Hulpfuncties: verschil tussen versies

Naar navigatie springen Naar zoeken springen
Lintfouten: Verouderde HTML-elementen
kGeen bewerkingssamenvatting
(Lintfouten: Verouderde HTML-elementen)
 
== I/O poorten ==
Om gegevens via de I/O poorten te kunnen versturen, hebben we de <ttcode>outb</ttcode> assembler instructie nodig. En om gegevens te lezen van een I/O poort, gebruiken we de <ttcode>inb</ttcode> instructie. Tussen je C code kan je assembler instructies gebruiken. Dit heet ''inline assembly''. We definieren <ttcode>System_InPortByte()</ttcode> en <ttcode>System_OutPortByte()</ttcode> in een nieuw bestand <ttcode>system.c</ttcode>.
{{Code|Titel=/kernel/src/'''system.c'''|Code=<syntaxhighlight lang="c">
#include <system.h>
</syntaxhighlight>}}
 
Om er gebruik van te kunnen maken, moet je declaraties van deze functies in een <ttcode>system.h</ttcode> headerbestand zetten.
 
{{Code|Titel=/kernel/include/'''system.h'''|Code=<syntaxhighlight lang="c">
</syntaxhighlight>}}
 
Zet <ttcode>system.c</ttcode> ook in het lijstje na <ttcode>kernel_SOURCES</ttcode> in <ttcode>/kernel/src/makefile.am</ttcode>.
 
{{Bericht
|titel=Tip!
|type=tip
|bericht=Als je in meerdere codebestanden dezelfde headerbestanden gebruikt, dan is de kans groot dat ze dubbel of zelfs nog vaker in de code worden gezet. Om dit te voorkomen definieer je (met <ttcode>#define</ttcode> een constante specifiek voor elk headerbestand. Is die constante al gedefinieerd (te testen met <ttcode>#ifndef</ttcode>), dan sla je de inhoud van het headerbestand over. Zie de code voor <ttcode>system.h</ttcode> voor een voorbeeld.}}
 
== Geheugen ==
Vaak worden er hele stukken van het werkgeheugen gekopieerd, verplaatst of op een bepaalde waarde gezet. Voor deze bewerkingen schrijf je nu zelf geheugenfuncties in een nieuw bestand genaamd <ttcode>memory.c</ttcode>, en maak een bijbehorend <ttcode>memory.h</ttcode> headerbestand in de <ttcode>/kernel/include</ttcode> directory. Zet <ttcode>memory.c</ttcode> ook in het lijstje na <ttcode>kernel_SOURCES</ttcode> in <ttcode>/kernel/src/makefile.am</ttcode>.
 
De te schrijven functies:
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.

Navigatiemenu