Retire ifdef ERRORCHECK in pthread(3)
It is enabled unconditionally since 2003 and used only for rwlocks and spinlocks. LLVM sanitizers make assumptions that these checks are enabled always.
This commit is contained in:
parent
0263ce38fb
commit
91719d9fbd
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: pthread_int.h,v 1.100 2020/01/28 13:08:40 ad Exp $ */
|
/* $NetBSD: pthread_int.h,v 1.101 2020/02/05 11:05:10 kamil Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2001, 2002, 2003, 2006, 2007, 2008, 2020
|
* Copyright (c) 2001, 2002, 2003, 2006, 2007, 2008, 2020
|
||||||
|
@ -36,7 +36,6 @@
|
||||||
#include <sys/tls.h>
|
#include <sys/tls.h>
|
||||||
|
|
||||||
/* #define PTHREAD__DEBUG */
|
/* #define PTHREAD__DEBUG */
|
||||||
#define ERRORCHECK
|
|
||||||
|
|
||||||
#include "pthread_types.h"
|
#include "pthread_types.h"
|
||||||
#include "pthread_queue.h"
|
#include "pthread_queue.h"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: pthread_rwlock.c,v 1.38 2020/01/31 17:52:14 kamil Exp $ */
|
/* $NetBSD: pthread_rwlock.c,v 1.39 2020/02/05 11:05:10 kamil Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2002, 2006, 2007, 2008 The NetBSD Foundation, Inc.
|
* Copyright (c) 2002, 2006, 2007, 2008 The NetBSD Foundation, Inc.
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: pthread_rwlock.c,v 1.38 2020/01/31 17:52:14 kamil Exp $");
|
__RCSID("$NetBSD: pthread_rwlock.c,v 1.39 2020/02/05 11:05:10 kamil Exp $");
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/lwpctl.h>
|
#include <sys/lwpctl.h>
|
||||||
|
@ -158,10 +158,8 @@ pthread__rwlock_rdlock(pthread_rwlock_t *ptr, const struct timespec *ts)
|
||||||
pthread_t self;
|
pthread_t self;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid rwlock",
|
pthread__error(EINVAL, "Invalid rwlock",
|
||||||
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
for (owner = (uintptr_t)ptr->ptr_owner;; owner = next) {
|
for (owner = (uintptr_t)ptr->ptr_owner;; owner = next) {
|
||||||
/*
|
/*
|
||||||
|
@ -248,10 +246,8 @@ pthread_rwlock_tryrdlock(pthread_rwlock_t *ptr)
|
||||||
if (__predict_false(__uselibcstub))
|
if (__predict_false(__uselibcstub))
|
||||||
return __libc_rwlock_tryrdlock_stub(ptr);
|
return __libc_rwlock_tryrdlock_stub(ptr);
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid rwlock",
|
pthread__error(EINVAL, "Invalid rwlock",
|
||||||
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't get a readlock if there is a writer or if there are waiting
|
* Don't get a readlock if there is a writer or if there are waiting
|
||||||
|
@ -283,10 +279,8 @@ pthread__rwlock_wrlock(pthread_rwlock_t *ptr, const struct timespec *ts)
|
||||||
self = pthread__self();
|
self = pthread__self();
|
||||||
_DIAGASSERT(((uintptr_t)self & RW_FLAGMASK) == 0);
|
_DIAGASSERT(((uintptr_t)self & RW_FLAGMASK) == 0);
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid rwlock",
|
pthread__error(EINVAL, "Invalid rwlock",
|
||||||
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
for (owner = (uintptr_t)ptr->ptr_owner;; owner = next) {
|
for (owner = (uintptr_t)ptr->ptr_owner;; owner = next) {
|
||||||
/*
|
/*
|
||||||
|
@ -374,10 +368,8 @@ pthread_rwlock_trywrlock(pthread_rwlock_t *ptr)
|
||||||
if (__predict_false(__uselibcstub))
|
if (__predict_false(__uselibcstub))
|
||||||
return __libc_rwlock_trywrlock_stub(ptr);
|
return __libc_rwlock_trywrlock_stub(ptr);
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid rwlock",
|
pthread__error(EINVAL, "Invalid rwlock",
|
||||||
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
self = pthread__self();
|
self = pthread__self();
|
||||||
_DIAGASSERT(((uintptr_t)self & RW_FLAGMASK) == 0);
|
_DIAGASSERT(((uintptr_t)self & RW_FLAGMASK) == 0);
|
||||||
|
@ -453,10 +445,8 @@ pthread_rwlock_unlock(pthread_rwlock_t *ptr)
|
||||||
if (__predict_false(__uselibcstub))
|
if (__predict_false(__uselibcstub))
|
||||||
return __libc_rwlock_unlock_stub(ptr);
|
return __libc_rwlock_unlock_stub(ptr);
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid rwlock",
|
pthread__error(EINVAL, "Invalid rwlock",
|
||||||
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
ptr->ptr_magic == _PT_RWLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef PTHREAD__ATOMIC_IS_MEMBAR
|
#ifndef PTHREAD__ATOMIC_IS_MEMBAR
|
||||||
membar_exit();
|
membar_exit();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: pthread_spin.c,v 1.7 2020/01/31 17:52:14 kamil Exp $ */
|
/* $NetBSD: pthread_spin.c,v 1.8 2020/02/05 11:05:10 kamil Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2001, 2006, 2007 The NetBSD Foundation, Inc.
|
* Copyright (c) 2001, 2006, 2007 The NetBSD Foundation, Inc.
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: pthread_spin.c,v 1.7 2020/01/31 17:52:14 kamil Exp $");
|
__RCSID("$NetBSD: pthread_spin.c,v 1.8 2020/02/05 11:05:10 kamil Exp $");
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/ras.h>
|
#include <sys/ras.h>
|
||||||
|
@ -53,11 +53,10 @@ int
|
||||||
pthread_spin_init(pthread_spinlock_t *lock, int pshared)
|
pthread_spin_init(pthread_spinlock_t *lock, int pshared)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid pshared",
|
pthread__error(EINVAL, "Invalid pshared",
|
||||||
pshared == PTHREAD_PROCESS_PRIVATE ||
|
pshared == PTHREAD_PROCESS_PRIVATE ||
|
||||||
pshared == PTHREAD_PROCESS_SHARED);
|
pshared == PTHREAD_PROCESS_SHARED);
|
||||||
#endif
|
|
||||||
lock->pts_magic = _PT_SPINLOCK_MAGIC;
|
lock->pts_magic = _PT_SPINLOCK_MAGIC;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -75,13 +74,11 @@ int
|
||||||
pthread_spin_destroy(pthread_spinlock_t *lock)
|
pthread_spin_destroy(pthread_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid spinlock",
|
pthread__error(EINVAL, "Invalid spinlock",
|
||||||
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
||||||
|
|
||||||
if (!__SIMPLELOCK_UNLOCKED_P(&lock->pts_spin))
|
if (!__SIMPLELOCK_UNLOCKED_P(&lock->pts_spin))
|
||||||
return EBUSY;
|
return EBUSY;
|
||||||
#endif
|
|
||||||
|
|
||||||
lock->pts_magic = _PT_SPINLOCK_DEAD;
|
lock->pts_magic = _PT_SPINLOCK_DEAD;
|
||||||
|
|
||||||
|
@ -93,10 +90,8 @@ pthread_spin_lock(pthread_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
pthread_t self;
|
pthread_t self;
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid spinlock",
|
pthread__error(EINVAL, "Invalid spinlock",
|
||||||
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
self = pthread__self();
|
self = pthread__self();
|
||||||
while (pthread__spintrylock(self, &lock->pts_spin) == 0) {
|
while (pthread__spintrylock(self, &lock->pts_spin) == 0) {
|
||||||
|
@ -111,10 +106,8 @@ pthread_spin_trylock(pthread_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
pthread_t self;
|
pthread_t self;
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid spinlock",
|
pthread__error(EINVAL, "Invalid spinlock",
|
||||||
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
self = pthread__self();
|
self = pthread__self();
|
||||||
if (pthread__spintrylock(self, &lock->pts_spin) == 0)
|
if (pthread__spintrylock(self, &lock->pts_spin) == 0)
|
||||||
|
@ -127,10 +120,8 @@ pthread_spin_unlock(pthread_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
pthread_t self;
|
pthread_t self;
|
||||||
|
|
||||||
#ifdef ERRORCHECK
|
|
||||||
pthread__error(EINVAL, "Invalid spinlock",
|
pthread__error(EINVAL, "Invalid spinlock",
|
||||||
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
lock->pts_magic == _PT_SPINLOCK_MAGIC);
|
||||||
#endif
|
|
||||||
|
|
||||||
self = pthread__self();
|
self = pthread__self();
|
||||||
pthread__spinunlock(self, &lock->pts_spin);
|
pthread__spinunlock(self, &lock->pts_spin);
|
||||||
|
|
Loading…
Reference in New Issue