X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fkeyboard.c;h=eb76cc920bea5a01e28643d9d8372d78fcda14b1;hp=e9fff1f0ec37b4e3d67c1a6e534476eab080e82e;hb=0121a4503305424096e2b5c5bd3b6c3af2d813e5;hpb=82b8b87c344fcd1eab22e3f3be5ad54cbb3f8f68 diff --git a/palacios/src/devices/keyboard.c b/palacios/src/devices/keyboard.c index e9fff1f..eb76cc9 100644 --- a/palacios/src/devices/keyboard.c +++ b/palacios/src/devices/keyboard.c @@ -23,6 +23,9 @@ #include #include +#include +#include +#include #ifndef CONFIG_DEBUG_KEYBOARD @@ -314,6 +317,7 @@ static int pull_from_output_queue(struct vm_device * dev, uint8_t * value) { } +#include static int key_event_handler(struct guest_info * info, @@ -327,8 +331,35 @@ static int key_event_handler(struct guest_info * info, if (evt->scan_code == 0x44) { // F10 debug dump v3_print_guest_state(info); // PrintGuestPageTables(info, info->shdw_pg_state.guest_cr3); + } +#ifdef CONFIG_SYMBIOTIC + else if (evt->scan_code == 0x43) { // F9 Sym test + PrintDebug("Testing sym call\n"); + sym_arg_t a0 = 0x1111; + sym_arg_t a1 = 0x2222; + sym_arg_t a2 = 0x3333; + sym_arg_t a3 = 0x4444; + sym_arg_t a4 = 0x5555; + + v3_sym_call5(info, SYMCALL_TEST, &a0, &a1, &a2, &a3, &a4); + + V3_Print("Symcall Test Returned arg0=%x, arg1=%x, arg2=%x, arg3=%x, arg4=%x\n", + (uint32_t)a0, (uint32_t)a1, (uint32_t)a2, (uint32_t)a3, (uint32_t)a4); + + } +#endif + else if (evt->scan_code == 0x42) { // F8 debug toggle + extern int v3_dbg_enable; + + PrintDebug("Toggling Debugging\n"); + v3_dbg_enable ^= 1; + } else if (evt->scan_code == 0x41) { // F7 telemetry dump + v3_print_telemetry(info); + } + + addr_t irq_state = v3_lock_irqsave(state->kb_lock); if ( (state->status.enabled == 1) // onboard is enabled @@ -960,9 +991,9 @@ static struct v3_device_ops dev_ops = { -static int keyboard_init(struct guest_info * vm, void * cfg_data) { +static int keyboard_init(struct guest_info * vm, v3_cfg_tree_t * cfg) { struct keyboard_internal * keyboard_state = NULL; - + char * name = v3_cfg_val(cfg, "name"); PrintDebug("keyboard: init_device\n"); @@ -978,10 +1009,10 @@ static int keyboard_init(struct guest_info * vm, void * cfg_data) { keyboard_state->mouse_enabled = 0; - struct vm_device * dev = v3_allocate_device("KEYBOARD", &dev_ops, keyboard_state); + struct vm_device * dev = v3_allocate_device(name, &dev_ops, keyboard_state); if (v3_attach_device(vm, dev) == -1) { - PrintError("Could not attach device %s\n", "KEYBOARD"); + PrintError("Could not attach device %s\n", name); return -1; }