glibc/sysdeps/unix/sysv/linux
Adhemerval Zanella f5c77f78ec Remove __ASSUME_FUTEX_LOCK_PI
This patch removes __ASSUME_FUTEX_LOCK_PI usage and assumes that
kernel will correctly return if it supports or not
futex_atomic_cmpxchg_inatomic.

Current PI mutex code already has runtime support by calling
prio_inherit_missing and returns ENOTSUP if the futex operation fails
at initialization (it issues a FUTEX_UNLOCK_PI futex operation).

Also, current minimum supported kernel (v3.2) will return ENOSYS if
futex_atomic_cmpxchg_inatomic is not supported in the system:

kernel/futex.c:

2628 long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
2629                 u32 __user *uaddr2, u32 val2, u32 val3)
2630 {
2631         int ret = -ENOSYS, cmd = op & FUTEX_CMD_MASK;
[...]
2667         case FUTEX_UNLOCK_PI:
2668                 if (futex_cmpxchg_enabled)
2669                         ret = futex_unlock_pi(uaddr, flags);
[...]
2686         return ret;
2687 }

The futex_cmpxchg_enabled is initialized by calling cmpxchg_futex_value_locked,
which calls futex_atomic_cmpxchg_inatomic.

For ARM futex_atomic_cmpxchg_inatomic will be either defined (if both
CONFIG_CPU_USE_DOMAINS and CONFIG_SMP are not defined) or use the
default generic implementation that returns ENOSYS.

For m68k is uses the default generic implementation.

For mips futex_atomic_cmpxchg_inatomic will return ENOSYS if cpu has no
'cpu_has_llsc' support (defined by each chip supporte inside kernel).

For sparc, 32-bit kernel will just use default generic implementation,
while 64-bit kernel has support.

Tested on ARM (v3.8 kernel) and x86_64.

	* nptl/pthread_mutex_init.c [__ASSUME_FUTEX_LOCK_PI]
	(prio_inherit_missing): Remove define.
	* sysdeps/unix/sysv/linux/arm/kernel-features.h
	(__ASSUME_FUTEX_LOCK_PI): Likewise.
	* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FUTEX_LOCK_PI):
	Likewise.
	* sysdeps/unix/sysv/linux/m68k/kernel-features.h
	(__ASSUME_FUTEX_LOCK_PI): Likewise.
	* sysdeps/unix/sysv/linux/mips/kernel-features.h
	(__ASSUME_FUTEX_LOCK_PI): Likewise.
	* sysdeps/unix/sysv/linux/sparc/kernel-features.h
	(__ASSUME_FUTEX_LOCK_PI): Likewise.
