summaryrefslogtreecommitdiff
path: root/pthread.h
diff options
context:
space:
mode:
authorrpj <rpj>2000-08-18 08:02:29 +0000
committerrpj <rpj>2000-08-18 08:02:29 +0000
commit11eb4dfd2d42417327fc205c649ea32ee623cf92 (patch)
tree79b7a28890e779a4cc8d77e9289dba919d371bdd /pthread.h
parent88de1621e4371cd118e1a98c9c08ff23c46e6899 (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.h55
1 files changed, 37 insertions, 18 deletions
diff --git a/pthread.h b/pthread.h
index a853191..ead9424 100644
--- a/pthread.h
+++ b/pthread.h
@@ -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" */