Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 * Copyright (c) 2021, Edwin Hoksberg <mail@edwinhoksberg.nl>
4 *
5 * SPDX-License-Identifier: BSD-2-Clause
6 */
7
8#pragma once
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14struct winsize {
15 unsigned short ws_row;
16 unsigned short ws_col;
17 unsigned short ws_xpixel;
18 unsigned short ws_ypixel;
19};
20
21struct GraphicsConnectorProperties {
22 unsigned char multihead_support;
23 unsigned char doublebuffer_support;
24 unsigned char flushing_support;
25 unsigned char partial_flushing_support;
26 unsigned char refresh_rate_support;
27 unsigned max_buffer_bytes;
28};
29
30struct GraphicsHeadModeSetting {
31 int horizontal_stride;
32 int pixel_clock_in_khz;
33 int horizontal_active;
34 int horizontal_front_porch_pixels;
35 int horizontal_sync_time_pixels;
36 int horizontal_blank_pixels;
37 int vertical_active;
38 int vertical_front_porch_lines;
39 int vertical_sync_time_lines;
40 int vertical_blank_lines;
41 int horizontal_offset;
42 int vertical_offset;
43};
44
45struct GraphicsHeadEDID {
46 unsigned char* bytes;
47 unsigned bytes_size;
48};
49
50struct GraphicsHeadVerticalOffset {
51 int head_index;
52 int offsetted;
53};
54
55struct FBRect {
56 int head_index;
57 unsigned x;
58 unsigned y;
59 unsigned width;
60 unsigned height;
61};
62
63struct FBBufferOffset {
64 int buffer_index;
65 unsigned offset;
66};
67
68struct FBFlushRects {
69 int buffer_index;
70 unsigned count;
71 struct FBRect const* rects;
72};
73
74enum ConsoleModes {
75 KD_TEXT = 0x00,
76 KD_GRAPHICS = 0x01,
77};
78
79#ifdef __cplusplus
80}
81#endif
82
83enum IOCtlNumber {
84 TIOCGPGRP,
85 TIOCSPGRP,
86 TCGETS,
87 TCSETS,
88 TCSETSW,
89 TCSETSF,
90 TCFLSH,
91 TIOCGWINSZ,
92 TIOCSCTTY,
93 TIOCSTI,
94 TIOCNOTTY,
95 TIOCSWINSZ,
96 TIOCGPTN,
97 GRAPHICS_IOCTL_GET_PROPERTIES,
98 GRAPHICS_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER,
99 GRAPHICS_IOCTL_GET_HEAD_VERTICAL_OFFSET_BUFFER,
100 GRAPHICS_IOCTL_FLUSH_HEAD_BUFFERS,
101 GRAPHICS_IOCTL_FLUSH_HEAD,
102 GRAPHICS_IOCTL_SET_HEAD_MODE_SETTING,
103 GRAPHICS_IOCTL_GET_HEAD_MODE_SETTING,
104 GRAPHICS_IOCTL_SET_SAFE_HEAD_MODE_SETTING,
105 GRAPHICS_IOCTL_SET_RESPONSIBLE,
106 GRAPHICS_IOCTL_UNSET_RESPONSIBLE,
107 KEYBOARD_IOCTL_GET_NUM_LOCK,
108 KEYBOARD_IOCTL_SET_NUM_LOCK,
109 KEYBOARD_IOCTL_GET_CAPS_LOCK,
110 KEYBOARD_IOCTL_SET_CAPS_LOCK,
111 SIOCATMARK,
112 SIOCSIFADDR,
113 SIOCGIFADDR,
114 SIOCGIFHWADDR,
115 SIOCGIFNETMASK,
116 SIOCSIFNETMASK,
117 SIOCGIFBRDADDR,
118 SIOCGIFMTU,
119 SIOCGIFFLAGS,
120 SIOCGIFCONF,
121 SIOCADDRT,
122 SIOCDELRT,
123 SIOCSARP,
124 SIOCDARP,
125 FIBMAP,
126 FIONBIO,
127 FIONREAD,
128 FIOCLEX,
129 FIONCLEX,
130 KCOV_SETBUFSIZE,
131 KCOV_ENABLE,
132 KCOV_DISABLE,
133 SOUNDCARD_IOCTL_SET_SAMPLE_RATE,
134 SOUNDCARD_IOCTL_GET_SAMPLE_RATE,
135 STORAGE_DEVICE_GET_SIZE,
136 STORAGE_DEVICE_GET_BLOCK_SIZE,
137 VIRGL_IOCTL_CREATE_CONTEXT,
138 VIRGL_IOCTL_CREATE_RESOURCE,
139 VIRGL_IOCTL_SUBMIT_CMD,
140 VIRGL_IOCTL_TRANSFER_DATA,
141 KDSETMODE,
142 KDGETMODE,
143};
144
145#define TIOCGPGRP TIOCGPGRP
146#define TIOCSPGRP TIOCSPGRP
147#define TCGETS TCGETS
148#define TCSETS TCSETS
149#define TCSETSW TCSETSW
150#define TCSETSF TCSETSF
151#define TCFLSH TCFLSH
152#define TIOCGWINSZ TIOCGWINSZ
153#define TIOCSCTTY TIOCSCTTY
154#define TIOCSTI TIOCSTI
155#define TIOCNOTTY TIOCNOTTY
156#define TIOCSWINSZ TIOCSWINSZ
157#define TIOCGPTN TIOCGPTN
158#define GRAPHICS_IOCTL_GET_PROPERTIES GRAPHICS_IOCTL_GET_PROPERTIES
159#define GRAPHICS_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER GRAPHICS_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER
160#define GRAPHICS_IOCTL_GET_HEAD_VERTICAL_OFFSET_BUFFER GRAPHICS_IOCTL_GET_HEAD_VERTICAL_OFFSET_BUFFER
161#define GRAPHICS_IOCTL_FLUSH_HEAD_BUFFERS GRAPHICS_IOCTL_FLUSH_HEAD_BUFFERS
162#define GRAPHICS_IOCTL_FLUSH_HEAD GRAPHICS_IOCTL_FLUSH_HEAD
163#define GRAPHICS_IOCTL_SET_HEAD_MODE_SETTING GRAPHICS_IOCTL_SET_HEAD_MODE_SETTING
164#define GRAPHICS_IOCTL_GET_HEAD_MODE_SETTING GRAPHICS_IOCTL_GET_HEAD_MODE_SETTING
165#define GRAPHICS_IOCTL_SET_SAFE_HEAD_MODE_SETTING GRAPHICS_IOCTL_SET_SAFE_HEAD_MODE_SETTING
166#define GRAPHICS_IOCTL_SET_RESPONSIBLE GRAPHICS_IOCTL_SET_RESPONSIBLE
167#define GRAPHICS_IOCTL_UNSET_RESPONSIBLE GRAPHICS_IOCTL_UNSET_RESPONSIBLE
168#define KEYBOARD_IOCTL_GET_NUM_LOCK KEYBOARD_IOCTL_GET_NUM_LOCK
169#define KEYBOARD_IOCTL_SET_NUM_LOCK KEYBOARD_IOCTL_SET_NUM_LOCK
170#define KEYBOARD_IOCTL_GET_CAPS_LOCK KEYBOARD_IOCTL_GET_CAPS_LOCK
171#define KEYBOARD_IOCTL_SET_CAPS_LOCK KEYBOARD_IOCTL_SET_CAPS_LOCK
172#define SIOCATMARK SIOCATMARK
173#define SIOCSIFADDR SIOCSIFADDR
174#define SIOCGIFADDR SIOCGIFADDR
175#define SIOCGIFHWADDR SIOCGIFHWADDR
176#define SIOCGIFNETMASK SIOCGIFNETMASK
177#define SIOCSIFNETMASK SIOCSIFNETMASK
178#define SIOCGIFBRDADDR SIOCGIFBRDADDR
179#define SIOCGIFMTU SIOCGIFMTU
180#define SIOCGIFFLAGS SIOCGIFFLAGS
181#define SIOCGIFCONF SIOCGIFCONF
182#define SIOCADDRT SIOCADDRT
183#define SIOCDELRT SIOCDELRT
184#define SIOCSARP SIOCSARP
185#define SIOCDARP SIOCDARP
186#define FIBMAP FIBMAP
187#define FIONBIO FIONBIO
188#define FIONREAD FIONREAD
189#define SOUNDCARD_IOCTL_SET_SAMPLE_RATE SOUNDCARD_IOCTL_SET_SAMPLE_RATE
190#define SOUNDCARD_IOCTL_GET_SAMPLE_RATE SOUNDCARD_IOCTL_GET_SAMPLE_RATE
191#define STORAGE_DEVICE_GET_SIZE STORAGE_DEVICE_GET_SIZE
192#define STORAGE_DEVICE_GET_BLOCK_SIZE STORAGE_DEVICE_GET_BLOCK_SIZE
193#define VIRGL_IOCTL_CREATE_CONTEXT VIRGL_IOCTL_CREATE_CONTEXT
194#define VIRGL_IOCTL_CREATE_RESOURCE VIRGL_IOCTL_CREATE_RESOURCE
195#define VIRGL_IOCTL_SUBMIT_CMD VIRGL_IOCTL_SUBMIT_CMD
196#define VIRGL_IOCTL_TRANSFER_DATA VIRGL_IOCTL_TRANSFER_DATA
197#define KDSETMODE KDSETMODE
198#define KDGETMODE KDGETMODE