XEN do_hvm_op流程分析
来源:互联网 发布:电脑地图软件 编辑:程序博客网 时间:2024/05/18 16:19
用户态代码:
我在xc_domain_save.c这个文件里自己写一个函数,就是传递一个标志到内核里面:
static int set_save_flag(xc_interface *xch,int saveflag, uint32_t dom){ DECLARE_HYPERCALL; //固定写法,就是声明一个hvm_save_flag类型的arg。Hvm_save_flag这个结构体是在hvm_op.h里面自己定义的,后面再细说。 DECLARE_HYPERCALL_BUFFER(structhvm_save_flag, arg); int rc; arg = xc_hypercall_buffer_alloc(xch, arg, sizeof(*arg));//分配空间 if ( arg == NULL ) { PERROR("Could not allocate memory for xc_hvm_set_mem_accesshypercall"); return -1; }
//下面的这两行就是传参,saveflag和dom这两个参数是用户态的数据,我们把这俩数//赋值给arg。
arg-> save_flag = saveflag; arg->save_domid=dom; hypercall.op =__HYPERVISOR_hvm_op; hypercall.arg[0] = HVMOP_hvm_save_flag;//自定义的标识字段,内核态通过case判断 hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(arg); rc = do_xen_hypercall(xch, &hypercall); xc_hypercall_buffer_free(xch, arg); return rc;}
上面基本就是用户态调用do_hvm_op的固定格式,内核态需要自定义一些数据结构和宏,还需要在do_hvm_op函数里添加一个case判断。
内核态代码:
Hvm_op.h里面自定义结构体和标识字段:
//这里可以在hvm_Op.h里面找到类似的定义,模仿着写就可以,注意我这里用的19,只要不跟源码里已经定义的数值冲突就可以。
#define HVMOP_hvm_save_flag 19 struct hvm_save_flag{ int save_flag; domid_t save_domid;};typedef struct hvm_save_flag hvm_save_flag_t;DEFINE_XEN_GUEST_HANDLE(hvm_save_flag_t); 然后在do_hvm_op函数里并列的添加一个case语句:case HVMOP_hvm_save_flag:{ struct hvm_save_flag a; if ( copy_from_guest(&a, arg, 1) ) return -EFAULT; //saveinstance.save_flag是我在内核态里面自己定义的一个全局变量,a.saveflag //就是用户态传过来的saveflag的值,自己想怎么使用就随意了 saveinstance.save_flag = a.save_flag; //add by gao--catch page modify printk("hvm.c--hvm_save_flag--save_flag=%d\n",saveinstance.save_flag); break;}
0 0
- XEN do_hvm_op流程分析
- xen创建guest domain流程分析
- xen 下电流程分析(1)
- xen下电流程分析(2)
- xen下电流程分析(3)
- xen io tapdisk2基本流程分析
- xen io tapdisk2基本流程分析
- xen的cpu调度流程分析(1)
- xen的cpu调度流程分析(2)
- Xen分析
- xen 添加网卡设备初步分析之 network-attach 流程分析
- XEN启动过程分析
- Xen 虚拟机 网络结构分析
- xen的调度算法分析
- Xen源码分析(概要)
- xen grant table机制分析
- Xen动态迁移源码分析
- xen网络桥接模式流程
- Codeforces #732D 二分 贪心
- request对象
- 简述Handler机制
- ffmpeg
- 关于安卓AudioTrack::getMinFrameCount的分析
- XEN do_hvm_op流程分析
- springmvc与ajax交互
- Linux常用高频命令tree、tar、cat、stat等(自总结)
- 非英文键盘组合键失效的一种可能
- 【NOIP2004提高组T4】虫食算-搜索剪枝
- GitHub查找优秀的开源项目和一些资源福利
- 10.31
- SecureCRT 的上传下载(sz/rz)
- Django错误'str' object is not callable