Re: [PATCH] Futexes IV (Fast Lightweight Userspace Semaphores)

Hubertus Franke
2002-03-11T23:12:35Z

On Monday 11 March 2002 05:45 pm, Linus Torvalds wrote:
> On Sat, 9 Mar 2002, Rusty Russell wrote:
> > > So I would suggest making the size (and thus alignment check) of locks
> > > at least 8 bytes (and preferably 16). That makes it slightly harder to
> > > put locks on the stack, but gcc does support stack alignment, even if
> > > the code sucks right now.
> >
> > Actually, I disagree.
> >
> > 1) We've left wiggle room in the second arg to sys_futex() to add rwsems
> > later if required.
> > 2) Someone needs to implement them and prove they are superior to the
> > pure userspace solution.
>
> You've convinced me.
>
> Considering how long people argued about dubious cycle measurements on the
> rwsem implementation, and where the crrent one actually uses a spinlock
> for exclusion on the fast path, the kernel lock really probably doesn't
> need to be expanded, and as there is provable overhead to the expansion,
> I'll just agree with you.
>
> Applied.
>
> Linus

Great, now, that this is settled, let's go back to the compare and swap
issues.

As far as I can tell, we need compare and swap on a single queue
implementation for rwsems. Again most architectures provide something like
that today. As for those which don't, why not provide either of the following
approaches

(a) spinlock around the update code in the kernel. We could provide multiple
spinlocks to avoid potential collision.
(b) only provide futex in the kernel and user library approach using 2 queues
as shown by Rusty. The lack of cmpxchg support would be exported by the
futex_region call.

-
-- Hubertus Franke (frankeh@watson.ibm.com)