]> Zhao Yanbai Git Server - minix.git/commitdiff
Fix compiler warnings and mutex deadlock
authorThomas Veerman <thomas@minix3.org>
Fri, 8 Jul 2011 13:59:07 +0000 (13:59 +0000)
committerThomas Veerman <thomas@minix3.org>
Fri, 8 Jul 2011 13:59:07 +0000 (13:59 +0000)
lib/libmthread/Makefile
lib/libmthread/misc.c
lib/libmthread/mutex.c

index 5e8c3b7d8a7e1e50a69f40a80c79d959be4ed750..a35cc5e64c8482ee0c75a0555e01e22800eab080 100644 (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
 
index 81301f31bef1898cca504713c84433eec68a0321..57e94bb3993c5f7d424ef439aae834fd922c2a92 100644 (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);
 }
 
index 5aacbcf03c7c065d1d92de4b4e0e4f474587c8be..0515556b9a82a1824b46236b06ea1fb86546d026 100644 (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);