> Aber grundsätzlich: Wenn ich mich nicht täusche, so ist Signal() ein
> ganz normaler Interrupt. Wenn du jedoch Interrupt() schreibst, so
> ist der erste ASM-Befehl in der Routiene sei.
Genau so ist es (außer daß sich beide komplett GROSS schreiben -- C
unterscheidet zwischen Groß-/Kleinschreibung).
Ich verstehe auch gar nicht, warum das aus der Doku so schwierig
herauszulesen sein soll:
SIGNAL():
Introduces an interrupt handler function that runs with global
interrupts initially disabled.
INTERRUPT():
Introduces an interrupt handler function that runs with global
interrupts initially enabled. This allows interrupt handlers to be
interrupted.
> Ich weiß nicht wozu man die Interrupt() braucht, ...
Die Grundregel #1 ist: wenn Du nicht weißt, wofür Du es brauchst, dann
brauchst Du es nicht. ;-)
In der Tat braucht man das wohl eher für Spezialfälle, bei denen man
keine Zeit damit vergeuden will, die Interrupts sofort wieder
freizugeben, um andere (zeitkritische) Interrupts nicht zu verzögern.
Logischerweise kann man es nur bei Interrupts benutzen, die sich nicht
aufgrund des Hardware-Flags sofort wieder selbst auslösen würden.
Meiner Meinung nach sind sie etwas unglückselig benannt, so daß zu
viele Leute geneigt sind, INTERRUPT() überhaupt in Betracht zu ziehen.