X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_hypercall.h;h=c9646fa432f26d2a4893f54ff3473b3eb97d7794;hb=83790cde959d56c148be1b5f64d2e4a4414acac9;hp=6ec146275e266010e70a68dc3bb30db201f98ed5;hpb=1dbd6d179c681dbce107af39c4089d1aa13a714d;p=palacios.git diff --git a/palacios/include/palacios/vmm_hypercall.h b/palacios/include/palacios/vmm_hypercall.h index 6ec1462..c9646fa 100644 --- a/palacios/include/palacios/vmm_hypercall.h +++ b/palacios/include/palacios/vmm_hypercall.h @@ -28,12 +28,30 @@ typedef struct rb_root v3_hypercall_map_t; struct guest_info; +struct v3_vm_info; -void v3_init_hypercall_map(struct guest_info * info); -int v3_register_hypercall(struct guest_info * info, uint_t hypercall_id, - int (*hypercall)(struct guest_info * info, uint_t hcall_id, void * priv_data), +typedef enum { + TEST_HCALL = 0x0001, + SYMCALL_RET_HCALL = 0x0535, // args in GPRs + SYMCALL_ERR_HCALL = 0x0536, // RBX: error code + MEM_OFFSET_HCALL = 0x1000, // RBX: base addr(out) + GUEST_INFO_HCALL = 0x3000, // no args + TELEMETRY_HCALL = 0x3001, // no args + BALLOON_START_HCALL = 0xba00, // RAX: size + BALLOON_QUERY_HCALL = 0xba01, // RCX: req_pgs(out), RDX: alloc_pgs(out) + OS_DEBUG_HCALL = 0xc0c0 // RBX: msg_gpa, RCX: msg_len, RDX: buf_is_va (flag) +} hcall_id_t; + + + + +void v3_init_hypercall_map(struct v3_vm_info * vm); + + +int v3_register_hypercall(struct v3_vm_info * vm, hcall_id_t hypercall_id, + int (*hypercall)(struct guest_info * info , hcall_id_t hcall_id, void * priv_data), void * priv_data); @@ -42,6 +60,7 @@ int v3_handle_hypercall(struct guest_info * info); + #endif #endif