diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:36:11 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:36:11 +0000 |
commit | ad5b7acc19290ff91e0f42a0de448a26760fcf99 (patch) | |
tree | 2d1867758835fd0c4e443ff3cc7e5c774af85874 /src/htsthread.h |
Imported httrack 3.20.2
Diffstat (limited to 'src/htsthread.h')
-rw-r--r-- | src/htsthread.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/htsthread.h b/src/htsthread.h new file mode 100644 index 0000000..cb3a139 --- /dev/null +++ b/src/htsthread.h @@ -0,0 +1,95 @@ +/* ------------------------------------------------------------ */ +/* +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +Important notes: + +- We hereby ask people using this source NOT to use it in purpose of grabbing +emails addresses, or collecting any other private information on persons. +This would disgrace our work, and spoil the many hours we spent on it. + + +Please visit our Website: http://www.httrack.com +*/ + + +/* ------------------------------------------------------------ */ +/* File: Threads */ +/* Author: Xavier Roche */ +/* ------------------------------------------------------------ */ + +#ifndef HTS_DEFTHREAD +#define HTS_DEFTHREAD + +#include "htsglobal.h" +#if USE_PTHREAD +#include <pthread.h> /* _beginthread, _endthread */ +#endif +#if HTS_WIN +#include "windows.h" +#endif + +#if USE_BEGINTHREAD +#if HTS_WIN + +#define PTHREAD_RETURN +#define PTHREAD_TYPE void __cdecl +#define PTHREAD_LOCK_TYPE 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_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) + +#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) + +#endif + +int htsSetLock(PTHREAD_LOCK_TYPE * hMutex,int lock); + +#if USE_PTHREAD +unsigned long _beginthread( void* ( *start_address )( void * ), unsigned stack_size, void *arglist ); +#endif + +#endif + |