Hallo zusammen,
da ich jetzt mein malloc/free fast fertig habe, wollte ich mich um die Syscalls kümmern.
Wie kann man das am besten realisieren?
Ich schreibe einen Microkernel, also muss ich wenn ein Treiber angesprochen wird die Directory für den Treiber ändern.
Das ist ja noch nicht das Problem.
Der Prozess, der die Kommunikation mit dem Kernel möchte, muss ja ein Interrupt auslösen (z.B. auf 0x80).
Nun habe ich das Problem, dass der Kernel nicht weiß, was der Prozess nun mit dem Interrupt erreichen wollte.
Also muss der Prozess mitsenden was gemacht werden soll.
Das Problem ist, wie übertrage ich das?
Wenn ich vom User- in den Kernelspace wechsel, ändert sich ja auch der Stackpointer.
Also kann ich die Daten ja nicht in den Stack legen.
Welche Register bleiben denn in dem Prozessor erhalten, wenn der Sprung geschieht?
Wie genau muss ich mir das mit den Software-Interrupts vorstellen?
Wie sehen die Befehle für den Interrupt aus und wie springe ich danach wieder zurück?
Gruß
rizor