X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_host_events.h;h=d2fb21104e3dbab3ebb36006ab615ca3c3c42d27;hb=e4d65eb1a4af57179bd00c397120c78c9e5b32b1;hp=7a462b79b296023ac57f2fea153f72a1b50cc28d;hpb=2fb33705f951901f43a9fed966e96074fc693609;p=palacios.git diff --git a/palacios/include/palacios/vmm_host_events.h b/palacios/include/palacios/vmm_host_events.h index 7a462b7..d2fb211 100644 --- a/palacios/include/palacios/vmm_host_events.h +++ b/palacios/include/palacios/vmm_host_events.h @@ -22,40 +22,61 @@ struct v3_keyboard_event { + // A keyboard event is a PS/2 scancode and status reg unsigned char status; unsigned char scan_code; }; struct v3_mouse_event { - unsigned char data[3]; + // A mouse event is a PS/2 mouse packet + unsigned char sx; // sign bit for deltax + unsigned char dx; // deltax + unsigned char sy; // sign bit for deltay + unsigned char dy; // deltay + unsigned char buttons; // button state }; struct v3_timer_event { unsigned int period_us; }; -struct v3_console_event { +struct v3_serial_event { unsigned char data[128]; unsigned int len; }; +struct v3_console_event { + unsigned int cmd; +}; + + +struct v3_debug_event { + unsigned int core_id; + unsigned int cmd; + +}; + #ifdef __V3VEE__ #include struct v3_vm_info; -typedef enum {HOST_KEYBOARD_EVT, - HOST_MOUSE_EVT, - HOST_TIMER_EVT, - HOST_CONSLE_EVT} v3_host_evt_type_t; +typedef enum { HOST_KEYBOARD_EVT, + HOST_MOUSE_EVT, + HOST_TIMER_EVT, + HOST_CONSOLE_EVT, + HOST_SERIAL_EVT, + HOST_DEBUG_EVT} v3_host_evt_type_t; union v3_host_event_handler { int (*keyboard_handler)(struct v3_vm_info * vm, struct v3_keyboard_event * evt, void * priv_data); int (*mouse_handler)(struct v3_vm_info * vm, struct v3_mouse_event * evt, void * priv_data); int (*timer_handler)(struct v3_vm_info * vm, struct v3_timer_event * evt, void * priv_data); + int (*serial_handler)(struct v3_vm_info * vm, struct v3_serial_event * evt, void * priv_data); int (*console_handler)(struct v3_vm_info * vm, struct v3_console_event * evt, void * priv_data); + int (*debug_handler)(struct v3_vm_info * vm, struct v3_debug_event * evt, void * priv_data); }; @@ -71,12 +92,15 @@ struct v3_host_events { struct list_head keyboard_events; struct list_head mouse_events; struct list_head timer_events; + struct list_head serial_events; struct list_head console_events; + struct list_head debug_events; }; int v3_init_host_events(struct v3_vm_info * vm); +int v3_deinit_host_events(struct v3_vm_info * vm); #define V3_HOST_EVENT_HANDLER(cb) ((union v3_host_event_handler)cb) @@ -92,8 +116,9 @@ int v3_hook_host_event(struct v3_vm_info * vm, int v3_deliver_keyboard_event(struct v3_vm_info * vm, struct v3_keyboard_event * evt); int v3_deliver_mouse_event(struct v3_vm_info * vm, struct v3_mouse_event * evt); int v3_deliver_timer_event(struct v3_vm_info * vm, struct v3_timer_event * evt); +int v3_deliver_serial_event(struct v3_vm_info * vm, struct v3_serial_event * evt); int v3_deliver_console_event(struct v3_vm_info * vm, struct v3_console_event * evt); - +int v3_deliver_debug_event(struct v3_vm_info * vm, struct v3_debug_event * evt); #endif