The calls to "block caller" are calls to dequeue the process from the READY queue.
If the process being dequeued from the ready list is the current (running) process, a new process is picked by the scheduler assigned to next_ptr (otherwise next_ptr is NULL).
The restart section of _s_call checks next_ptr and either returns to the original caller or to the next_ptr process if original caller was blocked.