linux-2.6.20/drivers/kvm/kvm_main.c_4
□デバイスの制御
□kvm_dev_ioctl [kvm_main.c](2247)
(引数)
struct file *filp:ファイルポインタ
unsigned int ioctl:制御コード
unsigned long arg:
case KVM_CREATE_VM:
・kvm_dev_ioctl_create_vm関数を呼んで、仮想マシンを生成する
├kvm_dev_ioctl_create_vm [kvm_main.c](2203)
│├kvmfs_inode [kvm_main.c](102)
││├new_inode
││└ERR_PTR
・inodeを作成して、次に示す仮想マシンに対するディスパッチルーチンを登録する
static struct file_operations kvm_vm_fops = {
.release = kvm_vm_release,
.unlocked_ioctl = kvm_vm_ioctl,
.compat_ioctl = kvm_vm_ioctl,
.mmap = kvm_vm_mmap,
};
│├IS_ERR
│├PTR_ERR
│├kvm_create_vm [kvm_main.c](287)
││├kzalloc
││├ERR_PTR
││├spin_lock_init
││├INIT_LIST_HEAD
││├mutex_init
││├spin_lock
││├list_add
││└spin_unlock
・仮想マシンを生成する
│├kvmfs_file [kvm_main.c](129)
││├get_empty_filp
││├ERR_PTR
││├mntget
││└d_alloc_anon
・ファイルを作成しinodeを関連付け、仮想マシンにファイルを関連づける
│├get_unused_fd
│├fd_install
・
│├fput
│├kvm_destroy_vm [kvm_main.c](373)
││├spin_lock
││├list_del
││├spin_unlock
││├kvm_free_vcpus [kvm_main.c](360)
│││└kvm_free_vcpu [kvm_main.c](349)
│││ ├vcpu_load [kvm_main.c](258)
│││ │├mutex_lock
│││ │└vcpu_load [kvm_main.c](258)
│││ ├kvm_mmu_destroy
│││ ├vcpu_put [kvm_main.c](281)
│││ │├vcpu_put [kvm_main.c](281)
│││ │└mutex_unlock
│││ └vcpu_free
││├kvm_free_physmem [kvm_main.c](341)
│││└kvm_free_physmem_slot [kvm_main.c](320)
│││ ├__free_page
│││ └vfree
││└kfree
│└iput
case KVM_GET_MSR_INDEX_LIST:
・MSRのインデックスリストの取得
├copy_from_user
├ARRAY_SIZE
└copy_to_user
□kvm_dev_ioctl [kvm_main.c](2247)
(引数)
struct file *filp:ファイルポインタ
unsigned int ioctl:制御コード
unsigned long arg:
case KVM_CREATE_VM:
・kvm_dev_ioctl_create_vm関数を呼んで、仮想マシンを生成する
├kvm_dev_ioctl_create_vm [kvm_main.c](2203)
│├kvmfs_inode [kvm_main.c](102)
││├new_inode
││└ERR_PTR
・inodeを作成して、次に示す仮想マシンに対するディスパッチルーチンを登録する
static struct file_operations kvm_vm_fops = {
.release = kvm_vm_release,
.unlocked_ioctl = kvm_vm_ioctl,
.compat_ioctl = kvm_vm_ioctl,
.mmap = kvm_vm_mmap,
};
│├IS_ERR
│├PTR_ERR
│├kvm_create_vm [kvm_main.c](287)
││├kzalloc
││├ERR_PTR
││├spin_lock_init
││├INIT_LIST_HEAD
││├mutex_init
││├spin_lock
││├list_add
││└spin_unlock
・仮想マシンを生成する
│├kvmfs_file [kvm_main.c](129)
││├get_empty_filp
││├ERR_PTR
││├mntget
││└d_alloc_anon
・ファイルを作成しinodeを関連付け、仮想マシンにファイルを関連づける
│├get_unused_fd
│├fd_install
・
│├fput
│├kvm_destroy_vm [kvm_main.c](373)
││├spin_lock
││├list_del
││├spin_unlock
││├kvm_free_vcpus [kvm_main.c](360)
│││└kvm_free_vcpu [kvm_main.c](349)
│││ ├vcpu_load [kvm_main.c](258)
│││ │├mutex_lock
│││ │└vcpu_load [kvm_main.c](258)
│││ ├kvm_mmu_destroy
│││ ├vcpu_put [kvm_main.c](281)
│││ │├vcpu_put [kvm_main.c](281)
│││ │└mutex_unlock
│││ └vcpu_free
││├kvm_free_physmem [kvm_main.c](341)
│││└kvm_free_physmem_slot [kvm_main.c](320)
│││ ├__free_page
│││ └vfree
││└kfree
│└iput
case KVM_GET_MSR_INDEX_LIST:
・MSRのインデックスリストの取得
├copy_from_user
├ARRAY_SIZE
└copy_to_user
2007年03月15日(木) 10:11:56 Modified by deku_nobo