mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 08:06:32 +00:00
解决了debian上编译后,kernel_thread_func被优化掉的问题
This commit is contained in:
@ -459,7 +459,6 @@ void do_IRQ(struct pt_regs *rsp, ul number)
|
||||
irq->handler(number, irq->parameter, rsp);
|
||||
else
|
||||
kwarn("Intr vector [%d] does not have a handler!");
|
||||
|
||||
// 向中断控制器发送应答消息
|
||||
if (irq->controller != NULL && irq->controller->ack != NULL)
|
||||
irq->controller->ack(number);
|
||||
@ -485,10 +484,10 @@ void do_IRQ(struct pt_regs *rsp, ul number)
|
||||
{
|
||||
// printk_color(RED, BLACK, "SMP IPI [ %d ]\n", number);
|
||||
apic_local_apic_edge_ack(number);
|
||||
|
||||
|
||||
{
|
||||
irq_desc_t * irq = &SMP_IPI_desc[number-200];
|
||||
if(irq->handler!=NULL)
|
||||
irq_desc_t *irq = &SMP_IPI_desc[number - 200];
|
||||
if (irq->handler != NULL)
|
||||
irq->handler(number, irq->parameter, rsp);
|
||||
}
|
||||
}
|
||||
@ -498,9 +497,11 @@ void do_IRQ(struct pt_regs *rsp, ul number)
|
||||
kwarn("do IRQ receive: %d", number);
|
||||
}
|
||||
|
||||
kdebug("before softirq");
|
||||
// 检测是否有未处理的软中断
|
||||
if (softirq_status != 0)
|
||||
do_softirq();
|
||||
kdebug("after softirq");
|
||||
// 检测当前进程是否持有自旋锁,若持有自旋锁,则不进行抢占式的进程调度
|
||||
if (current_pcb->preempt_count > 0)
|
||||
return;
|
||||
@ -510,6 +511,7 @@ void do_IRQ(struct pt_regs *rsp, ul number)
|
||||
// 检测当前进程是否可被调度
|
||||
if (current_pcb->flags & PROC_NEED_SCHED)
|
||||
{
|
||||
kdebug("to sched");
|
||||
sched_cfs();
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ hardware_intr_controller HPET_intr_controller =
|
||||
|
||||
void HPET_handler(uint64_t number, uint64_t param, struct pt_regs *regs)
|
||||
{
|
||||
// printk("(HPET)");
|
||||
printk("(HPET)");
|
||||
switch (param)
|
||||
{
|
||||
case 0: // 定时器0中断
|
||||
|
Reference in New Issue
Block a user