diff options
author | unknown <kent@mysql.com/kent-amd64.(none)> | 2007-03-12 13:12:42 +0100 |
---|---|---|
committer | unknown <kent@mysql.com/kent-amd64.(none)> | 2007-03-12 13:12:42 +0100 |
commit | 32b370bb7f561a6623c1d0e028331250d6936b0a (patch) | |
tree | 2a06fb2d881cc434e5f6e2742f92ff89950ca8e0 /mysys | |
parent | 7a512b029dd1420e153559888e3715fd1b41cbaf (diff) | |
download | mariadb-git-32b370bb7f561a6623c1d0e028331250d6936b0a.tar.gz |
Makefile.am, configure.in, mysys.dsp:
Removed unused files
.del-my_winsem.c:
Delete: mysys/my_winsem.c
.del-my_semaphore.c:
Delete: mysys/my_semaphore.c
.del-my_semaphore.h:
Delete: include/my_semaphore.h
BitKeeper/deleted/.del-my_semaphore.c:
Delete: mysys/my_semaphore.c
BitKeeper/deleted/.del-my_semaphore.h:
Delete: include/my_semaphore.h
BitKeeper/deleted/.del-my_winsem.c:
Delete: mysys/my_winsem.c
VC++Files/mysys/mysys.dsp:
Removed unused files
configure.in:
Removed unused files
include/Makefile.am:
Removed unused files
mysys/Makefile.am:
Removed unused files
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/Makefile.am | 2 | ||||
-rw-r--r-- | mysys/my_semaphore.c | 104 | ||||
-rw-r--r-- | mysys/my_winsem.c | 406 |
3 files changed, 1 insertions, 511 deletions
diff --git a/mysys/Makefile.am b/mysys/Makefile.am index 5dc54817fd7..68d5da5afe8 100644 --- a/mysys/Makefile.am +++ b/mysys/Makefile.am @@ -49,7 +49,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c\ my_quick.c my_lockmem.c my_static.c \ my_sync.c my_getopt.c my_mkdir.c \ default.c my_compress.c checksum.c raid.cc \ - my_net.c my_semaphore.c my_port.c my_sleep.c \ + my_net.c my_port.c my_sleep.c \ my_vsnprintf.c charset.c my_bitmap.c my_bit.c md5.c \ my_gethostbyname.c rijndael.c my_aes.c sha1.c \ my_netware.c diff --git a/mysys/my_semaphore.c b/mysys/my_semaphore.c deleted file mode 100644 index aa216cbc289..00000000000 --- a/mysys/my_semaphore.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright (C) 2002 MySQL AB & MySQL Finland AB & TCX DataKonsult 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; either version 2 of the License, or - (at your option) any later version. - - 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 */ - -/* - Simple implementation of semaphores, needed to compile MySQL on systems - that doesn't support semaphores. -*/ - -#include <my_global.h> -#include <my_semaphore.h> -#include <errno.h> - -#if !defined(__WIN__) && !defined(HAVE_SEMAPHORE_H) && defined(THREAD) - -int sem_init(sem_t * sem, int pshared, uint value) -{ - sem->count=value; - pthread_cond_init(&sem->cond, 0); - pthread_mutex_init(&sem->mutex, 0); - return 0; -} - -int sem_destroy(sem_t * sem) -{ - int err1,err2; - err1=pthread_cond_destroy(&sem->cond); - err2=pthread_mutex_destroy(&sem->mutex); - if (err1 || err2) - { - errno=err1 ? err1 : err2; - return -1; - } - return 0; -} - -int sem_wait(sem_t * sem) -{ - if ((errno=pthread_mutex_lock(&sem->mutex))) - return -1; - while (!sem->count) - pthread_cond_wait(&sem->cond, &sem->mutex); - if (errno) - return -1; - sem->count--; /* mutex is locked here */ - pthread_mutex_unlock(&sem->mutex); - return 0; -} - -int sem_trywait(sem_t * sem) -{ - if ((errno=pthread_mutex_lock(&sem->mutex))) - return -1; - if (sem->count) - sem->count--; - else - errno=EAGAIN; - pthread_mutex_unlock(&sem->mutex); - return errno ? -1 : 0; -} - - -int sem_post(sem_t * sem) -{ - if ((errno=pthread_mutex_lock(&sem->mutex))) - return -1; - sem->count++; - pthread_mutex_unlock(&sem->mutex); /* does it really matter what to do */ - pthread_cond_signal(&sem->cond); /* first: x_unlock or x_signal ? */ - return 0; -} - -int sem_post_multiple(sem_t * sem, uint count) -{ - if ((errno=pthread_mutex_lock(&sem->mutex))) - return -1; - sem->count+=count; - pthread_mutex_unlock(&sem->mutex); /* does it really matter what to do */ - pthread_cond_broadcast(&sem->cond); /* first: x_unlock or x_broadcast ? */ - return 0; -} - -int sem_getvalue(sem_t * sem, uint *sval) -{ - if ((errno=pthread_mutex_lock(&sem->mutex))) - return -1; - *sval=sem->count; - pthread_mutex_unlock(&sem->mutex); - return 0; -} - -#endif /* !defined(__WIN__) && !defined(HAVE_SEMAPHORE_H) && defined(THREAD) */ diff --git a/mysys/my_winsem.c b/mysys/my_winsem.c deleted file mode 100644 index e2713d189b2..00000000000 --- a/mysys/my_winsem.c +++ /dev/null @@ -1,406 +0,0 @@ -/* - * ------------------------------------------------------------- - * - * Module: my_semaphore.c (Original: semaphore.c from pthreads library) - * - * Purpose: - * Semaphores aren't actually part of the PThreads standard. - * They are defined by the POSIX Standard: - * - * POSIX 1003.1b-1993 (POSIX.1b) - * - * ------------------------------------------------------------- - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA - */ - -/* - NEED_SEM is not used in MySQL and should only be needed under - Windows CE. - - The big changes compared to the original version was to not allocate - any additional memory in sem_init() but to instead store everthing - we need in sem_t. - - TODO: - To get HAVE_CREATESEMAPHORE we have to define the struct - in my_semaphore.h -*/ - -#include "mysys_priv.h" -#ifdef __WIN__ -#include "my_semaphore.h" -#include <errno.h> - -/* - DOCPUBLIC - This function initializes an unnamed semaphore. the - initial value of the semaphore is 'value' - - PARAMETERS - sem Pointer to an instance of sem_t - - pshared If zero, this semaphore may only be shared between - threads in the same process. - If nonzero, the semaphore can be shared between - processes - - value Initial value of the semaphore counter - - RESULTS - 0 Successfully created semaphore, - -1 Failed, error in errno - - ERRNO - EINVAL 'sem' is not a valid semaphore, - ENOSPC A required resource has been exhausted, - ENOSYS Semaphores are not supported, - EPERM The process lacks appropriate privilege - -*/ - -int -sem_init (sem_t *sem, int pshared, unsigned int value) -{ - int result = 0; - - if (pshared != 0) - { - /* - We don't support creating a semaphore that can be shared between - processes - */ - result = EPERM; - } - else - { -#ifndef HAVE_CREATESEMAPHORE - sem->value = value; - sem->event = CreateEvent(NULL, - FALSE, /* manual reset */ - FALSE, /* initial state */ - NULL); - if (!sem->event) - result = ENOSPC; - else - { - if (value) - SetEvent(sem->event); - InitializeCriticalSection(&sem->sem_lock_cs); - } -#else /* HAVE_CREATESEMAPHORE */ - *sem = CreateSemaphore (NULL, /* Always NULL */ - value, /* Initial value */ - 0x7FFFFFFFL, /* Maximum value */ - NULL); /* Name */ - if (!*sem) - result = ENOSPC; -#endif /* HAVE_CREATESEMAPHORE */ - } - if (result != 0) - { - errno = result; - return -1; - } - return 0; -} /* sem_init */ - - -/* - DOCPUBLIC - This function destroys an unnamed semaphore. - - PARAMETERS - sem Pointer to an instance of sem_t - - RESULTS - 0 Successfully destroyed semaphore, - -1 Failed, error in errno - ERRNO - EINVAL 'sem' is not a valid semaphore, - ENOSYS Semaphores are not supported, - EBUSY Threads (or processes) are currently blocked on 'sem' -*/ - -int -sem_destroy (sem_t * sem) -{ - int result = 0; - -#ifdef EXTRA_DEBUG - if (sem == NULL || *sem == NULL) - { - errno=EINVAL; - return; - } -#endif /* EXTRA_DEBUG */ - -#ifndef HAVE_CREATESEMAPHORE - if (! CloseHandle(sem->event)) - result = EINVAL; - else - DeleteCriticalSection(&sem->sem_lock_cs); -#else /* HAVE_CREATESEMAPHORE */ - if (!CloseHandle(*sem)) - result = EINVAL; -#endif /* HAVE_CREATESEMAPHORE */ - if (result) - { - errno = result; - return -1; - } - *sem=0; /* Safety */ - return 0; -} /* sem_destroy */ - - -/* - DOCPUBLIC - This function tries to wait on a semaphore. If the - semaphore value is greater than zero, it decreases - its value by one. If the semaphore value is zero, then - this function returns immediately with the error EAGAIN - - PARAMETERS - sem Pointer to an instance of sem_t - - RESULTS - 0 Successfully decreased semaphore, - -1 Failed, error in errno - - ERRNO - EAGAIN The semaphore was already locked, - EINVAL 'sem' is not a valid semaphore, - ENOSYS Semaphores are not supported, - EINTR The function was interrupted by a signal, - EDEADLK A deadlock condition was detected. -*/ - -int -sem_trywait(sem_t * sem) -{ -#ifndef HAVE_CREATESEMAPHORE - /* not yet implemented! */ - int errno = EINVAL; - return -1; -#else /* HAVE_CREATESEMAPHORE */ -#ifdef EXTRA_DEBUG - if (sem == NULL || *sem == NULL) - { - errno=EINVAL; - return -1; - } -#endif /* EXTRA_DEBUG */ - if (WaitForSingleObject (*sem, 0) == WAIT_TIMEOUT) - { - errno= EAGAIN; - return -1; - } - return 0; -#endif /* HAVE_CREATESEMAPHORE */ - -} /* sem_trywait */ - - -#ifndef HAVE_CREATESEMAPHORE - -static void -ptw32_decrease_semaphore(sem_t * sem) -{ - EnterCriticalSection(&sem->sem_lock_cs); - DBUG_ASSERT(sem->value != 0); - sem->value--; - if (sem->value != 0) - SetEvent(sem->event); - LeaveCriticalSection(&sem->sem_lock_cs); -} - -static BOOL -ptw32_increase_semaphore(sem_t * sem, unsigned int n) -{ - BOOL result=FALSE; - - EnterCriticalSection(&sem->sem_lock_cs); - if (sem->value + n > sem->value) - { - sem->value += n; - SetEvent(sem->event); - result = TRUE; - } - LeaveCriticalSection(&sem->sem_lock_cs); - return result; -} - -#endif /* HAVE_CREATESEMAPHORE */ - - -/* - ------------------------------------------------------ - DOCPUBLIC - This function waits on a semaphore. If the - semaphore value is greater than zero, it decreases - its value by one. If the semaphore value is zero, then - the calling thread (or process) is blocked until it can - successfully decrease the value or until interrupted by - a signal. - - PARAMETERS - sem Pointer to an instance of sem_t - - RESULTS - 0 Successfully decreased semaphore, - -1 Failed, error in errno - - ERRNO - EINVAL 'Sem' is not a valid semaphore, - ENOSYS Semaphores are not supported, - EINTR The function was interrupted by a signal, - EDEADLK A deadlock condition was detected. -*/ - -int -sem_wait(sem_t *sem) -{ - int result; - -#ifdef EXTRA_DEBUG - if (sem == NULL || *sem == NULL) - { - errno=EINVAL; - return -1; - } -#endif /* EXTRA_DEBUG */ - -#ifndef HAVE_CREATESEMAPHORE - result=WaitForSingleObject(sem->event, INFINITE); -#else - result=WaitForSingleObject(*sem, INFINITE); -#endif - if (result == WAIT_FAILED || result == WAIT_ABANDONED_0) - result = EINVAL; - else if (result == WAIT_TIMEOUT) - result = ETIMEDOUT; - else - result=0; - if (result) - { - errno = result; - return -1; - } -#ifndef HAVE_CREATESEMAPHORE - ptw32_decrease_semaphore(sem); -#endif /* HAVE_CREATESEMAPHORE */ - return 0; -} - - -/* - ------------------------------------------------------ - DOCPUBLIC - This function posts a wakeup to a semaphore. If there - are waiting threads (or processes), one is awakened; - otherwise, the semaphore value is incremented by one. - - PARAMETERS - sem Pointer to an instance of sem_t - - RESULTS - 0 Successfully posted semaphore, - -1 Failed, error in errno - - ERRNO - EINVAL 'sem' is not a valid semaphore, - ENOSYS Semaphores are not supported, - -*/ - -int -sem_post (sem_t * sem) -{ -#ifdef EXTRA_DEBUG - if (sem == NULL || *sem == NULL) - { - errno=EINVAL; - return -1; - } -#endif /* EXTRA_DEBUG */ - -#ifndef HAVE_CREATESEMAPHORE - if (! ptw32_increase_semaphore(sem, 1)) -#else /* HAVE_CREATESEMAPHORE */ - if (! ReleaseSemaphore(*sem, 1, 0)) -#endif /* HAVE_CREATESEMAPHORE */ - { - errno=EINVAL; - return -1; - } - return 0; -} - - -/* - ------------------------------------------------------ - DOCPUBLIC - This function posts multiple wakeups to a semaphore. If there - are waiting threads (or processes), n <= count are awakened; - the semaphore value is incremented by count - n. - - PARAMETERS - sem Pointer to an instance of sem_t - count Counter, must be greater than zero. - - RESULTS - 0 Successfully posted semaphore, - -1 Failed, error in errno - - ERRNO - EINVAL 'sem' is not a valid semaphore or count is less - than or equal to zero. -*/ - -int -sem_post_multiple (sem_t * sem, unsigned int count) -{ -#ifdef EXTRA_DEBUG - if (sem == NULL || *sem == NULL || count <= 0) - { - errno=EINVAL; - return -1; - } -#endif /* EXTRA_DEBUG */ -#ifndef HAVE_CREATESEMAPHORE - if (! ptw32_increase_semaphore (sem, count)) -#else /* HAVE_CREATESEMAPHORE */ - if (! ReleaseSemaphore(*sem, count, 0)) -#endif /* HAVE_CREATESEMAPHORE */ - { - errno = EINVAL; - return -1; - } - return 0; -} - -int -sem_getvalue (sem_t *sem, unsigned int *sval) -{ - errno = ENOSYS; - return -1; -} /* sem_getvalue */ - -#endif /* __WIN__ */ |