glibc/sysdeps/unix/sysv/linux
Paul Murphy 9695cb3e65 powerpc: Spinlock optimization and cleanup
This patch optimizes powerpc spinlock implementation by:

* Use the correct EH hint bit on the larx for supported ISA.  For lock
  acquisition, the thread that acquired the lock with a successful stcx
  does not want to give away the write ownership on the cacheline.  The
  idea is to make the load reservation "sticky" about retaining write
  authority to the line.  That way, the store that must inevitably come
  to release the lock can succeed quickly and not contend with other
  threads issuing lwarx.  If another thread does a store to the line
  (false sharing), the winning thread must give up write authority to
  the proper value of EH for the larx for a lock acquisition is 1.

* Increase contented lock performance by up to 40%, and no measurable
  impact on uncontended locks on P8.

Thanks to Adhemerval Zanella who did most of the work.  I've run some
tests, and addressed some minor feedback.

	* sysdeps/powerpc/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Add lwarx hint, and use macro for acquire instruction.
	* sysdeps/powerpc/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
	Likewise.
	* sysdep/unix/sysv/linux/powerpc/pthread_spin_unlock.c: Move to ...
	* sysdeps/powerpc/nptl/pthread_spin_unlock.c: ... here, and
	update to use new atomic macros.
2015-11-19 18:04:30 -02:00
..
aarch64 Remove __signbit* from localplt.data as they are no longer called from within GLIBC. 2015-11-10 11:15:43 +00:00
alpha Simplify the abilist format 2015-11-06 13:58:53 +01:00
arm Remove __signbit* from localplt.data as they are no longer called from within GLIBC. 2015-11-10 11:15:43 +00:00
bits Add netinet/in.h values from Linux 4.2. 2015-09-01 13:47:25 +00:00
generic Add INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 11:59:15 -07:00
hppa Simplify the abilist format 2015-11-06 13:58:53 +01:00
i386 Simplify the abilist format 2015-11-06 13:58:53 +01:00
ia64 Simplify the abilist format 2015-11-06 13:58:53 +01:00
include/sys linux/getsysstats.c: use sysinfo() instead of parsing /proc/meminfo 2015-09-12 21:09:59 -04:00
m68k Simplify the abilist format 2015-11-06 13:58:53 +01:00
microblaze Remove __signbit* from localplt.data as they are no longer called from within GLIBC. 2015-11-10 11:15:43 +00:00
mips Simplify the abilist format 2015-11-06 13:58:53 +01:00
net
netash
netatalk
netax25
neteconet
netinet
netipx
netiucv
netpacket
netrom
netrose
nfs
nios2 Remove __signbit* from localplt.data as they are no longer called from within GLIBC. 2015-11-10 11:15:43 +00:00
powerpc powerpc: Spinlock optimization and cleanup 2015-11-19 18:04:30 -02:00
s390 S390: Clean setjmp, longjmp, getcontext symbols. 2015-11-09 16:14:49 +01:00
scsi
sh Simplify the abilist format 2015-11-06 13:58:53 +01:00
sparc Simplify the abilist format 2015-11-06 13:58:53 +01:00
sys Update headers for Linux 4.0, 4.1 definitions. 2015-06-29 14:38:46 +00:00
tile Simplify the abilist format 2015-11-06 13:58:53 +01:00
wordsize-64 Mark lseek/llseek as non-cancellable 2015-10-09 14:26:08 -03:00
x86 Move x86_64 init-arch.h to sysdeps/x86/init-arch.h 2015-08-20 04:29:23 -07:00
x86_64 Simplify the abilist format 2015-11-06 13:58:53 +01:00
Implies
Makefile Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
Versions Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
_G_config.h
_exit.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
a.out.h
accept.c S390: Call direct system calls for socket operations. 2015-11-09 16:14:49 +01:00
accept4.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
adjtime.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
aio_misc.h
aio_sigqueue.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
arch-fork.h
bind.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
check-cpuset.h
check_native.c Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
check_pf.c Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
clock.c
clock_getcpuclockid.c
clock_getres.c
clock_gettime.c
clock_nanosleep.c
clock_settime.c
cmsg_nxthdr.c
configure
configure.ac
connect.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
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 Convert 113 more function definitions to prototype style (files with assertions). 2015-10-20 11:54:09 +00: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 nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
errqueue.h
eventfd.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
eventfd_read.c
eventfd_write.c
exit-thread.h
faccessat.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
fallocate.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
fallocate64.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
fatal-prepare.h Use __pthread_setcancelstate in libc.a 2015-09-17 16:38:54 -07:00
fchmodat.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
fcntl.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
fd_to_filename.h
fexecve.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
fips-private.h
fpathconf.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
fstatfs64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
fstatvfs.c Fix pathconf statvfs namespace (bug 18507). 2015-06-09 19:52:01 +00:00
fstatvfs64.c
ftime.c
ftruncate64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
futex-internal.h Add and use new glibc-internal futex API. 2015-07-10 13:47:09 +02:00
futimens.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
futimes.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
futimesat.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
fxstat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
fxstat64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
fxstatat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
fxstatat64.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
gai_sigqueue.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
getclktck.c
getcwd.c
getdents.c
getdents64.c
getdirentries.c
getdirentries64.c
getdtsz.c
gethostid.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
getipv4sourcefilter.c
getloadavg.c
getlogin.c
getlogin_r.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
getpagesize.c
getpeername.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
getpid.c
getpriority.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
getpt.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
getrlimit64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
getsockname.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
getsockopt.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
getsourcefilter.c
getsysstats.c linux/getsysstats.c: use sysinfo() instead of parsing /proc/meminfo 2015-09-12 21:09:59 -04:00
gettimeofday.c
grantpt.c
if_index.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
ifaddrs.c Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
ifreq.c
internal_statvfs.c
internal_statvfs64.c
ipc_priv.h
kernel-features.h Assume that SOCK_CLOEXEC is available and works 2015-10-17 12:02:37 +02: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
libc_fatal.c
linux_fsinfo.h
listen.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
llseek.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
local-setxid.h
lowlevellock-futex.h
lseek64.c
lutimes.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
lxstat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
lxstat64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
makedev.c
malloc-sysdep.h
mmap64.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
mq_close.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
mq_getattr.c
mq_notify.c Fix mq_notify socket, recv namespace (bug 18546). 2015-06-17 20:20:08 +00:00
mq_open.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
mq_receive.c Fix mq_receive, mq_send mq_timed* namespace (bug 18545). 2015-06-17 20:19:04 +00:00
mq_send.c Fix mq_receive, mq_send mq_timed* namespace (bug 18545). 2015-06-17 20:19:04 +00:00
mq_unlink.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
msgctl.c Remove __ASSUME_IPC64 2015-08-24 10:53:49 +02:00
msgget.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
msgrcv.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
msgsnd.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
netlink_assert_response.c Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
netlinkaccess.h Terminate process on invalid netlink response from kernel [BZ #12926] 2015-11-09 12:48:41 +01:00
nice.c
not-cancel.h
nptl-signals.h
nscd_setup_thread.c
ntp_gettime.c
ntp_gettimex.c
open64.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
openat.c Remove unused definition of __openat(64)_nocancel 2015-08-11 09:37:38 +02:00
openat64.c
opendir.c
opensock.c
pathconf.c
pathconf.h
paths.h
posix_fadvise.c
posix_fadvise64.c
posix_fallocate.c
posix_fallocate64.c
posix_madvise.c
ppoll.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pread.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pread64.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
preadv.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
preadv64.c
prlimit.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
prof-freq.c
profil.c
pselect.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pt-raise.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
pthread-pids.h
pthread_getaffinity.c
pthread_getcpuclockid.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
pthread_getname.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
pthread_kill.c
pthread_setaffinity.c
pthread_setname.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
pthread_sigmask.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
pthread_sigqueue.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
ptrace.c
ptsname.c
pwrite.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pwrite64.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pwritev.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pwritev64.c
raise.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
readahead.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
readdir64.c
readdir64_r.c
readonly-area.c
reboot.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
recv.c S390: Call direct system calls for socket operations. 2015-11-09 16:14:49 +01:00
recvfrom.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
recvmmsg.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
recvmsg.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
remove.c
sa_len.c
safe-fatal.h
sched_getaffinity.c Avoid PLT when calling __sched_getaffinity_new 2015-10-14 06:33:48 -07:00
sched_getcpu.c Consolidate sched_getcpu 2015-06-09 14:56:21 -03:00
sched_setaffinity.c
segfault.c
semctl.c Remove extra va_start/va_end calls (bug 17244) 2015-09-16 14:51:28 +02:00
semget.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
semop.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
semtimedop.c Convert 69 more function definitions to prototype style (line wrap cases). 2015-10-19 21:23:47 +00:00
send.c S390: Call direct system calls for socket operations. 2015-11-09 16:14:49 +01:00
sendmmsg.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
sendmsg.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
sendto.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
setegid.c
seteuid.c
setgid.c
setgroups.c
sethostid.c
setipv4sourcefilter.c
setregid.c
setresgid.c
setresuid.c
setreuid.c
setrlimit64.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
setsockopt.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
setsourcefilter.c
setuid.c
shlib-versions
shm-directory.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
shmat.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
shmctl.c Remove __ASSUME_IPC64 2015-08-24 10:53:49 +02:00
shmdt.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
shmget.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
shutdown.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
sigaction.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
siglist.h
signal.c
signalfd.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
sigpending.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
sigprocmask.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
sigqueue.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
sigreturn.c
sigset-cvt-mask.h
sigstack.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
sigsuspend.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
sigtimedwait.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
sigwait.c
sigwaitinfo.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
sizes.h
sleep.c
socket.c Call direct system calls for socket operations 2015-08-25 13:45:56 -03:00
socketcall.h
socketpair.c powerpc: Fix compiler warning in some syscalls. 2015-09-04 15:19:30 -03:00
speed.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
statfs64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
statvfs.c Fix pathconf statvfs namespace (bug 18507). 2015-06-09 19:52:01 +00:00
statvfs64.c
sync_file_range.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
syscalls.list linux/getsysstats.c: use sysinfo() instead of parsing /proc/meminfo 2015-09-12 21:09:59 -04:00
sysconf.c
sysctl.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
sysctl.mk
sysdep-vdso.h
sysdep.h Add INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 11:59:15 -07:00
syslog.c
system.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
tcdrain.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
tcflow.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
tcflush.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
tcgetattr.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
tcgetpgrp.c
tcsendbrk.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
tcsetattr.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
tcsetpgrp.c
termio.h
time.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
timer_create.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
timer_delete.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
timer_getoverr.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
timer_gettime.c Convert 231 sysdeps function definitions to prototype style. 2015-10-19 12:04:33 +00:00
timer_routines.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
timer_settime.c Convert 69 more function definitions to prototype style (line wrap cases). 2015-10-19 21:23:47 +00:00
times.c
timespec_get.c
truncate64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
tst-align-clone.c
tst-clone.c
tst-fanotify.c
tst-getcpu.c Print more information in tst-getcpu failure case. 2015-06-24 13:56:46 -07:00
tst-getpid1.c
tst-getpid2.c
tst-setgetname.c
ttyname.c
ttyname_r.c
ualarm.c
umount.S
umount2.S
unlockpt.c
updwtmp.c
ustat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
utimensat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
utimes.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
utmp_file.c
vfork.c
wait.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
wait3.c
waitid.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
waitpid.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
xmknod.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
xmknodat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
xstat.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
xstat64.c Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN" 2015-08-21 09:57:15 -07:00
xstatconv.c Use INLINE_SYSCALL_ERROR_RETURN_VALUE 2015-10-13 12:01:10 -07:00
xstatconv.h Mark __xstatXX_conv as hidden 2015-08-19 04:41:06 -07:00