struct xendispl_dbuf_create_req { uint64_t dbuf_cookie; /* 0 8 */ uint32_t width; /* 8 4 */ uint32_t height; /* 12 4 */ uint32_t bpp; /* 16 4 */ uint32_t buffer_sz; /* 20 4 */ uint32_t flags; /* 24 4 */ grant_ref_t gref_directory_start; /* 28 4 */ /* size: 32, cachelines: 1, members: 7 */ /* last cacheline: 32 bytes */ }; struct xendispl_page_directory { grant_ref_t gref_dir_next_page; /* 0 4 */ grant_ref_t gref[1]; /* 4 4 */ /* size: 8, cachelines: 1, members: 2 */ /* last cacheline: 8 bytes */ }; struct xendispl_dbuf_destroy_req { uint64_t dbuf_cookie; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct xendispl_fb_attach_req { uint64_t dbuf_cookie; /* 0 8 */ uint64_t fb_cookie; /* 8 8 */ uint32_t width; /* 16 4 */ uint32_t height; /* 20 4 */ uint32_t pixel_format; /* 24 4 */ /* size: 28, cachelines: 1, members: 5 */ /* last cacheline: 28 bytes */ }; struct xendispl_fb_detach_req { uint64_t fb_cookie; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct xendispl_set_config_req { uint64_t fb_cookie; /* 0 8 */ uint32_t x; /* 8 4 */ uint32_t y; /* 12 4 */ uint32_t width; /* 16 4 */ uint32_t height; /* 20 4 */ uint32_t bpp; /* 24 4 */ /* size: 28, cachelines: 1, members: 6 */ /* last cacheline: 28 bytes */ }; struct xendispl_page_flip_req { uint64_t fb_cookie; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct xendispl_pg_flip_evt { uint64_t fb_cookie; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct xendispl_req { uint16_t id; /* 0 2 */ uint8_t operation; /* 2 1 */ uint8_t reserved[5]; /* 3 5 */ union { struct xendispl_dbuf_create_req dbuf_create; /* 32 */ struct xendispl_dbuf_destroy_req dbuf_destroy; /* 8 */ struct xendispl_fb_attach_req fb_attach; /* 28 */ struct xendispl_fb_detach_req fb_detach; /* 8 */ struct xendispl_set_config_req set_config; /* 28 */ struct xendispl_page_flip_req pg_flip; /* 8 */ uint8_t reserved[56]; /* 56 */ } op; /* 8 56 */ /* size: 64, cachelines: 1, members: 4 */ }; struct xendispl_resp { uint16_t id; /* 0 2 */ uint8_t operation; /* 2 1 */ uint8_t reserved; /* 3 1 */ int32_t status; /* 4 4 */ uint8_t reserved1[56]; /* 8 56 */ /* size: 64, cachelines: 1, members: 5 */ }; struct xendispl_evt { uint16_t id; /* 0 2 */ uint8_t type; /* 2 1 */ uint8_t reserved[5]; /* 3 5 */ union { struct xendispl_pg_flip_evt pg_flip; /* 8 */ uint8_t reserved[56]; /* 56 */ } op; /* 8 56 */ /* size: 64, cachelines: 1, members: 4 */ };