r8725@Kushana: nickm | 2006-09-06 04:39:29 -0400

spawn_func fixes: have cpuworker_main and dnsworker_main confirm to the right interfaces [casting func to void* is icky].  Also, make pthread_create() build without warnings.


svn:r8327
This commit is contained in:
Nick Mathewson 2006-09-06 08:42:20 +00:00
parent 000b7b287c
commit 365ccf0742
3 changed files with 7 additions and 9 deletions

View File

@ -936,14 +936,14 @@ get_uname(void)
* invoke them in a way pthreads would expect.
*/
typedef struct tor_pthread_data_t {
int (*func)(void *);
void (*func)(void *);
void *data;
} tor_pthread_data_t;
static void *
tor_pthread_helper_fn(void *_data)
{
tor_pthread_data_t *data = _data;
int (*func)(void*);
void (*func)(void*);
void *arg;
func = data->func;
arg = data->data;

View File

@ -36,7 +36,7 @@ static int num_cpuworkers_busy=0;
* the last time we got a key rotation event. */
static time_t last_rotation_time=0;
static int cpuworker_main(void *data);
static void cpuworker_main(void *data);
static int spawn_cpuworker(void);
static void spawn_enough_cpuworkers(void);
static void process_pending_task(connection_t *cpuworker);
@ -222,7 +222,7 @@ done_processing:
* (Note: this _should_ be by addr/port, since we're concerned with specific
* connections, not with routers (where we'd use identity).)
*/
static int
static void
cpuworker_main(void *data)
{
char question[ONIONSKIN_CHALLENGE_LEN];
@ -308,7 +308,6 @@ cpuworker_main(void *data)
tor_close_socket(fd);
crypto_thread_cleanup();
spawn_exit();
return 0; /* windows wants this function to return an int */
}
/** Launch a new cpuworker. Return 0 if we're happy, -1 if we failed.
@ -333,7 +332,7 @@ spawn_cpuworker(void)
tor_assert(fdarray[1] >= 0);
fd = fdarray[0];
spawn_func((void*) cpuworker_main, (void*)fdarray);
spawn_func(cpuworker_main, (void*)fdarray);
log_debug(LD_OR,"just spawned a cpu worker.");
#ifndef TOR_IS_MULTITHREADED
tor_close_socket(fdarray[1]); /* don't need the worker's side of the pipe */

View File

@ -112,7 +112,7 @@ static void send_resolved_cell(edge_connection_t *conn, uint8_t answer_type);
static int launch_resolve(edge_connection_t *exitconn);
#ifndef USE_EVENTDNS
static void dnsworkers_rotate(void);
static int dnsworker_main(void *data);
static void dnsworker_main(void *data);
static int spawn_dnsworker(void);
static int spawn_enough_dnsworkers(void);
#else
@ -991,7 +991,7 @@ dnsworkers_rotate(void)
* The dnsworker runs indefinitely, until its connection is closed or an error
* occurs.
*/
static int
static void
dnsworker_main(void *data)
{
char address[MAX_ADDRESSLEN+1]; /* Plus a byte for a final '.' */
@ -1079,7 +1079,6 @@ dnsworker_main(void *data)
spawn_exit();
}
}
return 0; /* windows wants this function to return an int */
}
/** Launch a new DNS worker; return 0 on success, -1 on failure.