22
22
* DEALINGS IN THE SOFTWARE.
23
23
*****************************************************************************/
24
24
#ifndef TR_PLATFORM_H
25
#define TR_PLATFORM_H 1
28
#include <kernel/OS.h>
29
typedef thread_id tr_thread_id_t;
30
typedef sem_id tr_lock_t;
31
typedef int tr_cond_t;
34
typedef pthread_t tr_thread_id_t;
35
typedef pthread_mutex_t tr_lock_t;
36
typedef pthread_cond_t tr_cond_t;
38
typedef struct tr_thread_s
40
void (* func ) ( void * );
43
tr_thread_id_t thread;;
47
char * tr_getCacheDirectory();
48
char * tr_getTorrentsDirectory();
50
void tr_threadCreate ( tr_thread_t *, void (*func)(void *),
51
void * arg, char * name );
52
void tr_threadJoin ( tr_thread_t * );
53
void tr_lockInit ( tr_lock_t * );
54
void tr_lockClose ( tr_lock_t * );
56
static inline void tr_lockLock( tr_lock_t * l )
61
pthread_mutex_lock( l );
65
static inline void tr_lockUnlock( tr_lock_t * l )
70
pthread_mutex_unlock( l );
74
void tr_condInit( tr_cond_t * );
75
void tr_condWait( tr_cond_t *, tr_lock_t * );
76
void tr_condSignal( tr_cond_t * );
77
void tr_condClose( tr_cond_t * );
27
typedef struct tr_lock_s tr_lock_t;
28
typedef struct tr_cond_s tr_cond_t;
29
typedef struct tr_thread_s tr_thread_t;
31
const char * tr_getHomeDirectory( void );
32
const char * tr_getCacheDirectory( void );
33
const char * tr_getTorrentsDirectory( void );
35
tr_thread_t* tr_threadNew ( void (*func)(void *), void * arg, const char * name );
36
void tr_threadJoin ( tr_thread_t * );
38
tr_lock_t * tr_lockNew ( void );
39
void tr_lockFree ( tr_lock_t * );
40
int tr_lockTryLock ( tr_lock_t * );
41
void tr_lockLock ( tr_lock_t * );
42
void tr_lockUnlock ( tr_lock_t * );
44
tr_cond_t * tr_condNew ( void );
45
void tr_condFree ( tr_cond_t * );
46
void tr_condSignal ( tr_cond_t * );
47
void tr_condBroadcast ( tr_cond_t * );
48
void tr_condWait ( tr_cond_t *, tr_lock_t * );
52
**** The lock can be had by one writer or any number of readers.
55
typedef struct tr_rwlock_s tr_rwlock_t;
57
tr_rwlock_t* tr_rwNew ( void );
58
void tr_rwFree ( tr_rwlock_t * );
59
void tr_rwReaderLock ( tr_rwlock_t * );
60
int tr_rwReaderTrylock ( tr_rwlock_t * );
61
void tr_rwReaderUnlock ( tr_rwlock_t * );
62
void tr_rwWriterLock ( tr_rwlock_t * );
63
int tr_rwWriterTrylock ( tr_rwlock_t * );
64
void tr_rwWriterUnlock ( tr_rwlock_t * );
67
struct in_addr; /* forward declaration to calm gcc down */
80
69
tr_getDefaultRoute( struct in_addr * addr );