mirror of
https://github.com/fail0verflow/mini.git
synced 2024-11-28 06:04:19 +01:00
Fixed hang when vectoring to another address with no Gecko plugged in
due to IRQ trap
This commit is contained in:
parent
5b4ebdf739
commit
48109e684b
14
ipc.c
14
ipc.c
@ -340,17 +340,19 @@ u32 ipc_process_slow(void)
|
|||||||
u32 vector = 0;
|
u32 vector = 0;
|
||||||
|
|
||||||
while (!vector) {
|
while (!vector) {
|
||||||
while (slow_queue_head != slow_queue_tail) {
|
while (!vector && (slow_queue_head != slow_queue_tail)) {
|
||||||
vector = process_slow(&slow_queue[slow_queue_head]);
|
vector = process_slow(&slow_queue[slow_queue_head]);
|
||||||
slow_queue_head = (slow_queue_head+1)&(IPC_SLOW_SIZE-1);
|
slow_queue_head = (slow_queue_head+1)&(IPC_SLOW_SIZE-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 cookie = irq_kill();
|
if (!vector)
|
||||||
if(slow_queue_head == slow_queue_tail)
|
{
|
||||||
irq_wait();
|
u32 cookie = irq_kill();
|
||||||
irq_restore(cookie);
|
if(slow_queue_head == slow_queue_tail)
|
||||||
|
irq_wait();
|
||||||
|
irq_restore(cookie);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return vector;
|
return vector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user