Date: Sun, 14 Dec 2008 21:03:19 -0800 From: "Ravi Murty" <ravi.murty@gmail.com> To: freebsd-hackers@freebsd.org Subject: td_critnest Message-ID: <95b10a340812142103u3ab8bd2br97033a7c7e8bec3@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hello All, The implementation of critical_enter and critical_exit changed between freebsd 5 and freebsd 6. In the newer implemtnation, the code checks if td_critnest is 1 and if it is sets it to zero, then checks if the thread owes a preempt. If so, it increments td_critnest by 1 before grabbing a lock and then decrements it back to zero. I can't figure out why it does this. The freebsd 5 implementation seems straightforward where we check if the thread owes a preempt and if so we switch to the new thread. Can anyone help me with this? Thanks Ravi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?95b10a340812142103u3ab8bd2br97033a7c7e8bec3>