Serenity Operating System
at master 198 lines 5.5 kB view raw
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