2015-01-17 17 views
6

Ben G/Ç Kullanıcı hakkında aşağıdaki linklere kadar okudum.Çekirdek Kullanıcı G/Ç uygulama geliştirme

Belleği ana bilgisayardan kişiye (QEmu'de) eşlemek için ivshmem aygıtını kullanıyorum. Kullanmakta olduğum istemci sürücüsü, https://www.gitorious.org/nahanni/guest-code'dan kernel_module/uio/uio_ivshmem.c'dir.

Birkaç misafir arasında bellek paylaşma konusunda başarılı bir şekilde çalıştım ve ayrıca yukarıdaki ana veri havuzundaki ivshmem sunucusunu kullanarak ana bilgisayardan konuklara kesintiler de verebilirim.

Ancak, belleğe yazma işleminin tamamlandığını fark etmek için konuktan nasıl "kesilebileceğimi" anlayamıyorum. Yani diğer konuğun ilk misafirin ne yazdığını okuması gerektiğini işaret eder.

Neyi yanlış yapıyorum? UIO kullanarak kesinti göndermek için herhangi bir yol var mı, yoksa sadece alabilir miyim? Yazmayı/okumayı bitirdiğimi başka nasıl fark edebilirim?

+0

Ne? Ara süreç değil, sanal makine. Ne demek istediğinden emin değilim, ama yanlış anlıyor olabilirdi. – netigger

cevap

2

Tamam, şimdi neden kesinti yapamadığımı anladım.

Test uygulamalarını kullanmayı denedim, ancak bu (http://lists.gnu.org/archive/html/qemu-devel/2014-08/msg05388.html) yazımda okuyabildiğiniz gibi, çekirdeğindeki bir yama uio_ivshmem.c'yi kırdı.

Bu yama, kesmeleri göndermek için kullanılan BAR0'ı eşleştiremedi. Kesinti işe yaramazsa da, BAR2 hala iyi ve verileri paylaşmak için kullanılabilir.

İlgili konular