summaryrefslogtreecommitdiff
path: root/mysys/my_winsem.c
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2001-12-13 02:31:19 +0200
committerunknown <monty@hundin.mysql.fi>2001-12-13 02:31:19 +0200
commit33a096829b0f2a294b162e11ad81df788732c384 (patch)
tree47a4c1a60e94a3e70ea5564124a296f7cd71605e /mysys/my_winsem.c
parentf0f71accfc2b6fcc6dfeaa1ac4b8b73d071ff3a1 (diff)
downloadmariadb-git-33a096829b0f2a294b162e11ad81df788732c384.tar.gz
Fixed sleep time in mysql-test-run
Fixed bug in query cache. Cleaned up des_crypt code. BitKeeper/deleted/.del-fsck.mysql~87170d4358b50d60: Delete: fs/fsck.mysql Docs/manual.texi: Changed != to <> mysql-test/mysql-test-run.sh: Fix sleep times to take into account creation of InnoDB tables. mysql-test/r/group_by.result: More tests mysql-test/r/query_cache.result: More tests mysql-test/r/union.result: More tests mysql-test/t/func_str.test: Fix for FreeBSD mysql-test/t/query_cache.test: More tests mysql-test/t/union.test: More tests mysys/my_winsem.c: Cleanup comments sql/des_key_file.cc: Cleanup des_crypt code sql/item_strfunc.cc: Cleanup des_crypt code sql/item_strfunc.h: Cleanup des_crypt code sql/mysql_priv.h: Cleanup des_crypt code sql/mysqld.cc: Cleanup des_crypt code sql/sql_acl.cc: For for GRANT and lower-case-table names sql/sql_cache.cc: Function for integrity checking. Fixed bug when merging blocks. sql/sql_cache.h: Function for integrity checking. sql/sql_delete.cc: Cleanup sql/sql_parse.cc: For for GRANT and lower-case-table names sql/sql_union.cc: Cleanup & fixed bug in LIMIT handling sql/sql_yacc.yy: C
Diffstat (limited to 'mysys/my_winsem.c')
-rw-r--r--mysys/my_winsem.c174
1 files changed, 74 insertions, 100 deletions
diff --git a/mysys/my_winsem.c b/mysys/my_winsem.c
index d45b43a4473..268a05a0b21 100644
--- a/mysys/my_winsem.c
+++ b/mysys/my_winsem.c
@@ -4,10 +4,10 @@
* 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:
+ * Semaphores aren't actually part of the PThreads standard.
+ * They are defined by the POSIX Standard:
*
- * POSIX 1003.1b-1993 (POSIX.1b)
+ * POSIX 1003.1b-1993 (POSIX.1b)
*
* -------------------------------------------------------------
*
@@ -52,33 +52,27 @@
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
-
- DESCRIPTION
- This function initializes an unnamed semaphore. The
- initial value of the semaphore is set to 'value'.
-
+ 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
+ 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
-
+ 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
@@ -111,10 +105,10 @@ sem_init (sem_t *sem, int pshared, unsigned int value)
InitializeCriticalSection(&sem->sem_lock_cs);
}
#else /* HAVE_CREATESEMAPHORE */
- *sem = CreateSemaphore (NULL, /* Always NULL */
- value, /* Initial value */
+ *sem = CreateSemaphore (NULL, /* Always NULL */
+ value, /* Initial value */
0x7FFFFFFFL, /* Maximum value */
- NULL); /* Name */
+ NULL); /* Name */
if (!*sem)
result = ENOSPC;
#endif /* HAVE_CREATESEMAPHORE */
@@ -133,20 +127,15 @@ sem_init (sem_t *sem, int pshared, unsigned int value)
This function destroys an unnamed semaphore.
PARAMETERS
- sem
- pointer to an instance of sem_t
-
- DESCRIPTION
- This function destroys an unnamed semaphore.
+ sem Pointer to an instance of sem_t
RESULTS
- 0 successfully destroyed semaphore,
- -1 failed, error in errno
+ 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'
+ EINVAL 'sem' is not a valid semaphore,
+ ENOSYS Semaphores are not supported,
+ EBUSY Threads (or processes) are currently blocked on 'sem'
*/
int
@@ -154,7 +143,7 @@ sem_destroy (sem_t * sem)
{
int result = 0;
-#ifdef EXTRA_DEBUG
+#ifdef EXTRA_DEBUG
if (sem == NULL || *sem == NULL)
{
errno=EINVAL;
@@ -183,27 +172,24 @@ sem_destroy (sem_t * sem)
/*
DOCPUBLIC
- This function tries to wait on a semaphore.
-
- PARAMETERS
- sem
- pointer to an instance of sem_t
-
- DESCRIPTION
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
+ 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.
+ 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
@@ -214,7 +200,7 @@ sem_trywait(sem_t * sem)
int errno = EINVAL;
return -1;
#else /* HAVE_CREATESEMAPHORE */
-#ifdef EXTRA_DEBUG
+#ifdef EXTRA_DEBUG
if (sem == NULL || *sem == NULL)
{
errno=EINVAL;
@@ -234,7 +220,7 @@ sem_trywait(sem_t * sem)
#ifndef HAVE_CREATESEMAPHORE
-static void
+static void
ptw32_decrease_semaphore(sem_t * sem)
{
EnterCriticalSection(&sem->sem_lock_cs);
@@ -267,13 +253,6 @@ ptw32_increase_semaphore(sem_t * sem, unsigned int n)
/*
------------------------------------------------------
DOCPUBLIC
- This function waits on a semaphore.
-
- PARAMETERS
- sem
- pointer to an instance of sem_t
-
- DESCRIPTION
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
@@ -281,15 +260,18 @@ ptw32_increase_semaphore(sem_t * sem, unsigned int n)
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.
+ 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
@@ -297,7 +279,7 @@ sem_wait(sem_t *sem)
{
int result;
-#ifdef EXTRA_DEBUG
+#ifdef EXTRA_DEBUG
if (sem == NULL || *sem == NULL)
{
errno=EINVAL;
@@ -331,30 +313,27 @@ sem_wait(sem_t *sem)
/*
------------------------------------------------------
DOCPUBLIC
- This function posts a wakeup to a semaphore.
-
- PARAMETERS
- sem
- pointer to an instance of sem_t
-
- DESCRIPTION
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
+ 0 Successfully posted semaphore,
+ -1 Failed, error in errno
+
ERRNO
- EINVAL 'sem' is not a valid semaphore,
- ENOSYS semaphores are not supported,
+ EINVAL 'sem' is not a valid semaphore,
+ ENOSYS Semaphores are not supported,
*/
int
sem_post (sem_t * sem)
{
-#ifdef EXTRA_DEBUG
+#ifdef EXTRA_DEBUG
if (sem == NULL || *sem == NULL)
{
errno=EINVAL;
@@ -378,32 +357,27 @@ sem_post (sem_t * sem)
/*
------------------------------------------------------
DOCPUBLIC
- This function posts multiple wakeups to a semaphore.
-
- PARAMETERS
- sem
- pointer to an instance of sem_t
-
- count
- counter, must be greater than zero.
-
- DESCRIPTION
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
+ 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.
+ EINVAL 'sem' is not a valid semaphore or count is less
+ than or equal to zero.
*/
int
sem_post_multiple (sem_t * sem, int count )
{
-#ifdef EXTRA_DEBUG
+#ifdef EXTRA_DEBUG
if (sem == NULL || *sem == NULL || count <= 0)
{
errno=EINVAL;