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
..
2004-05-18 20:18:14 +00:00
2004-08-13 05:42:43 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2004-09-20 00:16:11 +00:00
2014-05-07 14:00:01 +02:00
2007-05-15 06:49:29 +00:00
2003-09-29 22:23:14 +00:00
2003-02-15 22:50:01 +00:00
2003-07-22 23:10:17 +00:00
..
2007-12-12 18:41:10 +00:00
2002-12-14 19:49:13 +00:00
2003-12-20 06:34:59 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-16 07:39:03 +00:00
2003-06-17 22:11:22 +00:00
2003-06-17 22:40:05 +00:00
2003-12-19 01:37:13 +00:00
2003-12-19 01:37:13 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-06-08 05:28:14 +00:00
2003-11-06 04:29:42 +00:00
2003-11-21 09:25:26 +00:00
2004-05-18 20:18:14 +00:00
2004-09-02 18:59:24 +00:00
2013-06-06 20:36:07 +02:00
2003-02-27 04:42:04 +00:00
2003-09-24 08:33:01 +00:00
2004-11-09 23:12:36 +00:00
2004-11-10 07:54:40 +00:00
2006-08-13 01:56:09 +00:00
2004-03-24 06:36:06 +00:00
2011-10-24 21:43:33 -04:00
2003-07-01 03:29:50 +00:00
2003-07-01 03:29:50 +00:00
2008-05-31 08:56:14 +00:00
2007-05-26 01:23:04 +00:00
2004-11-12 01:27:04 +00:00
2016-01-22 14:21:03 -02:00
2011-09-10 14:34:15 -04:00
2003-09-02 00:33:28 +00:00
2003-09-02 00:33:28 +00:00
2003-09-02 00:33:28 +00:00
2003-09-02 00:33:28 +00:00
2003-09-02 00:33:28 +00:00
2003-09-02 00:33:28 +00:00
2003-09-02 00:33:28 +00:00
2007-08-21 23:55:36 +00:00
2004-03-10 05:25:48 +00:00
2004-03-10 05:25:48 +00:00
2004-03-10 05:25:48 +00:00
2004-03-10 05:25:48 +00:00