Softirqs

The term softirq loosely translates to soft interrupt, and as the name suggests, deferred routines managed by this framework are executed at a high priority but with hard interrupt lines enabled. Thus, softirq bottom halves (or softirqs) can preempt all other tasks except hard interrupt handlers. However, usage of softirqs is restricted to static kernel code and this mechanism is not available for dynamic kernel modules.

Each softirq is represented through an instance of type struct softirq_action declared in the kernel header <linux/interrupt.h>. This structure contains a function pointer that can hold the address of the bottom half routine:

struct softirq_action{        void (*action)(struct softirq_action *);};

Current versions of the ...

Get Mastering Linux Kernel Development now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.