2016-06-13 08:36:34 -03:00
..
aarch64 Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
alpha Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
arm Remove __ASSUME_FUTEX_LOCK_PI 2016-06-13 08:36:34 -03:00
bits Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
generic Consolidate pwritev/pwritev64 implementations 2016-06-06 19:12:36 -03:00
hppa Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
i386 Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
ia64 Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
include/sys
m68k Remove __ASSUME_FUTEX_LOCK_PI 2016-06-13 08:36:34 -03:00
microblaze Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
mips Remove __ASSUME_FUTEX_LOCK_PI 2016-06-13 08:36:34 -03:00
net
netash
netatalk
netax25
neteconet
netinet
netipx
netiucv Add missing iucv related defines. 2016-04-27 09:08:29 +02:00
netpacket
netrom
netrose
nfs
nios2 Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
powerpc Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
s390 Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
scsi
sh Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
sparc Remove __ASSUME_FUTEX_LOCK_PI 2016-06-13 08:36:34 -03:00
sys Add Q_GETNEXTQUOTA from Linux 4.6 to sys/quota.h. 2016-05-18 13:15:11 +00:00
tile Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
wordsize-64 Consolidate pwritev/pwritev64 implementations 2016-06-06 19:12:36 -03:00
x86
x86_64 Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
Implies
Makefile Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
Versions
_G_config.h
_exit.c
a.out.h
accept.c
accept4.c
adjtime.c
aio_misc.h
aio_sigqueue.c
arch-fork.h
bind.c
check_native.c network: recvmsg and sendmsg standard compliance (BZ#16919) 2016-05-25 17:39:01 -03:00
check_pf.c network: recvmsg and sendmsg standard compliance (BZ#16919) 2016-05-25 17:39:01 -03:00
clock.c
clock_getcpuclockid.c
clock_getres.c
clock_gettime.c
clock_nanosleep.c
clock_settime.c
cmsg_nxthdr.c
configure Remove linux/fanotify.h configure test. 2016-02-24 18:44:10 +00:00
configure.ac Remove linux/fanotify.h configure test. 2016-02-24 18:44:10 +00:00
connect.c
createthread.c
default-sched.h
device-nrs.h
dl-brk.c
dl-execstack.c
dl-fxstatat64.c
dl-getcwd.c
dl-librecon.h
dl-openat64.c Assume __NR_openat is always defined 2016-03-23 23:35:08 +01:00
dl-opendir.c
dl-origin.c
dl-osinfo.h
dl-sbrk.c
dl-sysdep.c
dl-sysdep.h
dl-vdso.c
dl-vdso.h
dl-writev.h
epoll_pwait.c
errqueue.h
eventfd_read.c
eventfd_write.c
exit-thread.h
faccessat.c
fallocate.c
fallocate64.c
fatal-prepare.h
fchmodat.c
fcntl.c
fd_to_filename.h
fexecve.c
fips-private.h
fpathconf.c
fstatfs64.c
fstatvfs.c
fstatvfs64.c
ftime.c
ftruncate64.c
futex-internal.h
futimens.c Assume __NR_utimensat is always defined 2016-03-23 23:35:08 +01:00
futimes.c
futimesat.c
fxstat.c
fxstat64.c
fxstatat.c
fxstatat64.c
gai_sigqueue.c
getclktck.c
getcwd.c
getdents.c Remove __ASSUME_GETDENTS64_SYSCALL. 2016-03-22 00:32:20 +00:00
getdents64.c
getdirentries.c
getdirentries64.c
getdtsz.c
gethostid.c
getipv4sourcefilter.c
getloadavg.c
getlogin.c
getlogin_r.c
getpagesize.c
getpeername.c
getpid.c
getpriority.c
getpt.c
getrlimit64.c
getsockname.c
getsockopt.c
getsourcefilter.c
getsysstats.c
gettimeofday.c
grantpt.c
if_index.c
ifaddrs.c network: recvmsg and sendmsg standard compliance (BZ#16919) 2016-05-25 17:39:01 -03:00
ifreq.c
internal_statvfs.c
internal_statvfs64.c
ipc_priv.h
kernel-features.h Remove __ASSUME_FUTEX_LOCK_PI 2016-06-13 08:36:34 -03:00
kernel-posix-cpu-timers.h
kernel-posix-timers.h
kernel_sigaction.h
kernel_stat.h
kernel_termios.h
ldd-rewrite.sed
lddlibc4.c
ldsodefs.h Fix build with HAVE_AUX_VECTOR 2016-04-11 10:27:25 +02:00
libc_fatal.c
linux_fsinfo.h
listen.c
llseek.c
local-setxid.h
lowlevellock-futex.h
lseek64.c
lutimes.c Assume __NR_utimensat is always defined 2016-03-23 23:35:08 +01:00
lxstat.c
lxstat64.c
makedev.c
malloc-sysdep.h
mmap64.c
mq_close.c
mq_getattr.c
mq_notify.c
mq_open.c
mq_receive.c
mq_send.c
mq_unlink.c
msgctl.c
msgget.c
msgrcv.c
msgsnd.c
netlink_assert_response.c
netlinkaccess.h
nice.c
not-cancel.h
nptl-signals.h posix: New Linux posix_spawn{p} implementation 2016-03-07 11:53:47 +07:00
nscd_setup_thread.c
ntp_gettime.c
ntp_gettimex.c
open64.c
openat.c
openat64.c
opendir.c
opensock.c
pathconf.c
pathconf.h
paths.h
personality.c
posix_fadvise.c
posix_fadvise64.c
posix_fallocate.c
posix_fallocate64.c
posix_madvise.c
ppoll.c Remove __ASSUME_PPOLL. 2016-03-15 21:11:07 +00:00
pread.c Consolidate pread/pread64 implementations 2016-04-11 10:08:01 -03:00
pread64.c Consolidate pread/pread64 implementations 2016-04-11 10:08:01 -03:00
preadv.c Consolidate preadv/preadv64 implementation 2016-06-06 19:12:36 -03:00
preadv64.c Consolidate preadv/preadv64 implementation 2016-06-06 19:12:36 -03:00
prlimit.c
prof-freq.c
profil.c
pselect.c
pt-raise.c
pthread-pids.h
pthread_getaffinity.c
pthread_getcpuclockid.c
pthread_getname.c
pthread_kill.c
pthread_setaffinity.c
pthread_setname.c
pthread_sigmask.c
pthread_sigqueue.c
ptrace.c
ptsname.c
pwrite.c Consolidate pwrite/pwrite64 implementations 2016-04-11 10:08:01 -03:00
pwrite64.c Consolidate pwrite/pwrite64 implementations 2016-04-11 10:08:01 -03:00
pwritev.c Consolidate pwritev/pwritev64 implementations 2016-06-06 19:12:36 -03:00
pwritev64.c Consolidate pwritev/pwritev64 implementations 2016-06-06 19:12:36 -03:00
raise.c
readahead.c
readdir64.c
readdir64_r.c
readonly-area.c
reboot.c
recv.c
recvfrom.c
recvmmsg.c Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
recvmsg.c Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
remove.c
sa_len.c
safe-fatal.h
sched_getaffinity.c
sched_getcpu.c
sched_setaffinity.c
segfault.c
semctl.c
semget.c
semop.c
semtimedop.c
send.c
sendmmsg.c Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
sendmsg.c Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00
sendto.c
setegid.c
seteuid.c
setgid.c
setgroups.c
sethostid.c
setipv4sourcefilter.c
setregid.c
setresgid.c
setresuid.c
setreuid.c
setrlimit64.c
setsockopt.c
setsourcefilter.c
setuid.c
shlib-versions
shm-directory.c
shmat.c
shmctl.c
shmdt.c
shmget.c
shutdown.c
sigaction.c
siglist.h
signal.c
signalfd.c Remove __ASSUME_SIGNALFD4. 2016-03-21 16:30:05 +00:00
sigpending.c
sigprocmask.c
sigqueue.c
sigreturn.c
sigset-cvt-mask.h
sigstack.c
sigsuspend.c
sigtimedwait.c
sigwait.c
sigwaitinfo.c
sizes.h
socket.c
socketcall.h
socketpair.c
spawni.c posix: Call _exit in failure case for posix_spawn{p} (BZ#20178) 2016-05-30 10:56:01 -03:00
speed.c
statfs64.c
statvfs.c
statvfs64.c
sync_file_range.c
syscalls.list Remove __ASSUME_EVENTFD2, move eventfd to syscalls.list. 2016-03-17 19:07:39 +00:00
sysconf.c
sysctl.c
sysctl.mk
sysdep-vdso.h
sysdep.h Fix pread consolidation on ports that require argument alignment 2016-04-14 16:49:40 -03:00
syslog.c
system.c
tcdrain.c
tcflow.c
tcflush.c
tcgetattr.c
tcgetpgrp.c
tcsendbrk.c
tcsetattr.c
tcsetpgrp.c
termio.h
time.c
timer_create.c
timer_delete.c
timer_getoverr.c
timer_gettime.c
timer_routines.c
timer_settime.c
times.c
timespec_get.c
truncate64.c
tst-affinity-pid.c
tst-affinity.c
tst-align-clone.c
tst-clone.c
tst-clone2.c Fix clone (CLONE_VM) pid/tid reset (BZ#19957) 2016-04-29 18:19:30 -03:00
tst-fanotify.c Remove linux/fanotify.h configure test. 2016-02-24 18:44:10 +00:00
tst-getpid1.c
tst-personality.c
tst-setgetname.c
tst-skeleton-affinity.c
tst-skeleton-thread-affinity.c
tst-thread-affinity-pthread.c
tst-thread-affinity-pthread2.c
tst-thread-affinity-sched.c
ttyname.c
ttyname_r.c
ualarm.c
umount.S
umount2.S
unlockpt.c
updwtmp.c
ustat.c
utimensat.c Assume __NR_utimensat is always defined 2016-03-23 23:35:08 +01:00
utimes.c
utmp_file.c
vfork.c
wait.c Remove union wait [BZ #19613] 2016-04-14 08:54:57 +02:00
wait3.c
waitid.c
waitpid.c
xmknod.c
xmknodat.c
xstat.c
xstat64.c
xstatconv.c
xstatconv.h