FruityOrange
Aus Lowlevel
Version vom 2. April 2013, 19:41 Uhr von Micha.linuxfreak (Diskussion | Beiträge)
| FruityOrange | |
|---|---|
| Datei:FruityOrangeLogo.png | |
| Entwickler: | Micha |
| Akt. Version: | 0.04 |
| Lizenz: | GNU General Public License |
| OS-Eigenschaften | |
| Plattform: | i386 |
| Kernelart: | Monolithisch |
| Sprache: | C (Assembler) |
| API: | nativ |
| Binärformat: | ELF |
| IPC-Methode: | --- |
| Homepage | |
https://code.google.com/p/fruityorange/ | |
FruityOrange ist ein Betriebssystem für den i386, welches GRUB als Bootloader benutzt.
Features
- Higherhalf-Kernel mit GDT Trick
- printf, panic, debug
- GDT, Interrupts
- Physische Speicherverwaltung, Paging, Heap
- Multitasking, Elf32-loader
- VFS
Treiber
Syscalls
Die Syscalls werden über den Interrupt 0x30 aufgerufen.
| Nummer (in %eax) | Name | Beschreibung | ebx | ecx | edx |
|---|---|---|---|---|---|
| 0 | exit | Beendet das aktuelle programm | exit-Status | ||
| 1 | putc | Gibt ein Zeichen auf dem Bildschirm aus | Zeichen | ||
| 2 | puts | Gibt einen String auf dem Bildschirm aus | Pointer zum String | Länge des Strings | |
| 3 | getch | Wartet auf einen Tastendruck | Hier wird der ASCII-Code des gedrückten Zeichens reingeschrieben | ||
| 4 | gets | Liest einen String über die Tastatur ein. | Pointer zum String (muss vorher abgespeichert werden) | Länge des eingegebenen Strings (wird hier reingeschrieben) | |
| 5 | time | Hier bekommt man einen aktuellen Timestamp | In ebx liegt der timestamp dann drin | ||
| 6 | usleep | Legt das Programm für %ebx Mikrosekunden schlafen | Anzahl der Mikrosekunden, die zu warten sind | ||
| 7 | alloc | Alloziert freie Speicherseiten im userspace (1-3GB) | Anzahl der pages | Adresse | |
| 8 | free | Gibt Speicherseiten wieder frei | Adresse der pages | Anzahl der pages | |
| 9 | open | Öffnet eine Datei | Pfad Rückgabe: Filedeskriptor |
flags | modus |
| 10 | close | Schließt eine Datei | Fildeskriptor | ||
| 11 | read | Liest den Inhalt einer Datei | Filedeskriptor Rückgabe: Anzahl der gelesenen Bytes |
Buffer | länge (in bytes) |
| 12 | write | Schreibt in eine Datei | Filedeskriptor Rückgabe: Anzahl der geschriebenen Bytes |
Buffer | länge (in bytes) |