diff --git a/VC++Files/mysys/mysys.dsp b/VC++Files/mysys/mysys.dsp
index 0f1b4bd5d54c9aabe3dabeb978e1f0d85a8747ba..a920a0bd967fa48646d8bc27dccda86d0952ed40 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 87100ce8e5e217af635548c8d7ecf0880e5ee87f..73aa649394eae5882b4d235c9cd8db02670e8832 100644
--- a/VC++Files/mysys/mysys.vcproj
+++ b/VC++Files/mysys/mysys.vcproj
@@ -4323,49 +4323,6 @@
 					PreprocessorDefinitions=""/>
 			</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
diff --git a/VC++Files/mysys/mysys_ia64.dsp b/VC++Files/mysys/mysys_ia64.dsp
index 10d6ca7960a073d955d23626fe02900dc4da1afe..4e4f71d89bad2f47365a1dfa4f5a5f51d29185e7 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 6d90b613bacc88fd5fc0183f162ee37ff2b411c3..10bfe7c6aae57dee59b7400bb50411bf42ab2040 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 7b71ef62489bc7ba745569d668acac6d3bb8c8c4..9cd2f6215f11643874ab6b2e547c54f32a0b6704 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 7f182bea6bf71fe6b34fbe266a654ed37cecb8bc..0000000000000000000000000000000000000000
--- 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/Makefile.am b/mysys/Makefile.am
index 8f810598a47c736cf81aa507c994656a67e3779b..d145b7faf866bb7de3edcdb3076fef138d7f51b2 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 \
diff --git a/mysys/my_semaphore.c b/mysys/my_semaphore.c
deleted file mode 100644
index efabd4b42d9b98c4823a87e9a148030882fde0b0..0000000000000000000000000000000000000000
--- 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 e2713d189b2967d09abfffc87274ab83282a4824..0000000000000000000000000000000000000000
--- 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__ */