diff options
author | rpj <rpj> | 2000-08-18 08:02:29 +0000 |
---|---|---|
committer | rpj <rpj> | 2000-08-18 08:02:29 +0000 |
commit | 11eb4dfd2d42417327fc205c649ea32ee623cf92 (patch) | |
tree | 79b7a28890e779a4cc8d77e9289dba919d371bdd /pthread.h | |
parent | 88de1621e4371cd118e1a98c9c08ff23c46e6899 (diff) |
2000-08-18 Ross Johnson <rpj@setup1.ise.canberra.edu.au>
* Several: Fix typos from scripted edit session
yesterday.
* nonportable.c (pthread_mutexattr_setforcecs_np):
Moved this function from mutex.c.
(pthread_getw32threadhandle_np): New function to
return the win32 thread handle that the POSIX
thread is using.
* mutex.c (pthread_mutexattr_setforcecs_np):
Moved to new file "nonportable.c".
* pthread.h (PTW32_BUILD): Only redefine __except
and catch compiler keywords if we aren't building
the library (ie. PTW32_BUILD is not defined) -
this is safer than defining and then undefining
if not building the library.
* implement.h: Remove __except and catch undefines.
* Makefile (CFLAGS): Define PTW32_BUILD.
* GNUmakefile (CFLAGS): Define PTW32_BUILD.
* All appropriate: Change Pthread_exception* to
ptw32_exception* to be consistent with internal
identifier naming.
* private.c (ptw32_throw): New function to provide
a generic exception throw for all internal
exceptions and EH schemes.
(ptw32_threadStart): pthread_exit() value is now
returned via the thread structure exitStatus
element.
* exit.c (pthread_exit): pthread_exit() value is now
returned via the thread structure exitStatus
element.
* cancel.c (ptw32_cancel_self): Now uses ptw32_throw.
(pthread_setcancelstate): Ditto.
(pthread_setcanceltype): Ditto.
(pthread_testcancel): Ditto.
(pthread_cancel): Ditto.
* misc.c (CancelableWait): Ditto.
* exit.c (pthread_exit): Ditto.
* All applicable: Change PTW32_ prefix to
PTW32_ prefix to remove leading underscores
from private library identifiers.
Diffstat (limited to 'pthread.h')
-rw-r--r-- | pthread.h | 55 |
1 files changed, 37 insertions, 18 deletions
@@ -821,9 +821,6 @@ int pthread_mutexattr_getpshared (const pthread_mutexattr_t int pthread_mutexattr_setpshared (pthread_mutexattr_t * attr, int pshared); -int pthread_mutexattr_setforcecs_np(pthread_mutexattr_t *attr, - int forcecs); - /* * Mutex Functions */ @@ -873,7 +870,6 @@ int pthread_cond_broadcast (pthread_cond_t * cond); /* * Scheduling */ - int pthread_setschedparam (pthread_t thread, int policy, const struct sched_param *param); @@ -891,7 +887,6 @@ int pthread_attr_setschedparam (pthread_attr_t *attr, /* * Read-Write Lock Functions */ - int pthread_rwlock_init(pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr); @@ -908,6 +903,15 @@ int pthread_rwlock_wrlock(pthread_rwlock_t *lock); int pthread_rwlock_unlock(pthread_rwlock_t *lock); /* + * Non-portable functions + */ +int pthread_mutexattr_setforcecs_np(pthread_mutexattr_t *attr, + int forcecs); + +HANDLE pthread_getw32threadhandle_np(pthread_t thread); + + +/* * Protected Methods * * This function blocks until the given WIN32 handle @@ -966,8 +970,21 @@ int * _errno( void ); rand() -/* FIXME: This is only required if the library was built using SEH */ +#ifdef __cplusplus + /* + * Internal exceptions + */ +class ptw32_exception {}; +class ptw32_exception_cancel : public ptw32_exception {}; +class ptw32_exception_exit : public ptw32_exception {}; + +#endif + +#ifndef PTW32_BUILD + +/* FIXME: This is only required if the library was built using SEH */ + * * Get internal SEH tag */ DWORD ptw32_get_exception_services_code(void); @@ -987,13 +1004,6 @@ DWORD ptw32_get_exception_services_code(void); #ifdef __cplusplus /* - * Internal exceptions - */ -class Pthread_exception {}; -class Pthread_exception_cancel : public Pthread_exception {}; -class Pthread_exception_exit : public Pthread_exception {}; - -/* * Redefine the C++ catch keyword to ensure that applications * propagate our internal exceptions up to the library's internal handlers. */ @@ -1002,21 +1012,30 @@ class Pthread_exception_exit : public Pthread_exception {}; * WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll' * if you want Pthread-Win32 cancelation and pthread_exit to work. */ + #ifndef PtW32NoCatchWarn + #pragma message("When compiling applications with MSVC++ and C++ exception handling:") #pragma message(" Replace any 'catch( ... )' with 'PtW32CatchAll' in POSIX threads") #pragma message(" if you want POSIX thread cancelation and pthread_exit to work.") + #endif + #define PtW32CatchAll \ - catch( Pthread_exception & ) { throw; } \ + catch( ptw32_exception & ) { throw; } \ catch( ... ) -#else + +#else /* _MSC_VER */ + #define catch( E ) \ - catch( Pthread_exception & ) { throw; } \ + catch( ptw32_exception & ) { throw; } \ catch( E ) -#endif -#endif +#endif /* _MSC_VER */ + +#endif /* __cplusplus */ + +#endif /* ! PTW32_BUILD */ #ifdef __cplusplus } /* End of extern "C" */ |