tsleep() - Add PINTERLOCKED flag to catch edge case.
When the tsleep_interlock() + UNLOCK + tsleep() combination is used it is
possible for an incoming wakeup IPI to be processed even if the combination
is used within a critical section, because operations inbetween the two
may send an IPI. Under heavy loads sending an IPI can force incoming IPIs
to be processed synchronously to avoid deadlocks.
It is also possible for tsleep itself to create this condition when it
releases the user process schedule prior to descheduling itself.
PINTERLOCKED causes tsleep to check whether the bit set by tsleep_interlock()
is still set. If it is not set we simply return without sleeping.