From cc29ad943903e9b8dba96cd978cb126f79f73e38 Mon Sep 17 00:00:00 2001 From: rpj Date: Tue, 2 Feb 1999 02:01:56 +0000 Subject: Mods to compile under Mingw32 egcs. Tue Feb 2 18:07:43 1999 Ross Johnson * implement.h: Add #include . Change sem_t to _pthread_sem_t. Various patches by Kevin Ruland * signal.c (pthread_sigmask): Add and modify casts. Reverse LHS/RHS bitwise assignments. * pthread.h: Remove #include . (_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 * 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 * pthread.def: Cleanup CVS merge conflicts. * global.c: Ditto. * ChangeLog: Ditto. * cleanup.c: Ditto. --- private.c | 79 ++++----------------------------------------------------------- 1 file changed, 5 insertions(+), 74 deletions(-) (limited to 'private.c') 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 +#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) /* */ -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 */ - -- cgit v1.2.3