summaryrefslogtreecommitdiff
path: root/src/htsthread.h
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2012-03-19 12:59:03 +0000
committerXavier Roche <xroche@users.noreply.github.com>2012-03-19 12:59:03 +0000
commit660b569b0980fc8f71b03ed666dd02eec8388b4c (patch)
tree8ad02b5f0bebdd4cd1d2ba01005d6f3f71a0a7fb /src/htsthread.h
parent64cc4a88da8887ef1f7f4d90be0158d2cc76222d (diff)
httrack 3.41.2
Diffstat (limited to 'src/htsthread.h')
-rw-r--r--src/htsthread.h88
1 files changed, 32 insertions, 56 deletions
diff --git a/src/htsthread.h b/src/htsthread.h
index f62c39c..1bcecc6 100644
--- a/src/htsthread.h
+++ b/src/htsthread.h
@@ -38,10 +38,10 @@ Please visit our Website: http://www.httrack.com
#define HTS_DEFTHREAD
#include "htsglobal.h"
-#if USE_PTHREAD
-#include <pthread.h> /* _beginthread, _endthread */
+#ifndef _WIN32
+#include <pthread.h>
#endif
-#if HTS_WIN
+#ifdef _WIN32
#include "windows.h"
#ifdef _WIN32_WCE
#ifndef HTS_CECOMPAT
@@ -49,68 +49,44 @@ Please visit our Website: http://www.httrack.com
#endif
#endif
#endif
-
-#if USE_BEGINTHREAD
-#if HTS_WIN
-
-#define PTHREAD_RETURN
-#define PTHREAD_TYPE void
-#define PTHREAD_TYPE_FNC __cdecl
-#define PTHREAD_LOCK_TYPE HANDLE
-#define PTHREAD_HANDLE HANDLE
-
-
-/* Useless - see '__declspec( thread )' */
-/*
-#define PTHREAD_KEY_TYPE void*
-#define PTHREAD_KEY_CREATE(ptrkey, uninit) do { *(ptrkey)=(void*)NULL; } while(0)
-#define PTHREAD_KEY_DELETE(key) do { key=(void*)NULL; } while(0)
-#define PTHREAD_KEY_SET(key, val, ptrtype) do { key=(void*)(val); } while(0)
-#define PTHREAD_KEY_GET(key, ptrval, ptrtype) do { *(ptrval)=(ptrtype)(key); } while(0)
-*/
-
-#else
-
-#define PTHREAD_RETURN NULL
-#define PTHREAD_TYPE void*
-#define PTHREAD_TYPE_FNC
-#define PTHREAD_LOCK_TYPE pthread_mutex_t
-#define PTHREAD_KEY_TYPE pthread_key_t
-#define PTHREAD_KEY_CREATE(ptrkey, uninit) pthread_key_create(ptrkey, uninit)
-#define PTHREAD_KEY_DELETE(key) pthread_key_delete(key)
-#define PTHREAD_KEY_SET(key, val, ptrtype) pthread_setspecific(key, (void*)val)
-#define PTHREAD_KEY_GET(key, ptrval, ptrtype) do { *(ptrval)=(ptrtype)pthread_getspecific(key); } while(0)
-#define PTHREAD_HANDLE pthread_t
-
+#ifndef USE_BEGINTHREAD
+#error needs USE_BEGINTHREAD
#endif
-#else
-
-#define PTHREAD_LOCK_TYPE void*
-#define PTHREAD_KEY_TYPE void*
-#define PTHREAD_KEY_CREATE(ptrkey, uninit) do { *(ptrkey)=(void*)NULL; } while(0)
-#define PTHREAD_KEY_DELETE(key) do { key=(void*)NULL; } while(0)
-#define PTHREAD_KEY_SET(key, val, ptrtype) do { key=(void*)(val); } while(0)
-#define PTHREAD_KEY_GET(key, ptrval, ptrtype) do { *(ptrval)=(ptrtype)(key); } while(0)
-#define PTHREAD_HANDLE void
-
+/* Forward definition */
+#ifndef HTS_DEF_FWSTRUCT_htsmutex_s
+#define HTS_DEF_FWSTRUCT_htsmutex_s
+typedef struct htsmutex_s htsmutex_s, *htsmutex;
#endif
+#define HTSMUTEX_INIT NULL
+
+#ifdef _WIN32
+struct htsmutex_s {
+ HANDLE handle;
+};
+#else /* #ifdef _WIN32 */
+struct htsmutex_s {
+ pthread_mutex_t handle;
+};
+#endif /* #ifdef _WIN32 */
/* Library internal definictions */
-HTSEXT_API int hts_newthread( PTHREAD_TYPE ( PTHREAD_TYPE_FNC *start_address )( void * ), unsigned stack_size, void *arglist );
+HTSEXT_API int hts_newthread( void (*fun)(void *arg), void *arg);
+#ifndef HTTRACK_DEFLIB
HTSEXT_API void htsthread_wait(void );
+#endif
HTSEXT_API void htsthread_wait_n(int n_wait);
-#ifdef HTS_INTERNAL_BYTECODE
-HTSEXT_API int htsSetLock(PTHREAD_LOCK_TYPE * hMutex,int lock);
-HTSEXT_API void htsthread_init(void );
-HTSEXT_API void htsthread_uninit(void );
-
-#if USE_PTHREAD
-// unsigned long _beginthread( void* ( *start_address )( void * ), unsigned stack_size, void *arglist );
+/* Locking functions */
+HTSEXT_API void hts_mutexinit(htsmutex* mutex);
+HTSEXT_API void hts_mutexfree(htsmutex* mutex);
+HTSEXT_API void hts_mutexlock(htsmutex* mutex);
+HTSEXT_API void hts_mutexrelease(htsmutex* mutex);
-#endif
+#ifdef HTS_INTERNAL_BYTECODE
+/* Thread initialization */
+HTSEXT_API void htsthread_init(void);
+HTSEXT_API void htsthread_uninit(void);
#endif
#endif
-