thread_generic.h

Go to the documentation of this file.
00001 /*
00002  * MUSCLE SmartCard Development ( http://www.linuxnet.com )
00003  *
00004  * Copyright (C) 2000-2004
00005  *  David Corcoran <corcoran@linuxnet.com>
00006  *  Damien Sauveron <damien.sauveron@labri.fr>
00007  *  Ludovic Rousseau <ludovic.rousseau@free.fr>
00008  *
00009  * $Id: thread_generic.h 3259 2009-01-02 14:32:44Z rousseau $
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 #include <wintypes.h>
00026 #endif
00027 
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032 
00033 #ifdef WIN32
00034 #define PCSCLITE_THREAD_T                HANDLE
00035 #define PCSCLITE_MUTEX                   CRITICAL_SECTION
00036 #define PCSCLITE_MUTEX_T                 CRITICAL_SECTION*
00037 #define PCSCLITE_THREAD_FUNCTION(f)      void *(*f)(void *)
00038 #else
00039 #define PCSCLITE_THREAD_T                pthread_t
00040 #define PCSCLITE_MUTEX                   pthread_mutex_t
00041 #define PCSCLITE_MUTEX_T                 pthread_mutex_t*
00042 #define PCSCLITE_THREAD_FUNCTION(f)      void *(*f)(void *)
00043 #endif
00044 
00045 /* thread attributes */
00046 #define THREAD_ATTR_DEFAULT         0
00047 #define THREAD_ATTR_DETACHED        1
00048 
00049     int SYS_MutexInit(PCSCLITE_MUTEX_T);
00050     int SYS_MutexDestroy(PCSCLITE_MUTEX_T);
00051     int SYS_MutexLock(PCSCLITE_MUTEX_T);
00052     int SYS_MutexTryLock(PCSCLITE_MUTEX_T);
00053     int SYS_MutexUnLock(PCSCLITE_MUTEX_T);
00054     int SYS_ThreadCreate(PCSCLITE_THREAD_T *, int, PCSCLITE_THREAD_FUNCTION( ),
00055         /*@null@*/ LPVOID);
00056     int SYS_ThreadCancel(PCSCLITE_THREAD_T);
00057     int SYS_ThreadDetach(PCSCLITE_THREAD_T);
00058     int SYS_ThreadJoin(PCSCLITE_THREAD_T, /*@null@*/ LPVOID*);
00059     int SYS_ThreadExit(/*@null@*/ LPVOID);
00060     PCSCLITE_THREAD_T SYS_ThreadSelf(void);
00061     int SYS_ThreadEqual(PCSCLITE_THREAD_T *, PCSCLITE_THREAD_T *);
00062     int SYS_ThreadSetCancelType(int, int *);
00063 
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif                          /* __thread_generic_h__ */

Generated on Mon Aug 17 01:00:11 2009 for pcsc-lite by  doxygen 1.5.9