When a thread does a blocking system call, execution changes from user mode to kernel mode, but continues in the context of the current LWP. At the point where the current LWP can no longer continue, the operating system may decide to switch context to another LWP, which also implies that a context switch is made back to user mode.