2010-06-26 36 views
5

我想了解linux中的virtio機制。我讀到kick函數會通知主機端有關新發布的緩衝區。我特別關注virtio_net。一旦數據包準備好傳輸,kick函數就被稱爲here。從這裏我跟蹤了這​​個電話,我認爲這是this。從這裏開始呢?哪些代碼包含virtio的後端驅動程序。這個踢會去的hypervisor的代碼在哪裏?謝謝...kvm中hypercalls的輸入在哪裏?

感謝, 巴拉

回答

3

的IO端口訪問這裏用的虛擬機,這是由它支持虛擬機實例QEMU實施的「硬件」進行通信。 QEMU代碼的起始位置是virtio_ioport_write() in hw/virtio-pci.c

+0

非常感謝。還有一個問題。 qemu實例是在guestOS的用戶空間還是HostOS的用戶空間運行的? – bala1486 2010-06-26 17:02:19

+1

主機操作系統的用戶空間。你有沒有讀過最初的[kvm論文](http://www.kernel.org/doc/ols/2007/ols2007v1-pages-225-230.pdf)? QEMU是提供I/O虛擬化的用戶空間代碼,如3.1和5.1節所述。客戶操作系統不需要任何特殊的操作;但是使用virtio等機制(guest虛擬機已經知道它是虛擬化的,並且使用了特殊的支持)可以提供更高的I/O性能。 (這是本文第8.2節中簡要描述的「半虛擬化」。) – 2010-06-26 19:30:31