Fix compiler warnings and mutex deadlock

This commit is contained in:
Thomas Veerman 2011-07-08 13:59:07 +00:00
parent 25bd2bd8fa
commit b61266eb51
3 changed files with 9 additions and 3 deletions

View file

@ -1,6 +1,6 @@
# Makefile for libmthread
CPPFLAGS+=-O -D_MINIX -D_POSIX_SOURCE -Wall
CPPFLAGS+=-O -D_MINIX -D_POSIX_SOURCE -Wall -Werror
LIB= mthread

View file

@ -21,11 +21,15 @@ PUBLIC void mthread_debug_f(const char *file, int line, const char *msg)
PUBLIC void mthread_panic_f(const char *file, int line, const char *msg)
{
/* Print panic message to stdout and exit */
volatile int *sf;
sf = NULL;
printf("mthread panic (%s:%d): ", file, line);
printf(msg);
printf("%s", msg);
printf("\n");
fflush(stdout); /* Force debug print to screen */
*((int *)0) = 1; /* Cause segfault to generate trace */
*((int *) sf ) = 1; /* Cause segfault to generate trace */
exit(1);
}

View file

@ -190,6 +190,8 @@ mthread_mutex_t *mutex; /* Mutex that is to be locked */
m = (struct __mthread_mutex *) *mutex;
if (!mthread_mutex_valid(&m))
return(EINVAL);
else if (m->mm_owner == current_thread)
return(EDEADLK);
else if (m->mm_owner == NO_THREAD) {
m->mm_owner = current_thread;
return(0);