![](https://seccdn.libravatar.org/avatar/ad3f1366244c199c2209836ec1ec98ad.jpg?s=120&d=mm&r=g)
Name : Joerg Grieger
E-Mail : grieger@vsys.de
Betr. : Linux ab Kernel 2.2 und Interrupts
Hallo,
Ich muss fuer eine Berechnung ueber laengere Zeit die Interrupts
sperren.
Dabei habe ich festgestellt, dass nach einer weile die Systemzeit nicht
mehr stimmt. Den Code zum sperren und wieder freigeben der Interrupts
habe
ich wie folgt aufgebaut :
#include
![](https://seccdn.libravatar.org/avatar/35af32194867ff8324febecf126ccf20.jpg?s=120&d=mm&r=g)
Hi, Joerg! Trying to kill the keyboard, Joerg Grieger (grieger@vsys.de) produced 2,5K in 91 lines:
Ich muss fuer eine Berechnung ueber laengere Zeit die Interrupts sperren.
Don't. Interrupts sperren ist *schlecht*. Wenn du dann noch mit einem Modem arbeitest, wirst du z.B. schnell viele Daten in der Leitung verlieren.
Dabei habe ich festgestellt, dass nach einer weile die Systemzeit nicht mehr stimmt.
Das ist normal, da du den Timer (der eben auch via Interrupt geht) blockierst.
Vielleicht ist meine Routine aber nur falsch ? Dieser Code steht aber so des oefteren in den Sourcen des Kernels.
Ja, tut er. Aber die Interrupts werden nur sehr kurz blockiert!
Auf einem Dual Celeron System mit 2.2.10er Kernel trat der Fehler bei ungefaehr der haelfte der Testlaufe auf.
Vermutlich hast du in der Haelfte der Faelle dem Prozessor die Interrupts abgedreht, der den Timer verarbeitet ... -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (2)
-
grieger@vsys.de
-
weissel@ph-cip.uni-koeln.de