~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/xen/interface/io/fbif.h

Version: ~ [ linux-5.1.2 ] ~ [ linux-5.0.16 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.43 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.119 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.176 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.179 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.139 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.67 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * fbif.h -- Xen virtual frame buffer device
  3  *
  4  * Permission is hereby granted, free of charge, to any person obtaining a copy
  5  * of this software and associated documentation files (the "Software"), to
  6  * deal in the Software without restriction, including without limitation the
  7  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  8  * sell copies of the Software, and to permit persons to whom the Software is
  9  * furnished to do so, subject to the following conditions:
 10  *
 11  * The above copyright notice and this permission notice shall be included in
 12  * all copies or substantial portions of the Software.
 13  *
 14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 20  * DEALINGS IN THE SOFTWARE.
 21  *
 22  * Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com>
 23  * Copyright (C) 2006 Red Hat, Inc., Markus Armbruster <armbru@redhat.com>
 24  */
 25 
 26 #ifndef __XEN_PUBLIC_IO_FBIF_H__
 27 #define __XEN_PUBLIC_IO_FBIF_H__
 28 
 29 /* Out events (frontend -> backend) */
 30 
 31 /*
 32  * Out events may be sent only when requested by backend, and receipt
 33  * of an unknown out event is an error.
 34  */
 35 
 36 /* Event type 1 currently not used */
 37 /*
 38  * Framebuffer update notification event
 39  * Capable frontend sets feature-update in xenstore.
 40  * Backend requests it by setting request-update in xenstore.
 41  */
 42 #define XENFB_TYPE_UPDATE 2
 43 
 44 struct xenfb_update {
 45         uint8_t type;           /* XENFB_TYPE_UPDATE */
 46         int32_t x;              /* source x */
 47         int32_t y;              /* source y */
 48         int32_t width;          /* rect width */
 49         int32_t height;         /* rect height */
 50 };
 51 
 52 /*
 53  * Framebuffer resize notification event
 54  * Capable backend sets feature-resize in xenstore.
 55  */
 56 #define XENFB_TYPE_RESIZE 3
 57 
 58 struct xenfb_resize {
 59         uint8_t type;           /* XENFB_TYPE_RESIZE */
 60         int32_t width;          /* width in pixels */
 61         int32_t height;         /* height in pixels */
 62         int32_t stride;         /* stride in bytes */
 63         int32_t depth;          /* depth in bits */
 64         int32_t offset;         /* start offset within framebuffer */
 65 };
 66 
 67 #define XENFB_OUT_EVENT_SIZE 40
 68 
 69 union xenfb_out_event {
 70         uint8_t type;
 71         struct xenfb_update update;
 72         struct xenfb_resize resize;
 73         char pad[XENFB_OUT_EVENT_SIZE];
 74 };
 75 
 76 /* In events (backend -> frontend) */
 77 
 78 /*
 79  * Frontends should ignore unknown in events.
 80  * No in events currently defined.
 81  */
 82 
 83 #define XENFB_IN_EVENT_SIZE 40
 84 
 85 union xenfb_in_event {
 86         uint8_t type;
 87         char pad[XENFB_IN_EVENT_SIZE];
 88 };
 89 
 90 /* shared page */
 91 
 92 #define XENFB_IN_RING_SIZE 1024
 93 #define XENFB_IN_RING_LEN (XENFB_IN_RING_SIZE / XENFB_IN_EVENT_SIZE)
 94 #define XENFB_IN_RING_OFFS 1024
 95 #define XENFB_IN_RING(page) \
 96         ((union xenfb_in_event *)((char *)(page) + XENFB_IN_RING_OFFS))
 97 #define XENFB_IN_RING_REF(page, idx) \
 98         (XENFB_IN_RING((page))[(idx) % XENFB_IN_RING_LEN])
 99 
100 #define XENFB_OUT_RING_SIZE 2048
101 #define XENFB_OUT_RING_LEN (XENFB_OUT_RING_SIZE / XENFB_OUT_EVENT_SIZE)
102 #define XENFB_OUT_RING_OFFS (XENFB_IN_RING_OFFS + XENFB_IN_RING_SIZE)
103 #define XENFB_OUT_RING(page) \
104         ((union xenfb_out_event *)((char *)(page) + XENFB_OUT_RING_OFFS))
105 #define XENFB_OUT_RING_REF(page, idx) \
106         (XENFB_OUT_RING((page))[(idx) % XENFB_OUT_RING_LEN])
107 
108 struct xenfb_page {
109         uint32_t in_cons, in_prod;
110         uint32_t out_cons, out_prod;
111 
112         int32_t width;          /* width of the framebuffer (in pixels) */
113         int32_t height;         /* height of the framebuffer (in pixels) */
114         uint32_t line_length;   /* length of a row of pixels (in bytes) */
115         uint32_t mem_length;    /* length of the framebuffer (in bytes) */
116         uint8_t depth;          /* depth of a pixel (in bits) */
117 
118         /*
119          * Framebuffer page directory
120          *
121          * Each directory page holds PAGE_SIZE / sizeof(*pd)
122          * framebuffer pages, and can thus map up to PAGE_SIZE *
123          * PAGE_SIZE / sizeof(*pd) bytes.  With PAGE_SIZE == 4096 and
124          * sizeof(unsigned long) == 4/8, that's 4 Megs 32 bit and 2
125          * Megs 64 bit.  256 directories give enough room for a 512
126          * Meg framebuffer with a max resolution of 12,800x10,240.
127          * Should be enough for a while with room leftover for
128          * expansion.
129          */
130         unsigned long pd[256];
131 };
132 
133 /*
134  * Wart: xenkbd needs to know default resolution.  Put it here until a
135  * better solution is found, but don't leak it to the backend.
136  */
137 #ifdef __KERNEL__
138 #define XENFB_WIDTH 800
139 #define XENFB_HEIGHT 600
140 #define XENFB_DEPTH 32
141 #endif
142 
143 #endif
144 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp