mtx_lock_recurse/mtx_unlock_recurse functions (proof-of-concept).

From: Pawel Jakub Dawidek (pjd_at_FreeBSD.org)
Date: 04/08/04

  • Next message: Poul-Henning Kamp: "Re: mtx_lock_recurse/mtx_unlock_recurse functions (proof-of-concept)."
    Date: Thu, 8 Apr 2004 23:36:47 +0200
    To: freebsd-arch@freebsd.org
    
    
    

    Hi.

    As was discussed, it will be helpful to have functions, that are able
    to acquire lock recursively, even if lock itself isn't recursable.

    Here is a patch, that should implement this functionality:

            http://people.freebsd.org/~pjd/patches/mtx_lock_recurse.patch

    I also added a KASSERT() to protect against mixed locking modes, e.g.:

            mtx_lock(&mtx);
            [...]
            mtx_lock_recurse(&mtx);
            [...]
            mtx_unlock(&mtx);
            [...]
            mtx_unlock_recurse(&mtx);

    This is not permitted, but this should work just fine:

            mtx_lock(&mtx);
            [...]
            mtx_lock_recurse(&mtx);
            [...]
            mtx_unlock_recurse(&mtx);
            [...]
            mtx_unlock(&mtx);

    -- 
    Pawel Jakub Dawidek                       http://www.FreeBSD.org
    pjd@FreeBSD.org                           http://garage.freebsd.pl
    FreeBSD committer                         Am I Evil? Yes, I Am!
    
    



  • Next message: Poul-Henning Kamp: "Re: mtx_lock_recurse/mtx_unlock_recurse functions (proof-of-concept)."

    Relevant Pages