Module nc::types [−][src]
Structs
anonymous struct for BPF_BTF_LOAD
anonymous struct used by BPF_MAP_*_ELEM commands
anonymous struct used by BPF_GET_ID
anonymous struct used by BPF_OBJ_GET_INFO_BY_FD
anonymous struct used by BPF_MAP_CREATE command
anonymous struct used by BPF_OBJ_* commands
anonymous struct used by BPF_PROG_ATTACH/DETACH commands
anonymous struct used by BPF_PROG_LOAD command
anonymous struct used by BPF_PROG_TEST_RUN command
anonymous struct used by BPF_PROG_QUERY command
Key of an a BPF_MAP_TYPE_LPM_TRIE entry
User bpf_sock_addr struct to access socket fields and sockaddr struct passed by user and intended to be used by socket (e.g. to bind to, depends on attach attach type).
User bpf_sock_ops struct to access socket values and specify request ops and their replies. Some of this fields are in network (bigendian) byte order and may need to be converted before use (bpf_ntohl() defined in samples/bpf/bpf_endian.h). New fields can only be added at the end of this structure
POSIX 1003.1g - ancillary data object information Ancillary data consits of a sequence of pairs of (cmsghdr, cmsg_data[])
IA64 and x86_64 need to avoid the 32-bit padding at the end, to be compatible with the i386 ABI
from struct btrfs_ioctl_file_extent_same_info
from struct btrfs_ioctl_file_extent_same_args
And dynamically-tunable limits and defaults:
Some basic information about ‘quota files’.
Some basic information about ‘quota files’ for Q_XGETQSTATV command
fs_quota_stat is the struct returned in Q_XGETQSTAT for a given file system. Provides a centralized way to get meta information about the quota subsystem. eg. space taken up for user and group quotas, number of dquots currently incore.
fs_quota_statv is used by Q_XGETQSTATV for a given file system. It provides a centralized way to get meta information about the quota subsystem. eg. space taken up for user, group, and project quotas, number of dquots currently incore.
Structure for FS_IOC_FSGETXATTR[A]
and FS_IOC_FSSETXATTR
.
Cache for getcpu() to speed it up. Results might be a short time out of date, but will be faster.
Internet address.
struct inotify_event - structure read from the inotify device for each event
read() from /dev/aio returns these structures.
Filled with the offset for mmap(2)
IO completion data structure (Completion Queue Entry)
Passed in for io_uring_setup(2). Copied back with updated info on success
IO submission data structure (Submission Queue Entry)
we always use a 64bit off_t when communicating with userland. its up to libraries to do the proper padding and aio_error abstraction
Berkeley style UIO structures
Request struct for multicast socket ops
The generic ipc64_perm structure: Note extra padding because this structure is passed back and forth between kernel and user space.
These are used to wrap system calls. See architecture code for ugly details..
Obsolete, used only for backwards compatibility and libc5 compiles
Slot for KCMP_EPOLL_TFD
legacy timeval structure, only embedded in structures that traditionally used ‘timeval’ to pass time intervals (not absolute times). Do not add new users. If user space fails to compile here, this is probably because it is not y2038 safe and needs to be changed to use another interface.
This structure is used to hold the arguments that are used when loading kernel binaries.
From fs/readir.c
For recvmmsg/sendmmsg
Obsolete, used only for backwards compatibility and libc5 compiles message buffer for msgsnd and msgrcv calls
As we do 4.4BSD message passing we use a 4.4BSD message passing system, not 4.3. Thus msg_accrights(len) are now missing. They belong in an obscure libc emulation or the bin.
buffer for msgctl calls IPC_INFO, MSG_INFO
generic msqid64_ds structure.
single taken branch record layout:
Hardware event_id to monitor via a performance monitoring event:
Structure of the page that can be mapped via mmap
Structure used by below PERF_EVENT_IOC_QUERY_BPF command to query bpf programs attached to the same perf tracepoint as the given perf event.
This structure provides new memory descriptor
map which mostly modifies /proc/pid/stat[m]
output for a task. This mostly done in a
sake of checkpoint/restore functionality.
Per-thread list head:
Support for robust futexes: the kernel cleans up held futexes at thread exit time. Per-lock list entry - embedded in user-space locks, somewhere close to the futex field. (Note: user-space uses a double-linked list to achieve O(1) list add and remove, but the kernel only needs to know about the forward link)
struct rseq_cs is aligned on 4 * 8 bytes to ensure it is always contained within a single cache-line. It is usually declared as link-time constant data.
struct rseq is aligned on 4 * 8 bytes to ensure it is always contained within a single cache-line.
Extended scheduling parameters data structure.
struct seccomp_data - the format the BPF program executes over. @nr: the system call number @arch: indicates system call convention as an AUDIT_ARCH_* value as defined in <linux/audit.h>. @instruction_pointer: at the time of the system call. @args: up to 6 system call arguments always stored as 64-bit values regardless of the architecture.
semop system calls takes an array of these.
Obsolete, used only for backwards compatibility and libc5 compiles
Serial input interrupt line counters – external structure Four lines can interrupt: CTS, DSR, RI, DCD
Serial interface for controlling ISO7816 settings on chips with suitable support. Set with TIOCSISO7816 and get with TIOCGISO7816 if supported by your platform.
Multiport serial configuration structure — external structure
Serial interface for controlling RS485 settings on chips with suitable support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your platform. The set function returns the new state, with any unsupported bits reverted appropriately.
Obsolete, used only for backwards compatibility and libc5 compiles
Obsolete, used only for backwards compatibility
kill()
POSIX.1b signals
SIGCHLD
SIGPOLL
SIGSYS
POSIX.1b timers
user accessible metadata for SK_MSG packet hook, new fields must be added to the end of this structure
1003.1g requires sa_family_t and that sa_data is char.
This matches struct stat64 in glibc2.1, hence the absolutely insane amounts of padding around dev_t’s.
ARM needs to avoid the 32-bit padding at the end, for consistency between EABI and OABI
Structures for the extended file attribute retrieval system call (statx()).
Timestamp structure for the timestamps in struct statx.
syscall interface - used (mainly by NTP daemon) to discipline kernel clock oscillator
Note on 64bit base and limit is ignored and you cannot set DS/ES/CS not to the default values if you still want to do syscalls. This call is more for 32bit mode therefore.
Most architectures have straight copies of the x86 code, with varying levels of bug fixes on top. Usually it’s a good idea to use this generic version instead, but be careful to avoid ABI changes. New architectures should not provide their own version.
user accessible metadata for XDP packet hook new fields must be added to the end of this structure
Enums
Constants
/proc/sys/abi default handler for coff binaries
default handler for ELF binaries
default handler for procs using lcall7
default handler for an libc.so ELF interp
fake target utsname information
tracing flags
disable randomization of VA space
switch between adjtime/adjtimex modes
estimated time error
frequency offset
maximum time error
select microsecond resolution
select nanosecond resolution
Mode codes (timex.mode) time offset
read-only adjtime
read-only adjtime
add ‘time’ to current time
clock status
set TAI offset
tick value
pll time constant
Algorithm sockets
AppleTalk DDP
Ash
ATM PVCs
ATM SVCs
Amateur Radio AX.25
Bluetooth sockets
Multiprotocol bridge
CAIF sockets
Controller Area Network
Reserved for DECnet project
Acorn Econet
Native InfiniBand address
IEEE802154 sockets
Internet IP Protocol
IP version 6
Novell IPX
IRDA sockets
mISDN sockets
IUCV sockets
Kernel Connection Multiplexor
PF_KEY key management API
Linux LLC
POSIX name for AF_UNIX
For now..
MPLS
Reserved for 802.2LLC project
Amateur Radio NET/ROM
NFC sockets
Packet family
Phonet sockets
PPPoX sockets
Qualcomm IPC Router
RDS sockets
Amateur Radio X.25 PLP
Alias to emulate 4.4BSD
RxRPC sockets
Security callback pseudo AF
smc sockets: reserve number for PF_SMC protocol family that reuses AF_INET address family
Linux SNA Project (nutters!)
TIPC sockets
Unix domain sockets
Supported address families.
vSockets
Wanpipe API Sockets
Reserved for X.25 project
XDP sockets
bytes of args + environ for exec()
For the close wait times, 0 means wait forever for serial port to flush its output. 65535 means don’t wait at all.
Allow empty relative pathname
Special value used to indicate openat should use the current working directory.
Suppress terminal automount traversal
Apply to the entire subtree
Remove directory instead of unlinking file.
Type of synchronisation required from statx()
Follow symbolic links.
Do not follow symbolic links.
hang up
Mode for BPF_FUNC_skb_adjust_room helper.
alu mode in double word width
flags for BPF_MAP_UPDATE_ELEM command create new element or update existing
sign extending arithmetic shift right
function call
ld/ldx fields double word (64-bit)
change endianness of a register flags for endianness conversion:
update existing element
function return
(symbol + offset) or addr
(symbol + offset) or addr
tp name
tp name
filename + offset
filename + offset
dest is blackholed; can be dropped
fragmentation required to fwd
fwding is not enabled on ingress
packet is not forwarded
no neighbor entry for nh
dest not allowed; can be dropped
lookup successful
dest is unreachable; can be dropped
fwd requires encapsulation
DIRECT: Skip the FIB rules and go to FIB table associated with device OUTPUT: Do lookup from egress perspective; default is ingress
cgroup-bpf attach flags used in BPF_PROG_ATTACH command
If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the verifier will allow any alignment whatsoever. On platforms with strict alignment requirements for loads ands stores (such as sparc and mips) the verifier validates that all loads and stores provably follow this requirement. This flag turns that checking and enforcement off.
BPF_FUNC_perf_event_output for sk_buff input context.
Current network namespace
flags used by BPF_FUNC_get_stackid only.
BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and BPF_FUNC_perf_event_read_value flags.
BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags.
spin_lock-ed map_lookup/map_update
Instead of having one common LRU list in the
BPF_MAP_TYPE_LRU_[PERCPU_]
HASH map, use a percpu LRU list
which can scale and perform better.
Note, the LRU nodes (including free nodes) cannot be moved
across different LRU lists.
flags for BPF_MAP_CREATE command
Specify numa node during map creation
BPF_FUNC_l4_csum_replace flags.
flags for BPF_PROG_QUERY
Flags for accessing BPF object
All flags used by eBPF helper functions, placed here. BPF_FUNC_skb_store_bytes flags.
flags for both BPF_FUNC_get_stackid and BPF_FUNC_get_stack.
Flag for stack_map, store build_id+offset instead of pointer
If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the verifier will perform strict alignment checking as if the kernel has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set, and NET_IP_ALIGN defined to 2.
BPF_FUNC_skb_set_tunnel_key and BPF_FUNC_skb_get_tunnel_key flags.
flags used by BPF_FUNC_get_stack only.
BPF_FUNC_skb_set_tunnel_key flags.
Zero-initialize hash function seed. This should only be used for testing.
Mode for BPF_FUNC_skb_load_bytes_relative helper.
LE is unsigned, ‘<=’
LT is unsigned, ‘<’
Extended instruction set based on top of classic BPF instruction classes jmp mode in word width
jmp encodings jump !=
SGE is signed ‘>=’, GE in x86
SGT is signed ‘>’, GT in x86
SLE is signed, ‘<=’
SLT is signed, ‘<’
Encapsulation type for BPF_FUNC_lwt_push_encap helper.
BPF syscall commands, see bpf(2) man-page for details.
alu/jmp fields mov reg to reg
create new element if it didn’t exist
Generic BPF return codes which all BPF program types may support. The values are binary compatible with their TC_ACT_* counter-part to provide backwards compatibility with existing SCHED_CLS and SCHED_ACT programs.
Note that tracing related programs such as BPF_PROG_TYPE_{KPROBE,TRACEPOINT,PERF_EVENT,RAW_TRACEPOINT} are not subject to a stable API since kernel internal data structures can change from release to release and may therefore break existing tracing BPF programs. Tracing BPF programs correspond to /a/ specific kernel which is to be analyzed, and not /a/ specific kernel /and/ all future ones.
when bpf_call->src_reg == BPF_PSEUDO_CALL, bpf_call->imm == pc-relative offset to another bpf function
when bpf_ldimm64->src_reg == BPF_PSEUDO_MAP_FD, bpf_ldimm64->imm == fd
Register numbers
Calls BPF program when an active connection is established
Mask of all currently supported cb flags
Get base RTT. The correct value is based on the path and may be dependent on the congestion control algorithm. In general it indicates a congestion threshold. RTTs above this indicate congestion
If connection’s congestion control needs ECN
Calls BPF program when a passive connection is established
Called when skb is retransmitted. Arg1: sequence number of 1st byte Arg2: # segments Arg3: return value of tcp_transmit_skb (0 => success)
Called when an RTO has triggered. Arg1: value of icsk_retransmits Arg2: value of icsk_rto Arg3: whether RTO has expired
Definitions for bpf_sock_ops_cb_flags
Should return initial advertized window (in packets) or -1 if default value should be used
Called when TCP changes state. Arg1: old_state Arg2: new_state
Calls BPF program right before an active connection is initialized
Called on listen(2), right after socket transition to LISTEN state.
Should return SYN-RTO value to use or -1 if default value should be used
List of known BPF sock_ops operators. New entries can only be added at the end
user space need an empty entry to identify end of a trace
couldn’t get build_id, fallback to ip
with valid build_id and offset
Now a valid state
List of TCP states. There is a build check in net/ipv4/tcp.c to detect changes between the TCP and BPF versions. Ideally this should never happen. If it does, we need to add code to convert them before calling the BPF sock_ops function.
Leave at the end!
convert to big-endian
convert to little-endian
exclusive add
SIGBUS si_codes invalid address alignment
non-existent physical address
/proc/sys/bus/isa
hardware memory error detected in process but not consumed: action optional
hardware memory error consumed on a machine check: action required
object specific hardware error
Allow configuration of audit via unicast netlink socket
Allow reading the audit log via multicast netlink socket
Allow writing the audit log via unicast netlink socket
Allow preventing system suspends
POSIX-draft defined capabilities.
In a system with the _POSIX_CHOWN_RESTRICTED
option defined, this
overrides the restriction of changing file ownership and group ownership.
Override all DAC access, including ACL execute access if
_POSIX_ACL
is defined. Excluding DAC access covered by
CAP_LINUX_IMMUTABLE.
Overrides all DAC restrictions regarding read and search on files
and directories, including ACL restrictions if _POSIX_ACL
is
defined. Excluding DAC access covered by CAP_LINUX_IMMUTABLE.
Overrides all restrictions about allowed operations on files, where file owner ID must be equal to the user ID, except where CAP_FSETID is applicable. It doesn’t override MAC and DAC restrictions.
Overrides the following restrictions that the effective user ID shall match the file owner ID when setting the S_ISUID and S_ISGID bits on that file; that the effective group ID (or one of the supplementary group IDs) shall match the file owner ID when setting the S_ISGID bit on that file; that the S_ISUID and S_ISGID bits are cleared on successful return from chown(2) (not implemented).
Allow locking of shared memory segments Allow mlock and mlockall (which doesn’t really have anything to do with IPC)
Override IPC ownership checks
Overrides the restriction that the real or effective user ID of a process sending a signal must match the real or effective user ID of the process receiving the signal.
Allow taking of leases on files
Allow modification of S_IMMUTABLE and S_APPEND file attributes
Allow MAC configuration or state changes. The base kernel requires no MAC configuration. An LSM may enforce a MAC policy, and if it does and it chooses to implement capability based checks on modifications to that policy or the data required to maintain it, this is the capability it should use to do so.
Override MAC access. The base kernel enforces no MAC policy. An LSM may enforce a MAC policy, and if it does and it chooses to implement capability based overrides of that policy, this is the capability it should use to do so.
Allow the privileged aspects of mknod()
Allow interface configuration Allow administration of IP firewall, masquerading and accounting Allow setting debug option on sockets Allow modification of routing tables Allow setting arbitrary process / process group ownership on sockets Allow binding to any address for transparent proxying (also via NET_RAW) Allow setting TOS (type of service) Allow setting promiscuous mode Allow clearing driver statistics Allow multicasting Allow read/write of device-specific registers Allow activation of ATM control sockets
Allows binding to TCP/UDP sockets below 1024 Allows binding to ATM VCIs below 32
Allow broadcasting, listen to multicast
Allow use of RAW sockets Allow use of PACKET sockets Allow binding to any address for transparent proxying (also via NET_ADMIN)
Allows setgid(2) manipulation Allows setgroups(2) Allows forged gids on socket credentials passing.
Linux-specific capabilities Without VFS support for capabilities: Transfer any capability in your permitted set to any pid, remove any capability in your permitted set from any pid With VFS support for capabilities (neither of above, but) Add any capability from current’s capability bounding set to the current process’ inheritable set Allow taking bits out of capability bounding set Allow modification of the securebits for a process
Allows set*uid(2) manipulation (including fsuid). Allows forged pids on socket credentials passing.
Allow configuring the kernel’s syslog (printk behaviour)
Allow configuration of the secure attention key Allow administration of the random device Allow examination and configuration of disk quotas Allow setting the domainname Allow setting the hostname Allow calling bdflush() Allow mount() and umount(), setting up new smb connection Allow some autofs root ioctls Allow nfsservctl Allow VM86_REQUEST_IRQ Allow to read/write pci config on alpha Allow irix_prctl on mips (setstacksize) Allow flushing all cache on m68k (sys_cacheflush) Allow removing semaphores Used instead of CAP_CHOWN to “chown” IPC message queues, semaphores and shared memory Allow locking/unlocking of shared memory segment Allow turning swap on/off Allow forged pids on socket credentials passing Allow setting readahead and flushing buffers on block devices Allow setting geometry in floppy driver Allow turning DMA on/off in xd driver Allow administration of md devices (mostly the above, but some extra ioctls) Allow tuning the ide driver Allow access to the nvram device Allow administration of apm_bios, serial and bttv (TV) device Allow manufacturer commands in isdn CAPI support driver Allow reading non-standardized portions of pci configuration space Allow DDI debug ioctl on sbpcd driver Allow setting up serial ports Allow sending raw qic-117 commands Allow enabling/disabling tagged queuing on SCSI controllers and sending arbitrary SCSI commands Allow setting encryption key on loopback filesystem Allow setting zone reclaim policy
Allow use of reboot()
Allow use of chroot()
Insert and remove kernel modules - modify kernel without limit
Allow raising priority and setting priority on other (different UID) processes Allow use of FIFO and round-robin (realtime) scheduling on own processes and setting the scheduling algorithm used by another process. Allow setting cpu affinity on other processes
Allow configuration of process accounting
Allow ptrace() of any process
Allow ioperm/iopl access Allow sending USB messages to any device via /dev/bus/usb
Override resource limits. Set resource limits. Override quota limits. Override reserved space on ext2 filesystem Modify data journaling mode on ext3 filesystem (uses journaling resources) NOTE: ext2 honors fsuid when checking for resource overrides, so you can override using fsuid too Override size restrictions on IPC message queues Allow more than 64hz interrupts from the real-time clock Override max number of consoles on console allocation Override max number of keymaps
Allow manipulation of system clock Allow irix_stime on mips Allow setting the real-time clock
Allow configuration of tty devices Allow vhangup() of tty
Allow triggering something that will wake the system
c_cflag bit meaning
input baud rate
stopped child has continued
child terminated abnormally
There is an additional set of SIGTRAP si_codes used by ptrace that are of the form: ((PTRACE_EVENT_XXX << 8) | SIGTRAP) SIGCHLD si_codes child has exited
child was killed
child has stopped
traced child has trapped
The IDs of the various system clocks (for POSIX.1b interval timers):
The driver implementing this got removed. The clock ID is kept as a place holder. Do not reuse!
clear the TID in the child
set the TID in the child
Unused, ignored
set if open files shared between processes
set if fs info shared between processes
Clone io context
New cgroup namespace
New ipc namespace
New network namespace
New mount namespace group
New pid namespace
New user namespace
New utsname namespace
set if we want to have the same parent as the cloner
set the TID in the parent
set if we want to let tracing continue on the child too
create a new TLS for the child
set if signal handlers and blocked signals shared
share system V SEM_UNDO semantics
Same thread group?
set if the tracing process can’t force CLONE_PTRACE on this clone
set if the parent wants the child to wake it up on mm_release
set if VM shared between processes
This cluster is free
This cluster is backing a transparent huge page
This cluster has no next cluster
mark or space (stick) parity
Flag swap_map continuation for full count
flow control
cloning flags: signal mask to be sent at exit
Binary emulation
arlan wireless driver
Busses
CTL_BUS names:
CPU stuff (speed scaling, etc)
Debugging
Devices
frv specific sysctls
Filesystems
Define sysctl names first Top-level names: General kernel info and control
how many path components do we allow in a call to sysctl In other words, what is the largest acceptable value for the nlen member of a struct __sysctl_args to have?
Networking
frv power management
removal breaks strace(1) compilation
s390 debug
sunrpc debug
VM management
CTL_DEBUG names: CTL_DEV names:
/proc/sys/dev/cdrom
/proc/sys/dev/ipmi
/proc/sys/dev/mac_hid
/proc/sys/dev/parport
/proc/sys/dev/parport/default
/proc/sys/dev/parport/parport n/devices/
/proc/sys/dev/parport/parport n/devices/device n
/proc/sys/dev/parport/parport n
/proc/sys/dev/raid
/proc/sys/dev/scsi
Used by the DIPC package, try and avoid reusing it
Types of directory notifications that may be requested. File accessed
File changed attibutes
File created
File removed
File modified
Don’t remove notifier
File renamed
Kernel internal flags invisible to userspace
Root squash enabled (for v1 quota format)
Quota stored in a system file
16
these are defined by POSIX and also present in glibc’s dirent.h
SIGEMT si_codes tag overflow
Set the Edge Triggered behaviour for the target file descriptor
Set exclusive wakeup mode for the target file descriptor
Epoll event masks
Set the One Shot behaviour for the target file descriptor
Request the handling of system wakeup events so as to prevent system suspends from happening while those events are being processed.
Flags for epoll_create1.
Valid opcodes to issue to sys_epoll_ctl()
fcntl, for BSD compatibility
userspace function ptrs point to descriptors (signal handling)
for F_[GET|SET]FL actually anything with low bit set goes
This allows for 1024 file descriptors: if NR_OPEN is ever grown beyond that you’ll have to change this too. But 1024 fd’s seem to be enough even for such “real” unices like OSF/1, so hopefully this is one limit that doesn’t have to be changed again.
extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions
Some arches already define FIOQSIZE due to a historical conflict with a Hayes modem-specific ioctl value.
Socket-level I/O control calls.
trap on condition
floating point divide by zero
floating point invalid operation
floating point overflow
floating point inexact result
subscript out of range
floating point underflow
undiagnosed floating-point exception
SIGFPE si_codes integer divide by zero
integer overflow
the read-only stuff doesn’t really belong here, but any other place is probably as bad and I don’t want to create yet another include file. Max chars for the interface; each fs may differ
system-wide maximum number of aio requests
current system-wide number of aio requests
writes to file may only append
btree format dir
One or more compressed clusters
Compress file
dirsync behaviour (directories only)
Reserved for compression usage…
int: directory notification enabled
disc quota usage statistics and control
fs_disk_quota structure:
Accounting values. These can only be set for filesystem with non-transactional quotas that require quotacheck(8) in userspace.
These timers can only be set in super user’s dquot. For others, timers are automatically started and stopped. Superusers timer values set the limits for the rest. In case these values are zero, the DQ_{F,B}TIMELIMIT values defined below are used. These values also apply only to the d_fieldmask field for Q_XSETQLIM.
Warning counts are set in both super user’s dquot and others. For others, warnings are set/cleared by the administrators (or automatically by going below the soft limit). Superusers warning values set the warning limits for the rest. In case these values are zero, the DQ_{F,B}WARNLIMIT values defined below are used. These values also apply only to the d_fieldmask field for Q_XSETQLIM.
These fields are sent to Q_XSETQLIM to specify fields that need to change.
/proc/sys/fs/quota/
Inode used for large EA
Encryption algorithms
Removed, do not use.
Removed, do not use.
End compression flags — maybe not all used Encrypted file
Reserved for ext4
Extents
User modifiable flags
User visible flags
group quota type
Reserved for ext4
AFS directory
Immutable file
hash-indexed directory
Reserved for ext4
inotify submenu
Reserved for ext3
File system encryption support Policy provided via an ioctl on the topmost directory
Parameters for passing an encryption key into the kernel keyring
int: leases enabled
int: maximum time to wait for a lease break
int:maximum number of dquots that can be allocated
int:maximum number of filedescriptors that can be allocated
int:maximum number of inodes that can be allocated
int:maximum number of super_blocks that can be allocated
Structure that userspace passes to the kernel keyring
do not update atime
Don’t compress
Do not cow file
do not dump file
file tail should not be merged
int:current number of allocated dquots
int:current number of allocated filedescriptors
CTL_FS names: int:current number of allocated inodes
int:current number of allocated super_blocks
ocfs2
int: overflow GID
int: overflow UID
use master key directly
Create with parents projid
project quota type
fs_quota_statv.qs_version
fs_quota_stat.qs_version
group quota accounting
group quota limits enforcement
project quota accounting
project quota limits enforcement
Various flags related to quotactl(2). user quota accounting
user quota limits enforcement
reserved for ext2 lib
Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)
Synchronous updates
Top of directory hierarchies
Undelete
user quota type
all writes append
CoW extent size allocator hint
use DAX for IO
extent size allocator hint
inherit inode extent size
use filestream allocator
no DIFLAG for this
file cannot be modified
do not update access time
do not defragment
do not include in backups
disallow symlink creation
preallocated file extents
create with parents projid
Flags for the fsx_xflags field data in realtime volume
create with rt bit set
all writes synchronous
struct: control xfs parameters
fs on-disk file types. Only the low 3 bits are used for the POSIX file types. Other bits are reserved for fs private use. These definitions are shared and used by multiple filesystems, and MUST NOT change under any circumstances.
bitset with all bits set for the FUTEX_xxx_BITSET OPs to request a match of any bit.
*(int *)UADDR2 += OPARG;
*(int *)UADDR2 &= ~OPARG;
if (oldval == CMPARG) wake
if (oldval >= CMPARG) wake
if (oldval > CMPARG) wake
if (oldval <= CMPARG) wake
if (oldval < CMPARG) wake
if (oldval != CMPARG) wake
Use (1 << OPARG) instead of OPARG.
*(int *)UADDR2 |= OPARG;
*(int *)UADDR2 = OPARG;
*(int *)UADDR2 ^= OPARG;
The kernel signals via this bit that a thread holding a futex has exited without unlocking the futex. The kernel also does a FUTEX_WAKE on such futexes, after setting the bit, to wake up any possible waiters:
The rest of the robust-futex field is for the TID:
Second argument to futex syscall
Are there any waiters for this robust futex:
Set/Get seals
Cancel a blocking posix lock; internal use only until we expose an asynchronous lock api to userspace:
Create a file descriptor with FD_CLOEXEC set.
for old implementation of bsd flock ()
using ‘struct flock64’
Set/Get write life time hints. {GET,SET}_RW_HINT operate on the underlying inode, while {GET,SET}_FILE_RW_HINT operate only on the specific file.
Request nofications on a directory. See below for events that may be notified.
Open File Description Locks
Check for file existence.
for posix fcntl() and lockf()
prevent future writes while mapped
prevent file from growing
Types of seals prevent further seals from being set
prevent file from shrinking
prevent writes
Set and get of pipe page size array
get all semval’s
get semncnt
semctl Command Definitions. get sempid
get semval
get semzcnt
Several system calls take a flag to request “hugetlb” huge pages.
Without further specification, these system calls will use the
system’s default huge page size. If a system supports multiple
huge page sizes, the desired huge page size can be specified in
bits [26:31]
of the flag arguments. The value in these 6 bits
will encode the log2 of the huge page size.
Shift from CBAUD to CIBAUD
c_iflag bits
Structure used for setting quota information about file via quotactl Following flags are used to specify which fields are valid
unimplemented instruction address
internal stack error
coprocessor error
illegal addressing mode
SIGILL si_codes illegal opcode
illegal operand
illegal trap
privileged opcode
privileged register
224.0.0.1
224.0.0.2
224.0.0.106
Address to accept any incoming messages.
Address to send to all hosts.
Address to loopback in software to local host. 127.0.0.1
224.0.0.255
Address indicating an error return.
Defines for Multicast INADDR 224.0.0.0
/proc/sys/fs/inotify/ max instances per user
max watches per user
This file has definitions for some important file table structures and constants and structures used by various generic file system ioctl’s. Please do not make any changes in this file before sending patches for review to linux-fsdevel@vger.kernel.org and linux-api@vger.kernel.org. Use of MS_* flags within the kernel is restricted to core mount(2) code. It’s silly to have NR_OPEN bigger than NR_FILE, but you can change the file limit at runtime and only root can increase the per-process nr_file rlimit, so it’s safe to set up a ridiculously high absolute upper limit on files-per-process.
Hard limit for nfile rlimits
the following are legal, implemented events that user-space can watch for File was accessed
All of the events - we build the list by hand so that we can add flags in the future and not break backward compatibility. Apps will get only the events that they originally wanted. Be sure to add new events here!
Metadata changed
Flags for sys_inotify_init1.
close
Unwrittable file closed
Writtable file was closed
Subfile was created
Subfile was deleted
Self was deleted
don’t follow a sym link
exclude events on unlinked objects
File was ignored
event occurred against dir
Network number for local host loopback.
add to the mask of an already existing watch
only create watches
File was modified
moves
File was moved from X
File was moved to Y
Self was moved
only send event once
special flags only watch the path if it is a directory
File was opened
Event queued overflowed
the following are legal events. they are sent as needed to any watch Backing fs was unmounted
Valid flags for the “aio_flags” member of the “struct iocb”. IOCB_FLAG_RESFD - Set if the “aio_resfd” member of the “struct iocb” is valid. IOCB_FLAG_IOPRIO - Set if the “aio_reqprio” member of the “struct iocb” is valid.
…and for the drivers/sound files…
Direction bits, which any architecture can choose to override before including this file.
ioctl command encoding: 32 bits total, command in lower 16 bits, size of the parameter structure in the lower 14 bits of the upper 16 bits. Encoding the size of the parameter structure in the ioctl request is useful for catching programs compiled with old versions and to avoid overwriting user space outside the user buffer area. The highest 2 bits are reserved for indicating the ``access mode’’. NOTE: This limits the max parameter size to 16kB -1 ! The following is for compatibility across the various Linux platforms. The generic ioctl numbering scheme doesn’t really enforce a type field. De facto, however, the top 8 bits of the lower 16 bits are indeed used as a type field, so we might just as well make this explicit here. Please be sure to use the decoding macros below from now on.
Let any architecture override either of the following before including this file.
8 best effort priority levels are supported
These are the io priority groups as implemented by CFQ. RT is the realtime class, it always gets premium service. BE is the best-effort scheduling class, the default for any process. IDLE is the idle scheduling class, it is only served when no one else is using the disk.
Gives us 8 prio classes with 13-bits of data for each class
Fallback BE priority
cqe->flags IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID
io_uring_enter(2) flags
io_uring_params->features flags
sqe->fsync_flags
Magic offsets for the application to mmap the data it needs
io_uring_register(2) opcodes and arguments
attach to existing wq
clamp SQ/CQ ring sizes
app defines CQ size
io_uring_setup() flags io_context is polled
SQ poll thread
sq_thread_cpu is valid
sq_ring->flags needs io_uring_enter wakeup
sqe->timeout_flags
always go async
select buffer from sqe->buf_group
sqe->flags use fixed fileset
issue after inflight IO
like LINK, but stronger
links next sqe
resource get request flags create if key is nonexistent
these fields are used by the DIPC package so the kernel as standard should avoid using them if possible make it distributed
fail if key exists
see ipcs
return error on wait
Version flags for semctl, msgctl, and shmctl commands These are passed as bitflags or-ed with the actual command
this machine is the DIPC owner
Control commands used with semctl, msgctl and shmctl see also specific commands in sem.h, msg.h and shm.h remove resource
set ipc_perm options
get ipc_perm options
Authentication Header protocol
IP option pseudo header for BEET
Compression Header Protocol
Datagram Congestion Control Protocol
IPv6 destination options
Exterior Gateway Protocol
Encapsulation Header
Encapsulation Security Payload protocol
IPv6 fragmentation header
Cisco GRE tunnels (rfc 1701,1702)
IPV6 extension headers IPv6 hop-by-hop options
Internet Control Message Protocol
ICMPv6
XNS IDP protocol
Internet Group Management Protocol
INET: An implementation of the TCP/IP protocol suite for the LINUX operating system. INET is implemented using the BSD Socket interface as the means of communication with the user level.
IPIP tunnels (older KA9Q tunnels use 94)
IPv6-in-IPv4 tunnelling
IPv6 mobility header
MPLS in IP (RFC 4023)
Multicast Transport Protocol
IPv6 no next header
Protocol Independent Multicast
PUP protocol
Raw IP packets
IPv6 routing header
RSVP Protocol
Stream Control Transport Protocol
Transmission Control Protocol
SO Transport Protocol Class 4
User Datagram Protocol
UDP-Lite (RFC 3828)
IPV6 socket options
RFC5014: Source address selection
obsolete
Bitmask constant declarations to help applications select out the flow label and priority fields.
Flowlabel
RFC5082: Generalized Ttl Security Mechanism
IPV6_MTU_DISCOVER values
same as IPV6_PMTUDISC_PROBE, provided for symetry with IPv4 also see comments on IP_PMTUDISC_INTERFACE
weaker version of IPV6_PMTUDISC_INTERFACE, which allows packets to get fragmented if they exceed the interface mtu
These definitions are obsolete
Advanced API (RFC3542) (1) Note: IPV6_RECVRTHDRDSTOPTS does not exist. see net/ipv6/datagram.c.
Advanced API (RFC3542) (2)
RFC 5570
home address option
IPv6 TLV options.
IPX options
These need to appear somewhere around here
TProxy original addresses
Always DF
IP_MTU_DISCOVER values Never send DF frames
Always use interface mtu (ignores dst pmtu) but don’t set DF flag. Also incoming ICMP frag_needed notifications will be ignored on this socket to prevent accepting spoofed ones.
Ignore dst pmtu
Use per route hints
BSD compatibility
c_lflag bits
Names of the interval timers, and structure defining a timer setting:
Comparison type - enum kcmp_type.
BSD process accounting parameters
int: flags for setting up video after ACPI sleep
int: boot loader type
int: PID of the process to notify on CAD
int: print compat layer messages
string: pattern for core-file names
int: use core or core.%pid
int: allow ctl-alt-del to reboot
string: domainname
string: path to uevent helper (deprecated)
int: hppa soft-power enable
int: hppa unaligned-trap enable
int: hz timer on or off
int: ia64 unaligned userland trap enable
int: unimplemented ieee instructions
int: rtmutex’s maximum lock depth
int: Maximum nr of threads in the system
string: modprobe path
int: Maximum size of a messege
int: Maximum message queue size
int: msg queue identifiers
int: Maximum system message pool size
Name translation
int: NGROUPS_MAX
int: enable/disable nmi watchdog
string: hostname
string: system release
int: system revision
CTL_KERN names: string: system version
int: overflow GID
int: overflow UID
int: panic timeout
int: whether we will panic on an unrecovered
int: whether we will panic on an oops
int: call panic() in WARN() functions
ulong: bitmask to print system info on panic
int: PID # limit
turn htab reclaimation on/off on PPC
l2cr register on PPC
use nap mode for power saving
turn idle page zeroing on/off on PPC
struct: control printk logging parameters
int: tune printk ratelimiting
int: tune printk ratelimiting
table: profiling information
dir: pty driver
Random driver
int: randomize virtual address space
real root device to mount after initrd
Max queuable
Number of rt sigs queued
int: dumps of user faults
struct: maximum rights mask
struct: sysv semaphore limits
int: behaviour of dumps for setuid core
int: sg driver reserved buffer size
int: Maximum size of shared memory
long: Maximum shared memory segment
int: shm array identifiers
string: path to shm fs
reboot command on Sparc
int: serial console power-off halt
int: Sparc Stop-A enable
int: number of spinlock retries
int: Sysreq enable
int: various kernel tainted flags
int: unknown nmi panic flag
string: compile time info
These values match the ELF architecture values. Unless there is a good reason that should continue to be the case.
Kexec file load interface flags. KEXEC_FILE_UNLOAD : Unload already loaded kexec/kdump image. KEXEC_FILE_ON_CRASH : Load/unload operation belongs to kdump image. KEXEC_FILE_NO_INITRAMFS : No initramfs is being loaded. Ignore the initrd fd field.
kexec system call - It loads the new kernel to boot into. kexec does not sync, or unmount filesystems so if you need that to happen you need to do that yourself. kexec flags for different usage scenarios
The artificial cap on the number of segments passed to kexec_load.
Key is built into kernel
Override the check on restricted keyrings
add to quota, reject if would overrun
not in quota
add to quota, permit even if overrun
allocating a user or user session keyring
authentication token / access credential / keyring
set if key is built in to the kernel
set if key type has been deleted
set if key has been invalidated
set if key consumes quota
set if key should not be removed
set if key had been revoked
set if key can be cleared by root without permission
set if key can be invalidated by root without permission
set if key is a user or user session keyring
set if key is being constructed in userspace
group permissions…
Positively instantiated
All the above permissions
Require permission to link
Require permission to read content
Require permission to search (keyring) or find (key)
Require permission to change attributes
The permissions required on a key that we’re looking up. Require permission to view attributes
Require permission to update / modify
third party permissions…
possessor can create a link to a key/keyring
possessor can read key payload / view keyring
possessor can find a key in search / search a keyring
possessor can set key attributes
possessor can view a key’s attributes
possessor can update key payload / add link to keyring
user permissions…
ldt.h Definitions of structures used with the modify_ldt system call. Maximum number of LDT entries supported.
The size of each LDT entry.
links a file may have
Backwardly compatible definition for source code - trapped in a 32-bit world. If you find you need this, please consider using libcap to untrap yourself…
User-level do most of the mapping between kernel and user capabilities based on the version tag given by the kernel. The kernel might be somewhat backwards compatible, but don’t bet on it. Note, cap_t, is defined by POSIX (draft) to be an “opaque” pointer to a set of three capability sets. The transposition of 3*the following structure to such a composite is better handled in a user library since the draft standard requires the use of malloc/free etc..
deprecated - use v3
Commands accepted by the _reboot() system call.
Magic values required to use _reboot() system call.
exclusive lock
This is a mandatory flock …
or’d with one of the above to prevent blocking
which allows concurrent read operations
which allows concurrent read & write ops
operations for bsd flock(), also used by the kernel implementation shared lock
remove lock
which allows concurrent write operations
deactivate these pages
Clear the MADV_DONTDUMP flag
do inherit across fork
Explicity exclude from the core dump, overrides the coredump filter bits
don’t inherit across fork
don’t need these pages
common parameters: try to keep these consistent across architectures free pages only if memory pressure
Worth backing with hugepages
poison a page for testing
Undo MADV_WIPEONFORK
KSM may merge identical pages
Not worth backing with hugepages
no further special treatment
reclaim these pages
expect random page references
remove these pages & resources
expect sequential page references
soft offline page for testing
KSM may not merge identical pages
will need these pages
Zero memory on fork, child only
don’t use a file
ETXTBSY
mark it as an executable
compatibility flags
Interpret addr exactly
MAP_FIXED which doesn’t unmap underlying mapping
From uapi/asm-generic/mman.h
stack-like segment
create a huge page mapping
Huge page size encoding when MAP_HUGETLB is specified, and a huge page size other than the default is desired. See hugetlb_encode.h. All known huge page size encodings are provided here. It is the responsibility of the application to know which sizes are supported on the running system. See mmap(2) man page for details.
pages are locked
do not block on IO
don’t check for reservations
0x0100 - 0x4000 flags are defined in asm-generic/mman.h populate (prefault) pagetables
Changes are private
Share changes
share + validate extension flags
give out an address that is best suited for process/thread stacks
perform synchronous page faults for the mapping
0x01 - 0x03 are defined in linux/mman.h Mask for type of mapping
For anonymous mmap, memory could be uninitialized
max frequency error (ns/s)
max phase error (ns)
max interval between updates (s)
maximum time constant (shift)
BPF has 10 general purpose 64-bit registers and stack frame.
size of the canonical input queue
size of the type-ahead buffer
MAX_SWAPFILES defines the maximum number of swaptypes: things which can be swapped to. The swap type and the offset into that swap type are encoded into pte’s and into pgoff_t’s in the swapcache. Using five bits for the type means that the maximum number of swapcache pages is 27 bits on 32-bit-pgoff_t architectures. And that assumes that the architecture packs the type/offset into the pte as 5/27 as well.
lock all current mappings
lock all future mappings
lock all pages that are faulted in
enum membarrier_cmd - membarrier system call command @MEMBARRIER_CMD_QUERY: Query the set of supported commands. It returns a bitmask of valid commands. @MEMBARRIER_CMD_GLOBAL: Execute a memory barrier on all running threads. Upon return from system call, the caller thread is ensured that all running threads have passed through a state where all memory accesses to user-space addresses match program order between entry to and return from the system call (non-running threads are de facto in such a state). This covers threads from all processes running on the system. This command returns 0. @MEMBARRIER_CMD_GLOBAL_EXPEDITED: Execute a memory barrier on all running threads of all processes which previously registered with MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED. Upon return from system call, the caller thread is ensured that all running threads have passed through a state where all memory accesses to user-space addresses match program order between entry to and return from the system call (non-running threads are de facto in such a state). This only covers threads from processes which registered with MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED. This command returns 0. Given that registration is about the intent to receive the barriers, it is valid to invoke MEMBARRIER_CMD_GLOBAL_EXPEDITED from a non-registered process. @MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED: Register the process intent to receive MEMBARRIER_CMD_GLOBAL_EXPEDITED memory barriers. Always returns 0. @MEMBARRIER_CMD_PRIVATE_EXPEDITED: Execute a memory barrier on each running thread belonging to the same process as the current thread. Upon return from system call, the caller thread is ensured that all its running threads siblings have passed through a state where all memory accesses to user-space addresses match program order between entry to and return from the system call (non-running threads are de facto in such a state). This only covers threads from the same process as the caller thread. This command returns 0 on success. The “expedited” commands complete faster than the non-expedited ones, they never block, but have the downside of causing extra overhead. A process needs to register its intent to use the private expedited command prior to using it, otherwise this command returns -EPERM. @MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED: Register the process intent to use MEMBARRIER_CMD_PRIVATE_EXPEDITED. Always returns 0. @MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE: In addition to provide memory ordering guarantees described in MEMBARRIER_CMD_PRIVATE_EXPEDITED, ensure the caller thread, upon return from system call, that all its running threads siblings have executed a core serializing instruction. (architectures are required to guarantee that non-running threads issue core serializing instructions before they resume user-space execution). This only covers threads from the same process as the caller thread. This command returns 0 on success. The “expedited” commands complete faster than the non-expedited ones, they never block, but have the downside of causing extra overhead. If this command is not implemented by an architecture, -EINVAL is returned. A process needs to register its intent to use the private expedited sync core command prior to using it, otherwise this command returns -EPERM. @MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE: Register the process intent to use MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE. If this command is not implemented by an architecture, -EINVAL is returned. Returns 0 on success. @MEMBARRIER_CMD_SHARED: Alias to MEMBARRIER_CMD_GLOBAL. Provided for header backward compatibility.
Alias for header backward compatibility.
flags for memfd_create(2) (unsigned int)
Huge page size encoding when MFD_HUGETLB is specified, and a huge page size other than the default is desired. See hugetlb_encode.h. All known huge page size encodings are provided here. It is the responsibility of the application to know which sizes are supported on the running system. See mmap(2) man page for details.
min interval between updates (s)
Flags for mlock Lock pages in range after they are faulted in, do not prefault
NTP userland likes the MOD_ prefix better
NUMA memory policies for Linux. Both the MPOL_* mempolicy mode and the MPOL_F_* optional mode flags are passed by the user to either set_mempolicy() or mbind() in an ‘int’ actual. The MPOL_MODE_FLAGS macro determines the legal set of optional mode flags. Policies
look up vma using address
preferred local allocation
return allowed memories
this policy wants migrate on fault
Migrate On protnone Reference On Node
Flags for get_mempolicy return next IL mode instead of node mask
Internal flags that share the struct mempolicy flags word with “mode flags”. These flags are allocated from bit 0 up, as they are never OR’ed into the mode in mempolicy API arguments. identify shared policies
Flags for set_mempolicy
always last member of enum
Internal flags start here
Modifies ’_MOVE: lazy migrate on fault
Move pages owned by this process to conform to policy
Move every page to conform to policy
Flags for mbind Verify existing pages in the mapping
MPOL_MODE_FLAGS is the union of all possible optional mode flags passed to either set_mempolicy() or mbind().
per-uid limit of kernel memory used by mqueue, in bytes
From uapi/linux/mman.h
Parameters used to convert the timespec values:
number of entries in message map
<= INT_MAX, max size of message (bytes)
<= INT_MAX, default max size of a message queue
MSGMNI, MSGMAX and MSGMNB are default values which can be modified by sysctl.
unused
max no. of segments
message segment size
number of system message headers
sendmmsg(): more messages coming
Set close_on_exec for file descriptor received through SCM_RIGHTS
We never have 32 bit fixups
Confirm path validity
copy (not remove) all queue messages
Nonblocking io
End of record
Fetch message from error queue
recv any msg except of specified type.
Send data in TCP SYN
Sender will send more
msgrcv options no error if message is too big
Do not generate SIGPIPE
sendpage() internal : page frags are not shared
Flags we can use with send/ and recv. Added those for 1003.1g not all are supported yet
Do not send. Only probe path f.e. for MTU
sendpage() internal : page may carry plain text and require encryption
sendpage() internal : do no apply policy
sendpage() internal : not the last page
ipcs ctl commands
Synonym for MSG_DONTROUTE for DECnet
Wait for a full request
recvmmsg(): block until 1+ packets avail
Use user data in kernel path
sync memory asynchronously
Directory modifications are synchronous
invalidate the caches
Update inode I_version field
this is a kern_mount call
Update the on-disk acm
times lazily
Allow mandatory locks on an FS
Old magic mount flag and mask
Do not update access times.
Disallow access to device special files
Do not update directory access times
Disallow program execution
Ignore suid and sgid bits
VFS does not apply the umask
change to private
These are the fs-independent mount-flags: up to 32 flags are supported
Update atime relative to mtime/ctime.
Alter flags of a mounted FS
Superblock flags that can be altered by MS_REMOUNT
change to shared
change to slave
Always perform atime updates
These sb flags are internal to the kernel
synchronous memory sync
Writes are synced at once
change to unbindable
MS_VERBOSE is deprecated.
chars in a file name
/proc/sys/net/appletalk
/proc/sys/net/ax25
/proc/sys/net/bridge
CTL_NET names:
was NET_CORE_DESTROY_DELAY
/proc/sys/net/core
/proc/sys/net/dccp
/proc/sys/net/decnet/conf/
/proc/sys/net/decnet/conf/
/proc/sys/net/decnet/
/proc/sys/net/ipv4 v2.0 compatibile variables
/proc/sys/net/ipv4/netfilter
obsolete since 2.6.38
obsolete since 2.6.25
obsolete since 2.6.25
/proc/sys/net/ipv6
/proc/sys/net/ipv6/icmp
/proc/sys/net/ipx
/proc/sys/net/llc
/proc/sys/net/llc/llc2/timeout
/proc/sys/net/llc/llc2
/proc/sys/net/llc/station
/proc/sys/net/
/proc/sys/net/netrom
/proc/sys/net/netfilter
/proc/sys/net/rose
/proc/sys/net/sctp
/proc/sys/net/token-ring
/proc/sys/net/ethernet /proc/sys/net/802 /proc/sys/net/unix
/proc/sys/net/x25
supplemental group IDs are available
SIGEV_THREAD implementation: SIGEV_THREAD must be implemented in user space. If SIGEV_THREAD is passed to mq_notify, then
NET: An implementation of the SOCKET network access protocol. This is the master header file for the Linux NET layer, or, in plain English: the networking handling part of the kernel.
number of available namespaces
NTP API version
c_oflag bits
set close_on_exec
not fcntl
direct disk access hint
must be a directory
used to be O_SYNC, see below
not fcntl
not fcntl
don’t follow links
a horrid kludge trying to make sure that this will fail on old kernels
not fcntl
Generic page.h implementation, for NOMMU architectures. This provides the dummy definitions for the memory management. PAGE_SHIFT determines the page size
chars in a path name including nul
sizeof first published struct
add: config2
add: branch_sample_type
add: sample_regs_user add: sample_stack_user
add: sample_regs_intr
add: aux_watermark
sample collided with another
snapshot from overwrite mode
record contains gaps
PERF_RECORD_AUX::flags bits record was truncated to fit
function call
conditional
conditional function call
conditional function return
indirect
indirect function call
function return
syscall
syscall return
unconditional
Common flow change classification unknown
enum perf_callchain_context:
Generalized hardware cache events:
non-ABI
non-ABI
non-ABI
Generalized performance event event_id types, used by the attr.event_id parameter of the sys_perf_event_open() syscall: Common hardware events, generalized by the kernel:
non-ABI
Special “software” events provided by the kernel, even if the hardware does not support performance events. These events measure various physical and sw events of the kernel (and allow the profiling of them as well):
non-ABI
O_CLOEXEC
pid=cgroup id, per-cpu mode only
non-ABI
The format of the data returned by read() on a perf event fd as specified by attr.read_format:
Ioctls that can be done on a perf event fd:
locked transaction
locked instruction not available
5-0xa available Any cache
L1
L2
L3
L4
LFB
N/A
PMEM
RAM
hit level
I/O memory
L1
L2
L3
Line Fill Buffer
Local DRAM
miss level
memory hierarchy (memory level, hit or miss) not available
Remote Cache (1 hop)
Remote Cache (2 hops)
Remote DRAM (1 hop)
Remote DRAM (2 hops)
Uncached memory
code (execution)
load instruction
type of opcode (load/store/prefetch,code) not available
prefetch
store instruction
Remote
forward
1 free
snoop hit
snoop hit modified
snoop miss
snoop mode not available
no snoop
hit level
L1
L2
miss level
TLB access not available
OS fault handler
Hardware Walker
Records that new data landed in the AUX buffer part.
struct { struct perf_event_header header; u32 pid, ppid; u32 tid, ptid; u64 time; struct sample_id sample_id; };
Indicates that instruction trace has started
struct { struct perf_event_header header; u64 id; u64 lost; struct sample_id sample_id; };
Records the dropped/lost sample number.
non-ABI
These PERF_RECORD_MISC_* flags below are safely reused for the following events:
Reserve the last bit to indicate some extended misc field
Following PERF_RECORD_MISC_* are used on different events, so can reuse the same bit position:
Indicates that /proc/PID/maps parsing are truncated by time out.
perf_event_type: If perf_event_attr.sample_id_all is set then all event types will have the sample_type selected fields related to where/when (identity) an event took place (TID, TIME, ID, STREAM_ID, CPU IDENTIFIER) described in PERF_RECORD_SAMPLE below, it will be stashed just after the perf_event_header and the fields already present for the existing fields, i.e. at the end of the payload. That way a newer perf.data file will be supported by older perf tools, with these new optional fields being ignored.
The MMAP2 records are an augmented version of MMAP, they add maj, min, ino numbers to be used to uniquely identify each mapping
Records a context switch in or out (flagged by PERF_RECORD_MISC_SWITCH_OUT). See also PERF_RECORD_SWITCH_CPU_WIDE.
CPU-wide version of PERF_RECORD_SWITCH with next_prev_pid and next_prev_tid that are the next (switching out) or previous (switching in) pid/tid.
transaction aborts
any call branch
any return branch
any branch types
direct call
call/ret stack
conditional branches
hypervisor branches
indirect calls
indirect jumps
in transaction
kernel branches
non-ABI
no cycles
no flags
not in transaction
save branch type
values to program into branch_sample_type when PERF_SAMPLE_BRANCH is set
Bits that can be set in attr.sample_type to request information in the overflow packets.
non-ABI
Values to determine ABI of the registers dump.
bits 32..63 are reserved for the abort code
Instruction not related
Capacity read abort
Capacity write abort
Conflict abort
Values for the memory transaction event qualifier, mostly for abort events. Multiple bits can be set. From elision
non-ABI
Retry possible
Instruction is related
From transaction
User-space ABI bits: attr.type
non-ABI
Security-relevant compatibility flags that must be cleared upon setuid or setgid exec:
IRIX5 32-bit
IRIX6 64-bit
IRIX6 new 32-bit
Personality types.
OSF/1 v4
Protocol families, same as address families.
bytes in atomic write to a pipe
The clock frequency of the i8253/i8254 PIT
currently only for epoll
These are specified by iBCS2
The rest seem to be more-or-less nonstandard. Check them!
i/o error
device disconnected
SIGPOLL (or any other signal without signal specific si_codes) si_codes data input available
input message available
output buffers available
high priority input available
Oxford Semiconductor
usurped by cyclades.c
RSA-DV II/S card
usurped by cyclades.c
These are the supported serial types.
Don’t need these pages.
Data will be accessed once.
No further special treatment.
Expect random page references.
Expect sequential page references.
Will need these pages.
page can be executed
mprotect flag: extend change to start of growsdown vma
mprotect flag: extend change to end of growsup vma
0x10 reserved for arch-specific use 0x20 reserved for arch-specific use page can not be accessed
From uapi/asm-generic/mman-common.h
page can be read
page may be used for atomic ops
page can be written
Get/set the capability bounding set (as per security/commoncap.c)
Control the ambient capability set
True little endian mode
“PowerPC” pseudo little endian
silently emulate fp operations accesses
don’t emulate fp operations, send SIGFPE instead
async recoverable exception mode
FP exceptions disabled
floating point divide by zero
floating point invalid operation
async non-recoverable exc. mode
floating point overflow
precise exception mode
floating point inexact result
Use FPEXC for FP exception enables
floating point underflow
64b FP registers
32b compatibility
Get/set current->mm->dumpable
Get/set process endian
Get/set floating-point emulation control bits (if meaningful)
Get/set floating-point exception mode (if meaningful)
Get/set whether or not to drop capabilities on setuid() away from uid 0 (as per security/commoncap.c)
Get process name
Second arg is a ptr to return the signal
Get/set process seccomp mode
Get/set securebits (as per security/commoncap.c)
Per task speculation control
Get/set whether we use statistical process timing or accurate timestamp based process timing
Get/set the process’ ability to use the timestamp counter instruction
Get/set unaligned access control bits (if meaningful)
Set early/late kill mode for hwpoison memory corruption. This influences when the process gets killed on a memory corruption.
No longer implemented, but left here to ensure the numbers stay reserved:
Reset arm64 pointer authentication keys
Control reclaim behavior when allocating memory
Tune up process memory map specifics.
Set process name
If no_new_privs is set, then operations that grant new privileges (i.e. execve) will either fail or not grant them. This affects suid/sgid, file capabilities, and LSMs. Operations that merely manipulate or drop existing privileges (setresuid, capset, etc.) will still work. Drop those privileges if you want them gone. Changing LSM security domain is considered a new privilege. So, for example, asking selinux for a specific new context (e.g. with runcon) will result in execve returning -EPERM. See Documentation/userspace-api/no_new_privs.rst for more details.
Values to pass as first argument to prctl() Second arg is a signal
Set specific pid that is allowed to ptrace the current task. A value of 0 mean “no process”.
Tagged user address controls for arm64
Get/set the timerslack as used by poll/select/nanosleep A value of 0 means “use default”
Return and control values for PR_SET/GET_SPECULATION_CTRL
Speculation control variants
get task vector length
arm64 Scalable Vector Extension controls Flag values must be kept in sync with ptrace NT_ARM_SVE interface set task vector length
defer effect until exec
inherit across exec
Bits common to PR_SVE_SET_VL and PR_SVE_GET_VL
Normal, traditional, statistical process timing
Accurate timestamp based process timing
allow the use of the timestamp counter
throw a SIGSEGV instead of reading the TSC
silently fix up unaligned user accesses
generate SIGBUS on unaligned user access
These values are stored in task->ptrace_message by tracehook_report_syscall_* to describe the current syscall-stop.
Wait extended result codes for the above trace options.
Extended result codes which enabled by means other than options.
Generic ptrace interface that exports the architecture specific regsets using the corresponding NT_* types (which are also used in the core dump). Please note that the NT_PRSTATUS note type in a core dump contains a full ‘struct elf_prstatus’. But the user_regset for NT_PRSTATUS contains just the elf_gregset_t that is the pr_reg field of ‘struct elf_prstatus’. For all the other user_regset flavors, the user_regset layout and the ELF core dump note payload are exactly the same layout.
eventless options
Options set using PTRACE_SETOPTIONS or using PTRACE_SEIZE @data param
Read signals from a shared (process wide) queue
0x4200-0x4300 are reserved for architecture-independent additions.
ptrace.h structs and defines to help the user use the ptrace system call. has the defines to get at the registers.
/proc/sys/kernel/pty
First argument to waitid:
Quota format type IDs
Quota structure used for communication with userspace via quotactl Following flags are used to specify which fields are valid
Size of block in which space limits are passed through the quota interface
Masks for quota types when used as a bitmask
Usage got below block hardlimit
Block hardlimit reached
Usage got below block softlimit
Block grace time expired
Block softlimit reached
Usage got below inode hardlimit
Inode hardlimit reached
Usage got below inode softlimit
Inode grace time expired
Inode softlimit reached
Definitions for quota netlink interface
get quota format used on given filesystem
get information about quota files
get disk limits and usage >= ID
get user quota structure
turn quotas off
turn quotas on
set information about quota files
set user quota structure
sync disk copy of a filesystems quotas
get disk limits and usage >= ID
get quota subsystem status
newer version of get quota
get disk limits and usage
disable accounting/enforcement
enable accounting/enforcement
free disk space used by dquots
delalloc flush, updates dquots
set disk limits
/proc/sys/kernel/random
Exchange source and dest
Don’t overwrite target
Whiteout source
address space limit
max core file size
Resource limit IDs
max data size
Maximum filesize
maximum file locks held
max locked-in-memory address space
maximum bytes in POSIX mqueues
max nice prio allowed to raise to 0-39 for nice level 19 .. -20
max number of open files
max number of processes
max resident set size
maximum realtime priority
timeout for RT tasks in us
max number of pending signals
max stack size
SuS says limits have to be unsigned. Which makes a ton more sense anyway.
This limit protects against a deliberately circular list. (Not worth introducing an rlimit for it)
linux/rseq.h
sys_wait4() uses this
Resource control/accounting header file for linux Definition of struct rusage taken from BSD 4.3 Reno
only the calling thread
per-IO O_APPEND
per-IO O_DSYNC
high priority request, poll if possible
per-IO, return -EAGAIN if operation would block
mask of flags supported by the kernel
per-IO O_SYNC
(1U << 31) is reserved for signed error codes
Check file is readable.
SA_FLAGS values:
sizeof first published struct
add: util_{min,max}
For the sched_{set,get}attr() calls
SCHED_ISO: reserved but not implemented yet
Scheduling policies
Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork
rw: struct ucred
Ancillary data object information MACROS Table 5-14 of POSIX 1003.1g “Socket”-level control message types: rw: access rights (array of int)
rw: security label
Valid flags for SECCOMP_SET_MODE_FILTER
Valid values for seccomp.mode and prctl(PR_SET_SECCOMP,
uses user-supplied filter.
uses hard-coded filter.
Masks for the return value sections.
allow
returns an errno
All BPF programs must return a 32-bit value. The bottom 16-bits are for optional return data. The upper 16-bits are ordered from least permissive values to most, as a signed value (so 0x8000000 is negative).
kill the thread
allow after logging
pass to a tracer or disallow
disallow and force a SIGSYS
notifies userspace
Valid operations for seccomp syscall.
seek relative to current file position
seek to the next data
seek relative to end of file
seek to the next hole
seek relative to beginning of file
ADI not enabled for mapped object
invalid permissions for mapped object
Disrupting MCD error
Precise MCD exception
failed address bound checks
SIGSEGV si_codes address not mapped to object
failed protection key checks
adjust on exit max value
of entries in semaphore map
SEMMNI, SEMMSL and SEMMNS are default values which can be modified by sysctl. The values has been chosen to be larger than necessary for any known configuration.
<= INT_MAX max # of semaphores in system
num of undo structures system wide
<= INT_MAX max num of semaphores per id
<= 1 000 max num of ops per semop call
unused max num of undo entries per process
sizeof struct sem_undo
<= 32767 semaphore maximum value
ipcs ctl cmds
semop flags undo the operation on exit
If enabled
Logical level for RTS pin after sent
Logical level for RTS pin when sending
Enable bus termination (if supported)
set all semval’s
set semval
FLL frequency factor (shift)
SHIFT_PLL is used as a dampening factor to define how much we adjust the frequency correction for a given offset in PLL mode. It also used in dampening the offset correction, to define how much of the current value in time_offset we correct for each second. Changing this value changes the stiffness of the ntp adjustment code. A lower value makes it more flexible, reducing NTP convergence time. A higher value makes it stiffer, increasing convergence time, but making the clock more stable.
SHIFT_USEC defines the scaling (shift) of the time_freq and time_tolerance variables, which represent the current frequency offset and maximum frequency tolerance. frequency offset scale (shift)
max shm system wide (pages)
max shared seg size (bytes)
SHMMNI, SHMMAX and SHMALL are default upper limits which can be modified by sysctl. The SHMMAX and SHMALL values have been chosen to be as large possible without facilitating scenarios where userspace causes overflows when adjusting the limits via operations of the form “retrieve current limit; add X; update limit”. It is therefore not advised to make SHMMAX and SHMALL any larger. These limits are suitable for both 32 and 64-bit systems. min shared seg size (bytes)
max num of segs system wide
max shared segs per process
execution access
Bits 9 & 10 are IPC_CREAT and IPC_EXCL segment will use huge TLB pages
Huge page size encoding when SHM_HUGETLB is specified, and a huge page size other than the default is desired. See hugetlb_encode.h
super user shmctl commands
don’t check for reservations
shmget() shmflg values. The bottom nine bits are the same as open(2) mode flags or S_IRUGO from <linux/stat.h>
shmat() shmflg values read-only access
take-over region on attach
round attach address to SHMLBA boundary
ipcs ctl commands
or S_IWUGO from <linux/stat.h>
enum sock_shutdown_cmd - Shutdown types @SHUT_RD: shutdown receptions @SHUT_WR: shutdown transmissions @SHUT_RDWR: shutdown receptions/transmissions
other notification: meaningless
sigevent definitions
deliver via thread creation
deliver to thread
These should not be considered constants from userland.
for blocking signals
default signal handling
error return from signal
ignore signal
for setting the signal mask
for unblocking signals
Get stamp (timeval)
Get stamp (timespec)
sent by AIO completion
sent by glibc async name lookup completion
sent by execve() killing subsidiary threads
sent by the kernel from somewhere
sent by real time mesq state change
sent by sigqueue
sent by queued SIGIO
sent by timer expiration
sent by tkill system call
How these fields are to be accessed. si_code values Digital reserves positive values for kernel-generated signals. sent by kill, sigsend, raise
NET: An implementation of the SOCKET network access protocol. This is the master header file for the Linux NET layer, or, in plain English: the networking handling part of the kernel. Historically, SOCKWQ_ASYNC_NOSPACE & SOCKWQ_ASYNC_WAITDATA were located in sock->flags, but moved into sk->sk_wq->flags to be RCU protected. Eventually all flags will be in sk->sk_wq->flags.
Flags for socket, socketpair, accept4
Structure describing an Internet (IP) socket address. sizeof(struct sockaddr)
enum sock_type - Socket types @SOCK_STREAM: stream (connection) socket @SOCK_DGRAM: datagram (conn.less) socket @SOCK_RAW: raw socket @SOCK_RDM: reliably-delivered message @SOCK_SEQPACKET: sequential packet socket @SOCK_DCCP: Datagram Congestion Control Protocol socket @SOCK_PACKET: linux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level.
Mask which covers at least up to SOCK_MASK-1. The remaining bits are used as flags.
ATM Adaption Layer (packet level)
ATM layer (cell level)
Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx
For setsockopt(3)
#define SOL_ICMP 1 No-no-no! Due to Linux :-) we cannot use SOL_ICMP=1
UDP-Lite (RFC 3828)
Maximum queue length specifiable by listen.
Socket filtering
Instruct lower device to use last 4-bytes of skb data as FCS
powerpc only differs in these
Security levels - as per NRL IPv6 - don’t actually do anything
on 64-bit and x32, avoid the ?: operator
sqe->splice_flags extends splice(2) flags the last bit of u32
pages passed in are a gift
expect more data
Flags passed in from splice/tee/vmsplice move pages instead of copying
don’t block on the pipe splicing (but we may still block on the fd we splice from/to, of course
connected to socket
in process of connecting
in process of disconnecting
not allocated
unconnected to any socket
All currently supported flags
Want/got stx_atime
I
File is append-only
Dir: Automount trigger
Attributes to be found in stx_attributes and masked in stx_attributes_mask.
I
File requires key to decrypt in fs
I
File is marked immutable
I
File is not to be dumped
The stuff in the normal stat struct
Want/got stx_blocks
Want/got stx_btime
Want/got stx_ctime
Want/got stx_gid
Want/got stx_ino
Want/got stx_mode & ~S_IFMT
Want/got stx_mtime
Want/got stx_nlink
Want/got stx_size
Flags to be stx_mask
Want/got stx_uid
Reserved for future struct statx expansion
clock source (0 = A, 1 = B) (ro)
clock hardware fault (ro)
delete leap (rw)
select frequency-lock mode (rw)
hold frequency (rw)
insert leap (rw)
mode (0 = PLL, 1 = FLL) (ro)
resolution (0 = us, 1 = ns) (ro)
Status codes (timex.status) enable PLL updates (rw)
PPS signal calibration error (ro)
enable PPS freq discipline (rw)
PPS signal jitter exceeded (ro)
PPS signal present (ro)
enable PPS time discipline (rw)
PPS signal wander exceeded (ro)
read-only bits
clock unsynchronized (rw)
Command definitions for the ‘quotactl’ system call. The commands are broken into a main command defined below and a subcommand that is used to convey the type of quota that is being manipulated (see above).
linux/mm/swap_state.c One swap address space for each 64M swap space
Special value in each swap_map continuation Max count
enable discard for swap
discard swap area at swapon-time
discard page-clusters after use
set if swap priority specified
Bit flag in swap_map Flag page is cached, in first swap_map
Note page is bad
Special value in first swap_map Max count
Owned by shmem/tmpfs
sys_accept4(2)
sys_accept(2)
sys_bind(2)
sys_connect(2)
sys_getpeername(2)
sys_getsockname(2)
sys_getsockopt(2)
sys_listen(2)
sys_recvfrom(2)
sys_recvmmsg(2)
sys_recvmsg(2)
sys_recv(2)
SIGSYS si_codes seccomp triggered
sys_sendmmsg(2)
sys_sendmsg(2)
sys_sendto(2)
sys_send(2)
sys_setsockopt(2)
sys_shutdown(2)
sys_socketpair(2)
sys_socket(2)
This is a header for the common implementation of dirent to fs on-disk file type conversion. Although the fs on-disk bits are specific to every file system, in practice, many file systems use the exact same on-disk format to describe the lower 3 file type bits that represent the 7 POSIX file types.
These are the most common definitions for tty ioctl numbers. Most of them do not use the recommended _IOC(), but there is probably some source code out there hardcoding the number, so we might as well use them for all new platforms.
SYS5 TCGETX compatibility
tcflush() and TCFLSH use these
tcflow() and TCXONC use these
Set TCP initial congestion window
Set sndcwnd_clamp
tcsetattr uses these
Needed for POSIX tcsendbreak()
CAREFUL: Check include/asm-generic/fcntl.h when defining new flags, since they might collide with O_* ones. We want to re-use O_* flags that couldn’t possibly have a meaning from eventfd, in order to leave a free define-space for shared O_* flags.
Located here for timespec[64]_valid_strict
The various flags for setting POSIX.1b interval timers:
bw compat
delete leap second
clock not synchronized
insert leap second
Clock states (time_state) clock synchronized, no leap second
leap second in progress
Limits for settimeofday():
leap second has occurred
BSD compatibility
Get primary device node of /dev/console
Get exclusive mode state
read serial port inline interrupt counts
Get packet mode state
Get Pty lock state
Get Pty Number (of pty-mux device)
Safely open the slave
Return the session ID of FD
wait for a change on serial input line(s)
modem lines
Used for packet mode
BSD compatibility
Get line status register
Get multiport config
For debugging only
Set multiport config
Transmitter physically empty
pty: generate signal
Lock/unlock Pty
process taken branch trap
SIGTRAP si_codes process breakpoint
hardware breakpoint/watchpoint
process trace trap
undiagnosed trap
UIO_MAXIOV shall be at least 16 1003.1g (5.4.1.1)
Flags for bug emulation.
c_cc characters
block dump mode
dirty_background_ratio
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
int: nuke lots of pagecache
permitted hugetlb group
int: Number of available Huge Pages
vm laptop mode
legacy/compatibility virtual address space layout
reservation ratio for lower memory zones
int: Maximum number of mmaps/address-space
Minimum free kilobytes to maintain
Percent pages ignored by zone reclaim
Set min percent of unmapped pages
nr_pdflush_threads
Turn off the virtual memory safety limit
percent of RAM to allow overcommit in
struct: Control pagebuf parameters
int: set number of pages to swap together
panic at out-of-memory
int: fraction of pages in each percpu_pagelist
Tendency to steal mapped memory
default time for token time out
CTL_VM names: was: struct: Set vm swapping control
was; int: Linear or sqrt() swapout for hogs
was: struct: Set free page thresholds
Spare
was: struct: Set buffer memory thresholds
was: struct: Set cache memory thresholds
was: struct: Control kswapd behaviour
was: struct: Set page table cache parameters
map VDSO into new processes?
dcache/icache reclaim pressure
reclaim local zone memory before going off node
Don’t reap, just poll status.
Check file is writable.
set value, fail if attr already exists
Security namespace
size of extended attribute namelist (64k)
chars in an extended attribute name
Namespaces
set value, fail if attr does not exist
size of an extended attribute value (64k)
system call group quota type
system call project quota type
system call user quota type
Check file is executable.
Limit the stack by to some sane default: root can always increase this limit if needed.. 8MB seems reasonable.
decimal division by zero
packed decimal error
decimal overflow
invalid ASCII digit
invalid decimal digit
bundle-update (modification) in progress
illegal break
Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using the O_SYNC flag. We continue to use the existing numerical value for O_DSYNC semantics now, but using the correct symbolic name for it. This new value is used to request true Posix O_SYNC semantics. It is defined in this strange way to make sure applications compiled against new headers get at least O_DSYNC semantics on older kernels.
non-ABI; internal use
performed a listen
Wait on all children, regardless of type
Wait only on non-SIGCHLD children
Don’t wait on children of other threads in this group
Functions
FUTEX_WAKE_OP will perform atomically int oldval = *(int *)UADDR2; *(int *)UADDR2 = oldval OP OPARG; if (oldval CMP CMPARG) wake UADDR2;
Definitions of the bits in an Internet address integer. On subnets, host and network parts are found according to the subnet mask, not these masks.
Used to create numbers.
used to decode ioctl numbers..
Disk quota - quotactl(2) commands for the XFS Quota Manager (XQM). forms first QCMD argument
test if for XFS
Type Definitions
Most 64-bit platforms use ‘long’, while most 32-bit platforms use ‘__u32’. Yes, they differ in signedness as well as size. Special cases can override it for themselves – except for S390x, which is just a little too special for us. And MIPS, which I’m not touching with a 10’ pole.
The default “si_band” type is “long”, as specified by POSIX. However, some architectures want to override this to “int” for historical compatibility reasons, so we allow that.
These types are common across all compat ABIs
key handle permissions mask
key handle serial number
Type of a SYSV IPC key.
anything below here should be completely generic
not actually used, but required for linux/syscalls.h
The type of an index into the pagecache.
Type in which we store ids in memory
Type in which we store sizes
Flags for preadv2/pwritev2:
sa_sigaction_fn_t as usize
The type used for indexing onto a disc or disc partition.
Type of a signal handler. signalfn_t as usize
restorefn_t as usize
Most 32 bit architectures use “unsigned int” size_t, and all 64 bit architectures use “unsigned long” size_t.
socket-state enum.
Unions
inputs to lookup
SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note Types and definitions for AF_INET6 Linux INET6 implementation
arg for semctl system calls.