freebsd-dev/include
John Baldwin 53e1ffbbce The current POSIX semaphore implementation stores the _has_waiters flag
in a separate word from the _count.  This does not permit both items to
be updated atomically in a portable manner.  As a result, sem_post()
must always perform a system call to safely clear _has_waiters.

This change removes the _has_waiters field and instead uses the high bit
of _count as the _has_waiters flag.  A new umtx object type (_usem2) and
two new umtx operations are added (SEM_WAIT2 and SEM_WAKE2) to implement
these semantics.  The older operations are still supported under the
COMPAT_FREEBSD9/10 options.  The POSIX semaphore API in libc has
been updated to use the new implementation.  Note that the new
implementation is not compatible with the previous implementation.
However, this only affects static binaries (which cannot be helped by
symbol versioning).  Binaries using a dynamic libc will continue to work
fine.  SEM_MAGIC has been bumped so that mismatched binaries will error
rather than corrupting a shared semaphore.  In addition, a padding field
has been added to sem_t so that it remains the same size.

Differential Revision:	https://reviews.freebsd.org/D961
Reported by:	adrian
Reviewed by:	kib, jilles (earlier version)
Sponsored by:	Norse
2014-10-24 20:02:44 +00:00
..
arpa Update our stub resolver to final version of libbind. 2014-08-12 12:36:06 +00:00
gssapi Fix gssapi/gssapi_krb5.h after Heimdal 1.5.1 import. 2013-06-30 07:46:22 +00:00
protocols Add proper prerequisites for even two more headers. 2013-05-21 21:50:11 +00:00
rpc Replace Sun Industry Standards Source License for Sun RPC code with a 2013-11-25 19:08:38 +00:00
rpcsvc Fix build with rpcgen using a recent (tested with gcc 4.9.1) GNU cpp 2014-10-09 06:58:33 +00:00
xlocale Fix strcasecmp_l() and strncasecmp_l() POSIX 2008 compliance. 2014-05-30 01:09:07 +00:00
_ctype.h
a.out.h
ar.h
assert.h Don't define static_assert for C++. 2011-12-29 14:41:17 +00:00
bitstring.h
complex.h I'm happy to finally commit stephen@'s implementations of cacos, 2013-05-30 04:49:26 +00:00
cpio.h
ctype.h Correctly expose xlocale functions if people include the headers in the wrong 2012-03-28 12:11:54 +00:00
db.h
dirent.h Fix some edge cases with rewinddir(): 2014-07-11 16:16:26 +00:00
dlfcn.h Implement fdlopen(3), an rtld interface to load shared object by file 2012-01-07 10:33:01 +00:00
elf-hints.h
elf.h
err.h
fmtmsg.h Fix a small typo. Fireware -> firmware. 2012-06-05 19:42:57 +00:00
fnmatch.h
fstab.h
fts.h Allow certain headers to be included more easily. 2013-05-21 21:20:10 +00:00
ftw.h
getopt.h
glob.h - Add restrict keyword to glob(3) 2011-12-20 22:56:13 +00:00
grp.h include: Remove checks for __BSD_VISIBLE where redundant with __XSI_VISIBLE 2014-05-11 13:48:21 +00:00
gssapi.h
hesiod.h We don't use these files. 2014-08-09 20:03:40 +00:00
iconv.h Add ICONV_{GET,SET}_ILSEQ_INVALID iconvctl. GNU iconv returns EILSEQ 2013-11-25 01:26:06 +00:00
ieeefp.h People porting FreeBSD to new architectures ought not have to 2011-10-21 06:41:46 +00:00
ifaddrs.h Allow certain headers to be included more easily. 2013-05-21 21:20:10 +00:00
inttypes.h Rename __wchar_t so it no longer conflicts with __wchar_t from clang 3.4 2014-04-01 14:46:11 +00:00
iso646.h Avoid accidental conflicts with C++ operator keywords. 2011-09-27 16:33:17 +00:00
kenv.h
langinfo.h langinfo.h: Hide YESSTR and NOSTR in strict POSIX mode. 2014-04-19 12:38:01 +00:00
libgen.h
limits.h POSIX.1-2008 moved some constants from the XSI option to the Base. 2011-03-04 19:28:27 +00:00
link.h
locale.h Reapply 227753 (xlocale cleanup), plus some fixes so that it passes build 2012-03-04 15:31:13 +00:00
Makefile HPET: create /dev/hpetN as a way to access HPET from userland. 2014-10-24 18:39:15 +00:00
malloc_np.h Update jemalloc to version 3.5.0. 2014-01-23 02:47:36 +00:00
malloc.h
memory.h
mk-osreldate.sh Set proper permissions on the generated osreldate.h file; a file readable 2013-09-30 21:01:04 +00:00
monetary.h Correctly expose xlocale functions if people include the headers in the wrong 2012-03-28 12:11:54 +00:00
mpool.h
mqueue.h POSIX requires sigevent to be visible after mqueue.h is included. 2012-09-10 05:12:45 +00:00
ndbm.h
netconfig.h
netdb.h Replace __const by const in all non-contributed source code. 2011-12-13 13:32:56 +00:00
nl_types.h
nlist.h
nss.h
nsswitch.h Add capability to use a db version of services. It is enabled by 2010-04-04 08:31:03 +00:00
paths.h Assume that the -f argument is /dev/gpioc0 if it is not passed. 2013-09-17 11:48:47 +00:00
printf.h The register_printf_render_std() function expects regular string. 2012-07-04 17:35:07 +00:00
proc_service.h
pthread_np.h Introduce a non-portable function pthread_getthreadid_np(3) to retrieve 2011-02-07 21:26:46 +00:00
pthread.h Add lock annotations to the header files of our threading libraries. 2014-09-01 18:34:30 +00:00
pwd.h Replace our version of the pwcache(3) API with NetBSD's implementation. 2012-10-19 12:44:22 +00:00
ranlib.h
readpassphrase.h Sync with OpenBSD, primarily better signal and terminal handling. 2010-11-13 10:38:06 +00:00
regex.h Replace __const by const in all non-contributed source code. 2011-12-13 13:32:56 +00:00
res_update.h Update our stub resolver to final version of libbind. 2014-08-12 12:36:06 +00:00
resolv.h Update our stub resolver to final version of libbind. 2014-08-12 12:36:06 +00:00
runetype.h After r232498, programs built with -ansi or -std=c89 including <ctype.h> 2012-03-06 20:15:23 +00:00
search.h Add re-entrant versions of the hash functions based on the GNU api. 2014-07-21 15:22:48 +00:00
semaphore.h The current POSIX semaphore implementation stores the _has_waiters flag 2014-10-24 20:02:44 +00:00
setjmp.h include: Remove checks for __BSD_VISIBLE where redundant with __XSI_VISIBLE 2014-05-11 13:48:21 +00:00
signal.h include: Remove checks for __BSD_VISIBLE where redundant with __XSI_VISIBLE 2014-05-11 13:48:21 +00:00
spawn.h
stab.h
stdalign.h Add <stdalign.h> and <stdnoreturn.h>. 2011-12-25 20:51:40 +00:00
stdbool.h Remove unneeded guard. 2011-12-25 20:15:41 +00:00
stddef.h Add guards to ptrdiff_t definition in include/stddef.h 2014-08-21 15:10:10 +00:00
stdio.h include: Don't expose L_cuserid in strict C standard compliance mode. 2014-05-11 16:34:17 +00:00
stdlib.h Add bsearch_b to the libc map and the stdlib header. 2014-09-01 22:25:42 +00:00
stdnoreturn.h Simply disallow <stdnoreturn.h> to be used in combination with C++. 2012-01-03 23:05:23 +00:00
string.h include: Remove checks for __BSD_VISIBLE where redundant with __XSI_VISIBLE 2014-05-11 13:48:21 +00:00
stringlist.h - sl_find does not modify 'name' 2013-04-23 13:03:03 +00:00
strings.h Add explicit_bzero(3) and its kernel counterpart. 2014-10-07 04:54:11 +00:00
sysexits.h
tar.h
termios.h include: Remove checks for __BSD_VISIBLE where redundant with __XSI_VISIBLE 2014-05-11 13:48:21 +00:00
tgmath.h Roll back r271012 even more aggressively. 2014-09-05 05:36:32 +00:00
time.h Add CLOCK_PROCESS_CPUTIME_ID to <time.h>, to synchronize the CLOCK_* 2013-01-14 18:01:19 +00:00
timeconv.h
timers.h
ttyent.h Add a new flag to /etc/ttys: onifconsole. This is equivalent to "on" if the 2014-01-20 18:15:06 +00:00
uchar.h Fix <uchar.h> in for C++11. 2013-05-25 16:58:12 +00:00
ulimit.h
unistd.h unistd: drop argument names from setpgrp(3) prototype. 2014-09-19 18:13:56 +00:00
unwind.h Also the stop function should accept 64-bit exception class. 2010-09-30 03:16:35 +00:00
utime.h
utmpx.h
uuid.h
varargs.h
wchar.h include: Remove checks for __BSD_VISIBLE where redundant with __XSI_VISIBLE 2014-05-11 13:48:21 +00:00
wctype.h Reapply 227753 (xlocale cleanup), plus some fixes so that it passes build 2012-03-04 15:31:13 +00:00
wordexp.h
xlocale.h Reapply 227753 (xlocale cleanup), plus some fixes so that it passes build 2012-03-04 15:31:13 +00:00