diff options
author | rpj <rpj> | 1999-02-02 02:01:56 +0000 |
---|---|---|
committer | rpj <rpj> | 1999-02-02 02:01:56 +0000 |
commit | cc29ad943903e9b8dba96cd978cb126f79f73e38 (patch) | |
tree | 17a310f2fb26c829acbecf498453531637bf863c /private.c | |
parent | 6237335fec273ac2b00c32609a8eef91c6ec7473 (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.c | 79 |
1 files changed, 5 insertions, 74 deletions
@@ -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 */ - |