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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章