1 问题
目的: 想要在内核中获取一个虚拟机进程配置的vCPU个数。
已知的信息: 虚拟机进程的进程结构体(即task_struct结构体)。
2 解决方案
2.1 过程实现
- 首先在进程的task_struct结构体中找到struct files_struct,里面记录了所有打开的文件。
- 遍历files_struct中所有文件,找到一个路径为“anon_inode:kvm-vm”的struct file,该struct file的private_data就是我们要的struct kvm。
- stuct kvm中的online_vcpus字段就存放着为当前虚拟机进程配置的vCPU个数。
2.2 代码实现
static int get_vm_vcpus(struct task_struct *task)
{
struct files_struct *files;
struct file *file;
char buffer