Die Implementierung für deferred activities ist ähnlich. Auch hier wird zu Beginn ein Thread angestoßen, der aber sofort an einem Semaphore blockiert, welcher mit 0 initialisiert wurde.
|
Stößt die ISR nun eine Bottom Half an, deblockiert der Thread und behandelt alle anstehenden Aufgaben. Danach legt er sich wieder schlafen und das ganze beginnt von vorn.
An dieser Stelle unterstützt das DDE bisher nur zwei Taskletprioritäten, es wird also keine ,,echte`` softirq Semantik durchgeführt. Das ist aber für Gerätetreiber im Linux 2.4 hinreichend4.4.
Die beiden Prioritäten werden durch die Pfade HI_SOFTIRQ und TASKLET_SOFTIRQ repräsentiert, wobei erstere in tasklet_hi_action() für hoch priorisierte deferred activities, z.B. old-style BHs, ausgeführt werden und letztere in tasklet_action() für normal priorisierte.