fuchsia中斷注入流程

以virtio net接收中斷爲例。

RxStream::Notify //virtionet後端接收到數據包後,通過Notify函數向虛擬機注入中斷
    chain_.Return
        queue_->Return
            interrupt_(actions) //在VirtioNetImpl::Start函數中會調用rx_stream_.Init將VirtioNetImpl::Interrupt設置爲virtionet獨立進程的中斷響應回調
                VirtioNetImpl::Interrupt
                    DeviceBase::Interrupt //父類的Interrupt函數
                        event_.signal //向vmm後端發送信號
                        ------------- //下面是vmm後端進程
                            VirtioComponentDevice::OnInterrupt
                                VirtioDevice::Interrupt //調用父類函數
                                    PciDevice::Interrupt //同樣調用父類PciDevice的Interrupt
                                        PciBus::Interrupt //調用pcibus的Interrupt函數
                                            GicDistributor::Interrupt
                                                GicDistributor::TargetInterrupt
                                                    Guest::Interrupt
                                                        Vcpu::Interrupt
                                                            vcpu::interrupt
                                                                zx_vcpu_interrupt
                                                                ----------------//系統調用進入內核
                                                                    sys_vcpu_interrupt
                                                                        VcpuDispatcher::VirtualInterrupt
                                                                            Vcpu::VirtualInterrupt
                                                                                Vcpu::Interrupt
                                                                                    GichState::Interrupt
                                                                                        InterruptTracker::Interrupt
                                                                                            InterruptTracker::Track
                                                                                                bitmap_.Set //用2bit表示一箇中斷,bit0表示虛擬中斷,bit1表示物理中斷

發佈了79 篇原創文章 · 獲贊 28 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章