WikiÆ⸡º÷
ºÇ¶á¹¹¿·¤·¤¿¥Ú¡¼¥¸
´ÉÍý¿Í's Profile
¥ª¡¼¥×¥ó·Ï¤Î²¾ÁÛ²½¤Ë¶½Ì£¤ò¤â¤Ä£²Î®µ»½Ñ¼Ô¤Ç¤¹¡£Linux 2.6.20¤ËºÎÍѤµ¤ì¤¿¥«¡¼¥Í¥ë¥Ù¡¼¥¹¤Î²¾ÁÛ¥Þ¥·¥ó¥É¥é¥¤¥Ðkvm¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤ò¤Þ¤È¤á¤ëWiki¤òΩ¤Á¾å¤²¤Þ¤·¤¿¡£
ºÇ¿·¥³¥á¥ó¥È
XenNews by check it out
Ubuntu¤Çkvm! by check it out
PV Driver»ÅÍͳµÍ× by stunning seo guys
PV Driver»ÅÍͳµÍ× by awesome things!
FrontPage by awesome things!
¥Õ¥¡¥¤¥ë¿÷·Á by stunning seo guys
¥¿¥°
¥Õ¥ê¡¼¥¨¥ê¥¢

PV Driver»ÅÍͳµÍ×

¡¡PV Driver¤Ï¡¢kvm-16¤Ç¤Ï¥½¡¼¥¹¸ø³«¤µ¤ì¤Æ¤¤¤Ê¤¤¡£¤¬¡¢PV Driver¤òºîÀ®¤¹¤ë¤¿¤á¤Îhypercall¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Î»ÅÁȤߤϴޤޤì¤Æ¤¤¤ë¡£ ¥²¥¹¥ÈOS¤«¤éhypercall¤ò½Ð¤·¤¿¸å¤Ç¡¢hypervisor¤«¤é³ä¤ê¹þ¤ß¤¬¤¢¤¬¤ë¾ì¹ç¤¬¤¢¤ë¡£¤½¤Î³ä¤ê¹þ¤ß¤Î¤¿¤á¤Î¥Ç¥Ð¥¤¥¹¤Î¼ÂÁõ¤È¤·¤Æ¡¢kvm-16\driversÇÛ²¼¤Îhypercall.c¤¬¤¢¤ë¡£¤½¤Î¼ÂÁõ¤È¤Ê¤ë¡Ê¤È»×¤ï¤ì¤ë¡Ë¡£

¡¡¡Ý¥²¥¹¥ÈOS¾å¤ÎPCI¥Ð¥¹¤Ë²¾ÁۤΡÖhypercall device¡×¤òÍÑ°Õ
¡¡¡Ý¤½¤Î¥Ç¥Ð¥¤¥¹¤Ë³ä¤ê¹þ¤ß¥Ï¥ó¥É¥é¤òÀßÄê

³ä¤ê¹þ¤ß¥Ï¥ó¥É¥é¼«ÂΤϡ¢Io¥Ý¡¼¥È·Ðͳ¤Ç¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤È¤³¤í¤Þ¤Ç¤·¤«¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£¥Ç¥£¥¹¥¯¤ä¥Í¥Ã¥È¥ï¡¼¥¯¤Ê¤É¤Î¥É¥é¥¤¥Ð¤Î³ä¤ê¹þ¤ß¤È¤·¤Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á¤µ¤ì¤ë½èÍý¤¬Äɲ䵤ì¤ë¡Ê¤È»×¤ï¤ì¤ë¡Ë¡£

hypercall device¤Î¥Ï¡¼¥É¥¦¥§¥¢¤È¤·¤Æ¤Î¤Õ¤ë¤Þ¤¤¤Ë¤Ä¤¤¤Æ¤Ï¡¢driver\qemu\hw\hypercall.c¤¬¤½¤Î¼ÂÁõ¤È¤Ê¤ë¡£



°Ê¹ß¡¢hypercall.c¤Î¼ÂÁõ¤Ë¤Ä¤¤¤Æ¤Î¼çÍ×Éôʬ¤Ë¤Ä¤¤¤Æ¼¨¤¹¡£¡Ê»²¹Í¡Ë
¡ô¸«¤Æ¤ÎÄ̤ꡢ¸½¾õ¤Ï¥¹¥±¥ë¥È¥ó¥É¥é¥¤¥Ð¤Ë¶á¤¤

­¡¥É¥é¥¤¥Ð¤Î½é´ü²½

hypercall_init_module [hypercall.c](353)
¨§printk
¨¦pci_module_init

¡¡¡¦¼¡¤Î¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ë¡¼¥Á¥ó¾ðÊó¤È¤È¤â¤Ë¥É¥é¥¤¥Ð¤ÎÅÐÏ¿¤ò¹Ô¤Ã¤Æ¤¤¤ë

