mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
MDEV-34530 dead code in the thr_rwlock.c
remove it
This commit is contained in:
parent
7ba12d42de
commit
f12634f5a4
2 changed files with 5 additions and 170 deletions
|
@ -414,6 +414,10 @@ CHECK_FUNCTION_EXISTS (vsnprintf HAVE_VSNPRINTF)
|
|||
CHECK_FUNCTION_EXISTS (memalign HAVE_MEMALIGN)
|
||||
CHECK_FUNCTION_EXISTS (nl_langinfo HAVE_NL_LANGINFO)
|
||||
|
||||
IF(NOT HAVE_PTHREAD_RWLOCK_RDLOCK AND NOT HAVE_RWLOCK_INIT AND NOT WIN32)
|
||||
MESSAGE(FATAL_ERROR "No usable rwlock implementation found")
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_SYS_EVENT_H)
|
||||
CHECK_FUNCTION_EXISTS (kqueue HAVE_KQUEUE)
|
||||
ENDIF()
|
||||
|
|
|
@ -81,176 +81,7 @@ int my_rw_destroy(my_rw_lock_t* rwp)
|
|||
}
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
Source base from Sun Microsystems SPILT, simplified for MySQL use
|
||||
-- Joshua Chamas
|
||||
Some cleanup and additional code by Monty
|
||||
*/
|
||||
|
||||
/*
|
||||
* Multithreaded Demo Source
|
||||
*
|
||||
* Copyright (C) 1995 by Sun Microsystems, Inc.
|
||||
*
|
||||
*
|
||||
* This file is a product of SunSoft, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all
|
||||
* media and as a part of the software program in whole or part.
|
||||
* Users may copy, modify or distribute this file at will.
|
||||
*
|
||||
* THIS FILE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
|
||||
* THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* This file is provided with no support and without any obligation on the
|
||||
* part of SunSoft, Inc. to assist in its use, correction, modification or
|
||||
* enhancement.
|
||||
*
|
||||
* SUNSOFT AND SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT
|
||||
* TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS
|
||||
* FILE OR ANY PART THEREOF.
|
||||
*
|
||||
* IN NO EVENT WILL SUNSOFT OR SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY
|
||||
* LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
|
||||
* DAMAGES, EVEN IF THEY HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGES.
|
||||
*
|
||||
* SunSoft, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
int my_rw_init(my_rw_lock_t *rwp)
|
||||
{
|
||||
pthread_condattr_t cond_attr;
|
||||
|
||||
pthread_mutex_init( &rwp->lock, MY_MUTEX_INIT_FAST);
|
||||
pthread_condattr_init( &cond_attr );
|
||||
pthread_cond_init( &rwp->readers, &cond_attr );
|
||||
pthread_cond_init( &rwp->writers, &cond_attr );
|
||||
pthread_condattr_destroy(&cond_attr);
|
||||
|
||||
rwp->state = 0;
|
||||
rwp->waiters = 0;
|
||||
#ifdef SAFE_MUTEX
|
||||
rwp->write_thread = 0;
|
||||
#endif
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
int my_rw_destroy(my_rw_lock_t *rwp)
|
||||
{
|
||||
DBUG_ASSERT(rwp->state == 0);
|
||||
pthread_mutex_destroy( &rwp->lock );
|
||||
pthread_cond_destroy( &rwp->readers );
|
||||
pthread_cond_destroy( &rwp->writers );
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
int my_rw_rdlock(my_rw_lock_t *rwp)
|
||||
{
|
||||
pthread_mutex_lock(&rwp->lock);
|
||||
|
||||
/* active or queued writers */
|
||||
while (( rwp->state < 0 ) || rwp->waiters)
|
||||
pthread_cond_wait( &rwp->readers, &rwp->lock);
|
||||
|
||||
rwp->state++;
|
||||
pthread_mutex_unlock(&rwp->lock);
|
||||
return(0);
|
||||
}
|
||||
|
||||
int my_rw_tryrdlock(my_rw_lock_t *rwp)
|
||||
{
|
||||
int res;
|
||||
pthread_mutex_lock(&rwp->lock);
|
||||
if ((rwp->state < 0 ) || rwp->waiters)
|
||||
res= EBUSY; /* Can't get lock */
|
||||
else
|
||||
{
|
||||
res=0;
|
||||
rwp->state++;
|
||||
}
|
||||
pthread_mutex_unlock(&rwp->lock);
|
||||
return(res);
|
||||
}
|
||||
|
||||
|
||||
int my_rw_wrlock(my_rw_lock_t *rwp)
|
||||
{
|
||||
pthread_mutex_lock(&rwp->lock);
|
||||
rwp->waiters++; /* another writer queued */
|
||||
|
||||
my_rw_lock_assert_not_write_owner(rwp);
|
||||
|
||||
while (rwp->state)
|
||||
pthread_cond_wait(&rwp->writers, &rwp->lock);
|
||||
rwp->state = -1;
|
||||
rwp->waiters--;
|
||||
#ifdef SAFE_MUTEX
|
||||
rwp->write_thread= pthread_self();
|
||||
#endif
|
||||
pthread_mutex_unlock(&rwp->lock);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
int my_rw_trywrlock(my_rw_lock_t *rwp)
|
||||
{
|
||||
int res;
|
||||
|
||||
pthread_mutex_lock(&rwp->lock);
|
||||
if (rwp->state)
|
||||
res= EBUSY; /* Can't get lock */
|
||||
else
|
||||
{
|
||||
res=0;
|
||||
rwp->state = -1;
|
||||
#ifdef SAFE_MUTEX
|
||||
rwp->write_thread= pthread_self();
|
||||
#endif
|
||||
}
|
||||
pthread_mutex_unlock(&rwp->lock);
|
||||
return(res);
|
||||
}
|
||||
|
||||
|
||||
int my_rw_unlock(my_rw_lock_t *rwp)
|
||||
{
|
||||
DBUG_PRINT("rw_unlock",
|
||||
("state: %d waiters: %d", rwp->state, rwp->waiters));
|
||||
pthread_mutex_lock(&rwp->lock);
|
||||
|
||||
DBUG_ASSERT(rwp->state != 0);
|
||||
|
||||
if (rwp->state == -1) /* writer releasing */
|
||||
{
|
||||
my_rw_lock_assert_write_owner(rwp);
|
||||
rwp->state= 0; /* mark as available */
|
||||
#ifdef SAFE_MUTEX
|
||||
rwp->write_thread= 0;
|
||||
#endif
|
||||
|
||||
if ( rwp->waiters ) /* writers queued */
|
||||
pthread_cond_signal( &rwp->writers );
|
||||
else
|
||||
pthread_cond_broadcast( &rwp->readers );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( --rwp->state == 0 && /* no more readers */
|
||||
rwp->waiters)
|
||||
pthread_cond_signal( &rwp->writers );
|
||||
}
|
||||
|
||||
pthread_mutex_unlock( &rwp->lock );
|
||||
return(0);
|
||||
}
|
||||
|
||||
#error no pthread_rwlock_init
|
||||
#endif /* !defined _WIN32 */
|
||||
#endif /* NEED_MY_RW_LOCK*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue