This file can be included to program for Linux written in EuroAssembler.
It declares the most often used constant symbols and structures for
file functions derived from Linux header files in /usr/include/
directory.
linsfile HEAD
LinAPI getdents, fd, DirEntPtr, DirEntSize
. The structure has variable size.DIRENT STRUC .d_ino D DWORD ; Inode number. .d_off D DWORD ; Offset to the next DIRENT. .d_reclen D WORD ; Size of this DIRENT structure. .d_name D NAME_MAX * BYTE ; Zero-terminated file name, variable DWORD aligned size. .d_type D B ; File type. ENDSTRUC DIRENT
LinABI getdents64, fd, DirEntPtr, DirEntSize
. The structure has variable size.DIRENT64 STRUC .d_ino D QWORD ; Inode number. .d_off D QWORD ; Offset to the next DIRENT64. .d_reclen D WORD ; Size of this DIRENT64 structure. .d_type D B ; File type. .d_name D NAME_MAX * BYTE ; Zero-terminated file name, variable QWORD aligned size. ENDSTRUC DIRENT64
LinABI stat|lstat|fstat
.STAT STRUC .st_dev D QWORD ; ID of device containing file. .st_ino D QWORD ; Inode number. .st_nlink D QWORD ; Number of hard links. .st_mode D DWORD ; File type and mode. .st_uid D DWORD ; User ID of owner. .st_gid D DWORD ; Group ID of owner. D DWORD .st_rdev D QWORD ; Device ID (if special file). .st_size D QWORD ; Total size, in bytes. .st_blksize D QWORD ; Block size for filesystem I/O (often 4KB). .st_blocks D QWORD ; Number of 512B blocks allocated. .st_atime D OWORD ; Time of last access. .st_mtime D OWORD ; Time of last modification. .st_ctime D OWORD ; Time of last status change. D 3*QWORD ENDSTRUC STAT ; SIZE# STAT = 144
LinAPI stat|lstat|fstat
.LinAPI stat64|lstat64|fstat64
which returns STAT64.STAT32 STRUC .st_dev D DWORD ; ID of device containing file. .st_ino D DWORD ; Inode number. .st_mode D WORD ; File type and mode. .st_nlink D WORD ; Number of hard links. .st_uid D WORD ; User ID of owner. .st_gid D WORD ; Group ID of owner. .st_rdev D DWORD ; Device ID (if special file). .st_size D DWORD ; Total size, in bytes. .st_blksize D DWORD ; Block size for filesystem I/O. .st_blocks D DWORD ; Number of 512B blocks allocated. .st_atime D DWORD ; Time of last access. .st_mtime D DWORD ; Time of last modification. .st_ctime D DWORD ; Time of last status change. ENDSTRUC STAT32 ; SIZE# STAT32 = 44
LinAPI newstat|newlstat|newfstat
.NEWSTAT STRUC .st_dev D DWORD ; ID of device containing file. .st_ino D DWORD ; Inode number. .st_mode D WORD ; File type and mode. .st_nlink D WORD ; Number of hard links. .st_uid D WORD ; User ID of owner. .st_gid D WORD ; Group ID of owner. .st_rdev D DWORD ; Device ID (if special file). .st_size D DWORD ; Total size, in bytes. .st_blksize D DWORD ; Block size for filesystem I/O. .st_blocks D DWORD ; Number of 512B blocks allocated. .st_atime D QWORD ; Time of last access. .st_mtime D QWORD ; Time of last modification. .st_ctime D QWORD ; Time of last status change. D QWORD ENDSTRUC NEWSTAT ; SIZE# NEWSTAT = 64
LinAPI stat64|lstat64|fstat64
.STAT64 STRUC .st_dev D QWORD ; ID of device containing file. D DWORD .st_ino D DWORD ; Inode number. .st_mode D DWORD ; File type and mode. .st_nlink D DWORD ; Number of hard links. .st_uid D DWORD ; User ID of owner. .st_gid D DWORD ; Group ID of owner. .st_rdev D QWORD ; Device ID (if special file). D DWORD .st_size D QWORD ; Total size, in bytes. .st_blksize D DWORD ; Block size for filesystem I/O (often 4KB). .st_blocks D QWORD ; Number of 512B blocks allocated. .st_atime D QWORD ; Time of last access. .st_mtime D QWORD ; Time of last modification. .st_ctime D QWORD ; Time of last status change. D QWORD ENDSTRUC STAT64 ; SIZE# STAT64 = 96
; Standard file descriptors. STDIN_FILENO = 0 ; Standard input. STDOUT_FILENO = 1 ; Standard output. STDERR_FILENO = 2 ; Standard error output. NAME_MAX = 260 ; Maximal possible filename size. ; Flags in sys_fstatat. AT_FDCWD = -100 ; Use current directory. AT_SYMLINK_NOFOLLOW = 0x100; Do not follow symbolic links. AT_REMOVEDIR = 0x200; Remove directory instead of unlinking file. AT_SYMLINK_FOLLOW = 0x400; Follow symbolic links. AT_NO_AUTOMOUNT = 0x800; Suppress terminal automount traversal. R_OK = 4 ; Test for read permission. W_OK = 2 ; Test for write permission. X_OK = 1 ; Test for execute permission. F_OK = 0 ; Test for existence. O_RDONLY = 00000000q ; Create file as read-only. O_WRONLY = 00000001q ; Create file as write-only. O_RDWR = 00000002q ; Create file as read|write. O_ACCMODE = 00000003q O_CREAT = 00000100q ; Not fcntl. O_EXCL = 00000200q ; Not fcntl. O_NOCTTY = 00000400q ; Not fcntl. O_TRUNC = 00001000q ; Not fcntl. O_APPEND = 00002000q O_NONBLOCK = 00004000q O_DSYNC = 00010000q ; Used to be O_SYNC, see below. FASYNC = 00020000q ; Fcntl, for BSD compatibility. O_DIRECT = 00040000q ; Direct disk access hint. O_LARGEFILE = 00100000q O_DIRECTORY = 00200000q ; Must be a directory. O_NOFOLLOW = 00400000q ; Don't follow links. O_NOATIME = 01000000q O_CLOEXEC = 02000000q ; Set close_on_exec. O_PATH = 10000000q ; Values for the WHENCE argument to lseek. SEEK_SET = 0 ; Seek from beginning of file. SEEK_CUR = 1 ; Seek from current position. SEEK_END = 2 ; Seek from end of file. SEEK_DATA = 3 ; Seek to next data. SEEK_HOLE = 4 ; Seek to next hole. SEEK_MAX = SEEK_HOLE F_GETLK = 5 ; Get record locking info. F_SETLK = 6 ; Set record locking info (non-blocking). F_SETLKW = 7 ; Set record locking info (blocking). F_GETLK64 = 12 ; Get record locking info. F_SETLK64 = 13 ; Set record locking info (non-blocking). F_SETLKW64 = 14 ; Set record locking info (blocking). ; These are the fs-independent mount-flags: up to 32 flags are supported MS_RDONLY = 1 ; Mount read-only. MS_NOSUID = 2 ; Ignore suid and sgid bits. MS_NODEV = 4 ; Disallow access to device special files. MS_NOEXEC = 8 ; Disallow program execution. MS_SYNCHRONOUS = 16 ; Writes are synced at once. MS_REMOUNT = 32 ; Alter flags of a mounted FS. MS_MANDLOCK = 64 ; Allow mandatory locks on an FS. MS_DIRSYNC = 128 ; Directory modifications are synchronous. MS_NOATIME = 1024 ; Do not update access times. MS_NODIRATIME = 2048 ; Do not update directory access times. MS_BIND = 4096 MS_MOVE = 8192 MS_REC = 16384 MS_VERBOSE = 32768 ; MS_VERBOSE is deprecated. MS_POSIXACL = (1<<16) ; > VFS does not apply the umask. MS_UNBINDABLE = (1<<17) ; > Change to unbindable. MS_PRIVATE = (1<<18) ; > Change to private. MS_SLAVE = (1<<19) ; > Change to slave. MS_SHARED = (1<<20) ; > Change to shared. MS_RELATIME = (1<<21) ; > Update atime relative to mtime/ctime. MS_KERNMOUNT = (1<<22) ; > This is a kern_mount call. MS_I_VERSION = (1<<23) ; > Update inode I_version field. MS_STRICTATIME = (1<<24) ; > Always perform atime updates. ; Memory-map protection MAP_SHARED = 0x00000001 ; Share changes. MAP_PRIVATE = 0x00000002 ; Changes are private. MAP_FIXED = 0x00000010 ; Interpret addr exactly. MAP_ANONYMOUS = 0x00000020 ; Don't use a file. MAP_32BITS = 0x00000040 ; Only give out 32bit addresses. MAP_GROWSDOWN = 0x00000100 ; Stack-like segment. MAP_DENYWRITE = 0x00000800 ; ETXTBSY. MAP_EXECUTABLE = 0x00001000 ; Mark it as executable. MAP_LOCKED = 0x00002000 ; Lock the mapping. MAP_NORESERVE = 0x00004000 ; Do not check for reservations. MAP_POPULATE = 0x00008000 ; Populate (prefault) pagetables. MAP_NONBLOCK = 0x00010000 ; Do not block on IO. MAP_STACK = 0x00020000 ; Allocation is for a stack. MAP_HUGETLB = 0x00040000 ; Create huge mapping. MAP_SYNC = 0x00080000 ; Perform synchronous page faults for the mapping. MAP_FIXED_NOREPLACE = 0x00100000 ; MAP_FIXED but do not unmap underlying mapping. PROT_NONE = 0x0 ; Page can not be accessed. PROT_READ = 0x1 ; Page can be read. PROT_WRITE = 0x2 ; Page can be written. PROT_EXEC = 0x4 ; Page can be executed. ; DIRENT.d_type values. DT_UNKNOWN = 0 ; The file type is unknown. DT_FIFO = 1 ; This is a named pipe, or FIFO. DT_CHR = 2 ; This is a character device. DT_DIR = 4 ; This is a directory. DT_BLK = 6 ; This is a block device. DT_REG = 8 ; This is a regular file. DT_LNK = 10 ; This is a symbolic link. DT_SOCK = 12 ; This is a UNIX domain socket. DT_WHT = 14 S_IFMT = 0170000q ; Bit mask for the file type bit field. S_IFSOCK = 0140000q ; Socket. S_IFLNK = 0120000q ; Symbolic link. S_IFREG = 0100000q ; Regular file. S_IFBLK = 0060000q ; Block device. S_IFDIR = 0040000q ; Directory. S_IFCHR = 0020000q ; Character device. S_IFIFO = 0010000q ; FIFO. S_ISUID = 04000q ; Set-user-ID bit. S_ISGID = 02000q ; Set-group-ID bit (see below). S_ISVTX = 01000q ; Sticky bit (see below). S_IRWXU = 00700q ; Owner has read, write, and execute permission. S_IRUSR = 00400q ; Owner has read permission. S_IWUSR = 00200q ; Owner has write permission. S_IXUSR = 00100q ; Owner has execute permission. S_IRWXG = 00070q ; Group has read, write, and execute permission. S_IRGRP = 00040q ; Group has read permission. S_IWGRP = 00020q ; Group has write permission. S_IXGRP = 00010q ; Group has execute permission. S_IRWXO = 00007q ; Others (not in group) have read, write, and execute permission. S_IROTH = 00004q ; Others have read permission. S_IWOTH = 00002q ; Others have write permission. S_IXOTH = 00001q ; Others have execute permission.
ENDHEAD linsfile