函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\irq\manage.c Create Date:2022-07-27 11:09:31
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Oneshot interrupts keep the irq line masked until the threaded* handler finished. unmask if the interrupt has not been disabled and* is marked MASKED.

函数原型:static void irq_finalize_oneshot(struct irq_desc *desc, struct irqaction *action)

返回类型:void

参数:

类型参数名称
struct irq_desc *desc
struct irqaction *action
880  如果非istate按位与IRQS_ONESHOT的值或中断处理函数恒等于irq_forced_secondary_handler则返回
883  again :
884  总线上锁
885  关闭本地中断,获取所要保护的运行队列(runqueue)的自旋锁(spinlock),为查找可运行进程做准备。( & 自旋锁)
901  如果此条件成立可能性小(为编译器优化)(irqd_irq_inprogress( & irq_data))则
902  raw_spin_unlock_irq( & 自旋锁)
903  慢总线解锁
904  cpu_relax()
905  转到:again
913  如果st_bit - Determine whether a bit is set*@nr: bit number to test*@addr: Address to start counting from则转到:out_unlock
916  threads_oneshot与等于线程跟踪屏蔽的反
918  如果非threads_oneshot且非irqd_irq_disabled( & irq_data)且irqd_irq_masked( & irq_data)则unmask_threaded_irq(desc)
922  out_unlock :
923  raw_spin_unlock_irq( & 自旋锁)
924  慢总线解锁
调用者
名称描述
irq_forced_thread_fnInterrupts which are not explicitly requested as threaded* interrupts rely on the implicit bh/preempt disable of the hard irq* context. So we need to disable bh here to avoid deadlocks and other* side effects.
irq_thread_fnInterrupts explicitly requested as threaded interrupts want to be* preemtible - many of them need to sleep and wait for slow busses to* complete.
irq_thread_dtor