glibc/sysdeps/mach/hurd/htl/pt-mutex.h
Joseph Myers aa0e46636a Break further lines before not after operators.
This patch continues the process of fixing coding style to break lines
before not after operators in accordance with the GNU Coding
Standards, fixing such issues in a non-exhaustive selection of sysdeps
files that had them.

Tested for x86_64, and with build-many-glibcs.py.

	* sysdeps/arm/sysdep.h (#if condition): Break lines before rather
	than after operators.
	* sysdeps/mach/hurd/fork.c (__fork): Likewise.
	* sysdeps/mach/hurd/getcwd.c
	(__hurd_canonicalize_directory_name_internal): Likewise.
	* sysdeps/mach/hurd/htl/pt-mutex-consistent.c
	(pthread_mutex_consistent): Likewise.
	* sysdeps/mach/hurd/htl/pt-mutex-init.c (_pthread_mutex_init):
	Likewise.
	* sysdeps/mach/hurd/htl/pt-mutex-transfer-np.c
	(__pthread_mutex_transfer_np): Likewise.
	* sysdeps/mach/hurd/htl/pt-mutex-unlock.c
	(__pthread_mutex_unlock): Likewise.
	* sysdeps/mach/hurd/htl/pt-mutex.h (ROBUST_LOCK): Likewise.
	(mtx_owned_p): Likewise.
	* sysdeps/mach/hurd/htl/pt-mutexattr-getrobust.c
	(pthread_mutexattr_getrobust): Likewise.
	* sysdeps/mach/hurd/i386/init-first.c (init1): Likewise.
	* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
	Likewise.
	* sysdeps/mach/hurd/ioctl.c (__ioctl): Likewise.
	* sysdeps/mach/hurd/jmp-unwind.c (_longjmp_unwind): Likewise.
	* sysdeps/mach/hurd/kill.c (__kill): Likewise.
	* sysdeps/mach/hurd/mig-reply.c (__mig_get_reply_port): Likewise.
	* sysdeps/mach/hurd/ptrace.c (ptrace): Likewise.
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise.
	* sysdeps/unix/sysv/linux/aarch64/sysdep.h (#if condition):
	Likewise.
	* sysdeps/unix/sysv/linux/alpha/ioperm.c (process_cpuinfo):
	Likewise.
	* sysdeps/unix/sysv/linux/bits/timex.h (STA_RONLY): Likewise.
	* sysdeps/unix/sysv/linux/csky/sysdep.h (#if condition): Likewise.
	* sysdeps/unix/sysv/linux/generic/____longjmp_chk.c
	(____longjmp_chk): Likewise.
	* sysdeps/unix/sysv/linux/generic/futimesat.c (futimesat):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
	(INTERNAL_SYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
	(INTERNAL_SYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
	(__get_clockfreq_via_cpuinfo): Likewise.
2019-02-26 15:01:50 +00:00

91 lines
3.1 KiB
C

/* Internal definitions for pthreads library.
Copyright (C) 2016-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _PT_MUTEX_H
#define _PT_MUTEX_H 1
/* Special ID used to signal an unrecoverable robust mutex. */
#define NOTRECOVERABLE_ID (1U << 31)
/* Common path for robust mutexes. Assumes the variable 'ret'
* is bound in the function this is called from. */
#define ROBUST_LOCK(self, mtxp, cb, ...) \
if (mtxp->__owner_id == NOTRECOVERABLE_ID) \
return ENOTRECOVERABLE; \
else if (mtxp->__owner_id == self->thread \
&& __getpid () == (int)(mtxp->__lock & LLL_OWNER_MASK)) \
{ \
if (mtxp->__type == PT_MTX_RECURSIVE) \
{ \
if (__glibc_unlikely (mtxp->__cnt + 1 == 0)) \
return EAGAIN; \
\
++mtxp->__cnt; \
return 0; \
} \
else if (mtxp->__type == PT_MTX_ERRORCHECK) \
return EDEADLK; \
} \
\
ret = cb (&mtxp->__lock, ##__VA_ARGS__); \
if (ret == 0 || ret == EOWNERDEAD) \
{ \
if (mtxp->__owner_id == ENOTRECOVERABLE) \
ret = ENOTRECOVERABLE; \
else \
{ \
mtxp->__owner_id = self->thread; \
mtxp->__cnt = 1; \
if (ret == EOWNERDEAD) \
{ \
mtxp->__lock = mtxp->__lock | LLL_DEAD_OWNER; \
atomic_write_barrier (); \
} \
} \
} \
(void)0
/* Check that a thread owns the mutex. For non-robust, task-shared
* objects, we have to check the thread *and* process-id. */
#define mtx_owned_p(mtx, pt, flags) \
((mtx)->__owner_id == (pt)->thread \
&& (((flags) & GSYNC_SHARED) == 0 \
|| (mtx)->__shpid == __getpid ()))
/* Record a thread as the owner of the mutex. */
#define mtx_set_owner(mtx, pt, flags) \
(void) \
({ \
(mtx)->__owner_id = (pt)->thread; \
if ((flags) & GSYNC_SHARED) \
(mtx)->__shpid = __getpid (); \
})
/* Redefined mutex types. The +1 is for binary compatibility. */
#define PT_MTX_NORMAL __PTHREAD_MUTEX_TIMED
#define PT_MTX_RECURSIVE (__PTHREAD_MUTEX_RECURSIVE + 1)
#define PT_MTX_ERRORCHECK (__PTHREAD_MUTEX_ERRORCHECK + 1)
/* Mutex type, including robustness. */
#define MTX_TYPE(mtxp) \
((mtxp)->__type | ((mtxp)->__flags & PTHREAD_MUTEX_ROBUST))
extern int __getpid (void) __attribute__ ((const));
#endif /* pt-mutex.h */