2 * Palacios VM Graphics Console Interface (shared framebuffer between palacios and host)
3 * Copyright (c) 2011 Peter Dinda <pdinda@northwestern.edu>
6 #ifndef __PALACIOS_GRAPHICS_CONSOLE_H__
7 #define __PALACIOS_GRAPHICS_CONSOLE_H__
9 #include <interfaces/vmm_graphics_console.h>
11 struct palacios_graphics_console {
12 // descriptor for the data in the shared frame buffer
13 struct v3_frame_buffer_spec spec;
14 // the actual shared frame buffer
15 // Note that "shared" here means shared between palacios and us
16 // This data could of course also be shared with userland
19 struct v3_guest * guest;
26 // Currently keystrokes and mouse movements are ignored
28 // currently, we will not worry about locking this
33 // This is the data structure that is passed back and forth with user-land
35 struct v3_fb_query_response {
36 enum { V3_FB_DATA_ALL, V3_FB_DATA_BOX, V3_FB_UPDATE, V3_FB_SPEC } request_type;
37 struct v3_frame_buffer_spec spec; // in: desired spec; out: actual spec
38 uint32_t x, y, w, h; // region to copy (0s = all) in/out args
39 int updated; // whether this region has been updated or not
40 void __user *data; // user space pointer to copy data to
43 // This is what userland sends down for input events
45 enum { V3_FB_KEY, V3_FB_MOUSE, V3_FB_BOTH} data_type;
47 uint8_t mouse_data[3];
51 int palacios_init_graphics_console(void);
53 int palacios_graphics_console_user_query(struct palacios_graphics_console *cons,
54 struct v3_fb_query_response __user *fb);
56 int palacios_graphics_console_user_input(struct palacios_graphics_console *cons,
57 struct v3_fb_input __user *in);