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

Naar navigatie springen Naar zoeken springen
k
geen bewerkingssamenvatting
(sub)
kGeen bewerkingssamenvatting
== I/O poorten ==
Om gegevens via de I/O poorten te kunnen versturen, hebben we de <tt>outb</tt> assembler instructie nodig. En om gegevens te lezen van een I/O poort, gebruiken we de <tt>inb</tt> instructie. Tussen je C code kan je assembler instructies gebruiken. Dit heet ''inline assembly''. We definieren <tt>System_InPortByte()</tt> en <tt>System_OutPortByte()</tt> in een nieuw bestand <tt>system.c</tt>.
{{Code|Titel=/kernel/src/'''system.c'''|Code=<sourcesyntaxhighlight lang="c">
#include <system.h>
 
asm volatile ("outb %1, %0" : : "dN" (port), "a" (data));
}
</sourcesyntaxhighlight>}}
 
Om er gebruik van te kunnen maken, moet je declaraties van deze functies in een <tt>system.h</tt> headerbestand zetten.
 
{{Code|Titel=/kernel/include/'''system.h'''|Code=<sourcesyntaxhighlight lang="c">
#ifndef __SYSTEM_H
#define __SYSTEM_H
 
#endif // __SYSTEM_H
</sourcesyntaxhighlight>}}
 
Zet <tt>system.c</tt> ook in het lijstje na <tt>kernel_SOURCES</tt> in <tt>/kernel/src/makefile.am</tt>.
 
De te schrijven functies:
{{Code|Titel=/kernel/src/'''memory.c'''|Code=<sourcesyntaxhighlight lang="c">
#include <memory.h>
 
...
}
</sourcesyntaxhighlight>}}
 
 
1.071

bewerkingen

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.

Navigatiemenu