summaryrefslogtreecommitdiff
path: root/private.c
diff options
context:
space:
mode:
authorrpj <rpj>1999-02-02 02:01:56 +0000
committerrpj <rpj>1999-02-02 02:01:56 +0000
commitcc29ad943903e9b8dba96cd978cb126f79f73e38 (patch)
tree17a310f2fb26c829acbecf498453531637bf863c /private.c
parent6237335fec273ac2b00c32609a8eef91c6ec7473 (diff)
Mods to compile under Mingw32 egcs.
Tue Feb 2 18:07:43 1999 Ross Johnson <rpj@swan.canberra.edu.au> * implement.h: Add #include <pthread.h>. Change sem_t to _pthread_sem_t. Various patches by Kevin Ruland <Kevin.Ruland@anheuser-busch.com> * signal.c (pthread_sigmask): Add and modify casts. Reverse LHS/RHS bitwise assignments. * pthread.h: Remove #include <semaphore.h>. (_PTHREAD_ATTR_VALID): Add cast. (struct pthread_t_): Add sigmask element. * dll.c: Add "extern C" for DLLMain. (DllMain): Add cast. * create.c (pthread_create): Set sigmask in thread. * condvar.c: Remove #include. Change sem_* to _pthread_sem_*. * attr.c: Changed #include. * Makefile.in: Additional targets and changes to build the library as a DLL. Fri Jan 29 11:56:28 1999 Ross Johnson <rpj@swan.canberra.edu.au> * Makefile.in (OBJS): Add semaphore.o to list. * semaphore.c (_pthread_sem_timedwait): Move from private.c. Rename sem_* to _pthread_sem_*. * pthread.h (pthread_cond_t): Change type of sem_t. _POSIX_SEMAPHORES no longer defined. * semaphore.h: Contents moved to implement.h. Removed from source tree. * implement.h: Add semaphore function prototypes and ename all functions to prepend '_pthread_'. They are now private to the pthreads-win32 implementation. * private.c: Change #warning. Move _pthread_sem_timedwait() to semaphore.c. * cleanup.c: Change #warning. * misc.c: Remove #include <errno.h> * pthread.def: Cleanup CVS merge conflicts. * global.c: Ditto. * ChangeLog: Ditto. * cleanup.c: Ditto.
Diffstat (limited to 'private.c')
-rw-r--r--private.c79
1 files changed, 5 insertions, 74 deletions
diff --git a/private.c b/private.c
index 615271d..88a71ee 100644
--- a/private.c
+++ b/private.c
@@ -6,7 +6,11 @@
* the implementation and may be used throughout it.
*/
-#include <sys/timeb.h>
+#if !defined(_MSC_VER) && !defined(__cplusplus) && defined(__GNUC__)
+
+#warning Compile __FILE__ as C++ or thread cancellation will not work properly.
+
+#endif /* !_MSC_VER && !__cplusplus && __GNUC__ */
#include "pthread.h"
#include "implement.h"
@@ -182,10 +186,6 @@ _pthread_threadStart (ThreadParms * threadParms)
#else /* __cplusplus */
-#if defined(__CYGWIN__) || defined(__CYGWIN32__)
-#warning File __FILE__, Line __LINE__: Cancelation not supported under C.
-#endif
-
/*
* Run the caller's routine;
*/
@@ -488,73 +488,4 @@ _pthread_callUserDestroyRoutines (pthread_t thread)
/* </JEB> */
-int
-_pthread_sem_timedwait (sem_t * sem, const struct timespec * abstime)
- /*
- * ------------------------------------------------------
- * DOCPUBLIC
- * This function waits on a semaphore possibly until
- * 'abstime' time.
- *
- * PARAMETERS
- * sem
- * pointer to an instance of sem_t
- *
- * abstime
- * pointer to an instance of struct timespec
- *
- * 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
- * the calling thread (or process) is blocked until it can
- * successfully decrease the value or until interrupted by
- * a signal.
- *
- * If 'abstime' is a NULL pointer then this function will
- * block until it can successfully decrease the value or
- * until interrupted by a signal.
- *
- * RESULTS
- * 0 successfully decreased semaphore,
- * 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.
- * ETIMEDOUT abstime elapsed before success.
- *
- * ------------------------------------------------------
- */
-{
- struct _timeb currSysTime;
- const DWORD NANOSEC_PER_MILLISEC = 1000000;
- const DWORD MILLISEC_PER_SEC = 1000;
- DWORD milliseconds;
-
- if (abstime == NULL)
- {
- milliseconds = INFINITE;
- }
- else
- {
- /*
- * Calculate timeout as milliseconds from current system time.
- */
-
- /* get current system time */
- _ftime(&currSysTime);
-
- /* subtract current system time from abstime */
- milliseconds = (abstime->tv_sec - currSysTime.time) * MILLISEC_PER_SEC;
- milliseconds += (abstime->tv_nsec / NANOSEC_PER_MILLISEC) -
- currSysTime.millitm;
- }
-
- return ((sem == NULL)
- ? EINVAL
- : pthreadCancelableTimedWait (*sem, milliseconds)
- );
-
-} /* _pthread_sem_timedwait */
-