Hallo,
ich schreibe seit einigen Wochen an meinem kleines OS. Ich bin im PMode und habe GDT, IDT, IRQ, ISRS etc. gesetzt. Jetzt wollte ich eine kleine Sleep() Funktion programmieren, bei der ich allerdings ein kleines Problem mit einer while Schleife habe:
Ich benutze GCC.
Danke vorträglich schonmal für jede Hilfe!
ich schreibe seit einigen Wochen an meinem kleines OS. Ich bin im PMode und habe GDT, IDT, IRQ, ISRS etc. gesetzt. Jetzt wollte ich eine kleine Sleep() Funktion programmieren, bei der ich allerdings ein kleines Problem mit einer while Schleife habe:
Code: [Auswählen]
int sleep(int freq) {
if (freq!= 0 && slept != 1) {
IRQ_install_handler(0, ret);
freq = 1193182 / freq;
outb(0x43, 0x34);
outb(0x40,freq & 0xFF);
outb(0x40,freq >> 8);
}
while (slept != 1);
return 0;
}
void ret(struct regs* null) {
print("ret", 5*160+12, 0x07);
slept=1;
}
Das "ret" wird ausgegeben, allerdings bleibt hängt der PC trotzdem in der while Schleife. Es ist egal, ob die while Schleife in der sleep() oder hinter dem sleep() Aufruf ist. Ich habe leider keine Ahnung, woran das liegt.Ich benutze GCC.
Danke vorträglich schonmal für jede Hilfe!


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert