Oliver Yang wrote:
Eric Saxe wrote:
You mean, the a13fade0 was unpinned due to block on a mutex, and it was in turnstile before. Later, it was placed into run queue, because the the mutex was released by other ?

The clock interrupt was at some pointer pinning a13f7de0 (the priority 105 thread). When it passivated because the adaptive mutex it wanted was already held, it became a regular thread (a13fade0), scheduled just like everyone else. It waited in the sleep queue until the lock was dropped, at which point clock became runnable, and was then
enqueued in CPU 0's run queue.
Good explanation, thanks! :-)
But you mentioned "it waited in the sleep queue until the lock was dropped", but as far as I know, the thread should be in turnstile to wait a mutex, and only if thread wait a condition variable, it would be in the sleep queue. I just get it from book, I'm not sure, do you treat it as the same thing(turnstile and sleep queue)?
No, you are right. In this case yes, the clock thread was waiting in the turnstile. But since turnstiles use sleep queues in their implementation, I tend to think (and talk) about "the place where a thread goes when it's asleep/blocked" as the sleep queue...since in either case
the thread state is TS_SLEEP. :)

-Eric
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to