summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrpj <rpj>2005-04-01 01:28:29 +0000
committerrpj <rpj>2005-04-01 01:28:29 +0000
commitf6f9976af7a520dd1aeced4f104f4d4711f28e23 (patch)
tree1a4e65f32d585c114af33772adfaa1995ffcf093
parent25e5c566c5b050a04fc03851895f72750f016e4e (diff)
''
-rw-r--r--ChangeLog14
-rw-r--r--dll.c4
-rw-r--r--implement.h6
-rw-r--r--pthread.h8
-rw-r--r--sched.h10
-rw-r--r--sem_timedwait.c22
-rw-r--r--semaphore.h11
7 files changed, 54 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 5bedad9..aa7eeb9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2005-04-01 Kevin Lussier <Kevin at codegreennetworks.com>
+
+ * sem_timedwait.c (sem_timedwait): Increase size of temp variables to
+ avoid int overflows for large timeout values.
+ * implement.h (int64_t): Include or define.
+
+2005-03-31 Dimitar Panayotov <develop at mail.bg>^M
+
+ * pthread.h: Fix conditional defines for static linking.
+ * sched.h: Liekwise.
+ * semaphore.h: Likewise.
+ * dll.c (PTW32_STATIC_LIB): Module is conditionally included
+ in the build.
+
2005-03-16 Ross Johnson <ross at callisto.canberra.edu.au>
* pthread_setcancelstate.c: Undo the last change.
diff --git a/dll.c b/dll.c
index 314c713..c1cd4e9 100644
--- a/dll.c
+++ b/dll.c
@@ -34,6 +34,8 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
+#ifndef PTW32_STATIC_LIB
+
#include "pthread.h"
#include "implement.h"
@@ -86,3 +88,5 @@ DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
return (result);
} /* DllMain */
+
+#endif /* PTW32_STATIC_LIB */
diff --git a/implement.h b/implement.h
index 69a70c6..286cd68 100644
--- a/implement.h
+++ b/implement.h
@@ -90,6 +90,12 @@ typedef VOID (APIENTRY *PAPCFUNC)(DWORD dwParam);
#define PTW32_INTERLOCKED_LPLONG PVOID*
#endif
+#if defined(__MINGW32__)
+#include <stdint.h>
+#else
+#define int64_t _int64
+#endif
+
typedef enum
{
/*
diff --git a/pthread.h b/pthread.h
index 9656cf4..d776188 100644
--- a/pthread.h
+++ b/pthread.h
@@ -37,8 +37,8 @@
* See the README file for an explanation of the pthreads-win32 version
* numbering scheme and how the DLL is named etc.
*/
-#define PTW32_VERSION 1,5,0,0
-#define PTW32_VERSION_STRING "1, 5, 0, 0\0"
+#define PTW32_VERSION 1,6,0,0
+#define PTW32_VERSION_STRING "1, 6, 0, 0\0"
/* There are three implementations of cancel cleanup.
* Note that pthread.h is included in both application
@@ -556,12 +556,14 @@ extern "C"
* do NOT define PTW32_BUILD, and then the variables/functions will
* be imported correctly.
*/
-#ifdef _DLL
+#ifndef PTW32_STATIC_LIB
# ifdef PTW32_BUILD
# define PTW32_DLLPORT __declspec (dllexport)
# else
# define PTW32_DLLPORT __declspec (dllimport)
# endif
+#else
+# define PTW32_DLLPORT
#endif
/*
diff --git a/sched.h b/sched.h
index 4a342a6..dfb8e93 100644
--- a/sched.h
+++ b/sched.h
@@ -76,10 +76,14 @@
* do NOT define PTW32_BUILD, and then the variables/functions will
* be imported correctly.
*/
-#ifdef PTW32_BUILD
-# define PTW32_DLLPORT __declspec (dllexport)
+#ifndef PTW32_STATIC_LIB
+# ifdef PTW32_BUILD
+# define PTW32_DLLPORT __declspec (dllexport)
+# else
+# define PTW32_DLLPORT __declspec (dllimport)
+# endif
#else
-# define PTW32_DLLPORT __declspec (dllimport)
+# define PTW32_DLLPORT
#endif
/*
diff --git a/sem_timedwait.c b/sem_timedwait.c
index 6bf94d4..7fba45f 100644
--- a/sem_timedwait.c
+++ b/sem_timedwait.c
@@ -121,11 +121,11 @@ sem_timedwait (sem_t * sem, const struct timespec *abstime)
#endif /* NEED_FTIME */
- const DWORD NANOSEC_PER_MILLISEC = 1000000;
- const DWORD MILLISEC_PER_SEC = 1000;
+ const int64_t NANOSEC_PER_MILLISEC = 1000000;
+ const int64_t MILLISEC_PER_SEC = 1000;
DWORD milliseconds;
- DWORD tmpAbsMilliseconds;
- DWORD tmpCurrMilliseconds;
+ int64_t tmpAbsMilliseconds;
+ int64_t tmpCurrMilliseconds;
if (sem == NULL)
{
@@ -150,8 +150,8 @@ sem_timedwait (sem_t * sem, const struct timespec *abstime)
*
* Assume all integers are unsigned, i.e. cannot test if less than 0.
*/
- tmpAbsMilliseconds = abstime->tv_sec * MILLISEC_PER_SEC;
- tmpAbsMilliseconds += (abstime->tv_nsec + (NANOSEC_PER_MILLISEC/2)) / NANOSEC_PER_MILLISEC;
+ tmpAbsMilliseconds = (int64_t)abstime->tv_sec * MILLISEC_PER_SEC;
+ tmpAbsMilliseconds += ((int64_t)abstime->tv_nsec + (NANOSEC_PER_MILLISEC/2)) / NANOSEC_PER_MILLISEC;
/* get current system time */
@@ -171,21 +171,21 @@ sem_timedwait (sem_t * sem, const struct timespec *abstime)
ptw32_filetime_to_timespec(&ft, &currSysTime);
}
- tmpCurrMilliseconds = currSysTime.tv_sec * MILLISEC_PER_SEC;
- tmpCurrMilliseconds += (currSysTime.tv_nsec + (NANOSEC_PER_MILLISEC/2)) / NANOSEC_PER_MILLISEC;
+ tmpCurrMilliseconds = (int64_t)currSysTime.tv_sec * MILLISEC_PER_SEC;
+ tmpCurrMilliseconds += ((int64_t)currSysTime.tv_nsec + (NANOSEC_PER_MILLISEC/2)) / NANOSEC_PER_MILLISEC;
#else /* ! NEED_FTIME */
_ftime(&currSysTime);
- tmpCurrMilliseconds = (DWORD) currSysTime.time * MILLISEC_PER_SEC;
- tmpCurrMilliseconds += (DWORD) currSysTime.millitm;
+ tmpCurrMilliseconds = (int64_t) currSysTime.time * MILLISEC_PER_SEC;
+ tmpCurrMilliseconds += (int64_t) currSysTime.millitm;
#endif /* NEED_FTIME */
if (tmpAbsMilliseconds > tmpCurrMilliseconds)
{
- milliseconds = tmpAbsMilliseconds - tmpCurrMilliseconds;
+ milliseconds = (DWORD) (tmpAbsMilliseconds - tmpCurrMilliseconds);
if (milliseconds == INFINITE)
{
/* Timeouts must be finite */
diff --git a/semaphore.h b/semaphore.h
index 7e71089..a3330a6 100644
--- a/semaphore.h
+++ b/semaphore.h
@@ -75,13 +75,16 @@
* do NOT define PTW32_BUILD, and then the variables/functions will
* be imported correctly.
*/
-#ifdef PTW32_BUILD
-# define PTW32_DLLPORT __declspec (dllexport)
+#ifndef PTW32_STATIC_LIB
+# ifdef PTW32_BUILD
+# define PTW32_DLLPORT __declspec (dllexport)
+# else
+# define PTW32_DLLPORT __declspec (dllimport)
+# endif
#else
-# define PTW32_DLLPORT __declspec (dllimport)
+# define PTW32_DLLPORT
#endif
-
/*
* This is a duplicate of what is in the autoconf config.h,
* which is only used when building the pthread-win32 libraries.