mirror of
https://github.com/transmission/transmission
synced 2024-12-26 01:27:28 +00:00
clean up
This commit is contained in:
parent
f55c1b05cd
commit
3e6d071e0d
4 changed files with 46 additions and 38 deletions
|
@ -73,7 +73,7 @@ void tr_netResolveThreadInit()
|
||||||
resolveQueue = NULL;
|
resolveQueue = NULL;
|
||||||
tr_lockInit( &resolveLock );
|
tr_lockInit( &resolveLock );
|
||||||
tr_condInit( &resolveCond );
|
tr_condInit( &resolveCond );
|
||||||
tr_threadCreate( &resolveThread, resolveFunc, NULL );
|
tr_threadCreate( &resolveThread, resolveFunc, NULL, "resolve" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -182,8 +182,6 @@ static void resolveFunc( void * arg UNUSED )
|
||||||
tr_resolve_t * r;
|
tr_resolve_t * r;
|
||||||
struct hostent * host;
|
struct hostent * host;
|
||||||
|
|
||||||
tr_dbg( "Resolve thread started" );
|
|
||||||
|
|
||||||
tr_lockLock( &resolveLock );
|
tr_lockLock( &resolveLock );
|
||||||
|
|
||||||
while( !resolveDie )
|
while( !resolveDie )
|
||||||
|
@ -221,8 +219,6 @@ static void resolveFunc( void * arg UNUSED )
|
||||||
resolveQueue = r->next;
|
resolveQueue = r->next;
|
||||||
resolveRelease( r );
|
resolveRelease( r );
|
||||||
}
|
}
|
||||||
|
|
||||||
tr_dbg( "Resolve thread exited" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -194,13 +194,33 @@ char * tr_getTorrentsDirectory()
|
||||||
return torrentsDirectory;
|
return torrentsDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tr_threadCreate( tr_thread_t * t, void (*func)(void *), void * arg )
|
static void ThreadFunc( void * _t )
|
||||||
{
|
{
|
||||||
|
tr_thread_t * t = _t;
|
||||||
|
|
||||||
#ifdef SYS_BEOS
|
#ifdef SYS_BEOS
|
||||||
*t = spawn_thread( (void *) func, "torrent-tx", B_NORMAL_PRIORITY, arg );
|
/* This is required because on BeOS, SIGINT is sent to each thread,
|
||||||
resume_thread( *t );
|
which kills them not nicely */
|
||||||
|
signal( SIGINT, SIG_IGN );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
tr_dbg( "Thread '%s' started", t->name );
|
||||||
|
t->func( t->arg );
|
||||||
|
tr_dbg( "Thread '%s' exited", t->name );
|
||||||
|
}
|
||||||
|
|
||||||
|
void tr_threadCreate( tr_thread_t * t, void (*func)(void *), void * arg,
|
||||||
|
char * name )
|
||||||
|
{
|
||||||
|
t->func = func;
|
||||||
|
t->arg = arg;
|
||||||
|
t->name = strdup( name );
|
||||||
|
#ifdef SYS_BEOS
|
||||||
|
t->thread = spawn_thread( (void *) ThreadFunc, name,
|
||||||
|
B_NORMAL_PRIORITY, t );
|
||||||
|
resume_thread( t->thread );
|
||||||
#else
|
#else
|
||||||
pthread_create( t, NULL, (void *) func, arg );
|
pthread_create( &t->thread, NULL, (void *) ThreadFunc, t );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,10 +228,12 @@ void tr_threadJoin( tr_thread_t * t )
|
||||||
{
|
{
|
||||||
#ifdef SYS_BEOS
|
#ifdef SYS_BEOS
|
||||||
long exit;
|
long exit;
|
||||||
wait_for_thread( *t, &exit );
|
wait_for_thread( t->thread, &exit );
|
||||||
#else
|
#else
|
||||||
pthread_join( *t, NULL );
|
pthread_join( t->thread, NULL );
|
||||||
#endif
|
#endif
|
||||||
|
tr_dbg( "Thread '%s' joined", t->name );
|
||||||
|
free( t->name );
|
||||||
}
|
}
|
||||||
|
|
||||||
void tr_lockInit( tr_lock_t * l )
|
void tr_lockInit( tr_lock_t * l )
|
||||||
|
|
|
@ -26,20 +26,29 @@
|
||||||
|
|
||||||
#ifdef SYS_BEOS
|
#ifdef SYS_BEOS
|
||||||
#include <kernel/OS.h>
|
#include <kernel/OS.h>
|
||||||
typedef thread_id tr_thread_t;
|
typedef thread_id tr_thread_id_t;
|
||||||
typedef sem_id tr_lock_t;
|
typedef sem_id tr_lock_t;
|
||||||
typedef int tr_cond_t;
|
typedef int tr_cond_t;
|
||||||
#else
|
#else
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
typedef pthread_t tr_thread_t;
|
typedef pthread_t tr_thread_id_t;
|
||||||
typedef pthread_mutex_t tr_lock_t;
|
typedef pthread_mutex_t tr_lock_t;
|
||||||
typedef pthread_cond_t tr_cond_t;
|
typedef pthread_cond_t tr_cond_t;
|
||||||
#endif
|
#endif
|
||||||
|
typedef struct tr_thread_s
|
||||||
|
{
|
||||||
|
void (* func ) ( void * );
|
||||||
|
void * arg;
|
||||||
|
char * name;
|
||||||
|
tr_thread_id_t thread;;
|
||||||
|
}
|
||||||
|
tr_thread_t;
|
||||||
|
|
||||||
char * tr_getCacheDirectory();
|
char * tr_getCacheDirectory();
|
||||||
char * tr_getTorrentsDirectory();
|
char * tr_getTorrentsDirectory();
|
||||||
|
|
||||||
void tr_threadCreate ( tr_thread_t *, void (*func)(void *), void * arg );
|
void tr_threadCreate ( tr_thread_t *, void (*func)(void *),
|
||||||
|
void * arg, char * name );
|
||||||
void tr_threadJoin ( tr_thread_t * );
|
void tr_threadJoin ( tr_thread_t * );
|
||||||
void tr_lockInit ( tr_lock_t * );
|
void tr_lockInit ( tr_lock_t * );
|
||||||
void tr_lockClose ( tr_lock_t * );
|
void tr_lockClose ( tr_lock_t * );
|
||||||
|
|
|
@ -83,7 +83,7 @@ tr_handle_t * tr_init()
|
||||||
|
|
||||||
h->acceptDie = 0;
|
h->acceptDie = 0;
|
||||||
tr_lockInit( &h->acceptLock );
|
tr_lockInit( &h->acceptLock );
|
||||||
tr_threadCreate( &h->acceptThread, acceptLoop, h );
|
tr_threadCreate( &h->acceptThread, acceptLoop, h, "accept" );
|
||||||
|
|
||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
@ -367,6 +367,8 @@ char * tr_torrentGetFolder( tr_torrent_t * tor )
|
||||||
|
|
||||||
void tr_torrentStart( tr_torrent_t * tor )
|
void tr_torrentStart( tr_torrent_t * tor )
|
||||||
{
|
{
|
||||||
|
char name[32];
|
||||||
|
|
||||||
if( tor->status & ( TR_STATUS_STOPPING | TR_STATUS_STOPPED ) )
|
if( tor->status & ( TR_STATUS_STOPPING | TR_STATUS_STOPPED ) )
|
||||||
{
|
{
|
||||||
/* Join the thread first */
|
/* Join the thread first */
|
||||||
|
@ -384,7 +386,8 @@ void tr_torrentStart( tr_torrent_t * tor )
|
||||||
|
|
||||||
tor->date = tr_date();
|
tor->date = tr_date();
|
||||||
tor->die = 0;
|
tor->die = 0;
|
||||||
tr_threadCreate( &tor->thread, downloadLoop, tor );
|
snprintf( name, sizeof( name ), "torrent %p", tor );
|
||||||
|
tr_threadCreate( &tor->thread, downloadLoop, tor, name );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void torrentStop( tr_torrent_t * tor )
|
static void torrentStop( tr_torrent_t * tor )
|
||||||
|
@ -413,7 +416,6 @@ static void torrentReallyStop( tr_torrent_t * tor )
|
||||||
{
|
{
|
||||||
tor->die = 1;
|
tor->die = 1;
|
||||||
tr_threadJoin( &tor->thread );
|
tr_threadJoin( &tor->thread );
|
||||||
tr_dbg( "Thread joined" );
|
|
||||||
|
|
||||||
tr_trackerClose( tor->tracker );
|
tr_trackerClose( tor->tracker );
|
||||||
tor->tracker = NULL;
|
tor->tracker = NULL;
|
||||||
|
@ -763,14 +765,6 @@ static void downloadLoop( void * _tor )
|
||||||
uint64_t date1, date2;
|
uint64_t date1, date2;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tr_dbg( "Thread started" );
|
|
||||||
|
|
||||||
#ifdef SYS_BEOS
|
|
||||||
/* This is required because on BeOS, SIGINT is sent to each thread,
|
|
||||||
which kills them not nicely */
|
|
||||||
signal( SIGINT, SIG_IGN );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
tr_lockLock( &tor->lock );
|
tr_lockLock( &tor->lock );
|
||||||
|
|
||||||
tr_cpReset( tor->completion );
|
tr_cpReset( tor->completion );
|
||||||
|
@ -826,8 +820,6 @@ static void downloadLoop( void * _tor )
|
||||||
tr_ioClose( tor->io );
|
tr_ioClose( tor->io );
|
||||||
|
|
||||||
tor->status = TR_STATUS_STOPPED;
|
tor->status = TR_STATUS_STOPPED;
|
||||||
|
|
||||||
tr_dbg( "Thread exited" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -841,14 +833,6 @@ static void acceptLoop( void * _h )
|
||||||
uint8_t * hash;
|
uint8_t * hash;
|
||||||
tr_torrent_t * tor;
|
tr_torrent_t * tor;
|
||||||
|
|
||||||
tr_dbg( "Accept thread started" );
|
|
||||||
|
|
||||||
#ifdef SYS_BEOS
|
|
||||||
/* This is required because on BeOS, SIGINT is sent to each thread,
|
|
||||||
which kills them not nicely */
|
|
||||||
signal( SIGINT, SIG_IGN );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
tr_lockLock( &h->acceptLock );
|
tr_lockLock( &h->acceptLock );
|
||||||
|
|
||||||
while( !h->acceptDie )
|
while( !h->acceptDie )
|
||||||
|
@ -939,8 +923,6 @@ static void acceptLoop( void * _h )
|
||||||
}
|
}
|
||||||
|
|
||||||
tr_lockUnlock( &h->acceptLock );
|
tr_lockUnlock( &h->acceptLock );
|
||||||
|
|
||||||
tr_dbg( "Accept thread exited" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -955,7 +937,6 @@ static void acceptStop( tr_handle_t * h )
|
||||||
h->acceptDie = 1;
|
h->acceptDie = 1;
|
||||||
tr_threadJoin( &h->acceptThread );
|
tr_threadJoin( &h->acceptThread );
|
||||||
tr_lockClose( &h->acceptLock );
|
tr_lockClose( &h->acceptLock );
|
||||||
tr_dbg( "Accept thread joined" );
|
|
||||||
|
|
||||||
for( ii = 0; ii < h->acceptPeerCount; ii++ )
|
for( ii = 0; ii < h->acceptPeerCount; ii++ )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue