Messages in this thread |  | | | Date | Wed, 28 Mar 2012 11:07:07 +0200 | | From | Andi Kleen <> | | Subject | Re: [PATCH 11/13] Add a discussion on why spin_is_locked() is bad to spinlocks.txt |
| |
> > + > > +or some variant of those. > > + > > +This does not work on uniprocessor kernels because they will always fail. > > +While there are ways around that they are ugly and not recommended. > > +Better use lockdep_assert_held(). This also only checks on a lock debugging > > +kernel (which you should occasionally run on your code anyways because > > +it catches many more problems). > > + > > +In generally this would be better done with static annotation anyways > > +(there's some support for it in sparse) > > + > > + BUG_ON(spin_is_locked(obj->lock)); > > + kfree(obj); > > + > > +Another usage is checking whether a lock is not hold when freeing an object. > > I'd suggest to move this sentence above the code example. On first read, > I was confused what the code should tell me regarding annotations :)
Both fixed.
> > > +However this is redundant because lock debugging supports this anyways > > +without explicit code. Just delete the BUG_ON. > > + > > +A third usage is to check in a console function if a lock is hold, to get > > +a panic crash dump out even when some other thread died in it. > > +This is better implemented with spin_try_lock() et.al. and a timeout. > > + > > +Other usages are usually simply races. > > + > > +In summary just don't use it. > > At this point, I was wondering when it actually can be used? Otherwise > it probably would have been removed from the kernel or marked > deprecated, I'd think?
Even after the patchkit there are a few users left (mostly third category and some print outs). Eventually these should be fixed or removed too. Then the function could be truly deprected.
lockdep still needs it I believe, but it should probably use some private interface.
-Andi -- ak@linux.intel.com -- Speaking for myself only.
|  |