1
Lowlevel-Coding / Re:Disabled Interrupts im User Mode
« am: 26. July 2011, 10:44 »
Hallo,
Es scheint zu funktionieren. Zwischen den beiden Aufrufen ist jedenfalls das IF gelöscht und Linux reagiert nicht mehr. Allerdings tritt ein komischer Effekt in der Konsole auf. Diese produziert eine Menge Zeilenvorschübe.
Dank für eure Hilfe.
Zitat
Ich würde es übrigens einfach so machen:Danke für den Tipp. So habe ich es nun auch gemacht. Ich habe zwei Traps erstellt, einer löscht das IF und der andere setzt es wieder.Code: [Auswählen]orl $0x200, 8(%esp)
Code: [Auswählen]
ENTRY(cli_call)
andl $0xFFFFFDFF, 8(%esp)
INTERRUPT_RETURN
END(cli_call)
ENTRY(sti_call)
orl $0x200, 8(%esp)
INTERRUPT_RETURN
END(sti_call)
Es scheint zu funktionieren. Zwischen den beiden Aufrufen ist jedenfalls das IF gelöscht und Linux reagiert nicht mehr. Allerdings tritt ein komischer Effekt in der Konsole auf. Diese produziert eine Menge Zeilenvorschübe.
Zitat
Ansonsten würde ich dir für Performancemessungen empfehlen, den betreffenden Usermodus-Task in der Priorität zu erhöhenBis jetzt habe ich das auch so gemacht. Ich habe dem Prozess einfach die höchste Priorität (99) gegeben und den Scheduler auf FIFO umgestellt. Um so länger der zu testende Code, um größer ist dann aber auch die Wahrscheinlichkeit, dass ein Interrupt auftritt. Ich möchte einfach sehen, wie groß der Unterschied zwischen den beiden Messmethoden ist.
Zitat
Ich würde auch sehr gern RTFM machen, aber dazu müsste ich halt wissen, wo nachschauen. Kapitelangabe oder so wäre hilfreich.Im Intel Manual wird auf Kapitel "17.4 PROTECTED-MODE VIRTUAL INTERRUPTS" verwiesen. Aber wie gesagt, ich glaube es ist die Aufgabe des Interrupt Handler das VIF zu überprüfen.
Dank für eure Hilfe.