From 73507d5f4ea21d00c638f8105209993451a285af Mon Sep 17 00:00:00 2001 From: tkchia Date: Mon, 2 Jan 2023 08:28:03 +0800 Subject: [PATCH] Add some definitions for Linux frame buffer/console ioctl APIs (#712) Co-authored-by: tkchia --- libc/calls/struct/framebuffercolormap.h | 15 +++++++++++ libc/sysv/consts.sh | 22 +++++++++++++++ libc/sysv/consts/FBIOGETCMAP.s | 2 ++ libc/sysv/consts/FBIOGET_FSCREENINFO.s | 2 ++ libc/sysv/consts/FBIOGET_VSCREENINFO.s | 2 ++ libc/sysv/consts/FBIOPAN_DISPLAY.s | 2 ++ libc/sysv/consts/FBIOPUTCMAP.s | 2 ++ libc/sysv/consts/FBIOPUT_VSCREENINFO.s | 2 ++ libc/sysv/consts/FBIO_WAITFORVSYNC.s | 2 ++ libc/sysv/consts/GIO_FONT.s | 2 ++ libc/sysv/consts/GIO_FONTX.s | 2 ++ libc/sysv/consts/KDFONTOP.s | 2 ++ libc/sysv/consts/PIO_FONT.s | 2 ++ libc/sysv/consts/PIO_FONT8x14.s | 2 ++ libc/sysv/consts/PIO_FONT8x16.s | 2 ++ libc/sysv/consts/PIO_FONT8x8.s | 2 ++ libc/sysv/consts/PIO_FONTRESET.s | 2 ++ libc/sysv/consts/PIO_FONTX.s | 2 ++ libc/sysv/consts/PIO_VFONT.s | 2 ++ libc/sysv/consts/fbio.h | 26 ++++++++++++++++++ libc/sysv/consts/kd.h | 36 +++++++++++++++++++++++++ 21 files changed, 133 insertions(+) create mode 100644 libc/calls/struct/framebuffercolormap.h create mode 100644 libc/sysv/consts/FBIOGETCMAP.s create mode 100644 libc/sysv/consts/FBIOGET_FSCREENINFO.s create mode 100644 libc/sysv/consts/FBIOGET_VSCREENINFO.s create mode 100644 libc/sysv/consts/FBIOPAN_DISPLAY.s create mode 100644 libc/sysv/consts/FBIOPUTCMAP.s create mode 100644 libc/sysv/consts/FBIOPUT_VSCREENINFO.s create mode 100644 libc/sysv/consts/FBIO_WAITFORVSYNC.s create mode 100644 libc/sysv/consts/GIO_FONT.s create mode 100644 libc/sysv/consts/GIO_FONTX.s create mode 100644 libc/sysv/consts/KDFONTOP.s create mode 100644 libc/sysv/consts/PIO_FONT.s create mode 100644 libc/sysv/consts/PIO_FONT8x14.s create mode 100644 libc/sysv/consts/PIO_FONT8x16.s create mode 100644 libc/sysv/consts/PIO_FONT8x8.s create mode 100644 libc/sysv/consts/PIO_FONTRESET.s create mode 100644 libc/sysv/consts/PIO_FONTX.s create mode 100644 libc/sysv/consts/PIO_VFONT.s create mode 100644 libc/sysv/consts/fbio.h create mode 100644 libc/sysv/consts/kd.h diff --git a/libc/calls/struct/framebuffercolormap.h b/libc/calls/struct/framebuffercolormap.h new file mode 100644 index 000000000..922ae3aa8 --- /dev/null +++ b/libc/calls/struct/framebuffercolormap.h @@ -0,0 +1,15 @@ +#ifndef COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERCOLORMAP_H_ +#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERCOLORMAP_H_ +#if !(__ASSEMBLER__ + __LINKER__ + 0) + +struct FrameBufferColorMap { + uint32_t start; + uint32_t len; + uint16_t *red; + uint16_t *green; + uint16_t *blue; + uint16_t *transp; +}; + +#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ +#endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERCOLORMAP_H_ */ diff --git a/libc/sysv/consts.sh b/libc/sysv/consts.sh index 57b3b9e02..64b63be77 100755 --- a/libc/sysv/consts.sh +++ b/libc/sysv/consts.sh @@ -1755,6 +1755,28 @@ syscon misc FALLOC_FL_ZERO_RANGE 0x10 -1 -1 -1 -1 0x000980C8 # bsd syscon misc FALLOC_FL_INSERT_RANGE 0x20 -1 -1 -1 -1 -1 # bsd consensus syscon misc FALLOC_FL_UNSHARE_RANGE 0x40 -1 -1 -1 -1 -1 # bsd consensus +# Video Output Control Ioctls (mostly platform-specific) +# +# group name GNU/Systemd XNU's Not UNIX! FreeBSD OpenBSD NetBSD The New Technology Commentary +syscon vid FBIOGET_VSCREENINFO 0x4600 0 0 0 0 0 +syscon vid FBIOPUT_VSCREENINFO 0x4601 0 0 0 0 0 +syscon vid FBIOGET_FSCREENINFO 0x4602 0 0 0 0 0 +syscon vid FBIOGETCMAP 0x4604 0 0 0 0 0 +syscon vid FBIOPUTCMAP 0x4605 0 0 0 0 0 +syscon vid FBIOPAN_DISPLAY 0x4606 0 0 0 0 0 +syscon vid FBIO_WAITFORVSYNC 0x40044620 0 0 0 0 0 +#syscon vid FBIO_CACHE_SYNC 0x4630 0 0 0 0 0 # does any Linux kernel driver actually implement this ioctl? only Chinese sources mention it +syscon vid GIO_FONT 0x4b60 0 0 0 0 0 +syscon vid PIO_FONT 0x4b61 0 0 0 0 0 +syscon vid GIO_FONTX 0x4b6b 0 0 0 0 0 +syscon vid PIO_FONTX 0x4b6c 0 0 0 0 0 +syscon vid PIO_FONT8x8 0 0 0x88006340 0 0 0 +syscon vid PIO_FONT8x14 0 0 0x8e006342 0 0 0 +syscon vid PIO_FONT8x16 0 0 0x90006344 0 0 0 +syscon vid PIO_VFONT 0 0 0x84086346 0 0 0 +syscon vid PIO_FONTRESET 0x4b6d 0 0x20006348 0 0 0 # PIO_VFONT_DEFAULT on FreeBSD, absent on OpenBSD +syscon vid KDFONTOP 0x4b72 0 0 0 0 0 + # System Call Numbers. # # group name GNU/Systemd XNU's Not UNIX! FreeBSD OpenBSD NetBSD The New Technology diff --git a/libc/sysv/consts/FBIOGETCMAP.s b/libc/sysv/consts/FBIOGETCMAP.s new file mode 100644 index 000000000..28884404e --- /dev/null +++ b/libc/sysv/consts/FBIOGETCMAP.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIOGETCMAP,0x4604,0,0,0,0,0 diff --git a/libc/sysv/consts/FBIOGET_FSCREENINFO.s b/libc/sysv/consts/FBIOGET_FSCREENINFO.s new file mode 100644 index 000000000..c5b0c1fc2 --- /dev/null +++ b/libc/sysv/consts/FBIOGET_FSCREENINFO.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIOGET_FSCREENINFO,0x4602,0,0,0,0,0 diff --git a/libc/sysv/consts/FBIOGET_VSCREENINFO.s b/libc/sysv/consts/FBIOGET_VSCREENINFO.s new file mode 100644 index 000000000..4e5820327 --- /dev/null +++ b/libc/sysv/consts/FBIOGET_VSCREENINFO.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIOGET_VSCREENINFO,0x4600,0,0,0,0,0 diff --git a/libc/sysv/consts/FBIOPAN_DISPLAY.s b/libc/sysv/consts/FBIOPAN_DISPLAY.s new file mode 100644 index 000000000..31eaa964a --- /dev/null +++ b/libc/sysv/consts/FBIOPAN_DISPLAY.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIOPAN_DISPLAY,0x4606,0,0,0,0,0 diff --git a/libc/sysv/consts/FBIOPUTCMAP.s b/libc/sysv/consts/FBIOPUTCMAP.s new file mode 100644 index 000000000..7d7761be7 --- /dev/null +++ b/libc/sysv/consts/FBIOPUTCMAP.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIOPUTCMAP,0x4605,0,0,0,0,0 diff --git a/libc/sysv/consts/FBIOPUT_VSCREENINFO.s b/libc/sysv/consts/FBIOPUT_VSCREENINFO.s new file mode 100644 index 000000000..5d169b20b --- /dev/null +++ b/libc/sysv/consts/FBIOPUT_VSCREENINFO.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIOPUT_VSCREENINFO,0x4601,0,0,0,0,0 diff --git a/libc/sysv/consts/FBIO_WAITFORVSYNC.s b/libc/sysv/consts/FBIO_WAITFORVSYNC.s new file mode 100644 index 000000000..7726588fc --- /dev/null +++ b/libc/sysv/consts/FBIO_WAITFORVSYNC.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,FBIO_WAITFORVSYNC,0x40044620,0,0,0,0,0 diff --git a/libc/sysv/consts/GIO_FONT.s b/libc/sysv/consts/GIO_FONT.s new file mode 100644 index 000000000..6b83720f8 --- /dev/null +++ b/libc/sysv/consts/GIO_FONT.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,GIO_FONT,0x4b60,0,0,0,0,0 diff --git a/libc/sysv/consts/GIO_FONTX.s b/libc/sysv/consts/GIO_FONTX.s new file mode 100644 index 000000000..1bac4c7b8 --- /dev/null +++ b/libc/sysv/consts/GIO_FONTX.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,GIO_FONTX,0x4b6b,0,0,0,0,0 diff --git a/libc/sysv/consts/KDFONTOP.s b/libc/sysv/consts/KDFONTOP.s new file mode 100644 index 000000000..95c16c0f2 --- /dev/null +++ b/libc/sysv/consts/KDFONTOP.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,KDFONTOP,0x4b72,0,0,0,0,0 diff --git a/libc/sysv/consts/PIO_FONT.s b/libc/sysv/consts/PIO_FONT.s new file mode 100644 index 000000000..50383b387 --- /dev/null +++ b/libc/sysv/consts/PIO_FONT.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_FONT,0x4b61,0,0,0,0,0 diff --git a/libc/sysv/consts/PIO_FONT8x14.s b/libc/sysv/consts/PIO_FONT8x14.s new file mode 100644 index 000000000..3bcdb9de4 --- /dev/null +++ b/libc/sysv/consts/PIO_FONT8x14.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_FONT8x14,0,0,0x8e006342,0,0,0 diff --git a/libc/sysv/consts/PIO_FONT8x16.s b/libc/sysv/consts/PIO_FONT8x16.s new file mode 100644 index 000000000..d32c75945 --- /dev/null +++ b/libc/sysv/consts/PIO_FONT8x16.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_FONT8x16,0,0,0x90006344,0,0,0 diff --git a/libc/sysv/consts/PIO_FONT8x8.s b/libc/sysv/consts/PIO_FONT8x8.s new file mode 100644 index 000000000..e7e676924 --- /dev/null +++ b/libc/sysv/consts/PIO_FONT8x8.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_FONT8x8,0,0,0x88006340,0,0,0 diff --git a/libc/sysv/consts/PIO_FONTRESET.s b/libc/sysv/consts/PIO_FONTRESET.s new file mode 100644 index 000000000..468549f7d --- /dev/null +++ b/libc/sysv/consts/PIO_FONTRESET.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_FONTRESET,0x4b6d,0,0x20006348,0,0,0 diff --git a/libc/sysv/consts/PIO_FONTX.s b/libc/sysv/consts/PIO_FONTX.s new file mode 100644 index 000000000..27397fbb0 --- /dev/null +++ b/libc/sysv/consts/PIO_FONTX.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_FONTX,0x4b6c,0,0,0,0,0 diff --git a/libc/sysv/consts/PIO_VFONT.s b/libc/sysv/consts/PIO_VFONT.s new file mode 100644 index 000000000..6476186e1 --- /dev/null +++ b/libc/sysv/consts/PIO_VFONT.s @@ -0,0 +1,2 @@ +.include "o/libc/sysv/consts/syscon.internal.inc" +.syscon vid,PIO_VFONT,0,0,0x84086346,0,0,0 diff --git a/libc/sysv/consts/fbio.h b/libc/sysv/consts/fbio.h new file mode 100644 index 000000000..5a0f4f429 --- /dev/null +++ b/libc/sysv/consts/fbio.h @@ -0,0 +1,26 @@ +#ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_FB_H_ +#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FB_H_ +#include "libc/runtime/symbolic.h" +#if !(__ASSEMBLER__ + __LINKER__ + 0) +COSMOPOLITAN_C_START_ + +extern const uint64_t FBIOGET_VSCREENINFO; +extern const uint64_t FBIOPUT_VSCREENINFO; +extern const uint64_t FBIOGET_FSCREENINFO; +extern const uint64_t FBIOGETCMAP; +extern const uint64_t FBIOPUTCMAP; +extern const uint64_t FBIOPAN_DISPLAY; +extern const uint64_t FBIO_WAITFORVSYNC; + +COSMOPOLITAN_C_END_ +#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ + +#define FBIOGET_VSCREENINFO SYMBOLIC(FBIOGET_VSCREENINFO) +#define FBIOPUT_VSCREENINFO SYMBOLIC(FBIOPUT_VSCREENINFO) +#define FBIOGET_FSCREENINFO SYMBOLIC(FBIOGET_FSCREENINFO) +#define FBIOGETCMAP SYMBOLIC(FBIOGETCMAP) +#define FBIOPUTCMAP SYMBOLIC(FBIOPUTCMAP) +#define FBIOPAN_DISPLAY SYMBOLIC(FBIOPAN_DISPLAY) +#define FBIO_WAITFORVSYNC SYMBOLIC(FBIO_WAITFORVSYNC) + +#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_FB_H_ */ diff --git a/libc/sysv/consts/kd.h b/libc/sysv/consts/kd.h new file mode 100644 index 000000000..b847fc4b8 --- /dev/null +++ b/libc/sysv/consts/kd.h @@ -0,0 +1,36 @@ +#ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_KD_H_ +#define COSMOPOLITAN_LIBC_SYSV_CONSTS_KD_H_ +#include "libc/runtime/symbolic.h" +#if !(__ASSEMBLER__ + __LINKER__ + 0) +COSMOPOLITAN_C_START_ + +extern const uint64_t GIO_FONT; +extern const uint64_t PIO_FONT; +extern const uint64_t GIO_FONTX; +extern const uint64_t PIO_FONTX; +extern const uint64_t PIO_FONT8x8; +extern const uint64_t PIO_FONT8x14; +extern const uint64_t PIO_FONT8x16; +extern const uint64_t PIO_VFONT; +extern const uint64_t PIO_FONTRESET; +extern const uint64_t KDFONTOP; + +COSMOPOLITAN_C_END_ +#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ + +#define GIO_FONT SYMBOLIC(GIO_FONT) +#define PIO_FONT SYMBOLIC(PIO_FONT) +#define GIO_FONTX SYMBOLIC(GIO_FONTX) +#define PIO_FONTX SYMBOLIC(PIO_FONTX) +#define PIO_FONT8x8 SYMBOLIC(PIO_FONT8x8) +#define PIO_FONT8x14 SYMBOLIC(PIO_FONT8x14) +#define PIO_FONT8x16 SYMBOLIC(PIO_FONT8x14) +#define PIO_VFONT SYMBOLIC(PIO_VFONT) +#define PIO_FONTRESET SYMBOLIC(PIO_FONTRESET) +#define KDFONTOP SYMBOLIC(KDFONTOP) + +#ifdef _BSD_SOURCE +#define PIO_VFONT_DEFAULT PIO_FONTRESET +#endif + +#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_KD_H_ */