Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Oct 2011 08:35:09 -0400
From:      Haozhong Zhang <snowzh8512@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   question about the exchanges of td->td_lock and mtx in sched_switch() of sched_ule
Message-ID:  <CAK6mpvpzg_8=kRvCPuH0%2Bn%2BFbfwzJUEtRVSjVi-DSNe%2BLaW46Q@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
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?

Thank you!
- Haozhong Zhang



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAK6mpvpzg_8=kRvCPuH0%2Bn%2BFbfwzJUEtRVSjVi-DSNe%2BLaW46Q>