aboutsummaryrefslogtreecommitdiff
path: root/externals/mysql/mysys/thr_rwlock.c
diff options
context:
space:
mode:
authorclick <none@none>2010-08-07 19:01:57 +0200
committerclick <none@none>2010-08-07 19:01:57 +0200
commitce435f6d4f84462c0707bbc608d767648d5e99c3 (patch)
treedabac44fd559c925acf2171adb0ae3038f05ad7b /externals/mysql/mysys/thr_rwlock.c
parent3cc24e0971f96b9ffa4032a154750e4224ea499d (diff)
BuildSystem/VS: Remove now defunct an unmaintained buildfiles - use CMake for generating solutionfiles
--HG-- branch : trunk
Diffstat (limited to 'externals/mysql/mysys/thr_rwlock.c')
-rw-r--r--externals/mysql/mysys/thr_rwlock.c171
1 files changed, 0 insertions, 171 deletions
diff --git a/externals/mysql/mysys/thr_rwlock.c b/externals/mysql/mysys/thr_rwlock.c
deleted file mode 100644
index 280a0ec19e7..00000000000
--- a/externals/mysql/mysys/thr_rwlock.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Copyright (C) 2000 MySQL AB
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-
-/* Synchronization - readers / writer thread locks */
-
-#include "mysys_priv.h"
-#if defined(THREAD) && !defined(HAVE_PTHREAD_RWLOCK_RDLOCK) && !defined(HAVE_RWLOCK_INIT)
-#include <errno.h>
-
-/*
- 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.
-* All rights reserved.
-*
-* 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_rwlock_init(rw_lock_t *rwp, void *arg __attribute__((unused)))
-{
- 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;
-
- return(0);
-}
-
-
-int my_rwlock_destroy(rw_lock_t *rwp)
-{
- pthread_mutex_destroy( &rwp->lock );
- pthread_cond_destroy( &rwp->readers );
- pthread_cond_destroy( &rwp->writers );
- return(0);
-}
-
-
-int my_rw_rdlock(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(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(rw_lock_t *rwp)
-{
- pthread_mutex_lock(&rwp->lock);
- rwp->waiters++; /* another writer queued */
-
- while (rwp->state)
- pthread_cond_wait(&rwp->writers, &rwp->lock);
- rwp->state = -1;
- rwp->waiters--;
- pthread_mutex_unlock(&rwp->lock);
- return(0);
-}
-
-
-int my_rw_trywrlock(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;
- }
- pthread_mutex_unlock(&rwp->lock);
- return(res);
-}
-
-
-int my_rw_unlock(rw_lock_t *rwp)
-{
- DBUG_PRINT("rw_unlock",
- ("state: %d waiters: %d", rwp->state, rwp->waiters));
- pthread_mutex_lock(&rwp->lock);
-
- if (rwp->state == -1) /* writer releasing */
- {
- rwp->state= 0; /* mark as available */
-
- if ( rwp->waiters ) /* writers queued */
- pthread_cond_signal( &rwp->writers );
- else
- pthread_cond_broadcast( &rwp->readers );
- }
- else
- {
- if ( --rwp->state == 0 ) /* no more readers */
- pthread_cond_signal( &rwp->writers );
- }
-
- pthread_mutex_unlock( &rwp->lock );
- return(0);
-}
-
-#endif