User Context

User context is when you are coming in from a system call or other trap: like userspace, you can be preempted by more important tasks and by interrupts. You can sleep, by calling schedule().

Note

You are always in user context on module load and unload, and on operations on the block device layer.

In user context, the current pointer (indicating the task we are currently executing) is valid, and in_interrupt() (include/linux/interrupt.h) is false .

Caution

Beware that if you have preemption or softirqs disabled (see below), in_interrupt() will return a false positive.