以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表示物理中斷