question about the exchanges of td->td_lock and mtx in sched_switch() of sched_ule

Attilio Rao attilio at
Mon Oct 24 22:51:30 UTC 2011

2011/10/13 Haozhong Zhang <snowzh8512 at>:
> Hi,
> I'm recently reading the code of sched_ule in freebsd 8.2.0 and have two
> questions.
> 1. sched_switch() (in sched_ule.c) invokes cpu_switch() (at line 1852) and
> thread_unblock_switch() (at line 1867). These two functions exchange
> td->td_lock and mtx. What are the purposes of these exchanges?
> 2. Can the exchange in cpu_switch() (in amd64/amd64/cpu_switch.S, at line
> 134) be done before calling cpu_switch()? I mean, does this reorder of
> exchange and other operations in cpu_switch() cause side-effects to other
> code?

This thread should have the details you need:


Peace can only be achieved by understanding - A. Einstein

More information about the freebsd-hackers mailing list