0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef __XEN_PUBLIC_IO_FBIF_H__
0010 #define __XEN_PUBLIC_IO_FBIF_H__
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #define XENFB_TYPE_UPDATE 2
0026
0027 struct xenfb_update {
0028 uint8_t type;
0029 int32_t x;
0030 int32_t y;
0031 int32_t width;
0032 int32_t height;
0033 };
0034
0035
0036
0037
0038
0039 #define XENFB_TYPE_RESIZE 3
0040
0041 struct xenfb_resize {
0042 uint8_t type;
0043 int32_t width;
0044 int32_t height;
0045 int32_t stride;
0046 int32_t depth;
0047 int32_t offset;
0048 };
0049
0050 #define XENFB_OUT_EVENT_SIZE 40
0051
0052 union xenfb_out_event {
0053 uint8_t type;
0054 struct xenfb_update update;
0055 struct xenfb_resize resize;
0056 char pad[XENFB_OUT_EVENT_SIZE];
0057 };
0058
0059
0060
0061
0062
0063
0064
0065
0066 #define XENFB_IN_EVENT_SIZE 40
0067
0068 union xenfb_in_event {
0069 uint8_t type;
0070 char pad[XENFB_IN_EVENT_SIZE];
0071 };
0072
0073
0074
0075 #define XENFB_IN_RING_SIZE 1024
0076 #define XENFB_IN_RING_LEN (XENFB_IN_RING_SIZE / XENFB_IN_EVENT_SIZE)
0077 #define XENFB_IN_RING_OFFS 1024
0078 #define XENFB_IN_RING(page) \
0079 ((union xenfb_in_event *)((char *)(page) + XENFB_IN_RING_OFFS))
0080 #define XENFB_IN_RING_REF(page, idx) \
0081 (XENFB_IN_RING((page))[(idx) % XENFB_IN_RING_LEN])
0082
0083 #define XENFB_OUT_RING_SIZE 2048
0084 #define XENFB_OUT_RING_LEN (XENFB_OUT_RING_SIZE / XENFB_OUT_EVENT_SIZE)
0085 #define XENFB_OUT_RING_OFFS (XENFB_IN_RING_OFFS + XENFB_IN_RING_SIZE)
0086 #define XENFB_OUT_RING(page) \
0087 ((union xenfb_out_event *)((char *)(page) + XENFB_OUT_RING_OFFS))
0088 #define XENFB_OUT_RING_REF(page, idx) \
0089 (XENFB_OUT_RING((page))[(idx) % XENFB_OUT_RING_LEN])
0090
0091 struct xenfb_page {
0092 uint32_t in_cons, in_prod;
0093 uint32_t out_cons, out_prod;
0094
0095 int32_t width;
0096 int32_t height;
0097 uint32_t line_length;
0098 uint32_t mem_length;
0099 uint8_t depth;
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113 unsigned long pd[256];
0114 };
0115
0116
0117
0118
0119
0120 #ifdef __KERNEL__
0121 #define XENFB_WIDTH 800
0122 #define XENFB_HEIGHT 600
0123 #define XENFB_DEPTH 32
0124 #endif
0125
0126 #endif