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