📄 os_linux.inc
字号:
; Copyright (C) 1999-2002 Konstantin Boldyshev <konst@linuxassembly.org>;; $Id: os_linux.inc,v 1.26 2002/08/14 16:53:29 konst Exp $;; file : os_linux.inc; created : 08-Feb-2000; modified : 14-Aug-2002; version : 0.17; assembler : nasm 0.98; description : Linux kernel (2.0+) constants and structures; author : Konstantin Boldyshev <konst@linuxassembly.org>; comment : included from system.inc%ifndef __SYSTEM_INC%error "this file must be included from system.inc !"%endif%ifndef __LINUX_INC%define __LINUX_INC%macro DO_SYSCALL 0 int 0x80%endmacro%macro SYSCALL_GATE 0%endmacro;;linux/posix_types.h;%assign FD_SETSIZE 1024struc fd_set U32 FD_SETSIZE / 32endstruc;;;%assign MAP_GROWSDOWN 0x0100%assign MAP_DENYWRITE 0x0800%assign MAP_EXECUTABLE 0x1000%assign MAP_LOCKED 0x2000%assign MAP_NORESERVE 0x4000;;linux/reboot.h;%assign LINUX_REBOOT_MAGIC1 0xfee1dead%assign LINUX_REBOOT_MAGIC2 0x28121969%assign LINUX_REBOOT_MAGIC2A 85072278%assign LINUX_REBOOT_MAGIC2B 369367448%assign LINUX_REBOOT_CMD_RESTART 0x01234567 ;Restart system using default command and mode.%assign LINUX_REBOOT_CMD_HALT 0xCDEF0123 ;Stop OS and give system control to ROM monitor, if any.%assign LINUX_REBOOT_CMD_CAD_ON 0x89ABCDEF ;Ctrl-Alt-Del sequence causes RESTART command.%assign LINUX_REBOOT_CMD_CAD_OFF 0x00000000 ;Ctrl-Alt-Del sequence sends SIGINT to init task.%assign LINUX_REBOOT_CMD_POWER_OFF 0x4321FEDC ;Stop OS and remove all power from system, if possible.%assign LINUX_REBOOT_CMD_RESTART2 0xA1B2C3D4 ;Restart system using given command string.%assign RB_AUTOBOOT LINUX_REBOOT_CMD_RESTART%assign RB_HALT LINUX_REBOOT_CMD_HALT%assign RB_ENABLE_CAD LINUX_REBOOT_CMD_CAD_ON%assign RB_DISABLE_CAD LINUX_REBOOT_CMD_CAD_OFF%assign RB_POWEROFF LINUX_REBOOT_CMD_POWER_OFF;;linux/kd.h;%assign KDGKBTYPE 0x4B33 ;get keyboard type%assign KB_84 0x01%assign KB_101 0x02 ;this is what we always answer%assign KB_OTHER 0x03%assign KIOCSOUND 0x4B2F ;start sound generation (0 for off)%assign KDMKTONE 0x4B30 ;generate tone%assign KDFONTOP 0x4B72 ;font operations ioctl %assign KD_FONT_OP_SET 0 ;Set font %assign KD_FONT_OP_GET 1 ;Get font %assign KD_FONT_OP_SET_DEFAULT 2 ;Set font to default, data points to name %assign KD_FONT_OP_COPY 3 ;Copy from another console struc console_font_op.op UINT 1.flags UINT 1 ;should always be 0?.width UINT 1.height UINT 1.charcount UINT 1.data DWORD 1 ;pointer to unsigned charendstrucstruc raw_font_type.fontdata UCHAR 16384endstruc;;linux/cdrom.h;%assign CDROMPAUSE 0x5301 ;Pause Audio Operation%assign CDROMRESUME 0x5302 ;Resume paused Audio Operation%assign CDROMPLAYMSF 0x5303 ;Play Audio MSF (struct cdrom_msf)%assign CDROMPLAYTRKIND 0x5304 ;Play Audio Track/index (struct cdrom_ti)%assign CDROMREADTOCHDR 0x5305 ;Read TOC header (struct cdrom_tochdr)%assign CDROMREADTOCENTRY 0x5306 ;Read TOC entry (struct cdrom_tocentry)%assign CDROMSTOP 0x5307 ;Stop the cdrom drive%assign CDROMSTART 0x5308 ;Start the cdrom drive%assign CDROMEJECT 0x5309 ;Ejects the cdrom media%assign CDROMVOLCTRL 0x530a ;Control output volume (struct cdrom_volctrl)%assign CDROMSUBCHNL 0x530b ;Read subchannel data (struct cdrom_subchnl)%assign CDROMREADMODE2 0x530c ;Read CDROM mode 2 data (2336 Bytes) (struct cdrom_read)%assign CDROMREADMODE1 0x530d ;Read CDROM mode 1 data (2048 Bytes) (struct cdrom_read)%assign CDROMREADAUDIO 0x530e ;(struct cdrom_read_audio)%assign CDROMEJECT_SW 0x530f ;enable(1)/disable(0) auto-ejecting%assign CDROMMULTISESSION 0x5310 ;Obtain the start-of-last-session address of multi session disks (struct cdrom_multisession)%assign CDROM_GET_MCN 0x5311 ;Obtain the "Universal Product Code" if available (struct cdrom_mcn)%assign CDROM_GET_UPC CDROM_GET_MCN ;This one is depricated, but here anyway for compatability%assign CDROMRESET 0x5312 ;hard-reset the drive%assign CDROMVOLREAD 0x5313 ;Get the drive's volume setting (struct cdrom_volctrl)%assign CDROMREADRAW 0x5314 ;read data in raw mode (2352 Bytes)%assign CDROMCLOSETRAY 0x5319;;linux/vt.h;%assign VT_ACTIVATE 0x5606 ;make vt active%assign VT_WAITACTIVE 0x5607 ;wait for vt active%assign VT_DISALLOCATE 0x5608 ;free memory associated to vt%define VT_GETMODE 0x5601 ;get mode of active vt%define VT_SETMODE 0x5602 ;set mode of active vtstruc vt_mode.mode CHAR 1 ;vt mode.waitv SHORT 1 ;if set, hang on writes if not active.relsig SHORT 1 ;signal to raise on release req.acqsig SHORT 1 ;signal to raise on acquisition.frsig SHORT 1 ;unused (set to 0)endstruc;;asm/termbits.h;; c_cc characters%assign VINTR 0%assign VQUIT 1%assign VERASE 2%assign VKILL 3%assign VEOF 4%assign VTIME 5%assign VMIN 6%assign VSWTC 7%assign VSTART 8%assign VSTOP 9%assign VSUSP 10%assign VEOL 11%assign VREPRINT 12%assign VDISCARD 13%assign VWERASE 14%assign VLNEXT 15%assign VEOL2 16; c_iflag bits%assign IGNBRK 0000001q%assign BRKINT 0000002q%assign IGNPAR 0000004q%assign PARMRK 0000010q%assign INPCK 0000020q%assign ISTRIP 0000040q%assign INLCR 0000100q%assign IGNCR 0000200q%assign ICRNL 0000400q%assign IUCLC 0001000q%assign IXON 0002000q%assign IXANY 0004000q%assign IXOFF 0010000q%assign IMAXBEL 0020000q; c_oflag bits%assign OPOST 0000001q%assign OLCUC 0000002q%assign ONLCR 0000004q%assign OCRNL 0000010q%assign ONOCR 0000020q%assign ONLRET 0000040q%assign OFILL 0000100q%assign OFDEL 0000200q%assign NLDLY 0000400q%assign NL0 0000000q%assign NL1 0000400q%assign CRDLY 0003000q%assign CR0 0000000q%assign CR1 0001000q%assign CR2 0002000q%assign CR3 0003000q%assign TABDLY 0014000q%assign TAB0 0000000q%assign TAB1 0004000q%assign TAB2 0010000q%assign TAB3 0014000q%assign XTABS 0014000q%assign BSDLY 0020000q%assign BS0 0000000q%assign BS1 0020000q%assign VTDLY 0040000q%assign VT0 0000000q%assign VT1 0040000q%assign FFDLY 0100000q%assign FF0 0000000q%assign FF1 0100000q; c_cflag bit meaning%assign CBAUD 0010017q%assign B0 0000000q ;hang up%assign B50 0000001q%assign B75 0000002q%assign B110 0000003q%assign B134 0000004q%assign B150 0000005q%assign B200 0000006q%assign B300 0000007q%assign B600 0000010q%assign B1200 0000011q%assign B1800 0000012q%assign B2400 0000013q%assign B4800 0000014q%assign B9600 0000015q%assign B19200 0000016q%assign B38400 0000017q%assign EXTA B19200%assign EXTB B38400%assign CSIZE 0000060q%assign CS5 0000000q%assign CS6 0000020q%assign CS7 0000040q%assign CS8 0000060q%assign CSTOPB 0000100q%assign CREAD 0000200q%assign PARENB 0000400q%assign PARODD 0001000q%assign HUPCL 0002000q%assign CLOCAL 0004000q%assign CBAUDEX 0010000q%assign B57600 0010001q%assign B115200 0010002q%assign B230400 0010003q%assign B460800 0010004q%assign B500000 0010005q%assign B576000 0010006q%assign B921600 0010007q%assign B1000000 0010010q%assign B1152000 0010011q%assign B1500000 0010012q%assign B2000000 0010013q%assign B2500000 0010014q%assign B3000000 0010015q%assign B3500000 0010016q%assign B4000000 0010017q%assign CIBAUD 002003600000q ;input baud rate (not used)%assign CMSPAR 010000000000q ;mark or space (stick) parity%assign CRTSCTS 020000000000q ;flow control; c_lflag bits%assign ISIG 0000001q%assign ICANON 0000002q%assign XCASE 0000004q%assign ECHO 0000010q%assign ECHOE 0000020q%assign ECHOK 0000040q%assign ECHONL 0000100q%assign NOFLSH 0000200q%assign TOSTOP 0000400q%assign ECHOCTL 0001000q%assign ECHOPRT 0002000q%assign ECHOKE 0004000q%assign FLUSHO 0010000q%assign PENDIN 0040000q%assign IEXTEN 0100000q; tcflow() and TCXONC use these%assign TCOOFF 0%assign TCOON 1%assign TCIOFF 2%assign TCION 3; tcflush() and TCFLSH use these%assign TCIFLUSH 0%assign TCOFLUSH 1%assign TCIOFLUSH 2; tcsetattr uses these%assign TCSANOW 0%assign TCSADRAIN 1%assign TCSAFLUSH 2%assign NCCS 19struc termios.c_iflag UINT 1 ;input mode flags.c_oflag UINT 1 ;output mode flags.c_cflag UINT 1 ;control mode flags.c_lflag UINT 1 ;local mode flags.c_line UCHAR 1 ;line discipline.c_cc UCHAR NCCS ;control charactersendstruc;;asm/ioctls.h;;0x54 is just a magic number to make these relatively unique ('T')%assign TCGETS 0x5401%assign TCSETS 0x5402%assign TCSETSW 0x5403%assign TCSETSF 0x5404%assign TCGETA 0x5405%assign TCSETA 0x5406%assign TCSETAW 0x5407%assign TCSETAF 0x5408%assign TCSBRK 0x5409%assign TCXONC 0x540A%assign TCFLSH 0x540B%assign TIOCEXCL 0x540C%assign TIOCNXCL 0x540D%assign TIOCSCTTY 0x540E%assign TIOCGPGRP 0x540F%assign TIOCSPGRP 0x5410%assign TIOCOUTQ 0x5411%assign TIOCSTI 0x5412%assign TIOCGWINSZ 0x5413%assign TIOCSWINSZ 0x5414%assign TIOCMGET 0x5415%assign TIOCMBIS 0x5416%assign TIOCMBIC 0x5417%assign TIOCMSET 0x5418%assign TIOCGSOFTCAR 0x5419%assign TIOCSSOFTCAR 0x541A%assign FIONREAD 0x541B%assign TIOCINQ FIONREAD%assign TIOCLINUX 0x541C%assign TIOCCONS 0x541D%assign TIOCGSERIAL 0x541E%assign TIOCSSERIAL 0x541F%assign TIOCPKT 0x5420%assign FIONBIO 0x5421%assign TIOCNOTTY 0x5422%assign TIOCSETD 0x5423%assign TIOCGETD 0x5424%assign TCSBRKP 0x5425 ;Needed for POSIX tcsendbreak()%assign TIOCTTYGSTRUCT 0x5426 ;For debugging only%assign TIOCSBRK 0x5427 ;BSD compatibility%assign TIOCCBRK 0x5428 ;BSD compatibility%assign TIOCGSID 0x5429 ;Return the session ID of FD;;asm/stat.h;struc Stat ;guess why uppercase S?%if __SYSCALL__=__S_KERNEL__.st_dev USHORT 1.__pad1 USHORT 1.st_ino ULONG 1.st_mode USHORT 1.st_nlink USHORT 1.st_uid USHORT 1.st_gid USHORT 1.st_rdev USHORT 1.__pad2 USHORT 1.st_size ULONG 1.st_blksize ULONG 1.st_blocks ULONG 1.st_atime ULONG 1.__unused1 ULONG 1.st_mtime ULONG 1.__unused2 ULONG 1.st_ctime ULONG 1.__unused3 ULONG 1.__unused4 ULONG 1.__unused5 ULONG 1%elif __SYSCALL__=__S_LIBC__.st_dev ULONG 2.__pad1 USHORT 1.st_ino ULONG 1.st_mode UINT 1.st_nlink UINT 1.st_uid UINT 1.st_gid UINT 1.st_rdev ULONG 2.__pad2 USHORT 1.st_size ULONG 1.st_blksize ULONG 1.st_blocks ULONG 1.st_atime ULONG 1.__unused1 ULONG 1.st_mtime ULONG 1.__unused2 ULONG 1.st_ctime ULONG 1.__unused3 ULONG 1%endifendstrucstruc __old_kernel_stat.st_dev USHORT 1.st_ino USHORT 1.st_mode USHORT 1.st_nlink USHORT 1.st_uid USHORT 1.st_gid USHORT 1.st_rdev USHORT 1.st_size ULONG 1.st_atime ULONG 1.st_mtime ULONG 1.st_ctime ULONG 1endstruc;;asm/signal.h;%assign SA_NOCLDSTOP 0x00000001%assign SA_NOCLDWAIT 0x00000002%assign SA_SIGINFO 0x00000004%assign SA_ONSTACK 0x08000000%assign SA_RESTART 0x10000000%assign SA_NODEFER 0x40000000%assign SA_RESETHAND 0x80000000%assign SA_RESTORER 0x04000000%assign SA_NOMASK SA_NODEFER%assign SA_ONESHOT SA_RESETHANDstruc sigset_t U32 _NSIG / 32endstrucstruc Sigaction.sa_handler ULONG 1%if __SYSCALL__=__S_KERNEL__.sa_flags ULONG 1.sa_restorer ULONG 1.sa_mask resb sigset_t_size%elif __SYSCALL__=__S_LIBC__.sa_sigaction ULONG 1.sa_mask resb sigset_t_size.sa_flags ULONG 1.sa_restorer ULONG 1%endifendstruc;;sys/dirent.h;struc dirent%if __SYSCALL__=__S_KERNEL__.d_ino ULONG 1.d_off ULONG 1.d_reclen USHORT 1.d_name CHAR 256%elif __SYSCALL__=__S_LIBC__.d_ino ULONG 2.d_off ULONG 2.d_reclen USHORT 1.d_type UCHAR 1.d_name CHAR 256%endifendstruc;;linux/fb.h;; ioctl defs for fb%assign FBIOGET_VSCREENINFO 0x4600 %assign FBIOPUT_VSCREENINFO 0x4601 %assign FBIOGET_FSCREENINFO 0x4602%assign FBIOGETCMAP 0x4604%assign FBIOPUTCMAP 0x4605%assign FBIOPAN_DISPLAY 0X4606; activate flags for ioctl on var->activate%assign FB_ACTIVATE_NOW 0%assign FB_ACTIVATE_NXTOPEN 1%assign FB_ACTIVATE_TEST 2%assign FB_ACTIVATE_MASK 15%assign FB_ACTIVATE_VBL 16 ;activate changes on next VBL - coool%assign FB_CHANGE_CMAP_VBL 32%assign FB_ACTIVATE_ALL 64struc fb_fix.id CHAR 16.smem_start ULONG 1.smem_len U32 1.type U32 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -