Draft: lab 4 demo fix
This commit is contained in:
@@ -65,6 +65,9 @@ void add_interrupt_task(uint64_t priority,
|
||||
uint64_t param)
|
||||
{
|
||||
// DEBUG_EXCEP("add interrupt");
|
||||
uint64_t last_priority = 0xfff;
|
||||
if (global_interrupt_pool)
|
||||
last_priority = global_interrupt_pool->priority;
|
||||
interrupt_t *newint = kmalloc(sizeof(interrupt_t));
|
||||
*newint = (interrupt_t){
|
||||
._l = (interrupt_t *)0x0,
|
||||
@@ -82,7 +85,7 @@ void add_interrupt_task(uint64_t priority,
|
||||
|
||||
while (global_interrupt_pool) {
|
||||
// LOG("check interrupt"); DEBUG_EXCEP(global_interrupt_pool->priority);
|
||||
if (global_interrupt_pool->is_start)
|
||||
if (global_interrupt_pool->is_start && global_interrupt_pool->priority < last_priority)
|
||||
return;
|
||||
global_interrupt_pool->is_start = true;
|
||||
global_interrupt_pool->func(global_interrupt_pool->param);
|
||||
@@ -101,6 +104,8 @@ void irq_handler(void)
|
||||
// uint64_t core0_irq_source = *CORE0_IRQ_SOURCE;
|
||||
// DEBUG_EXCEP(core0_irq_source);
|
||||
|
||||
// TODO: turnoff global interrupt
|
||||
|
||||
if (_irq_source_timer())
|
||||
timer_irq_handler();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user