Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\i8259.c Create Date:2022-07-28 07:40:44
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:Careful! The 8259A is a fragile beast, it pretty* much _has_ to be done exactly like this (mask it* first, _then_ send the EOI, and the order of EOI* to the two 8259s is important!

Proto:static void mask_and_ack_8259A(struct irq_data *data)

Type:void

Parameter:

TypeParameterName
struct irq_data *data
152  irq = irq
153  irqmask = 1 << irq
156  raw_spin_lock_irqsave( & i8259A_lock, flags)
172  If This contains the irq mask for both 8259A irq controllers, & irqmask Then Go to spurious_8259A_irq
174  This contains the irq mask for both 8259A irq controllers, |= irqmask
176  handle_real_irq :
177  If irq & 8 Then
178  inb(PIC_SLAVE_IMR)
179  Basic port I/O
181  Basic port I/O
183  Basic port I/O
184  Else
185  inb(PIC_MASTER_IMR)
186  Basic port I/O
187  Basic port I/O
189  raw_spin_unlock_irqrestore( & i8259A_lock, flags)
190  Return
192  spurious_8259A_irq :
196  If This function assumes to be called rarely. Switching between* 8259A registers is slow.* This has to be protected by the irq controller spinlock* before being called. Then Go to handle_real_irq
209  If Not (spurious_irq_mask & irqmask) Then
210  printk(debug-level messages "spurious 8259A interrupt: IRQ%d.\n", irq)
214  atomic_inc( & irq_err_count)
220  Go to handle_real_irq