PatchSet 4813 
Date: 2004/06/03 18:45:58
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Fixed two bugs in jthreads.

        * kaffe/kaffevm/systems/unix-jthreads/jthread.c
        (jthread_stop): THREAD_FLAGS_DONTSTOP should 0 to be able to call
        die().
        (jcondvar_broadcast): Fixed list chaining for condition variables.

        Reported by dai shaowei <[EMAIL PROTECTED]>.

Members: 
        ChangeLog:1.2381->1.2382 
        kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.114->1.115 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2381 kaffe/ChangeLog:1.2382
--- kaffe/ChangeLog:1.2381      Thu Jun  3 16:21:24 2004
+++ kaffe/ChangeLog     Thu Jun  3 18:45:58 2004
@@ -1,3 +1,13 @@
+2004-06-04  Guilhem Lavaux <[EMAIL PROTECTED]>,
+       dai shaowei <[EMAIL PROTECTED]>
+
+       * kaffe/kaffevm/systems/unix-jthreads/jthread.c
+       (jthread_stop): THREAD_FLAGS_DONTSTOP should 0 to be able to call
+       die().
+       (jcondvar_broadcast): Fixed list chaining for condition variables.
+
+       Reported by dai shaowei <[EMAIL PROTECTED]>.
+
 2004-06-03  Dalibor Topic  <[EMAIL PROTECTED]>
 
         * m4/acx_pthread.m4:
Index: kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c
diff -u kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.114 
kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.115
--- kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.114   Sat May 29 17:01:18 
2004
+++ kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c Thu Jun  3 18:45:57 2004
@@ -1831,15 +1831,18 @@
        intsDisable();
        /* No reason to hit a dead man over the head */
        if (jtid->status != THREAD_DEAD) {
-               jtid->flags |= THREAD_FLAGS_KILLED;
+         jtid->flags |= THREAD_FLAGS_KILLED;
        }
 
        /* if it's us, die */
-       if (jtid == jthread_current() && 
-               (jtid->flags & THREAD_FLAGS_DONTSTOP) != 0 && blockInts == 1)
-               die();
+       if (jtid == jthread_current()
+           && (jtid->flags & THREAD_FLAGS_DONTSTOP) == 0 && blockInts == 1)
+         die();
+
+       /* We only have to resume the thread if it is not us. */
+       if (jtid != jthread_current())
+          resumeThread(jtid);
 
-        resumeThread(jtid);
        intsRestore();
 }
 
@@ -2403,8 +2406,8 @@
                for (condp = cv; *condp != 0; condp = &(*condp)->next)
                        ;
                (*condp) = lock->waiting;
-               lock->waiting = *condp;
-               *condp = NULL;
+               lock->waiting = *cv;
+               *cv = NULL;
        }
        intsRestore();
 }

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to