lkml.org 
[lkml]   [2018]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 1/3] locking: Document the semantics of spin_is_locked()
    On Tue, 3 Apr 2018, Andrea Parri wrote:

    > On Tue, Apr 03, 2018 at 04:23:07PM +0100, David Howells wrote:
    > > Andrea Parri <andrea.parri@amarulasolutions.com> wrote:
    > >
    > > > Sorry, but I don't understand your objection: are you suggesting to add
    > > > something like "Always return 0 on !SMP" to the comment? what else?
    > >
    > > Something like that, possibly along with a warning that this might not be what
    > > you want. You might actually want it to return true on !SMP, it depends on
    > > what you're using it for.
    >
    > I ended up with the following revision. I hesitated on whether to refer
    > to 'include/linux/spinlock_up.h' or not, but in the end I decided to not
    > include the reference. Please let me know what you think about this.


    > +/**
    > + * spin_is_locked() - Check whether a spinlock is locked.
    > + * @lock: Pointer to the spinlock.
    > + *
    > + * This function is NOT required to provide any memory ordering
    > + * guarantees; it could be used for debugging purposes or, when
    > + * additional synchronization is needed, accompanied with other
    > + * constructs (memory barriers) enforcing the synchronization.
    > + *
    > + * Return: 1, if @lock is (found to be) locked; 0, otherwise.
    > + *
    > + * Remark that this primitve can return a fixed value
    > + * under certain !SMP configurations.

    I would change these last two paragraphs as follows:

    + * Returns: 1 if @lock is locked, 0 otherwise.
    + * However, on !CONFIG_SMP builds with !CONFIG_DEBUG_SPINLOCK,
    + * the return value is always 0 (see include/linux/spinlock_up.h).
    + * Therefore you should not rely heavily on the return value.

    Alan

    \
     
     \ /
      Last update: 2018-04-03 22:05    [W:3.483 / U:0.224 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site