??????linux??????????????????????ж?????????????????do_irq?????ж???????????????ж???????????????ж?????????????е?????У????????豸???ж???????豸???ж????????μ??ж????????????????pending???????ж?????????????????
??????2.4??2.6??????????????????????????
????????????ж???????????ж?????????SA_INTERRUPT???????????????????? SA_SHIRQ????????????????????????????д????????ide??????????????????? SA_SAMPLE_RANDOM???????????????ж????????????????????????????????ж???????????????????????????????ж???????????????????????????linux????? ?ж????????????κ??ж??????????????ж???????????????ж??????????????? ?ж?????ж??????????????????????б??????ж????????α???????С???????ν “???????ж????????????”??????????????????????ж??????????????ж??? ???????????ж??????x86?????eflags???????ifλ???0??????е??ж????????? ??handle_IRQ_event????????п??ж?????????????? ?????????????ж????????????????idt????????????????IRQ_PENDING?? IRQ_INPROGRESS?????????????????ж??????У????????handle_IRQ_event?????? ????????do_IRQ?????????????????????ж??????????????????????ν?ж????? ?????????ж??????????????????????????????ж??????????????е??
?????????????????????????????????????????ж??????
???????????????ж????η????????????idt???????λ???????IRQ_PENDING?????????д?????? ????ж???????action???null????????????????IRQ_INPROGRESS?????????Σ??????????????IRQ_INPROGRESS?????IRQ_PENDING?????????action??????????ж??????????????????????linux????????÷????????????????????????????????handle_IRQ_event?????ж?????????handle_IRQ_event?п??ж??????????????EOI??PCI??????????????????ж??????????ν???do_IRQ?????????????λ?????IRQ_PENDING??????????????????ж?????м????IRQ_INPROGRESS??б???????????????????IRQ_PENDING????????action?????null???????????????handle_IRQ_event?????????????????ж?????????????ε??ж????????У??????????handle_IRQ_event????????handle_IRQ_event????????IRQ_PENDING???????????????????????handle_IRQ_event??й????б??ж????????δ?????????ж??????????????handle_IRQ_event???????????????IRQ_PENDING???????
????2.4??2.6???????????????????2.6???????do_IRQ?????????????????????????????????ж???????IRQ_PER_CPU??????ж?????????????????????????IRQ_PER_CPU???ж????????smp????????ж?????????????cpu???????arch/ppc/syslib/open_pic.c?е?openpic_init?г????ipi?ж?????
????????do_IRQ???????ж?????
????do_IRQ????????????????handle_IRQ_event????????ж?status?????????IRQ_PENDING??????ж????????б??????????????ж????? ???????????????ж?????У???????????ж????δ???????????ж??????????????????????ж????????handle_IRQ_event????????????????????????????????ж?????????Щ?ж?????????????????????ж?status?????????IRQ_PENDING?????????????ж????δ??????ж??handle_IRQ_event??????????Ρ?
?????????????bug??? ????????????ж???д???OK??????1???????N?????????????????????????裬??????????????ж?δ????????????