diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | pthread.h | 7 | ||||
-rw-r--r-- | pthread_cancel.c | 6 | ||||
-rw-r--r-- | ptw32_getprocessors.c | 6 |
4 files changed, 16 insertions, 5 deletions
@@ -1,4 +1,4 @@ -2004-05-06 Makato Kato <raven@oldskool.jp> +2004-05-06 Makoto Kato <raven@oldskool.jp> * pthread.h (DWORD_PTR): Define typedef for older MSVC. * pthread_cancel.c (AMD64): Add architecture specific Context register. @@ -155,6 +155,13 @@ #ifdef PTW32_INCLUDE_WINDOWS_H #include <windows.h> + +#if _MSC_VER < 1300 +/* + * VC++6.0 or early compiler's header has no DWORD_PTR type. + */ +typedef unsigned long DWORD_PTR; +#endif #endif /* diff --git a/pthread_cancel.c b/pthread_cancel.c index 6f59b30..6af159f 100644 --- a/pthread_cancel.c +++ b/pthread_cancel.c @@ -54,6 +54,10 @@ #define PTW32_PROGCTR(Context) ((Context).Iar) #endif +#if defined(_AMD64_) +#define PTW32_PROGCTR(Context) ((Context).Rip) +#endif + #if !defined(PTW32_PROGCTR) #error Module contains CPU-specific code; modify and recompile. #endif @@ -155,7 +159,7 @@ pthread_cancel (pthread_t thread) thread->cancelState = PTHREAD_CANCEL_DISABLE; context.ContextFlags = CONTEXT_CONTROL; GetThreadContext(threadH, &context); - PTW32_PROGCTR(context) = (DWORD) ptw32_cancel_self; + PTW32_PROGCTR(context) = (DWORD_PTR) ptw32_cancel_self; SetThreadContext(threadH, &context); (void) pthread_mutex_unlock(&thread->cancelLock); ResumeThread(threadH); diff --git a/ptw32_getprocessors.c b/ptw32_getprocessors.c index ddb387a..01dfa3a 100644 --- a/ptw32_getprocessors.c +++ b/ptw32_getprocessors.c @@ -55,15 +55,15 @@ int ptw32_getprocessors(int * count) { - DWORD vProcessCPUs; - DWORD vSystemCPUs; + DWORD_PTR vProcessCPUs; + DWORD_PTR vSystemCPUs; int result = 0; if (GetProcessAffinityMask(GetCurrentProcess(), &vProcessCPUs, &vSystemCPUs)) { - DWORD bit; + DWORD_PTR bit; int CPUs = 0; for (bit = 1; bit != 0; bit <<= 1) |