Re: [PATCH v0] add nano semaphore in kernel

From: Hillf Danton
Date: Tue Jan 04 2011 - 09:18:55 EST


On Tue, Jan 4, 2011 at 10:03 PM, Pavel Machek <pavel@xxxxxx> 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/