freebsd-skq/usr.bin
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
..
alias
apply
ar use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
asa
at Sigh, remove a line that needs to be removed along with previous commit. 2014-09-29 21:54:46 +00:00
atm
awk
banner
basename Integrate usr.sbin/basename/tests from NetBSD into atf/kyua 2014-10-09 00:41:42 +00:00
bc Convert LIBCURSES to LIBNCURSES to fix "make checkdpadd" 2014-08-26 09:10:28 +00:00
biff
bluetooth Change the code to use the openpty(3) API which uses the pts(4) driver 2014-10-23 15:16:40 +00:00
bmake Update to bmake-20140620 2014-07-08 22:27:50 +00:00
brandelf use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
bsdiff use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
bzip2
bzip2recover
c89
c99
calendar Add myself (jch) to calendar.freebsd and committers-src.dot 2014-09-24 22:31:40 +00:00
cap_mkdb
catman
chat
checknr
chkey
chpass
cksum
clang Convert LIBCURSES to LIBNCURSES to fix "make checkdpadd" 2014-08-26 09:10:28 +00:00
cmp Integrate usr.bin/cmp/tests from NetBSD into atf/kyua 2014-10-09 00:50:33 +00:00
col Fix to col when printing half-line feeds w/ -f option... 2014-10-17 21:09:03 +00:00
colcrt
colldef
colrm
column
comm
compile_et Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
compress
cpio
cpuset use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
csplit
ctags
ctlstat use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
cut Integrate usr.bin/cut/tests from NetBSD into atf/kyua 2014-10-09 01:46:31 +00:00
dc
dirname Integrate usr.bin/dirname/tests from NetBSD into atf/kyua 2014-10-09 00:55:04 +00:00
drill Rework privatelib/internallib 2014-08-06 22:17:26 +00:00
dtc dtc: ignore lines starting with #. 2014-06-10 06:16:34 +00:00
du
ee Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
elf2aout use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
elfdump Fix a typo. 2014-09-16 22:26:01 +00:00
enigma
env
expand
false
fetch use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
file MFV r267843: update file/libmagic to 5.19. 2014-06-26 06:03:39 +00:00
file2c
find Correct scale factor for T terabyte suffix 2014-10-08 17:40:58 +00:00
finger
fmt
fold
from
fstat use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
fsync
ftp Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
gcore Remove an unsed variable. 2014-07-31 03:36:03 +00:00
gencat
getconf use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
getent
getopt
gprof Remove ia64. 2014-07-07 00:27:09 +00:00
grep Integrate usr.bin/grep/tests from NetBSD into atf/kyua 2014-10-09 01:53:23 +00:00
gzip Sync with NetBSD. 2014-10-23 01:22:29 +00:00
head
hesinfo
hexdump
host Add host.1 to CLEANFILES. 2014-08-26 19:36:47 +00:00
iconv - Make invalids variable local to do_conv such that it prints the number 2014-06-13 08:44:03 +00:00
id
indent
ipcrm
ipcs use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
iscsictl Whitespace fixes. 2014-10-22 09:17:17 +00:00
join
jot
kdump Decode the arguments passed to _umtx_op(). In particular, decode the 2014-10-13 16:37:06 +00:00
keylogin
keylogout
killall
ktrace Clarify that the -c argument clears the list of tracepoints specified by 2014-08-26 21:21:57 +00:00
ktrdump use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
lam
last
lastcomm
ldd use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
leave
less Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
lessecho
lesskey
lex
limits
locale
locate
lock Missed comma. 2014-08-26 11:04:51 +00:00
lockf use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
logger
login Remove LOG_ODELAY because it does nothing. 2014-08-17 19:06:26 +00:00
logins use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
logname
look look: implement long options 2014-07-04 04:47:29 +00:00
lorder
lsvfs
lzmainfo
m4 Avoid name shadowing to fix build under powerpc64. 2014-08-07 14:26:44 +00:00
mail Always check the limits of array index variables before using them. 2014-08-21 02:40:33 +00:00
make When producing fmake(1), `make clean' should remove fmake.1 (a copy of 2014-07-23 23:01:54 +00:00
makewhatis
man Replace the macros used in the previous man(1) commit with literal text, 2014-09-26 11:48:29 +00:00
mandoc Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
mesg
minigzip
ministat
mkcsmapper use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
mkcsmapper_static
mkdep
mkesdb use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
mkesdb_static
mkfifo
mkimg Update baseline files for EBR, MBR and PC98 now that mkimg fills in 2014-10-03 20:54:35 +00:00
mklocale
mkstr
mktemp
mkulzma use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
mkuzip use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
msgs Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
mt
nc
ncal Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
netstat Add the ability to set `prefer_source' flag to an IPv6 address. 2014-09-09 10:52:50 +00:00
newgrp
newkey
nfsstat
nice
nl
nohup
opieinfo
opiekey Link otp-sha1 to match real challenge prompt, not otp-sha 2014-08-11 14:37:57 +00:00
opiepasswd
pagesize
pamtest
passwd
paste
patch patch: add dry-run alias for compatibility with other implementations. 2014-06-15 16:38:17 +00:00
pathchk
perror
pr
printenv
printf printf: Install tests/regress.missingpos1.out, fixing tests. 2014-06-01 13:33:22 +00:00
procstat In "procstat -v" (VM), spell out 'FL' to 'FLAG' since there are two extra 2014-07-20 20:11:34 +00:00
protect
quota
rctl Fix typo. 2014-09-11 19:54:30 +00:00
renice
rev
revoke use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
rlogin
rpcgen Fix some rpcgen sample file issues. 2014-06-06 17:38:37 +00:00
rpcinfo
rs
rsh
rup
ruptime
rusers
rwall
rwho
script
sed sed(1): Don't force a newline on last line, if input stream doesn't have one 2014-08-08 17:29:01 +00:00
send-pr Add a stub send-pr that simply points people towards the online support 2014-06-17 12:59:03 +00:00
seq
setchannel
shar
showmount Use mount protocol version 3 by default for showmount and umount. 2014-08-16 14:56:11 +00:00
smbutil
sockstat use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
sort Make sure to not skip any argument when converting from deprecated 2014-10-02 06:29:49 +00:00
split
ssh-copy-id use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
stat use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
stdbuf
su
svn Add svnlite.1 to CLEANFILES. 2014-08-26 20:40:12 +00:00
systat Fix integer truncation in affecting systat -ifstat 2014-09-29 17:38:50 +00:00
tabs Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
tail
talk Convert LIBCURSES to LIBNCURSES to fix "make checkdpadd" 2014-08-26 09:10:28 +00:00
tar
tcopy
tee
telnet Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
tests
tftp Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
time
timeout Improve timeout(1) man page 2014-07-18 22:56:59 +00:00
tip
top Cap the percent CPU of individual threads at 100% to fix some of the 2014-06-20 19:54:23 +00:00
touch
tput Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
tr
true
truncate use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
truss The current POSIX semaphore implementation stores the _has_waiters flag 2014-10-24 20:02:44 +00:00
tset Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
tsort
tty
ul Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
uname
unexpand
unifdef use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
uniq
units Fix structure of new tests (r268794) for usr.bin/units. 2014-07-25 01:29:22 +00:00
unvis
unzip use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
usbhidaction
usbhidctl
users Unbreak the build by re-enabling exceptions. 2014-07-14 12:24:38 +00:00
uudecode
uuencode
vacation Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
vgrind
vi Replace all uses of libncurses and libtermcap with their wide character 2014-07-17 18:24:34 +00:00
vis
vmstat Fix formatting of vmstat (1) so that it looks cleaner on standard 80 2014-10-24 04:01:14 +00:00
vtfontcvt vtfontcvt will first ship in FreeBSD 10.1 2014-07-24 15:16:03 +00:00
w don't reinvent the wheel: rely on basename(3) 2014-10-08 05:04:31 +00:00
wall
wc
what
whereis
which use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
who
whois Introduce $RA_SERVER to set default whois server. 2014-06-25 15:39:08 +00:00
write
xargs
xinstall install: re-check failed mkdir for EEXIST 2014-09-23 11:41:09 +00:00
xlint Remove ia64. 2014-07-07 00:27:09 +00:00
xo Hook xo(1) to the build -- it's like echo, but uses libxo to 2014-10-23 23:16:21 +00:00
xstr
xz
xzdec
yacc Complete the usr.bin/yacc kyua integration work I originally 2014-08-12 17:51:26 +00:00
yes mdoc: drop the trailing dot from the xref list. 2014-06-05 08:20:14 +00:00
ypcat use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
ypmatch use .Mt to mark up email addresses consistently (part3) 2014-06-23 08:23:05 +00:00
ypwhich
Makefile Hook xo(1) to the build -- it's like echo, but uses libxo to 2014-10-23 23:16:21 +00:00
Makefile.amd64
Makefile.arm
Makefile.i386
Makefile.inc
Makefile.powerpc
Makefile.sparc64