pthread switch (was Odd KSE panic)

Daniel Eischen eischen at vigrid.com
Sun Jul 11 08:16:04 PDT 2004


On Sat, 10 Jul 2004, Julian Elischer wrote:
> 
> On Thu, 8 Jul 2004, Daniel Eischen wrote:
> 
> > Wewll, I just took a look at this.  I had already added a preemption
> > point in pthread_mutex_unlock():
> >
> >   $ cvs log -r1.38 lib/libpthread/thread/thr_mutex.c
> >   ...
> >   description:
> >   ----------------------------
> >   revision 1.38
> >   date: 2003/07/18 02:46:29;  author: deischen;  state: Exp;  lines: +10 -6
> >   Add a preemption point when a mutex or condition variable is
> >   handed-off/signaled to a higher priority thread.  Note that when
> >   there are idle KSEs that could run the higher priority thread,
> >   we still add the preemption point because it seems to take the
> >   kernel a while to schedule an idle KSE.  The drawbacks are that
> >   threads will be swapped more often between CPUs (KSEs) and
> >   that there will be an extra userland context switch (the idle
> >   KSE is still woken and will probably resume the preempted
> >   thread).  We'll revisit this if and when idle CPU/KSE wakeup
> >   times improve.
> >
> > Note that the priority of a runnable thread must be strictly greater
> > than the currently running thread in order for preemption to occur.
> 
> So all Drew should have to do is increas the priority of teh correct
> thread to get it to switch at that point.

Yes.

-- 
Dan Eischen



More information about the freebsd-threads mailing list