> >> The target process is *already* waiting for the IO stuck inside the > >> kernel. It is not on a runqueue, not it is considered to be places > >> there. > > > > since procwrite doesn't acquire anything other than the debug lock, > > how do you know? the proc could start up again before you notice. > > How? If there's a stop message already written to /proc/n/ctl. Once > that is done, the process is guaranteed to be in 2 states and those > states only: continue waiting for the I/O, being actually Stopped. > Both of the don't let the scheduler take it to the runqueue.
here's the senerio, i think (works fine on a single processor) a b acquire debug lock sleep complete io sched run a bit syscall wakeup - erik