Jim Rees wrote:
> The lock order is even stranger than I thought.  The host lock is always
> acquired first, not the H_LOCK.  But this is done through the following
> magic:
> 
> int
> h_Lock_r(register struct host *host)
> {
>     H_UNLOCK;
>     h_Lock(host);
>     H_LOCK;
>     return 0;
> }
> 
> So you must acquire H_LOCK first, which is then immediately dropped.  And
> you can't hold the host lock without also holding H_LOCK, at least not using
> the current macros.  I suspect this may have been done at some time in the
> distant past to try to fix some lock order reversals.

well, you can but you need to call h_Lock(host) and not h_Lock_r().


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to