freebsd-skq/sys/compat
dchagin dca50049ce Reimplement futexes.
Old implemention used Giant to protect the kernel data structures,
but at the same time called malloc(M_WAITOK), that could cause the
calling thread to sleep and lost Giant protection. User-visible
result was the missed wakeup.

New implementation uses one sx lock per futex. The sx protects
the futex structures and allows to sleep while copyin or copyout
are performed.

Unlike linux, we return EINVAL when FUTEX_CMP_REQUEUE operation
is requested and either caller specified futexes are equial or
second futex already exists. This is acceptable since the situation
can only occur from the application error, and glibc falls back to
old FUTEX_WAKE operation when FUTEX_CMP_REQUEUE returns an error.

Approved by:	kib (mentor)
MFC after:	1 month
2009-05-01 15:36:02 +00:00
..
freebsd32 Regen for new jail system calls in r191673. 2009-04-29 21:50:13 +00:00
ia32 Fix KBI breakage by r190520 which affects older linux.ko binaries: 2009-04-05 09:27:19 +00:00
linprocfs Add stuff to support upcoming BMC/IPMI flashing of newer Dell machine 2009-03-26 17:14:22 +00:00
linsysfs
linux Reimplement futexes. 2009-05-01 15:36:02 +00:00
ndis MFp4 //depot/projects/usb@159909 2009-04-05 18:20:38 +00:00
netbsd
svr4 Implement new way of branding ELF binaries by looking to a 2009-03-13 16:40:51 +00:00