System Call Context
The kernel is in process context during the execution of a system call. The current
pointer points to the current task, which is the process that issued the syscall.
In process context, the kernel is capable of sleeping (for example, if the system call blocks on a call or explicitly calls schedule()) and is fully preemptible. These two points are important.
First, the capability to sleep means that system calls can make use of the majority of the kernel’s functionality.
The fact that process context is preemptible implies that, like user-space, the current task may be preempted by another task. Because the new task may then execute the same system call, care must be exercised to ensure that system calls are reentrant.