From 1e2f09bb5b0e56cc5210110d5ad249c504a69a92 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 1 May 2012 21:16:57 -0400 Subject: initial check-in --- README | 19 +++ include/linux/fb.h | 341 ++++++++++++++++++++++++++++++++++++++++++++++++ include/linux/kd.h | 157 ++++++++++++++++++++++ include/linux/loop.h | 69 ++++++++++ include/linux/version.h | 2 + include/linux/vt.h | 52 ++++++++ 6 files changed, 640 insertions(+) create mode 100644 README create mode 100644 include/linux/fb.h create mode 100644 include/linux/kd.h create mode 100644 include/linux/loop.h create mode 100644 include/linux/version.h create mode 100644 include/linux/vt.h diff --git a/README b/README new file mode 100644 index 0000000..be288da --- /dev/null +++ b/README @@ -0,0 +1,19 @@ +mini-lkh: mini linux kernel headers package + +This package is intended for easy installation on systems that need a +minimal set of Linux kernel headers for building Busybox and/or low +level system tools, and don't want to deal with obtaining and +installing the official headers. They've been stripped down for +namespace cleanliness, omission of anything kernel-internal, and to +focus just on the interfaces where kernel headers are actually +necessary/useful (mainly special hardware access and configuration). + +At present this package is highly incomplete. These headers were +originally packaged as part of musl libc, but I moved them to their +own dedicated repository to avoid potentially overwriting official +kernel headers when musl is upgraded. + +These headers may be used without installation by adding the include +directory on the compiler's command line, or may be installed by +copying all the directories under include to a directory in the system +include search path (such as /usr/include). diff --git a/include/linux/fb.h b/include/linux/fb.h new file mode 100644 index 0000000..3571ee7 --- /dev/null +++ b/include/linux/fb.h @@ -0,0 +1,341 @@ +#ifndef _LINUX_FB_H +#define _LINUX_FB_H + +#include +#include + +struct dentry; + +#define FB_MAX 32 + +#define FBIOGET_VSCREENINFO 0x4600 +#define FBIOPUT_VSCREENINFO 0x4601 +#define FBIOGET_FSCREENINFO 0x4602 +#define FBIOGETCMAP 0x4604 +#define FBIOPUTCMAP 0x4605 +#define FBIOPAN_DISPLAY 0x4606 +#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor) +#define FBIOGET_CON2FBMAP 0x460F +#define FBIOPUT_CON2FBMAP 0x4610 +#define FBIOBLANK 0x4611 +#define FBIOGET_VBLANK _IOR('F', 0x12, struct fb_vblank) +#define FBIO_ALLOC 0x4613 +#define FBIO_FREE 0x4614 +#define FBIOGET_GLYPH 0x4615 +#define FBIOGET_HWCINFO 0x4616 +#define FBIOPUT_MODEINFO 0x4617 +#define FBIOGET_DISPINFO 0x4618 + +#define FB_TYPE_PACKED_PIXELS 0 +#define FB_TYPE_PLANES 1 +#define FB_TYPE_INTERLEAVED_PLANES 2 +#define FB_TYPE_TEXT 3 +#define FB_TYPE_VGA_PLANES 4 + +#define FB_AUX_TEXT_MDA 0 +#define FB_AUX_TEXT_CGA 1 +#define FB_AUX_TEXT_S3_MMIO 2 +#define FB_AUX_TEXT_MGA_STEP16 3 +#define FB_AUX_TEXT_MGA_STEP8 4 +#define FB_AUX_TEXT_SVGA_GROUP 8 +#define FB_AUX_TEXT_SVGA_MASK 7 +#define FB_AUX_TEXT_SVGA_STEP2 8 +#define FB_AUX_TEXT_SVGA_STEP4 9 +#define FB_AUX_TEXT_SVGA_STEP8 10 +#define FB_AUX_TEXT_SVGA_STEP16 11 +#define FB_AUX_TEXT_SVGA_LAST 15 + +#define FB_AUX_VGA_PLANES_VGA4 0 +#define FB_AUX_VGA_PLANES_CFB4 1 +#define FB_AUX_VGA_PLANES_CFB8 2 + +#define FB_VISUAL_MONO01 0 +#define FB_VISUAL_MONO10 1 +#define FB_VISUAL_TRUECOLOR 2 +#define FB_VISUAL_PSEUDOCOLOR 3 +#define FB_VISUAL_DIRECTCOLOR 4 +#define FB_VISUAL_STATIC_PSEUDOCOLOR 5 + +#define FB_ACCEL_NONE 0 +#define FB_ACCEL_ATARIBLITT 1 +#define FB_ACCEL_AMIGABLITT 2 +#define FB_ACCEL_S3_TRIO64 3 +#define FB_ACCEL_NCR_77C32BLT 4 +#define FB_ACCEL_S3_VIRGE 5 +#define FB_ACCEL_ATI_MACH64GX 6 +#define FB_ACCEL_DEC_TGA 7 +#define FB_ACCEL_ATI_MACH64CT 8 +#define FB_ACCEL_ATI_MACH64VT 9 +#define FB_ACCEL_ATI_MACH64GT 10 +#define FB_ACCEL_SUN_CREATOR 11 +#define FB_ACCEL_SUN_CGSIX 12 +#define FB_ACCEL_SUN_LEO 13 +#define FB_ACCEL_IMS_TWINTURBO 14 +#define FB_ACCEL_3DLABS_PERMEDIA2 15 +#define FB_ACCEL_MATROX_MGA2064W 16 +#define FB_ACCEL_MATROX_MGA1064SG 17 +#define FB_ACCEL_MATROX_MGA2164W 18 +#define FB_ACCEL_MATROX_MGA2164W_AGP 19 +#define FB_ACCEL_MATROX_MGAG100 20 +#define FB_ACCEL_MATROX_MGAG200 21 +#define FB_ACCEL_SUN_CG14 22 +#define FB_ACCEL_SUN_BWTWO 23 +#define FB_ACCEL_SUN_CGTHREE 24 +#define FB_ACCEL_SUN_TCX 25 +#define FB_ACCEL_MATROX_MGAG400 26 +#define FB_ACCEL_NV3 27 +#define FB_ACCEL_NV4 28 +#define FB_ACCEL_NV5 29 +#define FB_ACCEL_CT_6555x 30 +#define FB_ACCEL_3DFX_BANSHEE 31 +#define FB_ACCEL_ATI_RAGE128 32 +#define FB_ACCEL_IGS_CYBER2000 33 +#define FB_ACCEL_IGS_CYBER2010 34 +#define FB_ACCEL_IGS_CYBER5000 35 +#define FB_ACCEL_SIS_GLAMOUR 36 +#define FB_ACCEL_3DLABS_PERMEDIA3 37 +#define FB_ACCEL_ATI_RADEON 38 +#define FB_ACCEL_I810 39 +#define FB_ACCEL_SIS_GLAMOUR_2 40 +#define FB_ACCEL_SIS_XABRE 41 +#define FB_ACCEL_I830 42 +#define FB_ACCEL_NV_10 43 +#define FB_ACCEL_NV_20 44 +#define FB_ACCEL_NV_30 45 +#define FB_ACCEL_NV_40 46 +#define FB_ACCEL_XGI_VOLARI_V 47 +#define FB_ACCEL_XGI_VOLARI_Z 48 +#define FB_ACCEL_OMAP1610 49 +#define FB_ACCEL_TRIDENT_TGUI 50 +#define FB_ACCEL_TRIDENT_3DIMAGE 51 +#define FB_ACCEL_TRIDENT_BLADE3D 52 +#define FB_ACCEL_TRIDENT_BLADEXP 53 +#define FB_ACCEL_CIRRUS_ALPINE 53 +#define FB_ACCEL_NEOMAGIC_NM2070 90 +#define FB_ACCEL_NEOMAGIC_NM2090 91 +#define FB_ACCEL_NEOMAGIC_NM2093 92 +#define FB_ACCEL_NEOMAGIC_NM2097 93 +#define FB_ACCEL_NEOMAGIC_NM2160 94 +#define FB_ACCEL_NEOMAGIC_NM2200 95 +#define FB_ACCEL_NEOMAGIC_NM2230 96 +#define FB_ACCEL_NEOMAGIC_NM2360 97 +#define FB_ACCEL_NEOMAGIC_NM2380 98 + +#define FB_ACCEL_SAVAGE4 0x80 +#define FB_ACCEL_SAVAGE3D 0x81 +#define FB_ACCEL_SAVAGE3D_MV 0x82 +#define FB_ACCEL_SAVAGE2000 0x83 +#define FB_ACCEL_SAVAGE_MX_MV 0x84 +#define FB_ACCEL_SAVAGE_MX 0x85 +#define FB_ACCEL_SAVAGE_IX_MV 0x86 +#define FB_ACCEL_SAVAGE_IX 0x87 +#define FB_ACCEL_PROSAVAGE_PM 0x88 +#define FB_ACCEL_PROSAVAGE_KM 0x89 +#define FB_ACCEL_S3TWISTER_P 0x8a +#define FB_ACCEL_S3TWISTER_K 0x8b +#define FB_ACCEL_SUPERSAVAGE 0x8c +#define FB_ACCEL_PROSAVAGE_DDR 0x8d +#define FB_ACCEL_PROSAVAGE_DDRK 0x8e + +struct fb_fix_screeninfo { + char id[16]; + unsigned long smem_start; + uint32_t smem_len; + uint32_t type; + uint32_t type_aux; + uint32_t visual; + uint16_t xpanstep; + uint16_t ypanstep; + uint16_t ywrapstep; + uint32_t line_length; + unsigned long mmio_start; + uint32_t mmio_len; + uint32_t accel; + uint16_t reserved[3]; +}; + +struct fb_bitfield { + uint32_t offset; + uint32_t length; + uint32_t msb_right; +}; + +#define FB_NONSTD_HAM 1 +#define FB_NONSTD_REV_PIX_IN_B 2 + +#define FB_ACTIVATE_NOW 0 +#define FB_ACTIVATE_NXTOPEN 1 +#define FB_ACTIVATE_TEST 2 +#define FB_ACTIVATE_MASK 15 +#define FB_ACTIVATE_VBL 16 +#define FB_CHANGE_CMAP_VBL 32 +#define FB_ACTIVATE_ALL 64 +#define FB_ACTIVATE_FORCE 128 +#define FB_ACTIVATE_INV_MODE 256 + +#define FB_ACCELF_TEXT 1 + +#define FB_SYNC_HOR_HIGH_ACT 1 +#define FB_SYNC_VERT_HIGH_ACT 2 +#define FB_SYNC_EXT 4 +#define FB_SYNC_COMP_HIGH_ACT 8 +#define FB_SYNC_BROADCAST 16 +#define FB_SYNC_ON_GREEN 32 + +#define FB_VMODE_NONINTERLACED 0 +#define FB_VMODE_INTERLACED 1 +#define FB_VMODE_DOUBLE 2 +#define FB_VMODE_ODD_FLD_FIRST 4 +#define FB_VMODE_MASK 255 + +#define FB_VMODE_YWRAP 256 +#define FB_VMODE_SMOOTH_XPAN 512 +#define FB_VMODE_CONUPDATE 512 + +#define FB_ROTATE_UR 0 +#define FB_ROTATE_CW 1 +#define FB_ROTATE_UD 2 +#define FB_ROTATE_CCW 3 + +#define PICOS2KHZ(a) (1000000000UL/(a)) +#define KHZ2PICOS(a) (1000000000UL/(a)) + +struct fb_var_screeninfo { + uint32_t xres; + uint32_t yres; + uint32_t xres_virtual; + uint32_t yres_virtual; + uint32_t xoffset; + uint32_t yoffset; + + uint32_t bits_per_pixel; + uint32_t grayscale; + + struct fb_bitfield red; + struct fb_bitfield green; + struct fb_bitfield blue; + struct fb_bitfield transp; + + uint32_t nonstd; + + uint32_t activate; + + uint32_t height; + uint32_t width; + + uint32_t accel_flags; + + uint32_t pixclock; + uint32_t left_margin; + uint32_t right_margin; + uint32_t upper_margin; + uint32_t lower_margin; + uint32_t hsync_len; + uint32_t vsync_len; + uint32_t sync; + uint32_t vmode; + uint32_t rotate; + uint32_t reserved[5]; +}; + +struct fb_cmap { + uint32_t start; + uint32_t len; + uint16_t *red; + uint16_t *green; + uint16_t *blue; + uint16_t *transp; +}; + +struct fb_con2fbmap { + uint32_t console; + uint32_t framebuffer; +}; + +#define VESA_NO_BLANKING 0 +#define VESA_VSYNC_SUSPEND 1 +#define VESA_HSYNC_SUSPEND 2 +#define VESA_POWERDOWN 3 + +#define FB_BLANK_UNBLANK VESA_NO_BLANKING +#define FB_BLANK_NORMAL (VESA_NO_BLANKING + 1) +#define FB_BLANK_VSYNC_SUSPEND (VESA_VSYNC_SUSPEND + 1) +#define FB_BLANK_HSYNC_SUSPEND (VESA_HSYNC_SUSPEND + 1) +#define FB_BLANK_POWERDOWN (VESA_POWERDOWN + 1) + +#define FB_VBLANK_VBLANKING 0x001 +#define FB_VBLANK_HBLANKING 0x002 +#define FB_VBLANK_HAVE_VBLANK 0x004 +#define FB_VBLANK_HAVE_HBLANK 0x008 +#define FB_VBLANK_HAVE_COUNT 0x010 +#define FB_VBLANK_HAVE_VCOUNT 0x020 +#define FB_VBLANK_HAVE_HCOUNT 0x040 +#define FB_VBLANK_VSYNCING 0x080 +#define FB_VBLANK_HAVE_VSYNC 0x100 + +struct fb_vblank { + uint32_t flags; + uint32_t count; + uint32_t vcount; + uint32_t hcount; + uint32_t reserved[4]; +}; + +#define ROP_COPY 0 +#define ROP_XOR 1 + +struct fb_copyarea { + uint32_t dx; + uint32_t dy; + uint32_t width; + uint32_t height; + uint32_t sx; + uint32_t sy; +}; + +struct fb_fillrect { + uint32_t dx; + uint32_t dy; + uint32_t width; + uint32_t height; + uint32_t color; + uint32_t rop; +}; + +struct fb_image { + uint32_t dx; + uint32_t dy; + uint32_t width; + uint32_t height; + uint32_t fg_color; + uint32_t bg_color; + uint8_t depth; + const char *data; + struct fb_cmap cmap; +}; + +#define FB_CUR_SETIMAGE 0x01 +#define FB_CUR_SETPOS 0x02 +#define FB_CUR_SETHOT 0x04 +#define FB_CUR_SETCMAP 0x08 +#define FB_CUR_SETSHAPE 0x10 +#define FB_CUR_SETSIZE 0x20 +#define FB_CUR_SETALL 0xFF + +struct fbcurpos { + uint16_t x, y; +}; + +struct fb_cursor { + uint16_t set; + uint16_t enable; + uint16_t rop; + const char *mask; + struct fbcurpos hot; + struct fb_image image; +}; + +#define FB_BACKLIGHT_LEVELS 128 +#define FB_BACKLIGHT_MAX 0xFF + +#endif diff --git a/include/linux/kd.h b/include/linux/kd.h new file mode 100644 index 0000000..34e7491 --- /dev/null +++ b/include/linux/kd.h @@ -0,0 +1,157 @@ +#ifndef _LINUX_KD_H +#define _LINUX_KD_H + +#define GIO_FONT 0x4B60 +#define PIO_FONT 0x4B61 +#define GIO_FONTX 0x4B6B +#define PIO_FONTX 0x4B6C + +struct consolefontdesc { + unsigned short charcount; + unsigned short charheight; + char *chardata; +}; + +#define PIO_FONTRESET 0x4B6D + +#define GIO_CMAP 0x4B70 +#define PIO_CMAP 0x4B71 + +#define KIOCSOUND 0x4B2F +#define KDMKTONE 0x4B30 + +#define KDGETLED 0x4B31 +#define KDSETLED 0x4B32 +#define LED_SCR 0x01 +#define LED_NUM 0x02 +#define LED_CAP 0x04 + +#define KDGKBTYPE 0x4B33 +#define KB_84 0x01 +#define KB_101 0x02 +#define KB_OTHER 0x03 + +#define KDADDIO 0x4B34 +#define KDDELIO 0x4B35 +#define KDENABIO 0x4B36 +#define KDDISABIO 0x4B37 + +#define KDSETMODE 0x4B3A +#define KD_TEXT 0x00 +#define KD_GRAPHICS 0x01 +#define KD_TEXT0 0x02 +#define KD_TEXT1 0x03 +#define KDGETMODE 0x4B3B + +#define KDMAPDISP 0x4B3C +#define KDUNMAPDISP 0x4B3D + +typedef char scrnmap_t; +#define E_TABSZ 256 +#define GIO_SCRNMAP 0x4B40 +#define PIO_SCRNMAP 0x4B41 +#define GIO_UNISCRNMAP 0x4B69 +#define PIO_UNISCRNMAP 0x4B6A + +#define GIO_UNIMAP 0x4B66 +struct unipair { + unsigned short unicode; + unsigned short fontpos; +}; +struct unimapdesc { + unsigned short entry_ct; + struct unipair *entries; +}; + +#define PIO_UNIMAP 0x4B67 +#define PIO_UNIMAPCLR 0x4B68 + +struct unimapinit { + unsigned short advised_hashsize; + unsigned short advised_hashstep; + unsigned short advised_hashlevel; +}; + +#define UNI_DIRECT_BASE 0xF000 +#define UNI_DIRECT_MASK 0x01FF + +#define K_RAW 0x00 +#define K_XLATE 0x01 +#define K_MEDIUMRAW 0x02 +#define K_UNICODE 0x03 +#define KDGKBMODE 0x4B44 +#define KDSKBMODE 0x4B45 + +#define K_METABIT 0x03 +#define K_ESCPREFIX 0x04 +#define KDGKBMETA 0x4B62 +#define KDSKBMETA 0x4B63 + +#define K_SCROLLLOCK 0x01 +#define K_NUMLOCK 0x02 +#define K_CAPSLOCK 0x04 +#define KDGKBLED 0x4B64 +#define KDSKBLED 0x4B65 + +struct kbentry { + unsigned char kb_table; + unsigned char kb_index; + unsigned short kb_value; +}; +#define K_NORMTAB 0x00 +#define K_SHIFTTAB 0x01 +#define K_ALTTAB 0x02 +#define K_ALTSHIFTTAB 0x03 + +#define KDGKBENT 0x4B46 +#define KDSKBENT 0x4B47 + +struct kbsentry { + unsigned char kb_func; + unsigned char kb_string[512]; +}; +#define KDGKBSENT 0x4B48 +#define KDSKBSENT 0x4B49 + +struct kbdiacr { + unsigned char diacr, base, result; +}; +struct kbdiacrs { + unsigned int kb_cnt; + struct kbdiacr kbdiacr[256]; +}; +#define KDGKBDIACR 0x4B4A +#define KDSKBDIACR 0x4B4B + +struct kbkeycode { + unsigned int scancode, keycode; +}; +#define KDGETKEYCODE 0x4B4C +#define KDSETKEYCODE 0x4B4D + +#define KDSIGACCEPT 0x4B4E + +struct kbd_repeat { + int delay; + int rate; +}; + +#define KDKBDREP 0x4B52 +#define KDFONTOP 0x4B72 + +struct console_font_op { + unsigned int op; + unsigned int flags; + unsigned int width, height; + unsigned int charcount; + unsigned char *data; +}; + +#define KD_FONT_OP_SET 0 +#define KD_FONT_OP_GET 1 +#define KD_FONT_OP_SET_DEFAULT 2 +#define KD_FONT_OP_COPY 3 + +#define KD_FONT_FLAG_DONT_RECALC 1 + +#endif diff --git a/include/linux/loop.h b/include/linux/loop.h new file mode 100644 index 0000000..41aad40 --- /dev/null +++ b/include/linux/loop.h @@ -0,0 +1,69 @@ +#ifndef _LINUX_LOOP_H +#define _LINUX_LOOP_H + +#include + +#define LO_NAME_SIZE 64 +#define LO_KEY_SIZE 32 + +enum { + LO_FLAGS_READ_ONLY = 1, + LO_FLAGS_USE_AOPS = 2, + LO_FLAGS_AUTOCLEAR = 4, +}; + +struct loop_info { + int lo_number; + long lo_device; + unsigned long lo_inode; + long lo_rdevice; + int lo_offset; + int lo_encrypt_type; + int lo_encrypt_key_size; + int lo_flags; + char lo_name[LO_NAME_SIZE]; + unsigned char lo_encrypt_key[LO_KEY_SIZE]; + unsigned long lo_init[2]; + char reserved[4]; +}; + +struct loop_info64 { + uint64_t lo_device; + uint64_t lo_inode; + uint64_t lo_rdevice; + uint64_t lo_offset; + uint64_t lo_sizelimit; + uint32_t lo_number; + uint32_t lo_encrypt_type; + uint32_t lo_encrypt_key_size; + uint32_t lo_flags; + uint8_t lo_file_name[LO_NAME_SIZE]; + uint8_t lo_crypt_name[LO_NAME_SIZE]; + uint8_t lo_encrypt_key[LO_KEY_SIZE]; + uint64_t lo_init[2]; +}; + + +#define LO_CRYPT_NONE 0 +#define LO_CRYPT_XOR 1 +#define LO_CRYPT_DES 2 +#define LO_CRYPT_FISH2 3 +#define LO_CRYPT_BLOW 4 +#define LO_CRYPT_CAST128 5 +#define LO_CRYPT_IDEA 6 +#define LO_CRYPT_DUMMY 9 +#define LO_CRYPT_SKIPJACK 10 +#define LO_CRYPT_CRYPTOAPI 18 +#define MAX_LO_CRYPT 20 + + +#define LOOP_SET_FD 0x4C00 +#define LOOP_CLR_FD 0x4C01 +#define LOOP_SET_STATUS 0x4C02 +#define LOOP_GET_STATUS 0x4C03 +#define LOOP_SET_STATUS64 0x4C04 +#define LOOP_GET_STATUS64 0x4C05 +#define LOOP_CHANGE_FD 0x4C06 +#define LOOP_SET_CAPACITY 0x4C07 + +#endif diff --git a/include/linux/version.h b/include/linux/version.h new file mode 100644 index 0000000..e6a89ef --- /dev/null +++ b/include/linux/version.h @@ -0,0 +1,2 @@ +#define LINUX_VERSION_CODE 132638 +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) diff --git a/include/linux/vt.h b/include/linux/vt.h new file mode 100644 index 0000000..86262ba --- /dev/null +++ b/include/linux/vt.h @@ -0,0 +1,52 @@ +#ifndef _LINUX_VT_H +#define _LINUX_VT_H + +#define VT_OPENQRY 0x5600 + +struct vt_mode { + char mode; + char waitv; + short relsig; + short acqsig; + short frsig; +}; +#define VT_GETMODE 0x5601 +#define VT_SETMODE 0x5602 +#define VT_AUTO 0x00 +#define VT_PROCESS 0x01 +#define VT_ACKACQ 0x02 + +struct vt_stat { + unsigned short v_active; + unsigned short v_signal; + unsigned short v_state; +}; +#define VT_GETSTATE 0x5603 +#define VT_SENDSIG 0x5604 + +#define VT_RELDISP 0x5605 + +#define VT_ACTIVATE 0x5606 +#define VT_WAITACTIVE 0x5607 +#define VT_DISALLOCATE 0x5608 + +struct vt_sizes { + unsigned short v_rows; + unsigned short v_cols; + unsigned short v_scrollsize; +}; +#define VT_RESIZE 0x5609 + +struct vt_consize { + unsigned short v_rows; + unsigned short v_cols; + unsigned short v_vlin; + unsigned short v_clin; + unsigned short v_vcol; + unsigned short v_ccol; +}; +#define VT_RESIZEX 0x560A +#define VT_LOCKSWITCH 0x560B +#define VT_UNLOCKSWITCH 0x560C + +#endif -- cgit v1.2.1