diff options
Diffstat (limited to 'README.NONPORTABLE')
-rw-r--r-- | README.NONPORTABLE | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/README.NONPORTABLE b/README.NONPORTABLE new file mode 100644 index 0000000..7dfba7f --- /dev/null +++ b/README.NONPORTABLE @@ -0,0 +1,119 @@ +Non-portable functions included in the library +---------------------------------------------- + +HANDLE +pthread_getw32threadhandle_np(pthread_t thread); + + Returns the win32 thread handle that the POSIX + thread "thread" is running as. + + Applications can use the win32 handle to set + win32 specific attributes of the thread. + +int +pthread_delay_np (const struct timespec *interval); + + This routine causes a thread to delay execution for a specific + period of time. This period ends at the current time plus the + specified interval. The routine will not return before the end + of the period is reached, but may return an arbitrary amount + of time after the period has gone by. This can be due to + system load, thread priorities, and system timer granularity. + + Specifying an interval of zero (0) seconds and zero (0) + nanoseconds is allowed and can be used to force the thread + to give up the processor or to deliver a pending cancelation + request. + + This routine is a cancelation point. + + The timespec structure contains the following two fields: + + tv_sec is an integer number of seconds. + tv_nsec is an integer number of nanoseconds. + + Return Values + + If an error condition occurs, this routine returns an integer value + indicating the type of error. Possible return values are as follows: + + 0 Successful completion. + [EINVAL] The value specified by interval is invalid. + + +BOOL +pthread_win32_process_attach_np (void); + +BOOL +pthread_win32_process_detach_np (void); + +BOOL +pthread_win32_thread_attach_np (void); + +BOOL +pthread_win32_thread_detach_np (void); + + These functions contain the code normally run via dllMain + when the library is used as a dll but which need to be + called explicitly by an application when the library + is statically linked. + + You will need to call pthread_win32_process_attach_np() before + you can call any pthread routines when statically linking. + You should call pthread_win32_process_detach_np() before + exiting your application to clean up. + + pthread_win32_thread_attach_np() is currently a no-op, but + pthread_win32_thread_detach_np() is needed to clean up + after Win32 threads that have called pthreads routines + have exited. + + These functions invariably return TRUE except for + pthread_win32_process_attach_np() which will return FALSE + if pthreads-win32 initialisation fails. + + +int +pthreadCancelableWait (HANDLE waitHandle); + +int +pthreadCancelableTimedWait (HANDLE waitHandle, DWORD timeout); + + These two functions provide hooks into the pthread_cancel + mechanism that will allow you to wait on a Windows handle + and make it a cancellation point. Both functions block + until either the given w32 handle is signaled, or + pthread_cancel has been called. It is implemented using + WaitForMultipleObjects on 'waitHandle' and a manually + reset w32 event used to implement pthread_cancel. + + +void +pthread_mutexattr_setforcecs_np(pthread_mutexattr_t *attr, + int forcecs); + + This function is no longer required as pthreads-win32 + mutexes are now based entirely on Win32 critical + sections. Retained for backward compatibility. + + Allows an application to force the library to use + critical sections rather than win32 mutexes as + the basis for any mutex that uses "attr". + Critical sections are significantly faster than + mutexes. + + Values for "forcecs" are: + PTHREAD_MUTEX_AUTO_CS_NP + - allow the library to decide based on + availability of tryEnterCriticalSection(). + The library determines this at runtime + and will use critical sections whenever + tryEnterCriticalSection() is available. + PTHREAD_MUTEX_FORCE_CS_NP + - force use of critical sections even if + tryEnterCriticalSection() isn't provided + by the system, but you'd better not try + to use pthread_mutex_trylock() on any + mutex that uses "attr" if you want your + application to work on all versions of + Windows. |