mirror of https://github.com/l4ka/pistachio.git
Finally, fix unwind again -- the easiest chatcher for lazy state
resets is to check for running thread state. If that's the case, partner is basically a don't care
This commit is contained in:
parent
3ebf15e8a4
commit
8b00da0a9f
|
@ -452,7 +452,8 @@ static void do_xcpu_unwind_partner (cpu_mb_entry_t * entry)
|
|||
return;
|
||||
}
|
||||
|
||||
if (! tcb->get_saved_partner ().is_nilthread ())
|
||||
if (! tcb->get_saved_partner ().is_nilthread () &&
|
||||
! tcb->get_saved_state ().is_running () )
|
||||
{
|
||||
// We have a nested IPC operation. Perform another unwind.
|
||||
tcb->restore_state ();
|
||||
|
@ -525,8 +526,9 @@ redo_unwind:
|
|||
tag = tag.error_tag ();
|
||||
}
|
||||
|
||||
if (! get_saved_partner ().is_nilthread ())
|
||||
{
|
||||
if (! get_saved_partner ().is_nilthread () &&
|
||||
! get_saved_state ().is_running () )
|
||||
{
|
||||
// We're handling a nested IPC.
|
||||
restore_state ();
|
||||
goto redo_unwind;
|
||||
|
@ -617,8 +619,9 @@ redo_unwind:
|
|||
}
|
||||
}
|
||||
|
||||
if (! get_saved_partner ().is_nilthread ())
|
||||
{
|
||||
if (! get_saved_partner ().is_nilthread () &&
|
||||
! get_saved_state ().is_running () )
|
||||
{
|
||||
// We're handling a nested IPC.
|
||||
restore_state ();
|
||||
goto redo_unwind;
|
||||
|
@ -696,8 +699,9 @@ redo_unwind:
|
|||
}
|
||||
}
|
||||
|
||||
if (! get_saved_partner ().is_nilthread ())
|
||||
{
|
||||
if (! get_saved_partner ().is_nilthread () &&
|
||||
! get_saved_state ().is_running () )
|
||||
{
|
||||
// We're handling a nested IPC.
|
||||
restore_state ();
|
||||
goto redo_unwind;
|
||||
|
|
Loading…
Reference in New Issue