00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00017 #ifndef __thread_generic_h__
00018 #define __thread_generic_h__
00019
00020 #ifdef WIN32
00021 #include <windows.h>
00022 #include "PCSC.h"
00023 #else
00024 #include <pthread.h>
00025 #endif
00026
00027 #ifdef __cplusplus
00028 extern "C"
00029 {
00030 #endif
00031
00032 #ifdef WIN32
00033 #define PCSCLITE_THREAD_T HANDLE
00034 #define PCSCLITE_MUTEX CRITICAL_SECTION
00035 #define PCSCLITE_MUTEX_T CRITICAL_SECTION*
00036 #define PCSCLITE_THREAD_FUNCTION(f) void *(*f)(void *)
00037 #else
00038 #define PCSCLITE_THREAD_T pthread_t
00039 #define PCSCLITE_MUTEX pthread_mutex_t
00040 #define PCSCLITE_MUTEX_T pthread_mutex_t*
00041 #define PCSCLITE_THREAD_FUNCTION(f) void *(*f)(void *)
00042 #endif
00043
00044
00045 #define THREAD_ATTR_DEFAULT 0
00046 #define THREAD_ATTR_DETACHED 1
00047
00048 int SYS_MutexInit(PCSCLITE_MUTEX_T);
00049 int SYS_MutexDestroy(PCSCLITE_MUTEX_T);
00050 int SYS_MutexLock(PCSCLITE_MUTEX_T);
00051 int SYS_MutexUnLock(PCSCLITE_MUTEX_T);
00052 int SYS_ThreadCreate(PCSCLITE_THREAD_T *, int, PCSCLITE_THREAD_FUNCTION( ), LPVOID);
00053 int SYS_ThreadCancel(PCSCLITE_THREAD_T *);
00054 int SYS_ThreadDetach(PCSCLITE_THREAD_T);
00055 int SYS_ThreadJoin(PCSCLITE_THREAD_T *, LPVOID*);
00056 int SYS_ThreadExit(LPVOID);
00057 PCSCLITE_THREAD_T SYS_ThreadSelf(void);
00058 int SYS_ThreadEqual(PCSCLITE_THREAD_T *, PCSCLITE_THREAD_T *);
00059
00060 #ifdef __cplusplus
00061 }
00062 #endif
00063
00064 #endif