summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <joerg@trift2.>2007-03-12 16:00:35 +0100
committerunknown <joerg@trift2.>2007-03-12 16:00:35 +0100
commitcaf7005eb14cd061f3c12f35e017a765afce00f2 (patch)
treea22bd70d530d904369d7a3cb0d845044284a0798
parent28d696d18b5b68747f4763b4043302d555d19f9b (diff)
parent74536862f617ecadd71880dd51447593f6841dc3 (diff)
downloadmariadb-git-caf7005eb14cd061f3c12f35e017a765afce00f2.tar.gz
Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into trift2.:/MySQL/M50/push-5.0
-rw-r--r--VC++Files/mysys/mysys.dsp4
-rw-r--r--VC++Files/mysys/mysys.vcproj43
-rw-r--r--VC++Files/mysys/mysys_ia64.dsp4
-rw-r--r--configure.in4
-rw-r--r--include/Makefile.am2
-rw-r--r--include/my_semaphore.h64
-rwxr-xr-xmysys/CMakeLists.txt2
-rw-r--r--mysys/Makefile.am4
-rw-r--r--mysys/my_semaphore.c103
-rw-r--r--mysys/my_winsem.c406
10 files changed, 4 insertions, 632 deletions
diff --git a/VC++Files/mysys/mysys.dsp b/VC++Files/mysys/mysys.dsp
index 0f1b4bd5d54..a920a0bd967 100644
--- a/VC++Files/mysys/mysys.dsp
+++ b/VC++Files/mysys/mysys.dsp
@@ -557,10 +557,6 @@ SOURCE=.\my_windac.c
# End Source File
# Begin Source File
-SOURCE=.\my_winsem.c
-# End Source File
-# Begin Source File
-
SOURCE=.\my_winthread.c
# End Source File
# Begin Source File
diff --git a/VC++Files/mysys/mysys.vcproj b/VC++Files/mysys/mysys.vcproj
index 87100ce8e5e..73aa649394e 100644
--- a/VC++Files/mysys/mysys.vcproj
+++ b/VC++Files/mysys/mysys.vcproj
@@ -4324,49 +4324,6 @@
</FileConfiguration>
</File>
<File
- RelativePath="my_winsem.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="TLS_DEBUG|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="TLS|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- </File>
- <File
RelativePath="my_winthread.c">
<FileConfiguration
Name="Debug|Win32">
diff --git a/VC++Files/mysys/mysys_ia64.dsp b/VC++Files/mysys/mysys_ia64.dsp
index 10d6ca7960a..4e4f71d89ba 100644
--- a/VC++Files/mysys/mysys_ia64.dsp
+++ b/VC++Files/mysys/mysys_ia64.dsp
@@ -538,10 +538,6 @@ SOURCE=.\my_wincond.c
# End Source File
# Begin Source File
-SOURCE=.\my_winsem.c
-# End Source File
-# Begin Source File
-
SOURCE=.\my_winthread.c
# End Source File
# Begin Source File
diff --git a/configure.in b/configure.in
index 6d90b613bac..10bfe7c6aae 100644
--- a/configure.in
+++ b/configure.in
@@ -778,10 +778,6 @@ AC_CHECK_FUNC(bind, , AC_CHECK_LIB(bind, bind))
# Check if crypt() exists in libc or libcrypt, sets LIBS if needed
AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT, 1, [crypt]))
-# For sem_xxx functions on Solaris 2.6
-AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init))
-MYSQL_CHECK_ZLIB_WITH_COMPRESS
-
# For large pages support
if test "$TARGET_LINUX" = "true"
then
diff --git a/include/Makefile.am b/include/Makefile.am
index 7b71ef62489..9cd2f6215f1 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -21,7 +21,7 @@ HEADERS_ABI = mysql.h mysql_com.h mysql_time.h \
my_list.h my_alloc.h typelib.h
pkginclude_HEADERS = $(HEADERS_ABI) my_dbug.h m_string.h my_sys.h \
my_xml.h mysql_embed.h \
- my_semaphore.h my_pthread.h my_no_pthread.h raid.h \
+ my_pthread.h my_no_pthread.h raid.h \
errmsg.h my_global.h my_net.h \
my_getopt.h sslopt-longopts.h my_dir.h \
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
diff --git a/include/my_semaphore.h b/include/my_semaphore.h
deleted file mode 100644
index 7f182bea6bf..00000000000
--- a/include/my_semaphore.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Module: semaphore.h
- *
- * 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
- */
-
-/* This is hacked by Monty to be included in mysys library */
-
-#ifndef _my_semaphore_h_
-#define _my_semaphore_h_
-
-#ifdef THREAD
-
-C_MODE_START
-#ifdef HAVE_SEMAPHORE_H
-#include <semaphore.h>
-#elif !defined(__bsdi__)
-#ifdef __WIN__
-typedef HANDLE sem_t;
-#else
-typedef struct {
- pthread_mutex_t mutex;
- pthread_cond_t cond;
- uint count;
-} sem_t;
-#endif /* __WIN__ */
-
-int sem_init(sem_t * sem, int pshared, unsigned int value);
-int sem_destroy(sem_t * sem);
-int sem_trywait(sem_t * sem);
-int sem_wait(sem_t * sem);
-int sem_post(sem_t * sem);
-int sem_post_multiple(sem_t * sem, unsigned int count);
-int sem_getvalue(sem_t * sem, unsigned int * sval);
-
-#endif /* !__bsdi__ */
-
-C_MODE_END
-
-#endif /* THREAD */
-
-#endif /* !_my_semaphore_h_ */
diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt
index 77933d57d21..f529b559fb0 100755
--- a/mysys/CMakeLists.txt
+++ b/mysys/CMakeLists.txt
@@ -39,7 +39,7 @@ ADD_LIBRARY(mysys array.c charset-def.c charset.c checksum.c default.c default_m
my_mkdir.c my_mmap.c my_net.c my_once.c my_open.c my_pread.c my_pthread.c
my_quick.c my_read.c my_realloc.c my_redel.c my_rename.c my_seek.c my_sleep.c
my_static.c my_symlink.c my_symlink2.c my_sync.c my_thr_init.c my_wincond.c
- my_windac.c my_winsem.c my_winthread.c my_write.c ptr_cmp.c queues.c
+ my_windac.c my_winthread.c my_write.c ptr_cmp.c queues.c
rijndael.c safemalloc.c sha1.c string.c thr_alarm.c thr_lock.c thr_mutex.c
thr_rwlock.c tree.c typelib.c base64.c my_memmem.c
my_getpagesize.c)
diff --git a/mysys/Makefile.am b/mysys/Makefile.am
index 8f810598a47..a835492e670 100644
--- a/mysys/Makefile.am
+++ b/mysys/Makefile.am
@@ -50,7 +50,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \
my_sync.c my_getopt.c my_mkdir.c \
default_modify.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 \
charset.c charset-def.c my_bitmap.c my_bit.c md5.c \
my_gethostbyname.c rijndael.c my_aes.c sha1.c \
my_handler.c my_netware.c my_largepage.c \
@@ -58,7 +58,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \
my_windac.c my_access.c base64.c my_libwrap.c
EXTRA_DIST = thr_alarm.c thr_lock.c my_pthread.c my_thr_init.c \
thr_mutex.c thr_rwlock.c mf_soundex.c my_conio.c \
- my_wincond.c my_winsem.c my_winthread.c CMakeLists.txt
+ my_wincond.c my_winthread.c CMakeLists.txt
libmysys_a_LIBADD = @THREAD_LOBJECTS@
# test_dir_DEPENDENCIES= $(LIBRARIES)
# testhash_DEPENDENCIES= $(LIBRARIES)
diff --git a/mysys/my_semaphore.c b/mysys/my_semaphore.c
deleted file mode 100644
index efabd4b42d9..00000000000
--- a/mysys/my_semaphore.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Copyright (C) 2002-2003 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 */
-
-/*
- 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__ */