On Tue, Aug 11, 2009 at 4:58 PM, Jamie Lokier <ja...@shareable.org> wrote:

> Jim Donelson wrote:
> > I'd like to see the code for compare_exchange and the lock function.
>
> compare_exchange is a single architecture-specific instruction; that's
> what we're discussing.  Lock functions are described in Ulrich
> Drepper's futex paper.


In the context of Drepper's paper, you code looks bugged.
You add, not subtract, and you never set mem to 0.


>
> >    > The purpose of a spin lock is to avoid a more expensive kernel call
> >    > if the mutex is released quickly (or not taken at all). Presumably
> >    > you enter the kernel after n tries and sleep so that you are not
> >    > using up quanta while spinning.
> >
> >      That doesn't work with a single processor.  While you are spinning,
> >      it's impossible for the other thread to release the mutex until you
> >      are preempted, so potential benefit from spinning is marginal and
> >      often outweight by the benefit of not spinning.
> >
> >    Of course it does - sleeping on a sp means "preempt me now".
>
> Yes, but *spinning* on a spinlock does not.  You propose spinning n
> times before sleeping.  The mutex will only be released during spin
> time if you are randomly preempted during that short time.


Obviously, in the case of an SP, n = 1.



>
>
> -- Jamie
> _______________________________________________
> uClinux-dev mailing list
> uClinux-dev@uclinux.org
> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
> This message was resent by uclinux-dev@uclinux.org
> To unsubscribe see:
> http://mailman.uclinux.org/mailman/options/uclinux-dev
>
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to