static struct pci_driver hypercall_pci_driver = {
¡¡.name ¡¡¡¡¡¡¡¡= HYPERCALL_DRIVER_NAME,
¡¡.id_table ¡¡= hypercall_pci_tbl,
¡¡.probe = hypercall_init_one,¡¡<--- ¥×¥í¡¼¥Ö½èÍý»þ
¡¡.remove = __devexit_p(hypercall_remove_one),¡¡<--- ¥ê¥à¡¼¥Ö½èÍý»þ
#ifdef CONFIG_PM
¡¡.suspend¡¡¡¡¡¡¡¡¡¡ = hypercall_suspend, <--- ¥µ¥¹¥Ú¥ó¥É»þ
¡¡.resume ¡¡¡¡¡¡¡¡¡¡= hypercall_resume, <--- ¥ì¥¸¥å¡¼¥à»þ
#endif /* CONFIG_PM */
};

­¢¥Ç¥Ð¥¤¥¹¥×¥í¡¼¥Ö½èÍý

hypercall_init_one [hypercall.c](163)
¨§pci_read_config_byte
¨§printk
¨§pci_name
¨§hypercall_init_board [hypercall.c](87)
¨¢¨§kzalloc
¨¢¨§printk
¨¢¨§pci_name
¨¢¨§pci_enable_device
¨¢¨§pci_resource_start
¨¢¨§pci_resource_end
¨¢¨§pci_resource_flags
¨¢¨§pci_resource_len
¨¢¨§DPRINTK
¨¢¨§pci_request_regions
¨¢¨§pci_iomap
¨¢¨§hypercall_cleanup_dev [hypercall.c](333)
¨¢¨¢¨§DPRINTK
¨¢¨¢¨§pci_release_regions
¨¢¨¢¨§pci_iounmap
¨¢¨¢¨§pci_set_drvdata
¨¢¨¢¨§kfree
¨¢¨¢¨¦__devexit_p
¨¢¨¦pci_disable_device
¨§spin_lock_init
¨§pci_set_drvdata
¨§hypercall_open [hypercall.c](286)
¨¢¨§request_irq
¨¢¨¦printk
¨¦hypercall_sysfs_add [hypercall.c](462)
¡¡¨§kobject_init
¡¡¨§kobject_set_name
¡¡¨§printk
¡¡¨§kobject_add
¡¡¨§sysfs_create_link
¡¡¨¦kobject_del

¡¡¡¦¥Ï¡¼¥É¥¦¥§¥¢¡Êhypercall device¡Ë¤Î¥ê¥½¡¼¥¹¾ðÊó¤ò¼èÆÀ¤·¡¢hypercall_open´Ø¿ô¤ÎÃæ¤Ç
¡¡¡¡³ä¤ê¹þ¤ß¥Ï¥ó¥É¥é¤È¤·¤Æ¡¢hypercall_interrupt´Ø¿ô¤òÅÐÏ¿

­£³ä¤ê¹þ¤ß¥Ï¥ó¥É¥é

hypercall_interrupt [hypercall.c](233)
¨§DPRINTK
¨§spin_lock
¨§HIO_READ8
¨§unlikely
¨§HIO_WRITE8
¨§spin_unlock
¨¦hypercall_tx [hypercall.c](212)
¡¡¨§spin_lock
¡¡¨§HIO_WRITE8
¡¡¨¦spin_unlock

¡¡¡¦Io¥Ý¡¼¥È¤ò·Ðͳ¤·¤Æ¡¢¾ðÊó¤òÆɤ߹þ¤à
¡¡¡¡ËÜÍè¤Ê¤é¡¢É¬Íפʥǥ£¥¹¥Ñ¥Ã¥Á¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤Ê¤ë¤Î¤À¤í¤¦¤¬Ì¤¼ÂÁõ¡Ê¥Û¥¹¥È¤Ø¤Î¾ðÊó¤Î½ñ¤­½Ð¤·³Îǧ¤Î¤¿¤á¡¢"hello host"¤ò½ñ¤­½Ð¤·¤Æ¤¤¤ë¡Ë

­¤¥Ç¥Ð¥¤¥¹¥ê¥à¡¼¥Ö»þ

hypercall_remove_one [hypercall.c](200)
¨§pci_get_drvdata
¨§hypercall_close [hypercall.c](302)
¨¢¨§synchronize_irq
¨¢¨¦free_irq
¨§hypercall_sysfs_remove [hypercall.c](490)
¨¢¨§sysfs_remove_link
¨¢¨¦kobject_del
¨§hypercall_cleanup_dev [hypercall.c](333)
¨¢¨§DPRINTK
¨¢¨§pci_release_regions
¨¢¨§pci_iounmap
¨¢¨§pci_set_drvdata
¨¢¨§kfree
¨¢¨¦__devexit_p
¨¦pci_disable_device

¡¡¡¦¥ê¥à¡¼¥Ö»þ¤ËɬÍפʸå½èÍý

­¥¥É¥é¥¤¥Ðºï½ü»þ

hypercall_cleanup_module [hypercall.c](359)
¨¦pci_unregister_driver

¡¡¡¦¥É¥é¥¤¥Ðºï½ü»þ¤ËɬÍפʥ¯¥ê¥ó¥Ê¥Ã¥×½èÍý
2007ǯ03·î21Æü(¿å) 09:01:48 Modified by deku_nobo




¥¹¥Þ¡¼¥È¥Õ¥©¥óÈǤǸ«¤ë