X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=Documentation%2Fsparse.txt;h=eceab1308a8c2fbde6722232db18bbb57a6e7f2e;hb=8be0e5c427c18a59ce261c496ae2193cbcbafffd;hp=4909d41163564c0fcc7fefb4e6a4c6e25183bf3b;hpb=57e35381bc13e6f18ac1ec255ca61ba1a5103e13;p=~andy%2Flinux diff --git a/Documentation/sparse.txt b/Documentation/sparse.txt index 4909d411635..eceab1308a8 100644 --- a/Documentation/sparse.txt +++ b/Documentation/sparse.txt @@ -49,6 +49,24 @@ be generated without __CHECK_ENDIAN__. __bitwise - noisy stuff; in particular, __le*/__be* are that. We really don't want to drown in noise unless we'd explicitly asked for it. +Using sparse for lock checking +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following macros are undefined for gcc and defined during a sparse +run to use the "context" tracking feature of sparse, applied to +locking. These annotations tell sparse when a lock is held, with +regard to the annotated function's entry and exit. + +__must_hold - The specified lock is held on function entry and exit. + +__acquires - The specified lock is held on function exit, but not entry. + +__releases - The specified lock is held on function entry, but not exit. + +If the function enters and exits without the lock held, acquiring and +releasing the lock inside the function in a balanced way, no +annotation is needed. The tree annotations above are for cases where +sparse would otherwise report a context imbalance. Getting sparse ~~~~~~~~~~~~~~