#define E_THREAD_NONE as ((pthread_t)~0) and use that instead of ~0

* e-msgport.c: #define E_THREAD_NONE as ((pthread_t)~0) and use
	that instead of ~0 throughout. (pthread_t is a pointer type on my
	system, so there are lots of warnings without the cast.)

svn path=/trunk/; revision=7271
This commit is contained in:
Dan Winship
2001-01-05 20:04:15 +00:00
parent 9177914543
commit fc9fd0c4dd
2 changed files with 18 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2001-01-04 Dan Winship <danw@helixcode.com>
* e-msgport.c: #define E_THREAD_NONE as ((pthread_t)~0) and use
that instead of ~0 throughout. (pthread_t is a pointer type on my
system, so there are lots of warnings without the cast.)
2000-12-24 Not Zed <NotZed@HelixCode.com>
* Merge from camel-mt-branch.

View File

@ -248,6 +248,8 @@ struct _EThread {
void *lost_data;
};
#define E_THREAD_NONE ((pthread_t)~0)
static void thread_destroy_msg(EThread *e, EMsg *m);
EThread *e_thread_new(e_thread_t type)
@ -258,7 +260,7 @@ EThread *e_thread_new(e_thread_t type)
pthread_mutex_init(&e->mutex, 0);
e->type = type;
e->server_port = e_msgport_new();
e->id = ~0;
e->id = E_THREAD_NONE;
e->queue_limit = INT_MAX;
return e;
@ -282,10 +284,10 @@ void e_thread_destroy(EThread *e)
case E_THREAD_QUEUE:
case E_THREAD_DROP:
/* if we have a thread, 'kill' it */
while (e->id != ~0 && tries < 5) {
while (e->id != E_THREAD_NONE && tries < 5) {
if (e->waiting == 1) {
pthread_t id = e->id;
e->id = ~0;
e->id = E_THREAD_NONE;
pthread_mutex_unlock(&e->mutex);
if (pthread_cancel(id) == 0)
pthread_join(id, 0);
@ -298,7 +300,7 @@ void e_thread_destroy(EThread *e)
}
tries++;
}
busy = e->id != ~0;
busy = e->id != E_THREAD_NONE;
break;
case E_THREAD_NEW:
while (g_list_length(e->id_list) && tries < 5) {
@ -469,7 +471,7 @@ thread_dispatch(void *din)
switch (e->type) {
case E_THREAD_QUEUE:
case E_THREAD_DROP:
e->id = ~0;
e->id = E_THREAD_NONE;
break;
case E_THREAD_NEW:
e->id_list = g_list_remove(e->id_list, (void *)pthread_self());
@ -532,10 +534,10 @@ void e_thread_put(EThread *e, EMsg *msg)
}
/* create the thread, if there is none to receive it yet */
if (e->id == ~0) {
if (e->id == E_THREAD_NONE) {
if (pthread_create(&e->id, NULL, thread_dispatch, e) == -1) {
g_warning("Could not create dispatcher thread, message queued?: %s", strerror(errno));
e->id = ~0;
e->id = E_THREAD_NONE;
}
}
@ -569,7 +571,7 @@ EMutex *e_mutex_new(e_mutex_t type)
m->type = type;
m->waiters = 0;
m->depth = 0;
m->owner = ~0;
m->owner = E_THREAD_NONE;
switch (type) {
case E_MUTEX_SIMPLE:
@ -621,7 +623,7 @@ int e_mutex_lock(EMutex *m)
if (pthread_mutex_lock(&m->mutex) == -1)
return -1;
while (1) {
if (m->owner == ~0) {
if (m->owner == E_THREAD_NONE) {
m->owner = id;
m->depth = 1;
break;
@ -654,7 +656,7 @@ int e_mutex_unlock(EMutex *m)
m->depth--;
if (m->depth == 0) {
m->owner = ~0;
m->owner = E_THREAD_NONE;
if (m->waiters > 0)
pthread_cond_signal(&m->cond);
}