lkml.org 
[lkml]   [2011]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v0] add nano semaphore in kernel
    From
    On Tue, Jan 4, 2011 at 10:03 PM, Pavel Machek <pavel@ucw.cz> wrote:
    > Hi!
    >
    >> +/*
    >> + * nano_semaphore_down - acquire the nano semaphore
    >> + * @s: the nano semaphore to be acquired
    >> + * @nano_secs: the nano seconds to wait if necessary,
    >> + *           could be zero if want to wait as long as possible.
    >> + *
    >> + * Returns >0 if acquired successfully, <=0 otherwise.
    >> + *
    >> + * Note unlike down() in semaphore, nano_semaphore_down is not looping until
    >> + * the nano semaphore is hold, but simply reports the result. And the callers
    >> + * could, if they like, loop in simple manner, for instance,
    >> + *   while (1 != nano_semaphore_down(s, 800));
    >> + *   do_home_work();
    >> + *   nano_semaphore_up(s);
    >
    > But thats spinlock, not semaphore, right?
    >

    Though spin lock involved, the caller has to sleep 800ns per loop.

    > Also, your example does not use the API right -- according to
    > description, 42 is correct 'semaphore acquired' reply...
    >

    As I understand, the example, though could be totally removed, does
    not show the recommended usage of nano semaphore, but expresses the
    difference from semaphore. The recommended however looks

    nano_semaphore_down(s, 0);
    do_home_work();
    nano_semaphore_up(s);

    if you like to wait as long as possible.

    Cheers
    Hillf
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-01-04 15:21    [W:0.023 / U:0.208 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site