mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-27 13:11:46 +03:00
5dcf03ad9a
This device is a block device that allows a user to effectively treat an Inode as a block device. The static construction method is given an OpenFileDescription reference but validates that: - The description has a valid custody (so it's not some arbitrary file). Failing this requirement will yield EINVAL. - The description custody points to an Inode which is a regular file, as we only support (seekable) regular files. Failing this requirement will yield ENOTSUP. LoopDevice can be used to mount a regular file on the filesystem like other supported types of (physical) block devices.
209 lines
5.7 KiB
C
209 lines
5.7 KiB
C
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
* Copyright (c) 2021, Edwin Hoksberg <mail@edwinhoksberg.nl>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct winsize {
|
|
unsigned short ws_row;
|
|
unsigned short ws_col;
|
|
unsigned short ws_xpixel;
|
|
unsigned short ws_ypixel;
|
|
};
|
|
|
|
struct GraphicsConnectorProperties {
|
|
unsigned char multihead_support;
|
|
unsigned char doublebuffer_support;
|
|
unsigned char flushing_support;
|
|
unsigned char partial_flushing_support;
|
|
unsigned char refresh_rate_support;
|
|
unsigned max_buffer_bytes;
|
|
};
|
|
|
|
struct GraphicsHeadModeSetting {
|
|
int horizontal_stride;
|
|
int pixel_clock_in_khz;
|
|
int horizontal_active;
|
|
int horizontal_front_porch_pixels;
|
|
int horizontal_sync_time_pixels;
|
|
int horizontal_blank_pixels;
|
|
int vertical_active;
|
|
int vertical_front_porch_lines;
|
|
int vertical_sync_time_lines;
|
|
int vertical_blank_lines;
|
|
int horizontal_offset;
|
|
int vertical_offset;
|
|
};
|
|
|
|
struct GraphicsHeadEDID {
|
|
unsigned char* bytes;
|
|
unsigned bytes_size;
|
|
};
|
|
|
|
struct GraphicsHeadVerticalOffset {
|
|
int head_index;
|
|
int offsetted;
|
|
};
|
|
|
|
struct FBRect {
|
|
int head_index;
|
|
unsigned x;
|
|
unsigned y;
|
|
unsigned width;
|
|
unsigned height;
|
|
};
|
|
|
|
struct FBBufferOffset {
|
|
int buffer_index;
|
|
unsigned offset;
|
|
};
|
|
|
|
struct FBFlushRects {
|
|
int buffer_index;
|
|
unsigned count;
|
|
struct FBRect const* rects;
|
|
};
|
|
|
|
enum ConsoleModes {
|
|
KD_TEXT = 0x00,
|
|
KD_GRAPHICS = 0x01,
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
enum IOCtlNumber {
|
|
TIOCGPGRP,
|
|
TIOCSPGRP,
|
|
TCGETS,
|
|
TCSETS,
|
|
TCSETSW,
|
|
TCSETSF,
|
|
TCFLSH,
|
|
TIOCGWINSZ,
|
|
TIOCSCTTY,
|
|
TIOCSTI,
|
|
TIOCNOTTY,
|
|
TIOCSWINSZ,
|
|
TIOCGPTN,
|
|
GRAPHICS_IOCTL_GET_PROPERTIES,
|
|
GRAPHICS_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER,
|
|
GRAPHICS_IOCTL_GET_HEAD_VERTICAL_OFFSET_BUFFER,
|
|
GRAPHICS_IOCTL_FLUSH_HEAD_BUFFERS,
|
|
GRAPHICS_IOCTL_FLUSH_HEAD,
|
|
GRAPHICS_IOCTL_SET_HEAD_MODE_SETTING,
|
|
GRAPHICS_IOCTL_GET_HEAD_MODE_SETTING,
|
|
GRAPHICS_IOCTL_SET_SAFE_HEAD_MODE_SETTING,
|
|
GRAPHICS_IOCTL_SET_RESPONSIBLE,
|
|
GRAPHICS_IOCTL_UNSET_RESPONSIBLE,
|
|
KEYBOARD_IOCTL_GET_NUM_LOCK,
|
|
KEYBOARD_IOCTL_SET_NUM_LOCK,
|
|
KEYBOARD_IOCTL_GET_CAPS_LOCK,
|
|
KEYBOARD_IOCTL_SET_CAPS_LOCK,
|
|
MOUNT_IOCTL_SET_MOUNT_SPECIFIC_FLAG,
|
|
SIOCATMARK,
|
|
SIOCSIFADDR,
|
|
SIOCGIFADDR,
|
|
SIOCGIFHWADDR,
|
|
SIOCGIFNAME,
|
|
SIOCGIFINDEX,
|
|
SIOCGIFNETMASK,
|
|
SIOCSIFNETMASK,
|
|
SIOCGIFBRDADDR,
|
|
SIOCGIFMTU,
|
|
SIOCGIFFLAGS,
|
|
SIOCGIFCONF,
|
|
SIOCADDRT,
|
|
SIOCDELRT,
|
|
SIOCSARP,
|
|
SIOCDARP,
|
|
FIBMAP,
|
|
FIONBIO,
|
|
FIONREAD,
|
|
FIOCLEX,
|
|
FIONCLEX,
|
|
KCOV_SETBUFSIZE,
|
|
KCOV_ENABLE,
|
|
KCOV_DISABLE,
|
|
SOUNDCARD_IOCTL_SET_SAMPLE_RATE,
|
|
SOUNDCARD_IOCTL_GET_SAMPLE_RATE,
|
|
STORAGE_DEVICE_GET_SIZE,
|
|
STORAGE_DEVICE_GET_BLOCK_SIZE,
|
|
VIRGL_IOCTL_CREATE_CONTEXT,
|
|
VIRGL_IOCTL_CREATE_RESOURCE,
|
|
VIRGL_IOCTL_SUBMIT_CMD,
|
|
VIRGL_IOCTL_TRANSFER_DATA,
|
|
KDSETMODE,
|
|
KDGETMODE,
|
|
DEVCTL_CREATE_LOOP_DEVICE,
|
|
DEVCTL_DESTROY_LOOP_DEVICE,
|
|
};
|
|
|
|
#define TIOCGPGRP TIOCGPGRP
|
|
#define TIOCSPGRP TIOCSPGRP
|
|
#define TCGETS TCGETS
|
|
#define TCSETS TCSETS
|
|
#define TCSETSW TCSETSW
|
|
#define TCSETSF TCSETSF
|
|
#define TCFLSH TCFLSH
|
|
#define TIOCGWINSZ TIOCGWINSZ
|
|
#define TIOCSCTTY TIOCSCTTY
|
|
#define TIOCSTI TIOCSTI
|
|
#define TIOCNOTTY TIOCNOTTY
|
|
#define TIOCSWINSZ TIOCSWINSZ
|
|
#define TIOCGPTN TIOCGPTN
|
|
#define GRAPHICS_IOCTL_GET_PROPERTIES GRAPHICS_IOCTL_GET_PROPERTIES
|
|
#define GRAPHICS_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER GRAPHICS_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER
|
|
#define GRAPHICS_IOCTL_GET_HEAD_VERTICAL_OFFSET_BUFFER GRAPHICS_IOCTL_GET_HEAD_VERTICAL_OFFSET_BUFFER
|
|
#define GRAPHICS_IOCTL_FLUSH_HEAD_BUFFERS GRAPHICS_IOCTL_FLUSH_HEAD_BUFFERS
|
|
#define GRAPHICS_IOCTL_FLUSH_HEAD GRAPHICS_IOCTL_FLUSH_HEAD
|
|
#define GRAPHICS_IOCTL_SET_HEAD_MODE_SETTING GRAPHICS_IOCTL_SET_HEAD_MODE_SETTING
|
|
#define GRAPHICS_IOCTL_GET_HEAD_MODE_SETTING GRAPHICS_IOCTL_GET_HEAD_MODE_SETTING
|
|
#define GRAPHICS_IOCTL_SET_SAFE_HEAD_MODE_SETTING GRAPHICS_IOCTL_SET_SAFE_HEAD_MODE_SETTING
|
|
#define GRAPHICS_IOCTL_SET_RESPONSIBLE GRAPHICS_IOCTL_SET_RESPONSIBLE
|
|
#define GRAPHICS_IOCTL_UNSET_RESPONSIBLE GRAPHICS_IOCTL_UNSET_RESPONSIBLE
|
|
#define KEYBOARD_IOCTL_GET_NUM_LOCK KEYBOARD_IOCTL_GET_NUM_LOCK
|
|
#define KEYBOARD_IOCTL_SET_NUM_LOCK KEYBOARD_IOCTL_SET_NUM_LOCK
|
|
#define KEYBOARD_IOCTL_GET_CAPS_LOCK KEYBOARD_IOCTL_GET_CAPS_LOCK
|
|
#define KEYBOARD_IOCTL_SET_CAPS_LOCK KEYBOARD_IOCTL_SET_CAPS_LOCK
|
|
#define SIOCATMARK SIOCATMARK
|
|
#define SIOCSIFADDR SIOCSIFADDR
|
|
#define SIOCGIFADDR SIOCGIFADDR
|
|
#define SIOCGIFHWADDR SIOCGIFHWADDR
|
|
#define SIOCGIFNETMASK SIOCGIFNETMASK
|
|
#define SIOCGIFNAME SIOCGIFNAME
|
|
#define SIOCGIFINDEX SIOCGIFINDEX
|
|
#define SIOCSIFNETMASK SIOCSIFNETMASK
|
|
#define SIOCGIFBRDADDR SIOCGIFBRDADDR
|
|
#define SIOCGIFMTU SIOCGIFMTU
|
|
#define SIOCGIFFLAGS SIOCGIFFLAGS
|
|
#define SIOCGIFCONF SIOCGIFCONF
|
|
#define SIOCADDRT SIOCADDRT
|
|
#define SIOCDELRT SIOCDELRT
|
|
#define SIOCSARP SIOCSARP
|
|
#define SIOCDARP SIOCDARP
|
|
#define FIBMAP FIBMAP
|
|
#define FIONBIO FIONBIO
|
|
#define FIONREAD FIONREAD
|
|
#define MOUNT_IOCTL_SET_MOUNT_SPECIFIC_FLAG MOUNT_IOCTL_SET_MOUNT_SPECIFIC_FLAG
|
|
#define SOUNDCARD_IOCTL_SET_SAMPLE_RATE SOUNDCARD_IOCTL_SET_SAMPLE_RATE
|
|
#define SOUNDCARD_IOCTL_GET_SAMPLE_RATE SOUNDCARD_IOCTL_GET_SAMPLE_RATE
|
|
#define STORAGE_DEVICE_GET_SIZE STORAGE_DEVICE_GET_SIZE
|
|
#define STORAGE_DEVICE_GET_BLOCK_SIZE STORAGE_DEVICE_GET_BLOCK_SIZE
|
|
#define VIRGL_IOCTL_CREATE_CONTEXT VIRGL_IOCTL_CREATE_CONTEXT
|
|
#define VIRGL_IOCTL_CREATE_RESOURCE VIRGL_IOCTL_CREATE_RESOURCE
|
|
#define VIRGL_IOCTL_SUBMIT_CMD VIRGL_IOCTL_SUBMIT_CMD
|
|
#define VIRGL_IOCTL_TRANSFER_DATA VIRGL_IOCTL_TRANSFER_DATA
|
|
#define KDSETMODE KDSETMODE
|
|
#define KDGETMODE KDGETMODE
|
|
#define DEVCTL_CREATE_LOOP_DEVICE DEVCTL_CREATE_LOOP_DEVICE
|
|
#define DEVCTL_DESTROY_LOOP_DEVICE DEVCTL_DESTROY_LOOP_DEVICE
|