summaryrefslogtreecommitdiffstats
path: root/man2
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:41:07 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:41:07 +0000
commit3af6d22bb3850ab2bac67287e3a3d3b0e32868e5 (patch)
tree3ee7a3ec64525911fa865bb984c86d997d855527 /man2
parentAdding debian version 6.05.01-1. (diff)
downloadmanpages-3af6d22bb3850ab2bac67287e3a3d3b0e32868e5.tar.xz
manpages-3af6d22bb3850ab2bac67287e3a3d3b0e32868e5.zip
Merging upstream version 6.7.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man2')
-rw-r--r--man2/_exit.224
-rw-r--r--man2/_syscall.218
-rw-r--r--man2/accept.230
-rw-r--r--man2/access.269
-rw-r--r--man2/acct.210
-rw-r--r--man2/add_key.238
-rw-r--r--man2/adjtimex.231
-rw-r--r--man2/alarm.214
-rw-r--r--man2/alloc_hugepages.220
-rw-r--r--man2/arch_prctl.232
-rw-r--r--man2/bdflush.216
-rw-r--r--man2/bind.220
-rw-r--r--man2/bpf.278
-rw-r--r--man2/brk.218
-rw-r--r--man2/cacheflush.218
-rw-r--r--man2/capget.224
-rw-r--r--man2/chdir.214
-rw-r--r--man2/chmod.236
-rw-r--r--man2/chown.238
-rw-r--r--man2/chroot.224
-rw-r--r--man2/clock_getres.285
-rw-r--r--man2/clock_nanosleep.254
-rw-r--r--man2/clone.2127
-rw-r--r--man2/close.244
-rw-r--r--man2/close_range.235
-rw-r--r--man2/connect.218
-rw-r--r--man2/copy_file_range.220
-rw-r--r--man2/create_module.28
-rw-r--r--man2/delete_module.218
-rw-r--r--man2/dup.222
-rw-r--r--man2/epoll_create.210
-rw-r--r--man2/epoll_ctl.216
-rw-r--r--man2/epoll_wait.236
-rw-r--r--man2/eventfd.235
-rw-r--r--man2/execve.2115
-rw-r--r--man2/execveat.222
-rw-r--r--man2/exit_group.26
-rw-r--r--man2/fallocate.240
-rw-r--r--man2/fanotify_init.230
-rw-r--r--man2/fanotify_mark.241
-rw-r--r--man2/fcntl.2202
-rw-r--r--man2/flock.238
-rw-r--r--man2/fork.214
-rw-r--r--man2/fsync.247
-rw-r--r--man2/futex.266
-rw-r--r--man2/futimesat.220
-rw-r--r--man2/get_kernel_syms.218
-rw-r--r--man2/get_mempolicy.222
-rw-r--r--man2/get_robust_list.224
-rw-r--r--man2/getcpu.212
-rw-r--r--man2/getdents.246
-rw-r--r--man2/getdomainname.214
-rw-r--r--man2/getgid.28
-rw-r--r--man2/getgroups.234
-rw-r--r--man2/gethostname.216
-rw-r--r--man2/getitimer.238
-rw-r--r--man2/getpagesize.214
-rw-r--r--man2/getpeername.26
-rw-r--r--man2/getpid.210
-rw-r--r--man2/getpriority.224
-rw-r--r--man2/getrandom.226
-rw-r--r--man2/getresuid.26
-rw-r--r--man2/getrlimit.259
-rw-r--r--man2/getrusage.230
-rw-r--r--man2/getsid.28
-rw-r--r--man2/getsockname.26
-rw-r--r--man2/getsockopt.216
-rw-r--r--man2/gettid.26
-rw-r--r--man2/gettimeofday.240
-rw-r--r--man2/getuid.212
-rw-r--r--man2/getunwind.216
-rw-r--r--man2/getxattr.216
-rw-r--r--man2/idle.26
-rw-r--r--man2/init_module.244
-rw-r--r--man2/inotify_add_watch.28
-rw-r--r--man2/inotify_init.28
-rw-r--r--man2/inotify_rm_watch.26
-rw-r--r--man2/intro.212
-rw-r--r--man2/io_cancel.210
-rw-r--r--man2/io_destroy.210
-rw-r--r--man2/io_getevents.220
-rw-r--r--man2/io_setup.212
-rw-r--r--man2/io_submit.218
-rw-r--r--man2/ioctl.288
-rw-r--r--man2/ioctl_console.234
-rw-r--r--man2/ioctl_fat.246
-rw-r--r--man2/ioctl_ficlonerange.214
-rw-r--r--man2/ioctl_fideduperange.224
-rw-r--r--man2/ioctl_fslabel.26
-rw-r--r--man2/ioctl_getfsmap.246
-rw-r--r--man2/ioctl_iflags.212
-rw-r--r--man2/ioctl_ns.248
-rw-r--r--man2/ioctl_pagemap_scan.2206
-rw-r--r--man2/ioctl_pipe.24
-rw-r--r--man2/ioctl_tty.253
-rw-r--r--man2/ioctl_userfaultfd.2340
-rw-r--r--man2/ioperm.210
-rw-r--r--man2/iopl.210
-rw-r--r--man2/ioprio_set.236
-rw-r--r--man2/ipc.28
-rw-r--r--man2/kcmp.226
-rw-r--r--man2/kexec_load.228
-rw-r--r--man2/keyctl.238
-rw-r--r--man2/kill.224
-rw-r--r--man2/landlock_add_rule.210
-rw-r--r--man2/landlock_create_ruleset.210
-rw-r--r--man2/landlock_restrict_self.212
-rw-r--r--man2/link.232
-rw-r--r--man2/listen.212
-rw-r--r--man2/listxattr.226
-rw-r--r--man2/llseek.214
-rw-r--r--man2/lookup_dcookie.212
-rw-r--r--man2/lseek.222
-rw-r--r--man2/madvise.218
-rw-r--r--man2/mbind.253
-rw-r--r--man2/membarrier.246
-rw-r--r--man2/memfd_create.240
-rw-r--r--man2/memfd_secret.224
-rw-r--r--man2/migrate_pages.218
-rw-r--r--man2/mincore.216
-rw-r--r--man2/mkdir.226
-rw-r--r--man2/mknod.234
-rw-r--r--man2/mlock.250
-rw-r--r--man2/mmap.262
-rw-r--r--man2/mmap2.212
-rw-r--r--man2/modify_ldt.228
-rw-r--r--man2/mount.274
-rw-r--r--man2/mount_setattr.262
-rw-r--r--man2/move_pages.226
-rw-r--r--man2/mprotect.232
-rw-r--r--man2/mq_getsetattr.26
-rw-r--r--man2/mremap.233
-rw-r--r--man2/msgctl.240
-rw-r--r--man2/msgget.216
-rw-r--r--man2/msgop.248
-rw-r--r--man2/msync.212
-rw-r--r--man2/nanosleep.239
-rw-r--r--man2/nfsservctl.26
-rw-r--r--man2/nice.218
-rw-r--r--man2/open.2109
-rw-r--r--man2/open_by_handle_at.298
-rw-r--r--man2/openat2.234
-rw-r--r--man2/outb.214
-rw-r--r--man2/pause.24
-rw-r--r--man2/pciconfig_read.24
-rw-r--r--man2/perf_event_open.2205
-rw-r--r--man2/perfmonctl.216
-rw-r--r--man2/personality.210
-rw-r--r--man2/pidfd_getfd.216
-rw-r--r--man2/pidfd_open.216
-rw-r--r--man2/pidfd_send_signal.220
-rw-r--r--man2/pipe.218
-rw-r--r--man2/pivot_root.238
-rw-r--r--man2/pkey_alloc.214
-rw-r--r--man2/poll.274
-rw-r--r--man2/posix_fadvise.226
-rw-r--r--man2/prctl.2141
-rw-r--r--man2/pread.220
-rw-r--r--man2/process_madvise.261
-rw-r--r--man2/process_vm_readv.236
-rw-r--r--man2/ptrace.2348
-rw-r--r--man2/query_module.212
-rw-r--r--man2/quotactl.248
-rw-r--r--man2/read.222
-rw-r--r--man2/readahead.26
-rw-r--r--man2/readdir.216
-rw-r--r--man2/readlink.230
-rw-r--r--man2/readv.248
-rw-r--r--man2/reboot.251
-rw-r--r--man2/recv.254
-rw-r--r--man2/recvmmsg.234
-rw-r--r--man2/remap_file_pages.218
-rw-r--r--man2/removexattr.214
-rw-r--r--man2/rename.242
-rw-r--r--man2/request_key.250
-rw-r--r--man2/restart_syscall.210
-rw-r--r--man2/rmdir.24
-rw-r--r--man2/rt_sigqueueinfo.220
-rw-r--r--man2/s390_guarded_storage.218
-rw-r--r--man2/s390_pci_mmio_write.28
-rw-r--r--man2/s390_runtime_instr.212
-rw-r--r--man2/s390_sthyi.222
-rw-r--r--man2/sched_get_priority_max.212
-rw-r--r--man2/sched_rr_get_interval.26
-rw-r--r--man2/sched_setaffinity.244
-rw-r--r--man2/sched_setattr.236
-rw-r--r--man2/sched_setparam.214
-rw-r--r--man2/sched_setscheduler.228
-rw-r--r--man2/sched_yield.210
-rw-r--r--man2/seccomp.278
-rw-r--r--man2/seccomp_unotify.2124
-rw-r--r--man2/select.274
-rw-r--r--man2/select_tut.218
-rw-r--r--man2/semctl.262
-rw-r--r--man2/semget.230
-rw-r--r--man2/semop.244
-rw-r--r--man2/send.240
-rw-r--r--man2/sendfile.241
-rw-r--r--man2/sendmmsg.224
-rw-r--r--man2/set_mempolicy.222
-rw-r--r--man2/set_thread_area.260
-rw-r--r--man2/set_tid_address.216
-rw-r--r--man2/seteuid.220
-rw-r--r--man2/setfsgid.210
-rw-r--r--man2/setfsuid.214
-rw-r--r--man2/setgid.28
-rw-r--r--man2/setns.228
-rw-r--r--man2/setpgid.248
-rw-r--r--man2/setresuid.218
-rw-r--r--man2/setreuid.226
-rw-r--r--man2/setsid.214
-rw-r--r--man2/setuid.218
-rw-r--r--man2/setup.28
-rw-r--r--man2/setxattr.216
-rw-r--r--man2/sgetmask.214
-rw-r--r--man2/shmctl.248
-rw-r--r--man2/shmget.224
-rw-r--r--man2/shmop.248
-rw-r--r--man2/shutdown.24
-rw-r--r--man2/sigaction.2111
-rw-r--r--man2/sigaltstack.239
-rw-r--r--man2/signal.236
-rw-r--r--man2/signalfd.234
-rw-r--r--man2/sigpending.214
-rw-r--r--man2/sigprocmask.240
-rw-r--r--man2/sigreturn.212
-rw-r--r--man2/sigsuspend.214
-rw-r--r--man2/sigwaitinfo.230
-rw-r--r--man2/socket.242
-rw-r--r--man2/socketcall.212
-rw-r--r--man2/socketpair.212
-rw-r--r--man2/splice.222
-rw-r--r--man2/spu_create.216
-rw-r--r--man2/spu_run.222
-rw-r--r--man2/stat.246
-rw-r--r--man2/statfs.232
-rw-r--r--man2/statx.238
-rw-r--r--man2/stime.212
-rw-r--r--man2/subpage_prot.214
-rw-r--r--man2/swapon.229
-rw-r--r--man2/symlink.234
-rw-r--r--man2/sync.224
-rw-r--r--man2/sync_file_range.216
-rw-r--r--man2/syscall.238
-rw-r--r--man2/syscalls.239
-rw-r--r--man2/sysctl.222
-rw-r--r--man2/sysfs.28
-rw-r--r--man2/sysinfo.216
-rw-r--r--man2/syslog.216
-rw-r--r--man2/tee.210
-rw-r--r--man2/time.247
-rw-r--r--man2/timer_create.246
-rw-r--r--man2/timer_delete.28
-rw-r--r--man2/timer_getoverrun.214
-rw-r--r--man2/timer_settime.224
-rw-r--r--man2/timerfd_create.250
-rw-r--r--man2/times.228
-rw-r--r--man2/tkill.214
-rw-r--r--man2/truncate.226
-rw-r--r--man2/umask.230
-rw-r--r--man2/umount.214
-rw-r--r--man2/uname.212
-rw-r--r--man2/unimplemented.26
-rw-r--r--man2/unlink.232
-rw-r--r--man2/unshare.220
-rw-r--r--man2/uselib.214
-rw-r--r--man2/userfaultfd.2104
-rw-r--r--man2/ustat.210
-rw-r--r--man2/utime.226
-rw-r--r--man2/utimensat.274
-rw-r--r--man2/vfork.226
-rw-r--r--man2/vhangup.28
-rw-r--r--man2/vm86.28
-rw-r--r--man2/vmsplice.210
-rw-r--r--man2/wait.258
-rw-r--r--man2/wait4.236
-rw-r--r--man2/write.230
277 files changed, 4943 insertions, 4204 deletions
diff --git a/man2/_exit.2 b/man2/_exit.2
index 22cccd9..ea3ca63 100644
--- a/man2/_exit.2
+++ b/man2/_exit.2
@@ -6,7 +6,7 @@
.\" Modified Wed Jul 21 23:02:38 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified 2001-11-17, aeb
.\"
-.TH _exit 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH _exit 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
_exit, _Exit \- terminate the calling process
.SH LIBRARY
@@ -15,19 +15,19 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "[[noreturn]] void _exit(int " status );
-.PP
+.P
.B #include <stdlib.h>
-.PP
+.P
.BI "[[noreturn]] void _Exit(int " status );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR _Exit ():
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
@@ -45,14 +45,14 @@ operation).
The process's parent is sent a
.B SIGCHLD
signal.
-.PP
+.P
The value
.I "status & 0xFF"
is returned to the parent process as the process's exit status, and
can be collected by the parent using one of the
.BR wait (2)
family of calls.
-.PP
+.P
The function
.BR _Exit ()
is equivalent to
@@ -68,14 +68,14 @@ POSIX.1-2008.
C11, POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4, 4.3BSD.
-.PP
+.P
.BR _Exit ()
was introduced by C99.
.SH NOTES
For a discussion on the effects of an exit, the transmission of
exit status, zombie processes, signals sent, and so on, see
.BR exit (3).
-.PP
+.P
The function
.BR _exit ()
is like
@@ -108,7 +108,7 @@ which is to terminate a process,
and these are the semantics specified by POSIX.1 and implemented
by the C library wrapper function.
On modern systems, this means termination of all threads in the process.
-.PP
+.P
By contrast with the C library wrapper function, the raw Linux
.BR _exit ()
system call terminates only the calling thread, and actions such as
@@ -117,7 +117,7 @@ reparenting child processes or sending
to the parent process are performed only if this is
the last thread in the thread group.
.\" _exit() is used by pthread_exit() to terminate the calling thread
-.PP
+.P
Up to glibc 2.3, the
.BR _exit ()
wrapper function invoked the kernel system call of the same name.
diff --git a/man2/_syscall.2 b/man2/_syscall.2
index ef6542f..84612a1 100644
--- a/man2/_syscall.2
+++ b/man2/_syscall.2
@@ -16,15 +16,15 @@
.\" 2007-10-23 mtk: created as a new page, by taking the content
.\" specific to the _syscall() macros from intro(2).
.\"
-.TH _syscall 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH _syscall 2 2024-02-26 "Linux man-pages 6.7"
.SH NAME
_syscall \- invoking a system call without library support (OBSOLETE)
.SH SYNOPSIS
.nf
.B #include <linux/unistd.h>
-.PP
+.P
A _syscall macro
-.PP
+.P
desired system call
.fi
.SH DESCRIPTION
@@ -33,13 +33,13 @@ You need to know how many arguments, their types,
and the function return type.
There are seven macros that make the actual call into the system easier.
They have the form:
-.PP
+.P
.in +4n
.EX
.RI _syscall X ( type , name , type1 , arg1 , type2 , arg2 ,...)
.EE
.in
-.PP
+.P
where
.IP
.I X
@@ -57,7 +57,7 @@ is the Nth argument's type
.IP
.I argN
is the name of the Nth argument
-.PP
+.P
These macros create a function called
.I name
with the arguments you
@@ -85,7 +85,7 @@ The _syscall() macros
produce a prototype.
You may have to
create one, especially for C++ users.
-.PP
+.P
System calls are not required to return only positive or negative error
codes.
You need to read the source to be sure how it will return errors.
@@ -106,7 +106,7 @@ when
is negative.
For the error codes, see
.BR errno (3).
-.PP
+.P
When defining a system call, the argument types
.I must
be
@@ -123,7 +123,7 @@ passed by-value or by-pointer (for aggregates like structs).
.\" Otherwise, the use of a _syscall macro is required.
.\"
.SH EXAMPLES
-.\" [[deprecated]] SRC BEGIN (_syscall.c)
+.\" SRC BEGIN (_syscall.c)
.EX
#include <stdio.h>
#include <stdlib.h>
diff --git a/man2/accept.2 b/man2/accept.2
index 340fdb8..bc73416 100644
--- a/man2/accept.2
+++ b/man2/accept.2
@@ -10,7 +10,7 @@
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2008-12-04, mtk, Add documentation of accept4()
.\"
-.TH accept 2 2023-04-05 "Linux man-pages 6.05.01"
+.TH accept 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
accept, accept4 \- accept a connection on a socket
.SH LIBRARY
@@ -19,13 +19,13 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int accept(int " sockfd ", struct sockaddr *_Nullable restrict " addr ,
.BI " socklen_t *_Nullable restrict " addrlen );
-.PP
+.P
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/socket.h>
-.PP
+.P
.BI "int accept4(int " sockfd ", struct sockaddr *_Nullable restrict " addr ,
.BI " socklen_t *_Nullable restrict " addrlen ", int " flags );
.fi
@@ -44,7 +44,7 @@ The newly created socket is not in the listening state.
The original socket
.I sockfd
is unaffected by this call.
-.PP
+.P
The argument
.I sockfd
is a socket that has been created with
@@ -53,7 +53,7 @@ bound to a local address with
.BR bind (2),
and is listening for connections after a
.BR listen (2).
-.PP
+.P
The argument
.I addr
is a pointer to a
@@ -71,7 +71,7 @@ When
is NULL, nothing is filled in; in this case,
.I addrlen
is not used, and should also be NULL.
-.PP
+.P
The
.I addrlen
argument is a value-result argument:
@@ -79,12 +79,12 @@ the caller must initialize it to contain the
size (in bytes) of the structure pointed to by
.IR addr ;
on return it will contain the actual size of the peer address.
-.PP
+.P
The returned address is truncated if the buffer provided is too small;
in this case,
.I addrlen
will return a value greater than was supplied to the call.
-.PP
+.P
If no pending
connections are present on the queue, and the socket is not marked as
nonblocking,
@@ -97,7 +97,7 @@ fails with the error
.B EAGAIN
or
.BR EWOULDBLOCK .
-.PP
+.P
In order to be notified of incoming connections on a socket, you can use
.BR select (2),
.BR poll (2),
@@ -112,7 +112,7 @@ Alternatively, you can set the socket to deliver
when activity occurs on a socket; see
.BR socket (7)
for details.
-.PP
+.P
If
.I flags
is 0, then
@@ -222,7 +222,9 @@ The per-process limit on the number of open file descriptors has been reached.
.B ENFILE
The system-wide limit on the total number of open files has been reached.
.TP
-.BR ENOBUFS ", " ENOMEM
+.B ENOBUFS
+.TQ
+.B ENOMEM
Not enough free memory.
This often means that the memory allocation is limited by the socket buffer
limits, not by the system memory.
@@ -241,7 +243,7 @@ Firewall rules forbid connection.
.TP
.B EPROTO
Protocol error.
-.PP
+.P
In addition, network errors for the new socket and as defined
for the protocol may be returned.
Various Linux kernels can
@@ -313,7 +315,7 @@ needs to have the
.B O_NONBLOCK
flag set (see
.BR socket (7)).
-.PP
+.P
For certain protocols which require an explicit confirmation,
such as DECnet,
.BR accept ()
diff --git a/man2/access.2 b/man2/access.2
index 3f492d2..7e60a33 100644
--- a/man2/access.2
+++ b/man2/access.2
@@ -20,7 +20,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk
.\" 2007-06-10, mtk, various parts rewritten, and added BUGS section.
.\"
-.TH access 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH access 2 2024-01-01 "Linux man-pages 6.7"
.SH NAME
access, faccessat, faccessat2 \- check user's permissions for a file
.SH LIBRARY
@@ -29,30 +29,30 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int access(const char *" pathname ", int " mode );
-.PP
+.P
.BR "#include <fcntl.h>" " /* Definition of " AT_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int faccessat(int " dirfd ", const char *" pathname ", int " \
mode ", int " flags );
/* But see C library/kernel differences, below */
-.PP
+.P
.BR "#include <fcntl.h>" " /* Definition of " AT_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.B int syscall(SYS_faccessat2,
.BI " int " dirfd ", const char *" pathname ", int " mode \
", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR faccessat ():
.nf
Since glibc 2.10:
@@ -67,7 +67,7 @@ checks whether the calling process can access the file
If
.I pathname
is a symbolic link, it is dereferenced.
-.PP
+.P
The
.I mode
specifies the accessibility check(s) to be performed,
@@ -81,7 +81,7 @@ tests for the existence of the file.
.BR R_OK ", " W_OK ", and " X_OK
test whether the file exists and grants read, write, and
execute permissions, respectively.
-.PP
+.P
The check is done using the calling process's
.I real
UID and GID, rather than the effective IDs as is done when
@@ -92,7 +92,7 @@ Similarly, for the root user, the check uses the set of
permitted capabilities rather than the set of effective
capabilities; and for non-root users, the check uses an empty set
of capabilities.
-.PP
+.P
This allows set-user-ID programs and capability-endowed programs
to easily determine the invoking user's authority.
In other words,
@@ -105,7 +105,7 @@ read/write/execute this file?",
which gives set-user-ID programs the possibility to
prevent malicious users from causing them to read files
which users shouldn't be able to read.
-.PP
+.P
If the calling process is privileged (i.e., its real UID is zero),
then an
.B X_OK
@@ -116,7 +116,7 @@ is enabled for any of the file owner, group, or other.
operates in exactly the same way as
.BR access (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -126,7 +126,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR access ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -138,13 +138,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR access ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
.I flags
is constructed by ORing together zero or more of the following values:
.TP
@@ -155,12 +155,33 @@ By default,
uses the real IDs (like
.BR access ()).
.TP
+.BR AT_EMPTY_PATH " (since Linux 5.8)"
+If
+.I pathname
+is an empty string, operate on the file referred to by
+.I dirfd
+(which may have been obtained using the
+.BR open (2)
+.B O_PATH
+flag).
+In this case,
+.I dirfd
+can refer to any type of file, not just a directory.
+If
+.I dirfd
+is
+.BR AT_FDCWD ,
+the call operates on the current working directory.
+This flag is Linux-specific; define
+.B _GNU_SOURCE
+to obtain its definition.
+.TP
.B AT_SYMLINK_NOFOLLOW
If
.I pathname
is a symbolic link, do not dereference it:
instead return information about the link itself.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -346,20 +367,20 @@ interval between checking and opening the file to manipulate it.
a safer alternative would be to temporarily switch the process's
effective user ID to the real ID and then call
.BR open (2).)
-.PP
+.P
.BR access ()
always dereferences symbolic links.
If you need to check the permissions on a symbolic link, use
.BR faccessat ()
with the flag
.BR AT_SYMLINK_NOFOLLOW .
-.PP
+.P
These calls return an error if any of the access types in
.I mode
is denied, even if some of the other access types in
.I mode
are permitted.
-.PP
+.P
A file is accessible only if the permissions on each of the
directories in the path prefix of
.I pathname
@@ -367,7 +388,7 @@ grant search (i.e., execute) access.
If any directory is inaccessible, then the
.BR access ()
call fails, regardless of the permissions on the file itself.
-.PP
+.P
Only access bits are checked, not the file type or contents.
Therefore, if a directory is found to be writable,
it probably means that files can be created in the directory,
@@ -375,7 +396,7 @@ and not that the directory can be written as a file.
Similarly, a DOS file may be reported as executable, but the
.BR execve (2)
call will still fail.
-.PP
+.P
These calls
may not work correctly on NFSv2 filesystems with UID mapping enabled,
because UID mapping is done on the server and hidden from the client,
@@ -401,7 +422,7 @@ Starting with glibc 2.33, the wrapper function avoids this bug
by making use of the
.BR faccessat2 ()
system call where it is provided by the underlying kernel.
-.PP
+.P
In Linux 2.4 (and earlier) there is some strangeness in the handling of
.B X_OK
tests for superuser.
@@ -424,7 +445,7 @@ returns 0 for such files.
.\" This behavior appears to have been an implementation accident.
Early Linux 2.6 (up to and including Linux 2.6.3)
also behaved in the same way as Linux 2.4.
-.PP
+.P
Before Linux 2.6.20,
these calls ignored the effect of the
.B MS_NOEXEC
diff --git a/man2/acct.2 b/man2/acct.2
index de03a0e..d3ce589 100644
--- a/man2/acct.2
+++ b/man2/acct.2
@@ -9,7 +9,7 @@
.\" Modified 1998-11-04 by Tigran Aivazian <tigran@sco.com>
.\" Modified 2004-05-27, 2004-06-17, 2004-06-23 by Michael Kerrisk
.\"
-.TH acct 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH acct 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
acct \- switch process accounting on or off
.SH LIBRARY
@@ -18,15 +18,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int acct(const char *_Nullable " filename );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR acct ():
.nf
Since glibc 2.21:
@@ -129,7 +129,7 @@ SVr4, 4.3BSD.
.SH NOTES
No accounting is produced for programs running when a system crash occurs.
In particular, nonterminating processes are never accounted for.
-.PP
+.P
The structure of the records written to the accounting file is described in
.BR acct (5).
.SH SEE ALSO
diff --git a/man2/add_key.2 b/man2/add_key.2
index 570db11..6e81ec9 100644
--- a/man2/add_key.2
+++ b/man2/add_key.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH add_key 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH add_key 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
add_key \- add a key to the kernel's key management facility
.SH LIBRARY
@@ -13,12 +13,12 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <keyutils.h>
-.PP
+.P
.BI "key_serial_t add_key(const char *" type ", const char *" description ,
.BI " const void " payload [. plen "], size_t " plen ,
.BI " key_serial_t " keyring ");"
.fi
-.PP
+.P
.IR Note :
There is no glibc wrapper for this system call; see NOTES.
.SH DESCRIPTION
@@ -34,10 +34,10 @@ of length
attaches it to the nominated
.IR keyring ,
and returns the key's serial number.
-.PP
+.P
The key may be rejected if the provided data is in the wrong format or
it is invalid in some other way.
-.PP
+.P
If the destination
.I keyring
already contains a key that matches the specified
@@ -55,7 +55,7 @@ and it will displace the link to the extant key from the keyring.
.\" is consequently unlinked, then keys that it was anchoring
.\" will have their reference count decreased by one (and may
.\" consequently be garbage collected). Is this all correct?
-.PP
+.P
The destination
.I keyring
serial number may be that of a valid keyring for which the caller has
@@ -96,7 +96,7 @@ argument to
.BR add_key ()
are the following:
.TP
-.I """keyring"""
+.I \[dq]keyring\[dq]
Keyrings are special key types that may contain links to sequences of other
keys of any type.
If this interface is used to create a keyring, then
@@ -105,21 +105,21 @@ should be NULL and
.I plen
should be zero.
.TP
-.I """user"""
+.I \[dq]user\[dq]
This is a general purpose key type whose payload may be read and updated
by user-space applications.
The key is kept entirely within kernel memory.
The payload for keys of this type is a blob of arbitrary data
of up to 32,767 bytes.
.TP
-.IR """logon""" " (since Linux 3.3)"
+.IR \[dq]logon\[dq] " (since Linux 3.3)"
.\" commit 9f6ed2ca257fa8650b876377833e6f14e272848b
This key type is essentially the same as
-.IR """user""" ,
+.IR \[dq]user\[dq] ,
but it does not permit the key to read.
This is suitable for storing payloads
that you do not want to be readable from user space.
-.PP
+.P
This key type vets the
.I description
to ensure that it is qualified by a "service" prefix,
@@ -127,15 +127,15 @@ by checking to ensure that the
.I description
contains a ':' that is preceded by other characters.
.TP
-.IR """big_key""" " (since Linux 3.13)"
+.IR \[dq]big_key\[dq] " (since Linux 3.13)"
.\" commit ab3c3587f8cda9083209a61dbe3a4407d3cada10
This key type is similar to
-.IR """user""" ,
+.IR \[dq]user\[dq] ,
but may hold a payload of up to 1\ MiB.
If the key payload is large enough,
then it may be stored encrypted in tmpfs
(which can be swapped out) rather than kernel memory.
-.PP
+.P
For further details on these key types, see
.BR keyrings (7).
.SH RETURN VALUE
@@ -175,11 +175,11 @@ The payload data was invalid.
.B EINVAL
.I type
was
-.I """logon"""
+.I \[dq]logon\[dq]
and the
.I description
was not qualified with a prefix string of the form
-.IR """service:""" .
+.IR \[dq]service:\[dq] .
.TP
.B EKEYEXPIRED
The keyring has expired.
@@ -202,7 +202,7 @@ Key types that begin with a period are reserved to the implementation.
.B EPERM
.I type
was
-.I """keyring"""
+.I \[dq]keyring\[dq]
and the
.I description
started with a period (\[aq].\[aq]).
@@ -227,7 +227,7 @@ The program below creates a key with the type, description, and payload
specified in its command-line arguments,
and links that key into the session keyring.
The following shell session demonstrates the use of the program:
-.PP
+.P
.in +4n
.EX
$ \fB./a.out user mykey "Some payload"\fP
@@ -285,7 +285,7 @@ main(int argc, char *argv[])
.BR thread\-keyring (7),
.BR user\-keyring (7),
.BR user\-session\-keyring (7)
-.PP
+.P
The kernel source files
.I Documentation/security/keys/core.rst
and
diff --git a/man2/adjtimex.2 b/man2/adjtimex.2
index c850a3d..e5264df 100644
--- a/man2/adjtimex.2
+++ b/man2/adjtimex.2
@@ -8,7 +8,7 @@
.\" Modified 1997-07-30 by Paul Slootman <paul@wurtel.demon.nl>
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH adjtimex 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH adjtimex 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
adjtimex, clock_adjtime, ntp_adjtime \- tune kernel clock
.SH LIBRARY
@@ -17,11 +17,11 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/timex.h>
-.PP
+.P
.BI "int adjtimex(struct timex *" "buf" );
-.PP
+.P
.BI "int clock_adjtime(clockid_t " clk_id, " struct timex *" "buf" );
-.PP
+.P
.BI "int ntp_adjtime(struct timex *" buf );
.fi
.SH DESCRIPTION
@@ -34,7 +34,7 @@ It takes a pointer to a
structure, updates kernel parameters from (selected) field values,
and returns the same structure updated with the current kernel values.
This structure is declared as follows:
-.PP
+.P
.in +4n
.EX
struct timex {
@@ -81,7 +81,7 @@ struct timex {
};
.EE
.in
-.PP
+.P
The
.I modes
field determines which parameters, if any, to set.
@@ -204,7 +204,7 @@ and the difference between TAI and UTC, see
.B ADJ_TICK
Set tick value from
.IR buf.tick .
-.PP
+.P
Alternatively,
.I modes
can be specified as either of the following (multibit mask) values,
@@ -236,13 +236,13 @@ This feature was added in Linux 2.6.24,
but did not work correctly
.\" commit 916c7a855174e3b53d182b97a26b2e27a29726a1
until Linux 2.6.28.
-.PP
+.P
Ordinary users are restricted to a value of either 0 or
.B ADJ_OFFSET_SS_READ
for
.IR modes .
Only the superuser may set any parameters.
-.PP
+.P
The
.I buf.status
field is a bit mask that is used to set and/or retrieve status
@@ -346,7 +346,7 @@ Mode (0 = Phase Locked Loop, 1 = Frequency Locked Loop).
.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db
.\" Author: Roman Zippel <zippel@linux-m68k.org>
Clock source (0 = A, 1 = B); currently unused.
-.PP
+.P
Attempts to set read-only
.I status
bits are silently ignored.
@@ -452,13 +452,13 @@ The symbolic name
is a synonym for
.BR TIME_ERROR ,
provided for backward compatibility.
-.PP
+.P
Note that starting with Linux 3.4,
.\" commit 6b43ae8a619d17c4935c3320d2ef9e92bdeed05d changed to asynchronous
.\" operation, so we can no longer rely on the return code.
the call operates asynchronously and the return value usually will
not reflect a state change caused by the call itself.
-.PP
+.P
On failure, these calls return \-1 and set
.I errno
to indicate the error.
@@ -548,14 +548,13 @@ T{
.BR \%ntp_adjtime ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH STANDARDS
.TP
.BR adjtimex ()
.TQ
.BR clock_adjtime ()
Linux.
-.PP
+.P
The preferred API for the NTP daemon is
.BR ntp_adjtime ().
.SH NOTES
@@ -571,7 +570,7 @@ actually means 2\[ha]-16 ppm, and 2\[ha]16=65536 is 1 ppm.
This is the case for both input values (in the case of
.IR freq )
and output values.
-.PP
+.P
The leap-second processing triggered by
.B STA_INS
and
@@ -589,7 +588,7 @@ for the leap second to be inserted or deleted.
.BR time (7),
.BR adjtimex (8),
.BR hwclock (8)
-.PP
+.P
.ad l
.UR http://www.slac.stanford.edu/comp/unix/\:package/\:rtems/\:src/\:ssrlApps/\:ntpNanoclock/\:api.htm
NTP "Kernel Application Program Interface"
diff --git a/man2/alarm.2 b/man2/alarm.2
index cae0890..18a93ad 100644
--- a/man2/alarm.2
+++ b/man2/alarm.2
@@ -7,7 +7,7 @@
.\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer <aeb@cwi.nl>
.\" Modified Wed Nov 6 03:46:05 1996 by Eric S. Raymond <esr@thyrsus.com>
.\"
-.TH alarm 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH alarm 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
alarm \- set an alarm clock for delivery of a signal
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "unsigned int alarm(unsigned int " seconds );
.fi
.SH DESCRIPTION
@@ -26,11 +26,11 @@ arranges for a
signal to be delivered to the calling process in
.I seconds
seconds.
-.PP
+.P
If
.I seconds
is zero, any pending alarm is canceled.
-.PP
+.P
In any event any previously set
.BR alarm ()
is canceled.
@@ -49,14 +49,14 @@ and
.BR setitimer (2)
share the same timer; calls to one will interfere with use of the
other.
-.PP
+.P
Alarms created by
.BR alarm ()
are preserved across
.BR execve (2)
and are not inherited by children created via
.BR fork (2).
-.PP
+.P
.BR sleep (3)
may be implemented using
.BR SIGALRM ;
@@ -65,7 +65,7 @@ mixing calls to
and
.BR sleep (3)
is a bad idea.
-.PP
+.P
Scheduling delays can, as ever, cause the execution of the process to
be delayed by an arbitrary amount of time.
.SH SEE ALSO
diff --git a/man2/alloc_hugepages.2 b/man2/alloc_hugepages.2
index 33671da..0aba97e 100644
--- a/man2/alloc_hugepages.2
+++ b/man2/alloc_hugepages.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH alloc_hugepages 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH alloc_hugepages 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
alloc_hugepages, free_hugepages \- allocate or free huge pages
.SH SYNOPSIS
@@ -15,7 +15,7 @@ size_t " len ,
.BI "int syscall(SYS_free_hugepages, void *" addr );
.\" asmlinkage int sys_free_hugepages(unsigned long addr);
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -31,7 +31,7 @@ They existed only on i386 and ia64 (when built with
In Linux 2.4.20, the syscall numbers exist,
but the calls fail with the error
.BR ENOSYS .
-.PP
+.P
On i386 the memory management hardware knows about ordinary pages (4\ KiB)
and huge pages (2 or 4\ MiB).
Similarly ia64 knows about huge pages of
@@ -39,7 +39,7 @@ several sizes.
These system calls serve to map huge pages into the
process's memory or to free them again.
Huge pages are locked into memory, and are not swapped.
-.PP
+.P
The
.I key
argument is an identifier.
@@ -48,7 +48,7 @@ not inherited by children.
When positive the pages are shared with other applications using the same
.IR key ,
and inherited by child processes.
-.PP
+.P
The
.I addr
argument of
@@ -63,12 +63,12 @@ argument of
.BR alloc_hugepages ()
is a hint, that the kernel may or may not follow.
Addresses must be properly aligned.
-.PP
+.P
The
.I len
argument is the length of the required segment.
It must be a multiple of the huge page size.
-.PP
+.P
The
.I prot
argument specifies the memory protection of the segment.
@@ -76,7 +76,7 @@ It is one of
.BR PROT_READ ,
.BR PROT_WRITE ,
.BR PROT_EXEC .
-.PP
+.P
The
.I flag
argument is ignored, unless
@@ -124,11 +124,11 @@ Memory backed by huge pages (if the CPU supports them) is obtained by
using
.BR mmap (2)
to map files in this virtual filesystem.
-.PP
+.P
The maximal number of huge pages can be specified using the
.B hugepages=
boot parameter.
-.\".PP
+.\".P
.\" requires CONFIG_HUGETLB_PAGE (under "Processor type and features")
.\" and CONFIG_HUGETLBFS (under "Filesystems").
.\" mount \-t hugetlbfs hugetlbfs /huge
diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2
index 04a3633..6981ec3 100644
--- a/man2/arch_prctl.2
+++ b/man2/arch_prctl.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH arch_prctl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH arch_prctl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
arch_prctl \- set architecture-specific thread state
.SH LIBRARY
@@ -13,11 +13,11 @@ Standard C library
.BR "#include <asm/prctl.h>" " /* Definition of " ARCH_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
-.BI "int syscall(SYS_arch_prctl, int " code ", unsigned long " addr );
-.BI "int syscall(SYS_arch_prctl, int " code ", unsigned long *" addr );
+.P
+.BI "int syscall(SYS_arch_prctl, int " op ", unsigned long " addr );
+.BI "int syscall(SYS_arch_prctl, int " op ", unsigned long *" addr );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR arch_prctl (),
@@ -26,8 +26,8 @@ necessitating the use of
.SH DESCRIPTION
.BR arch_prctl ()
sets architecture-specific process or thread state.
-.I code
-selects a subfunction
+.I op
+selects an operation
and passes argument
.I addr
to it;
@@ -37,7 +37,7 @@ is interpreted as either an
for the "set" operations, or as an
.IR "unsigned long\ *" ,
for the "get" operations.
-.PP
+.P
Subfunctions for both x86 and x86-64 are:
.TP
.BR ARCH_SET_CPUID " (since Linux 4.12)"
@@ -120,8 +120,8 @@ is set to indicate the error.
points to an unmapped address or is outside the process address space.
.TP
.B EINVAL
-.I code
-is not a valid subcommand.
+.I op
+is not a valid operation.
.TP
.B ENODEV
.B ARCH_SET_CPUID
@@ -137,12 +137,12 @@ Linux/x86-64.
.SH NOTES
.BR arch_prctl ()
is supported only on Linux/x86-64 for 64-bit programs currently.
-.PP
+.P
The 64-bit base changes when a new 32-bit segment selector is loaded.
-.PP
+.P
.B ARCH_SET_GS
is disabled in some kernels.
-.PP
+.P
Context switches for 64-bit segment bases are rather expensive.
As an optimization, if a 32-bit TLS base address is used,
.BR arch_prctl ()
@@ -154,14 +154,14 @@ Memory in the first 2\ GB of address space can be allocated by using
with the
.B MAP_32BIT
flag.
-.PP
+.P
Because of the aforementioned optimization, using
.BR arch_prctl ()
and
.BR set_thread_area (2)
in the same thread is dangerous, as they may overwrite each other's
TLS entries.
-.PP
+.P
.I FS
may be already used by the threading library.
Programs that use
@@ -172,5 +172,5 @@ directly are very likely to crash.
.BR modify_ldt (2),
.BR prctl (2),
.BR set_thread_area (2)
-.PP
+.P
AMD X86-64 Programmer's manual
diff --git a/man2/bdflush.2 b/man2/bdflush.2
index d97949e..0f1ccca 100644
--- a/man2/bdflush.2
+++ b/man2/bdflush.2
@@ -5,13 +5,13 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH bdflush 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH bdflush 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
bdflush \- start, flush, or tune buffer-dirty-flush daemon
.SH SYNOPSIS
.nf
.B #include <sys/kdaemon.h>
-.PP
+.P
.BI "[[deprecated]] int bdflush(int " func ", long *" address );
.BI "[[deprecated]] int bdflush(int " func ", long " data );
.fi
@@ -26,25 +26,25 @@ Nowadays, the task performed by
is handled by the kernel
.I pdflush
thread.
-.PP
+.P
.BR bdflush ()
starts, flushes, or tunes the buffer-dirty-flush daemon.
Only a privileged process (one with the
.B CAP_SYS_ADMIN
capability) may call
.BR bdflush ().
-.PP
+.P
If
.I func
is negative or 0, and no daemon has been started, then
.BR bdflush ()
enters the daemon code and never returns.
-.PP
+.P
If
.I func
is 1,
some dirty buffers are written to disk.
-.PP
+.P
If
.I func
is 2 or more and is even (low bit is 0), then
@@ -53,7 +53,7 @@ is the address of a long word,
and the tuning parameter numbered
.RI "(" "func" "\-2)/2"
is returned to the caller in that address.
-.PP
+.P
If
.I func
is 3 or more and is odd (low bit is 1), then
@@ -62,7 +62,7 @@ is a long word,
and the kernel sets tuning parameter numbered
.RI "(" "func" "\-3)/2"
to that value.
-.PP
+.P
The set of parameters, their values, and their valid ranges
are defined in the Linux kernel source file
.IR fs/buffer.c .
diff --git a/man2/bind.2 b/man2/bind.2
index 6288c41..0fc3308 100644
--- a/man2/bind.2
+++ b/man2/bind.2
@@ -18,7 +18,7 @@
.\" $Id: bind.2,v 1.3 1999/04/23 19:56:07 freitag Exp $
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH bind 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH bind 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
bind \- bind a name to a socket
.SH LIBRARY
@@ -27,7 +27,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int bind(int " sockfd ", const struct sockaddr *" addr ,
.BI " socklen_t " addrlen );
.fi
@@ -44,14 +44,14 @@ to the socket referred to by the file descriptor
specifies the size, in bytes, of the address structure pointed to by
.IR addr .
Traditionally, this operation is called \[lq]assigning a name to a socket\[rq].
-.PP
+.P
It is normally necessary to assign a local address using
.BR bind ()
before a
.B SOCK_STREAM
socket may receive connections (see
.BR accept (2)).
-.PP
+.P
The rules used in name binding vary between address families.
Consult the manual entries in Section 7 for detailed information.
For
@@ -82,14 +82,14 @@ and for
.BR AF_NETLINK ,
see
.BR netlink (7).
-.PP
+.P
The actual structure passed for the
.I addr
argument will depend on the address family.
The
.I sockaddr
structure is defined as something like:
-.PP
+.P
.in +4n
.EX
struct sockaddr {
@@ -98,7 +98,7 @@ struct sockaddr {
}
.EE
.in
-.PP
+.P
The only purpose of this structure is to cast the structure
pointer passed in
.I addr
@@ -147,7 +147,7 @@ is not a valid address for this socket's domain.
The file descriptor
.I sockfd
does not refer to a socket.
-.PP
+.P
The following errors are specific to UNIX domain
.RB ( AF_UNIX )
sockets:
@@ -206,14 +206,14 @@ An example of the use of
.BR bind ()
with Internet domain sockets can be found in
.BR getaddrinfo (3).
-.PP
+.P
The following example shows how to bind a stream socket in the UNIX
.RB ( AF_UNIX )
domain, and accept connections:
.\" listen.7 refers to this example.
.\" accept.7 refers to this example.
.\" unix.7 refers to this example.
-.PP
+.P
.\" SRC BEGIN (bind.c)
.EX
#include <stdio.h>
diff --git a/man2/bpf.2 b/man2/bpf.2
index 4df108d..2822076 100644
--- a/man2/bpf.2
+++ b/man2/bpf.2
@@ -3,13 +3,13 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH bpf 2 2023-07-28 "Linux man-pages 6.05.01"
+.TH bpf 2 2024-03-18 "Linux man-pages 6.7"
.SH NAME
bpf \- perform a command on an extended BPF map or program
.SH SYNOPSIS
.nf
.B #include <linux/bpf.h>
-.PP
+.P
.BI "int bpf(int " cmd ", union bpf_attr *" attr ", unsigned int " size );
.fi
.SH DESCRIPTION
@@ -22,7 +22,7 @@ the original ("classic") BPF (cBPF) used to filter network packets.
For both cBPF and eBPF programs,
the kernel statically analyzes the programs before loading them,
in order to ensure that they cannot harm the running system.
-.PP
+.P
eBPF extends cBPF in multiple ways, including the ability to call
a fixed set of in-kernel helper functions
.\" See 'enum bpf_func_id' in include/uapi/linux/bpf.h
@@ -36,13 +36,13 @@ eBPF maps are a generic data structure for storage of different data types.
Data types are generally treated as binary blobs, so a user just specifies
the size of the key and the size of the value at map-creation time.
In other words, a key/value for a given map can have an arbitrary structure.
-.PP
+.P
A user process can create multiple maps (with key/value-pairs being
opaque bytes of data) and access them via file descriptors.
Different eBPF programs can access the same maps in parallel.
It's up to the user process and eBPF program to decide what they store
inside maps.
-.PP
+.P
There's one special map type, called a program array.
This type of map stores file descriptors referring to other eBPF programs.
When a lookup in the map is performed, the program flow is
@@ -60,7 +60,7 @@ If a map lookup fails, the current program continues its execution.
See
.B BPF_MAP_TYPE_PROG_ARRAY
below for further details.
-.PP
+.P
Generally, eBPF programs are loaded by the user process and automatically
unloaded when the process exits.
In some cases, for example,
@@ -74,7 +74,7 @@ Thus, whether a specific program continues to live inside the kernel
depends on how it is further attached to a given kernel subsystem
after it was loaded via
.BR bpf ().
-.PP
+.P
Each eBPF program is a set of instructions that is safe to run until
its completion.
An in-kernel verifier statically determines that the eBPF program
@@ -82,7 +82,7 @@ terminates and is safe to execute.
During verification, the kernel increments reference counts for each of
the maps that the eBPF program uses,
so that the attached maps can't be removed until the program is unloaded.
-.PP
+.P
eBPF programs can be attached to different events.
These events can be the arrival of network packets, tracing
events, classification events by network queueing disciplines
@@ -93,10 +93,10 @@ A new event triggers execution of the eBPF program, which
may store information about the event in eBPF maps.
Beyond storing data, eBPF programs may call a fixed set of
in-kernel helper functions.
-.PP
+.P
The same eBPF program can be attached to multiple events and different
eBPF programs can access the same map:
-.PP
+.P
.in +4n
.EX
tracing tracing tracing packet packet packet
@@ -128,7 +128,7 @@ The
.I size
argument is the size of the union pointed to by
.IR attr .
-.PP
+.P
The value provided in
.I cmd
is one of the following:
@@ -164,7 +164,7 @@ The
union consists of various anonymous structures that are used by different
.BR bpf ()
commands:
-.PP
+.P
.in +4n
.EX
union bpf_attr {
@@ -209,7 +209,7 @@ union bpf_attr {
Maps are a generic data structure for storage of different types of data.
They allow sharing of data between eBPF kernel programs,
and also between kernel and user-space applications.
-.PP
+.P
Each map type has the following attributes:
.IP \[bu] 3
type
@@ -219,7 +219,7 @@ maximum number of elements
key size in bytes
.IP \[bu]
value size in bytes
-.PP
+.P
The following wrapper functions demonstrate how various
.BR bpf ()
commands can be used to access the maps.
@@ -710,7 +710,7 @@ The
command is used to load an eBPF program into the kernel.
The return value for this command is a new file descriptor associated
with this eBPF program.
-.PP
+.P
.in +4n
.EX
char bpf_log_buf[LOG_BUF_SIZE];
@@ -734,7 +734,7 @@ bpf_prog_load(enum bpf_prog_type type,
}
.EE
.in
-.PP
+.P
.I prog_type
is one of the available program types:
.IP
@@ -769,9 +769,9 @@ enum bpf_prog_type {
};
.EE
.in
-.PP
+.P
For further details of eBPF program types, see below.
-.PP
+.P
The remaining fields of
.I bpf_attr
are set as follows:
@@ -814,16 +814,16 @@ verbosity level of the verifier.
A value of zero means that the verifier will not provide a log;
in this case,
.I log_buf
-must be a NULL pointer, and
+must be a null pointer, and
.I log_size
must be zero.
-.PP
+.P
Applying
.BR close (2)
to the file descriptor returned by
.B BPF_PROG_LOAD
will unload the eBPF program (but see NOTES).
-.PP
+.P
Maps are accessible from eBPF programs and are used to exchange data between
eBPF programs and between eBPF programs and user-space programs.
For example,
@@ -849,17 +849,17 @@ format of
.\" Somewhere in this page we need a general introduction to the
.\" bpf_context. For example, how does a BPF program access the
.\" context?
-.PP
+.P
For example, a tracing program does not have the exact same
subset of helper functions as a socket filter program
(though they may have some helpers in common).
Similarly,
the input (context) for a tracing program is a set of register values,
while for a socket filter it is a network packet.
-.PP
+.P
The set of functions available to eBPF programs of a given type may increase
in the future.
-.PP
+.P
The following program types are supported:
.TP
.BR BPF_PROG_TYPE_SOCKET_FILTER " (since Linux 3.19)"
@@ -918,7 +918,7 @@ argument is a pointer to a
.SS Events
Once a program is loaded, it can be attached to an event.
Various kernel subsystems have different ways to do so.
-.PP
+.P
Since Linux 3.19,
.\" commit 89aa075832b0da4402acebd698d0411dcc82d03e
the following call will attach the program
@@ -927,14 +927,14 @@ to the socket
.IR sockfd ,
which was created by an earlier call to
.BR socket (2):
-.PP
+.P
.in +4n
.EX
setsockopt(sockfd, SOL_SOCKET, SO_ATTACH_BPF,
&prog_fd, sizeof(prog_fd));
.EE
.in
-.PP
+.P
Since Linux 4.1,
.\" commit 2541517c32be2531e0da59dfd7efc1ce844644f5
the following call may be used to attach
@@ -944,7 +944,7 @@ to a perf event file descriptor,
.IR event_fd ,
that was created by a previous call to
.BR perf_event_open (2):
-.PP
+.P
.in +4n
.EX
ioctl(event_fd, PERF_EVENT_IOC_SET_BPF, prog_fd);
@@ -963,7 +963,7 @@ The new file descriptor associated with the eBPF program.
.TP
All other commands
Zero.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -1091,10 +1091,10 @@ tail_call
.IP \[bu]
ktime_get_ns
.PD
-.PP
+.P
Unprivileged access may be blocked by writing the value 1 to the file
.IR /proc/sys/kernel/unprivileged_bpf_disabled .
-.PP
+.P
eBPF objects (maps and programs) can be shared between processes.
For example, after
.BR fork (2),
@@ -1107,7 +1107,7 @@ in the usual way, using
and similar calls.
An eBPF object is deallocated only after all file descriptors
referring to the object have been closed.
-.PP
+.P
eBPF programs can be written in a restricted C that is compiled (using the
.B clang
compiler) into eBPF bytecode.
@@ -1119,7 +1119,7 @@ Some examples can be found in the
files in the kernel source tree.
.\" There are also examples for the tc classifier, in the iproute2
.\" project, in examples/bpf
-.PP
+.P
The kernel contains a just-in-time (JIT) compiler that translates
eBPF bytecode into native machine code for better performance.
Before Linux 4.15,
@@ -1140,10 +1140,10 @@ The generated opcodes are dumped in hexadecimal into the kernel log.
These opcodes can then be disassembled using the program
.I tools/net/bpf_jit_disasm.c
provided in the kernel source tree.
-.PP
+.P
Since Linux 4.15,
.\" commit 290af86629b25ffd1ed6232c4e9107da031705cb
-the kernel may configured with the
+the kernel may be configured with the
.B CONFIG_BPF_JIT_ALWAYS_ON
option.
In this case, the JIT compiler is always enabled, and the
@@ -1151,7 +1151,7 @@ In this case, the JIT compiler is always enabled, and the
is initialized to 1 and is immutable.
(This kernel configuration option was provided as a mitigation for
one of the Spectre attacks against the BPF interpreter.)
-.PP
+.P
The JIT compiler for eBPF is currently
.\" Last reviewed in Linux 4.18-rc by grepping for BPF_ALU64 in arch/
.\" and by checking the documentation for bpf_jit_enable in
@@ -1192,7 +1192,7 @@ riscv (since Linux 5.1).
.\" commit 2353ecc6f91fd15b893fa01bf85a1c7a823ee4f2
.PD
.SH EXAMPLES
-.\" [[FIXME]] SRC BEGIN (bpf.c)
+.\" SRC BEGIN (bpf.c)
.EX
/* bpf+sockets example:
* 1. create array map of 256 elements
@@ -1258,7 +1258,7 @@ main(int argc, char *argv[])
}
.EE
.\" SRC END
-.PP
+.P
Some complete working code can be found in the
.I samples/bpf
directory in the kernel source tree.
@@ -1268,6 +1268,6 @@ directory in the kernel source tree.
.BR socket (7),
.BR tc (8),
.BR tc\-bpf (8)
-.PP
+.P
Both classic and extended BPF are explained in the kernel source file
.IR Documentation/networking/filter.txt .
diff --git a/man2/brk.2 b/man2/brk.2
index 2cc61a9..0248459 100644
--- a/man2/brk.2
+++ b/man2/brk.2
@@ -7,7 +7,7 @@
.\" Modified Wed Jul 21 19:52:58 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Sun Aug 21 17:40:38 1994 by Rik Faith <faith@cs.unc.edu>
.\"
-.TH brk 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH brk 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
brk, sbrk \- change data segment size
.SH LIBRARY
@@ -16,16 +16,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int brk(void *" addr );
.BI "void *sbrk(intptr_t " increment );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR brk (),
.BR sbrk ():
.nf
@@ -57,14 +57,14 @@ uninitialized data segment).
Increasing the program break has the effect of
allocating memory to the process;
decreasing the break deallocates memory.
-.PP
+.P
.BR brk ()
sets the end of the data segment to the value specified by
.IR addr ,
when that value is reasonable, the system has enough memory,
and the process does not exceed its maximum data size (see
.BR setrlimit (2)).
-.PP
+.P
.BR sbrk ()
increments the program's data space by
.I increment
@@ -82,7 +82,7 @@ On error, \-1 is returned, and
.I errno
is set to
.BR ENOMEM .
-.PP
+.P
On success,
.BR sbrk ()
returns the previous program break.
@@ -113,7 +113,7 @@ the
.BR malloc (3)
memory allocation package is the
portable and comfortable way of allocating memory.
-.PP
+.P
Various systems use various types for the argument of
.BR sbrk ().
Common are \fIint\fP, \fIssize_t\fP, \fIptrdiff_t\fP, \fIintptr_t\fP.
@@ -139,7 +139,7 @@ The glibc wrapper function does some work
(i.e., checks whether the new break is less than
.IR addr )
to provide the 0 and \-1 return values described above.
-.PP
+.P
On Linux,
.BR sbrk ()
is implemented as a library function that uses the
diff --git a/man2/cacheflush.2 b/man2/cacheflush.2
index 733462e..b2a5f26 100644
--- a/man2/cacheflush.2
+++ b/man2/cacheflush.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH cacheflush 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH cacheflush 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
cacheflush \- flush contents of instruction and/or data cache
.SH LIBRARY
@@ -12,10 +12,10 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/cachectl.h>
-.PP
+.P
.BI "int cacheflush(void " addr [. nbytes "], int "nbytes ", int "cache );
.fi
-.PP
+.P
.IR Note :
On some architectures,
there is no glibc wrapper for this system call; see NOTES.
@@ -73,7 +73,7 @@ glibc provides a wrapper for this system call,
with the prototype shown in SYNOPSIS,
for the following architectures:
ARC, CSKY, MIPS, and NIOS2.
-.PP
+.P
On some other architectures,
Linux provides this system call, with different arguments:
.TP
@@ -92,7 +92,7 @@ NDS32:
.nf
.BI "int cacheflush(unsigned int " start ", unsigned int " end ", int " cache );
.fi
-.PP
+.P
On the above architectures,
glibc does not provide a wrapper for this system call; call it using
.BR syscall (2).
@@ -102,17 +102,17 @@ you probably want to use the GCC built-in function
.BR __builtin___clear_cache (),
which provides a portable interface
across platforms supported by GCC and compatible compilers:
-.PP
+.P
.in +4n
.EX
.BI "void __builtin___clear_cache(void *" begin ", void *" end );
.EE
.in
-.PP
+.P
On platforms that don't require instruction cache flushes,
.BR __builtin___clear_cache ()
has no effect.
-.PP
+.P
.IR Note :
On some GCC-compatible compilers,
the prototype for this built-in function uses
@@ -133,7 +133,7 @@ and
.I nbytes
arguments, making this function fairly expensive.
Therefore, the whole cache is always flushed.
-.PP
+.P
This function always behaves as if
.B BCACHE
has been passed for the
diff --git a/man2/capget.2 b/man2/capget.2
index 9c4ba7d..db9ad25 100644
--- a/man2/capget.2
+++ b/man2/capget.2
@@ -11,7 +11,7 @@
.\" 64-bit capability sets in Linux 2.6.2[45].
.\" Modified 2009-01-26, andi kleen
.\"
-.TH capget 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH capget 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
capget, capset \- set/get capabilities of thread(s)
.SH LIBRARY
@@ -23,13 +23,13 @@ Standard C library
.BR " _LINUX_CAPABILITY_*" " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_capget, cap_user_header_t " hdrp ,
.BI " cap_user_data_t " datap );
.BI "int syscall(SYS_capset, cap_user_header_t " hdrp ,
.BI " const cap_user_data_t " datap );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -43,7 +43,7 @@ these system calls (in particular the format of the
.I cap_user_*_t
types) is subject to extension with each kernel revision,
but old programs will keep working.
-.PP
+.P
The portable interfaces are
.BR cap_set_proc (3)
and
@@ -53,7 +53,7 @@ if possible, you should use those interfaces in applications; see NOTES.
.SS Current details
Now that you have been warned, some current kernel details.
The structures are defined as follows.
-.PP
+.P
.in +4n
.EX
#define _LINUX_CAPABILITY_VERSION_1 0x19980330
@@ -82,7 +82,7 @@ typedef struct __user_cap_data_struct {
} *cap_user_data_t;
.EE
.in
-.PP
+.P
The
.IR effective ,
.IR permitted ,
@@ -99,7 +99,7 @@ To define the structures for passing to the system call, you have to use the
and
.I struct __user_cap_data_struct
names because the typedefs are only pointers.
-.PP
+.P
Kernels prior to Linux 2.6.25 prefer
32-bit capabilities with version
.BR _LINUX_CAPABILITY_VERSION_1 .
@@ -108,26 +108,26 @@ Linux 2.6.25 added 64-bit capability sets, with version
There was, however, an API glitch, and Linux 2.6.26 added
.B _LINUX_CAPABILITY_VERSION_3
to fix the problem.
-.PP
+.P
Note that 64-bit capabilities use
.I datap[0]
and
.IR datap[1] ,
whereas 32-bit capabilities use only
.IR datap[0] .
-.PP
+.P
On kernels that support file capabilities (VFS capabilities support),
these system calls behave slightly differently.
This support was added as an option in Linux 2.6.24,
and became fixed (nonoptional) in Linux 2.6.33.
-.PP
+.P
For
.BR capget ()
calls, one can probe the capabilities of any process by specifying its
process ID with the
.I hdrp\->pid
field value.
-.PP
+.P
For details on the data, see
.BR capabilities (7).
.\"
@@ -179,7 +179,7 @@ On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
The calls fail with the error
.BR EINVAL ,
and set the
diff --git a/man2/chdir.2 b/man2/chdir.2
index 5aca7bf..33e7473 100644
--- a/man2/chdir.2
+++ b/man2/chdir.2
@@ -10,7 +10,7 @@
.\" Modified 1997-08-21 by Joseph S. Myers <jsm28@cam.ac.uk>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH chdir 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH chdir 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
chdir, fchdir \- change working directory
.SH LIBRARY
@@ -19,16 +19,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int chdir(const char *" path );
.BI "int fchdir(int " fd );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR fchdir ():
.nf
_XOPEN_SOURCE >= 500
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
changes the current working directory of the calling process to the
directory specified in
.IR path .
-.PP
+.P
.BR fchdir ()
is identical to
.BR chdir ();
@@ -92,7 +92,7 @@ Insufficient kernel memory was available.
A component of
.I path
is not a directory.
-.PP
+.P
The general errors for
.BR fchdir ()
are listed below:
@@ -115,7 +115,7 @@ POSIX.1-2001, SVr4, 4.4BSD.
.SH NOTES
The current working directory is the starting point for interpreting
relative pathnames (those not starting with \[aq]/\[aq]).
-.PP
+.P
A child process created via
.BR fork (2)
inherits its parent's current working directory.
diff --git a/man2/chmod.2 b/man2/chmod.2
index b1c130e..d7b9694 100644
--- a/man2/chmod.2
+++ b/man2/chmod.2
@@ -9,7 +9,7 @@
.\" <michael@cantor.informatik.rwth-aachen.de>: NFS details
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH chmod 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH chmod 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
chmod, fchmod, fchmodat \- change permissions of a file
.SH LIBRARY
@@ -18,22 +18,22 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/stat.h>
-.PP
+.P
.BI "int chmod(const char *" pathname ", mode_t " mode );
.BI "int fchmod(int " fd ", mode_t " mode );
-.PP
+.P
.BR "#include <fcntl.h>" " /* Definition of AT_* constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int fchmodat(int " dirfd ", const char *" pathname ", mode_t " \
mode ", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.nf
.BR fchmod ():
Since glibc 2.24:
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
.fi
-.PP
+.P
.BR fchmodat ():
.nf
Since glibc 2.10:
@@ -76,7 +76,7 @@ which is dereferenced if it is a symbolic link.
.BR fchmod ()
changes the mode of the file referred to by the open file descriptor
.IR fd .
-.PP
+.P
The new file mode is specified in
.IR mode ,
which is a bit mask created by ORing together zero or
@@ -127,12 +127,12 @@ write by others
.TP
.BR S_IXOTH " (00001)"
execute/search by others
-.PP
+.P
The effective UID of the calling process must match the owner of the file,
or the process must be privileged (Linux: it must have the
.B CAP_FOWNER
capability).
-.PP
+.P
If the calling process is not privileged (Linux: does not have the
.B CAP_FSETID
capability), and the group of the file does not match
@@ -141,7 +141,7 @@ supplementary group IDs, the
.B S_ISGID
bit will be turned off,
but this will not cause an error to be returned.
-.PP
+.P
As a security measure, depending on the filesystem,
the set-user-ID and set-group-ID execution bits
may be turned off if a file is written.
@@ -153,7 +153,7 @@ which may have a special meaning.
For the sticky bit, and for set-user-ID and set-group-ID bits on
directories, see
.BR inode (7).
-.PP
+.P
On NFS filesystems, restricting the permissions will immediately influence
already open files, because the access control is done on the server, but
open files are maintained by the client.
@@ -167,7 +167,7 @@ The
system call operates in exactly the same way as
.BR chmod (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -177,7 +177,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR chmod ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -189,13 +189,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR chmod ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
.I flags
can either be 0, or include the following flag:
.TP
@@ -205,7 +205,7 @@ If
is a symbolic link, do not dereference it:
instead operate on the link itself.
This flag is not currently implemented.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -218,7 +218,7 @@ is set to indicate the error.
.SH ERRORS
Depending on the filesystem,
errors other than those listed below can be returned.
-.PP
+.P
The more general errors for
.BR chmod ()
are listed below:
diff --git a/man2/chown.2 b/man2/chown.2
index ff7c6dd..f71030d 100644
--- a/man2/chown.2
+++ b/man2/chown.2
@@ -15,7 +15,7 @@
.\" (bsdgroups versus sysvgroups, and the effect of the parent
.\" directory's set-group-ID mode bit).
.\"
-.TH chown 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH chown 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
chown, fchown, lchown, fchownat \- change ownership of a file
.SH LIBRARY
@@ -24,23 +24,23 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int chown(const char *" pathname ", uid_t " owner ", gid_t " group );
.BI "int fchown(int " fd ", uid_t " owner ", gid_t " group );
.BI "int lchown(const char *" pathname ", uid_t " owner ", gid_t " group );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of AT_* constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int fchownat(int " dirfd ", const char *" pathname ,
.BI " uid_t " owner ", gid_t " group ", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR fchown (),
.BR lchown ():
.nf
@@ -49,7 +49,7 @@ Feature Test Macro Requirements for glibc (see
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* glibc <= 2.19: */ _BSD_SOURCE
.fi
-.PP
+.P
.BR fchownat ():
.nf
Since glibc 2.10:
@@ -79,7 +79,7 @@ changes the ownership of the file referred to by the open file descriptor
is like
.BR chown (),
but does not dereference symbolic links.
-.PP
+.P
Only a privileged process (Linux: one with the
.B CAP_CHOWN
capability) may change the owner of a file.
@@ -88,13 +88,13 @@ to any group of which that owner is a member.
A privileged process (Linux: with
.BR CAP_CHOWN )
may change the group arbitrarily.
-.PP
+.P
If the
.I owner
or
.I group
is specified as \-1, then that ID is not changed.
-.PP
+.P
When the owner or group of an executable file is
changed by an unprivileged user, the
.B S_ISUID
@@ -115,7 +115,7 @@ bit is not set) the
.B S_ISGID
bit indicates mandatory locking, and is not cleared by a
.BR chown ().
-.PP
+.P
When the owner or group of an executable file is changed (by any user),
all capability sets for the file are cleared.
.\"
@@ -125,7 +125,7 @@ The
system call operates in exactly the same way as
.BR chown (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -135,7 +135,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR chown ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -147,13 +147,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR chown ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
The
.I flags
argument is a bit mask created by ORing together
@@ -192,7 +192,7 @@ instead operate on the link itself, like
.BR fchownat ()
dereferences symbolic links, like
.BR chown ().)
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -205,7 +205,7 @@ is set to indicate the error.
.SH ERRORS
Depending on the filesystem,
errors other than those listed below can be returned.
-.PP
+.P
The more general errors for
.BR chown ()
are listed below.
@@ -341,7 +341,7 @@ If the filesystem is mounted with
and the set-group-ID bit is enabled on the parent directory,
then the group of a new file is made
the same as that of the parent directory.
-.PP
+.P
As at Linux 4.12,
the
.B \-o\ grpid
@@ -398,7 +398,7 @@ The glibc
and
.BR lchown ()
wrapper functions transparently deal with the variations across kernel versions.
-.PP
+.P
Before Linux 2.1.81 (except 2.1.46),
.BR chown ()
did not follow symbolic links.
diff --git a/man2/chroot.2 b/man2/chroot.2
index d872b8a..bdba54f 100644
--- a/man2/chroot.2
+++ b/man2/chroot.2
@@ -10,7 +10,7 @@
.\" Modified 1997-08-21 by Joseph S. Myers <jsm28@cam.ac.uk>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH chroot 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH chroot 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
chroot \- change root directory
.SH LIBRARY
@@ -19,15 +19,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int chroot(const char *" path );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR chroot ():
.nf
Since glibc 2.2.2:
@@ -43,12 +43,12 @@ changes the root directory of the calling process to that specified in
.IR path .
This directory will be used for pathnames beginning with \fI/\fP.
The root directory is inherited by all children of the calling process.
-.PP
+.P
Only a privileged process (Linux: one with the
.B CAP_SYS_CHROOT
capability in its user namespace) may call
.BR chroot ().
-.PP
+.P
This call changes an ingredient in the pathname resolution process
and does nothing else.
In particular, it is not intended to be used
@@ -65,7 +65,7 @@ The easiest way to do that is to
.BR chdir (2)
to the to-be-moved directory, wait for it to be moved out, then open a
path like ../../../etc/passwd.
-.PP
+.P
.\" This is how the "slightly trickier variation" works:
.\" https://github.com/QubesOS/qubes-secpack/blob/master/QSBs/qsb-014-2015.txt#L142
A slightly
@@ -76,19 +76,19 @@ If a daemon allows a "chroot directory" to be specified,
that usually means that if you want to prevent remote users from accessing
files outside the chroot directory, you must ensure that folders are never
moved out of it.
-.PP
+.P
This call does not change the current working directory,
so that after the call \[aq]\fI.\fP\[aq] can
be outside the tree rooted at \[aq]\fI/\fP\[aq].
In particular, the superuser can escape from a "chroot jail"
by doing:
-.PP
+.P
.in +4n
.EX
mkdir foo; chroot foo; cd ..
.EE
.in
-.PP
+.P
This call does not close open file descriptors, and such file
descriptors may allow access to files outside the chroot tree.
.SH RETURN VALUE
@@ -148,13 +148,13 @@ A child process created via
inherits its parent's root directory.
The root directory is left unchanged by
.BR execve (2).
-.PP
+.P
The magic symbolic link,
.IR /proc/ pid /root ,
can be used to discover a process's root directory; see
.BR proc (5)
for details.
-.PP
+.P
FreeBSD has a stronger
.BR jail ()
system call.
diff --git a/man2/clock_getres.2 b/man2/clock_getres.2
index 170215d..ec1e327 100644
--- a/man2/clock_getres.2
+++ b/man2/clock_getres.2
@@ -9,32 +9,32 @@
.\" 2003-08-24 aeb, large parts rewritten
.\" 2004-08-06 Christoph Lameter <clameter@sgi.com>, SMP note
.\"
-.TH clock_getres 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH clock_getres 2 2024-03-05 "Linux man-pages 6.7"
.SH NAME
clock_getres, clock_gettime, clock_settime \- clock and time functions
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc ),
since glibc 2.17
-.PP
+.P
Before glibc 2.17,
Real-time library
.RI ( librt ", " \-lrt )
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
+.P
.BI "int clock_getres(clockid_t " clockid ", struct timespec *_Nullable " res );
-.PP
+.P
.BI "int clock_gettime(clockid_t " clockid ", struct timespec *" tp );
.BI "int clock_settime(clockid_t " clockid ", const struct timespec *" tp );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR clock_getres (),
.BR clock_gettime (),
.BR clock_settime ():
@@ -60,14 +60,14 @@ is not a multiple of
.IR res ,
then it is truncated to a multiple of
.IR res .
-.PP
+.P
The functions
.BR clock_gettime ()
and
.BR clock_settime ()
retrieve and set the time of the specified clock
.IR clockid .
-.PP
+.P
The
.I res
and
@@ -75,24 +75,24 @@ and
arguments are
.BR timespec (3)
structures.
-.PP
+.P
The
.I clockid
argument is the identifier of the particular clock on which to act.
A clock may be system-wide and hence visible for all processes, or
per-process if it measures time only within a single process.
-.PP
+.P
All implementations support the system-wide real-time clock,
which is identified by
.BR CLOCK_REALTIME .
Its time represents seconds and nanoseconds since the Epoch.
When its time is changed, timers for a relative interval are
unaffected, but timers for an absolute point in time are affected.
-.PP
+.P
More clocks may be implemented.
The interpretation of the
corresponding time values and the effect on timers is unspecified.
-.PP
+.P
Sufficiently recent versions of glibc and the Linux kernel
support the following clocks:
.TP
@@ -101,9 +101,17 @@ A settable system-wide clock that measures real (i.e., wall-clock) time.
Setting this clock requires appropriate privileges.
This clock is affected by discontinuous jumps in the system time
(e.g., if the system administrator manually changes the clock),
-and by the incremental adjustments performed by
-.BR adjtime (3)
-and NTP.
+and by frequency adjustments performed by NTP and similar applications via
+.BR adjtime (3),
+.BR adjtimex (2),
+.BR clock_adjtime (2),
+and
+.BR ntp_adjtime (3).
+This clock normally counts the number of seconds since
+1970-01-01 00:00:00 Coordinated Universal Time (UTC)
+except that it ignores leap seconds;
+near a leap second it is typically adjusted by NTP
+to stay roughly in sync with UTC.
.TP
.BR CLOCK_REALTIME_ALARM " (since Linux 3.0; Linux-specific)"
Like
@@ -126,9 +134,9 @@ and probably also architecture support for this flag in the
.BR CLOCK_TAI " (since Linux 3.10; Linux-specific)"
.\" commit 1ff3c9677bff7e468e0c487d0ffefe4e901d33f4
A nonsettable system-wide clock derived from wall-clock time
-but ignoring leap seconds.
+but counting leap seconds.
This clock does
-not experience discontinuities and backwards jumps caused by NTP
+not experience discontinuities or frequency adjustments caused by
inserting leap seconds as
.B CLOCK_REALTIME
does.
@@ -146,9 +154,7 @@ The
.B CLOCK_MONOTONIC
clock is not affected by discontinuous jumps in the system time
(e.g., if the system administrator manually changes the clock),
-but is affected by the incremental adjustments performed by
-.BR adjtime (3)
-and NTP.
+but is affected by frequency adjustments.
This clock does not count time that the system is suspended.
All
.B CLOCK_MONOTONIC
@@ -170,9 +176,7 @@ and probably also architecture support for this flag in the
Similar to
.BR CLOCK_MONOTONIC ,
but provides access to a raw hardware-based time
-that is not subject to NTP adjustments or
-the incremental adjustments performed by
-.BR adjtime (3).
+that is not subject to frequency adjustments.
This clock does not count time that the system is suspended.
.TP
.BR CLOCK_BOOTTIME " (since Linux 2.6.39; Linux-specific)"
@@ -203,7 +207,7 @@ On Linux, this clock is not settable.
.BR CLOCK_THREAD_CPUTIME_ID " (since Linux 2.6.12)"
This is a clock that measures CPU time consumed by this thread.
On Linux, this clock is not settable.
-.PP
+.P
Linux also implements dynamic clock instances as described below.
.SS Dynamic clocks
In addition to the hard-coded System-V style clock IDs described above,
@@ -211,7 +215,7 @@ Linux also supports
POSIX clock operations on certain character devices.
Such devices are
called "dynamic" clocks, and are supported since Linux 2.6.39.
-.PP
+.P
Using the appropriate macros, open file
descriptors may be converted into clock IDs and passed to
.BR clock_gettime (),
@@ -220,7 +224,7 @@ and
.BR clock_adjtime (2).
The following example shows how to convert a file descriptor into a
dynamic clock ID.
-.PP
+.P
.in +4n
.EX
#define CLOCKFD 3
@@ -304,6 +308,17 @@ has disappeared after its character device was opened.
The operation is not supported by the dynamic POSIX clock device
specified.
.TP
+.B EOVERFLOW
+The timestamp would not fit in
+.I time_t
+range.
+This can happen if an executable with 32-bit
+.I time_t
+is run on a 64-bit kernel when the time is 2038-01-19 03:14:08 UTC or later.
+However, when the system time is out of
+.I time_t
+range in other situations, the behavior is undefined.
+.TP
.B EPERM
.BR clock_settime ()
does not have permission to set the clock indicated.
@@ -323,11 +338,10 @@ T{
.BR clock_settime ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH VERSIONS
POSIX.1 specifies the following:
.RS
-.PP
+.P
Setting the value of the
.B CLOCK_REALTIME
clock via
@@ -339,7 +353,7 @@ function; nor on the expiration of relative timers based upon this clock.
Consequently, these time services shall expire when the requested relative
interval elapses, independently of the new or old value of the clock.
.RE
-.PP
+.P
According to POSIX.1-2001, a process with "appropriate privileges" may set the
.B CLOCK_PROCESS_CPUTIME_ID
and
@@ -359,10 +373,12 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SUSv2.
Linux 2.6.
-.PP
+.P
On POSIX systems on which these functions are available, the symbol
.B _POSIX_TIMERS
is defined in \fI<unistd.h>\fP to a value greater than 0.
+POSIX.1-2008 makes these functions mandatory.
+.P
The symbols
.BR _POSIX_MONOTONIC_CLOCK ,
.BR _POSIX_CPUTIME ,
@@ -374,7 +390,6 @@ indicate that
are available.
(See also
.BR sysconf (3).)
-POSIX.1-2008 makes these APIs mandatory.
.\"
.SS Historical note for SMP systems
Before Linux added kernel support for
@@ -388,7 +403,7 @@ These registers may differ between CPUs and as a consequence
these clocks may return
.B bogus results
if a process is migrated to another CPU.
-.PP
+.P
If the CPUs in an SMP system have different clock sources, then
there is no way to maintain a correlation between the timer registers since
each CPU will run at a slightly different frequency.
@@ -399,7 +414,7 @@ will return
to signify this condition.
The two clocks will then be useful only if it
can be ensured that a process stays on a certain CPU.
-.PP
+.P
The processors in an SMP system do not start all at exactly the same
time and therefore the timer registers are typically running at an offset.
Some architectures include code that attempts to limit these offsets on bootup.
@@ -408,7 +423,7 @@ glibc contains no provisions to deal with these offsets (unlike the Linux
Kernel).
Typically these offsets are small and therefore the effects may be
negligible in most cases.
-.PP
+.P
Since glibc 2.4,
the wrapper functions for the system calls described in this page avoid
the abovementioned problems by employing the kernel implementation of
@@ -424,7 +439,7 @@ and
.BR clock_getres ()
with various clocks.
This is an example of what we might see when running the program:
-.PP
+.P
.in +4n
.EX
$ \fB./clock_times x\fP
diff --git a/man2/clock_nanosleep.2 b/man2/clock_nanosleep.2
index d1e53a6..12948c7 100644
--- a/man2/clock_nanosleep.2
+++ b/man2/clock_nanosleep.2
@@ -3,31 +3,31 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH clock_nanosleep 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH clock_nanosleep 2 2024-03-05 "Linux man-pages 6.7"
.SH NAME
clock_nanosleep \- high-resolution sleep with specifiable clock
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc ),
since glibc 2.17
-.PP
+.P
Before glibc 2.17,
Real-time library
.RI ( librt ", " \-lrt )
.SH SYNOPSIS
.B #include <time.h>
.nf
-.PP
+.P
.BI "int clock_nanosleep(clockid_t " clockid ", int " flags ,
-.BI " const struct timespec *" request ,
+.BI " const struct timespec *" t ,
.BI " struct timespec *_Nullable " remain );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR clock_nanosleep ():
.nf
_POSIX_C_SOURCE >= 200112L
@@ -42,11 +42,11 @@ It differs in allowing the caller to select the clock against
which the sleep interval is to be measured,
and in allowing the sleep interval to be specified as
either an absolute or a relative value.
-.PP
+.P
The time values passed to and returned by this call are specified using
.BR timespec (3)
structures.
-.PP
+.P
The
.I clockid
argument specifies the clock against which the sleep interval
@@ -59,7 +59,7 @@ This argument can have one of the following values:
A settable system-wide real-time clock.
.TP
.BR CLOCK_TAI " (since Linux 3.10)"
-A system-wide clock derived from wall-clock time but ignoring leap seconds.
+A system-wide clock derived from wall-clock time but counting leap seconds.
.TP
.B CLOCK_MONOTONIC
A nonsettable, monotonically increasing clock that measures time
@@ -77,7 +77,7 @@ A settable per-process clock that measures CPU time consumed
by all threads in the process.
.\" There is some trickery between glibc and the kernel
.\" to deal with the CLOCK_PROCESS_CPUTIME_ID case.
-.PP
+.P
See
.BR clock_getres (2)
for further details on these clocks.
@@ -90,38 +90,38 @@ can also be passed in
.\" Sleeping against CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
.\" is also possible (tested), with CAP_WAKE_ALARM, but I'm not
.\" sure if this is useful or needs to be documented.
-.PP
+.P
If
.I flags
is 0, then the value specified in
-.I request
+.I t
is interpreted as an interval relative to the current
value of the clock specified by
.IR clockid .
-.PP
+.P
If
.I flags
is
.BR TIMER_ABSTIME ,
then
-.I request
+.I t
is interpreted as an absolute time as measured by the clock,
.IR clockid .
If
-.I request
+.I t
is less than or equal to the current value of the clock,
then
.BR clock_nanosleep ()
returns immediately without suspending the calling thread.
-.PP
+.P
.BR clock_nanosleep ()
suspends the execution of the calling thread
until either at least the time specified by
-.I request
+.I t
has elapsed,
or a signal is delivered that causes a signal handler to be called or
that terminates the process.
-.PP
+.P
If the call is interrupted by a signal handler,
.BR clock_nanosleep ()
fails with the error
@@ -146,7 +146,7 @@ then it returns one of the positive error number listed in ERRORS.
.SH ERRORS
.TP
.B EFAULT
-.I request
+.I t
or
.I remain
specified an invalid address.
@@ -180,13 +180,13 @@ Linux 2.6,
glibc 2.1.
.SH NOTES
If the interval specified in
-.I request
+.I t
is not an exact multiple of the granularity underlying clock (see
.BR time (7)),
then the interval will be rounded up to the next multiple.
Furthermore, after the sleep completes, there may still be a delay before
the CPU becomes free to once again execute the calling thread.
-.PP
+.P
Using an absolute timer is useful for preventing
timer drift problems of the type described in
.BR nanosleep (2).
@@ -201,14 +201,14 @@ and then call
with the
.B TIMER_ABSTIME
flag.
-.PP
+.P
.BR clock_nanosleep ()
is never restarted after being interrupted by a signal handler,
regardless of the use of the
.BR sigaction (2)
.B SA_RESTART
flag.
-.PP
+.P
The
.I remain
argument is unused, and unnecessary, when
@@ -216,13 +216,13 @@ argument is unused, and unnecessary, when
is
.BR TIMER_ABSTIME .
(An absolute sleep can be restarted using the same
-.I request
+.I t
argument.)
-.PP
+.P
POSIX.1 specifies that
.BR clock_nanosleep ()
has no effect on signals dispositions or the signal mask.
-.PP
+.P
POSIX.1 specifies that after changing the value of the
.B CLOCK_REALTIME
clock via
@@ -234,7 +234,7 @@ will wake up;
if the new clock value falls past the end of the sleep interval, then the
.BR clock_nanosleep ()
call will return immediately.
-.PP
+.P
POSIX.1 specifies that
changing the value of the
.B CLOCK_REALTIME
diff --git a/man2/clone.2 b/man2/clone.2
index 38d2b90..69e4547 100644
--- a/man2/clone.2
+++ b/man2/clone.2
@@ -38,7 +38,7 @@
.\" 2008-11-19, mtk, document CLONE_NEWIPC
.\" 2008-11-19, Jens Axboe, mtk, document CLONE_IO
.\"
-.TH clone 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH clone 2 2024-02-18 "Linux man-pages 6.7"
.SH NAME
clone, __clone2, clone3 \- create a child process
.SH LIBRARY
@@ -47,27 +47,27 @@ Standard C library
.SH SYNOPSIS
.nf
/* Prototype for the glibc wrapper function */
-.PP
+.P
.B #define _GNU_SOURCE
.B #include <sched.h>
-.PP
+.P
.BI "int clone(int (*" "fn" ")(void *_Nullable), void *" stack \
", int " flags ,
.BI " void *_Nullable " "arg" ", ..." \
" \fR/*\fP" " pid_t *_Nullable " parent_tid ,
.BI " void *_Nullable " tls ,
.BI " pid_t *_Nullable " child_tid " \fR*/\fP );"
-.PP
+.P
/* For the prototype of the raw clone() system call, see NOTES */
-.PP
+.P
.BR "#include <linux/sched.h>" " /* Definition of " "struct clone_args" " */"
.BR "#include <sched.h>" " /* Definition of " CLONE_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_clone3, struct clone_args *" cl_args ", size_t " size );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR clone3 (),
@@ -77,7 +77,7 @@ necessitating the use of
These system calls
create a new ("child") process, in a manner similar to
.BR fork (2).
-.PP
+.P
By contrast with
.BR fork (2),
these system calls provide more precise control over what pieces of execution
@@ -88,7 +88,7 @@ the table of file descriptors, and the table of signal handlers.
These system calls also allow the new child process to be placed
in separate
.BR namespaces (7).
-.PP
+.P
Note that in this manual
page, "calling process" normally corresponds to "parent process".
But see the descriptions of
@@ -96,7 +96,7 @@ But see the descriptions of
and
.B CLONE_THREAD
below.
-.PP
+.P
This page describes the following interfaces:
.IP \[bu] 3
The glibc
@@ -109,9 +109,9 @@ are described toward the end of this page.
The newer
.BR clone3 ()
system call.
-.PP
+.P
In the remainder of this page, the terminology "the clone call" is used
-when noting details that apply to all of these interfaces,
+when noting details that apply to all of these interfaces.
.\"
.SS The clone() wrapper function
When the child process is created with the
@@ -129,7 +129,7 @@ The
.I arg
argument is passed as the argument of the function
.IR fn .
-.PP
+.P
When the
.IR fn ( arg )
function returns, the child process terminates.
@@ -139,7 +139,7 @@ is the exit status for the child process.
The child process may also terminate explicitly by calling
.BR exit (2)
or after receiving a fatal signal.
-.PP
+.P
The
.I stack
argument specifies the location of the stack used by the child process.
@@ -159,7 +159,7 @@ Note that
.BR clone ()
does not provide a means whereby the caller can inform the kernel of the
size of the stack area.
-.PP
+.P
The remaining arguments to
.BR clone ()
are discussed below.
@@ -174,20 +174,20 @@ It also provides a number of API improvements, including:
space for additional flags bits;
cleaner separation in the use of various arguments;
and the ability to specify the size of the child's stack area.
-.PP
+.P
As with
.BR fork (2),
.BR clone3 ()
returns in both the parent and the child.
It returns 0 in the child process and returns the PID of the child
in the parent.
-.PP
+.P
The
.I cl_args
argument of
.BR clone3 ()
is a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct clone_args {
@@ -212,7 +212,7 @@ struct clone_args {
};
.EE
.in
-.PP
+.P
The
.I size
argument that is supplied to
@@ -223,7 +223,7 @@ should be initialized to the size of this structure.
argument permits future extensions to the
.I clone_args
structure.)
-.PP
+.P
The stack for the child process is specified via
.IR cl_args.stack ,
which points to the lowest byte of the stack area,
@@ -237,7 +237,7 @@ and specified.
Otherwise, these two fields can be specified as NULL and 0,
which causes the child to use the same stack area as the parent
(in the child's own virtual address space).
-.PP
+.P
The remaining fields in the
.I cl_args
argument are discussed below.
@@ -253,7 +253,7 @@ structure shown above.
This structure allows for a superset of the information passed via the
.BR clone ()
arguments.
-.PP
+.P
The following table shows the equivalence between the arguments of
.BR clone ()
and the fields in the
@@ -322,7 +322,7 @@ then the first element in the
array has to be the desired PID and
.I set_tid_size
needs to be 1.
-.PP
+.P
If the PID of the newly created process should have a certain value in
multiple PID namespaces, then the
.I set_tid
@@ -335,7 +335,7 @@ The number of PID namespaces in which a PID
should be set is defined by
.I set_tid_size
which cannot be larger than the number of currently nested PID namespaces.
-.PP
+.P
To create a process with the following PIDs in a PID namespace hierarchy:
.RS 4
.TS
@@ -347,9 +347,9 @@ PID NS level Requested PID Notes
2 7 Innermost PID namespace
.TE
.RE
-.PP
+.P
Set the array to:
-.PP
+.P
.in +4n
.EX
set_tid[0] = 7;
@@ -358,10 +358,10 @@ set_tid[2] = 31496;
set_tid_size = 3;
.EE
.in
-.PP
+.P
If only the PIDs in the two innermost PID namespaces
need to be specified, set the array to:
-.PP
+.P
.in +4n
.EX
set_tid[0] = 7;
@@ -369,10 +369,10 @@ set_tid[1] = 42;
set_tid_size = 2;
.EE
.in
-.PP
+.P
The PID in the PID namespaces outside the two innermost PID namespaces
is selected the same way as any other PID is selected.
-.PP
+.P
The
.I set_tid
feature requires
@@ -383,7 +383,7 @@ or
.\" commit 1caef81da05a84a40dbf02110e967ce6d1135ff6
.B CAP_CHECKPOINT_RESTORE
in all owning user namespaces of the target PID namespaces.
-.PP
+.P
Callers may only choose a PID greater than 1 in a given PID namespace
if an
.B init
@@ -410,7 +410,7 @@ field passed to
referred to as the
.I flags
mask in the remainder of this page.
-.PP
+.P
The
.I flags
mask is specified as a bitwise OR of zero or more of
@@ -456,6 +456,8 @@ By default, signal dispositions in the child thread are the same as
in the parent.
If this flag is specified,
then all signals that are handled in the parent
+(and not set to
+.BR SIG_IGN )
are reset to their default dispositions
.RB ( SIG_DFL )
in the child.
@@ -736,9 +738,7 @@ Only a privileged process
can employ
.BR CLONE_NEWPID .
This flag can't be specified in conjunction with
-.B CLONE_THREAD
-or
-.BR CLONE_PARENT .
+.BR CLONE_THREAD .
.TP
.B CLONE_NEWUSER
(This flag first became meaningful for
@@ -1317,10 +1317,7 @@ were specified in the
mask.
.TP
.B EINVAL
-One (or both) of
.B CLONE_NEWPID
-or
-.B CLONE_NEWUSER
and one (or both) of
.B CLONE_THREAD
or
@@ -1329,6 +1326,14 @@ were specified in the
.I flags
mask.
.TP
+.B EINVAL
+.B CLONE_NEWUSER
+and
+.B CLONE_THREAD
+were specified in the
+.I flags
+mask.
+.TP
.BR EINVAL " (since Linux 2.6.32)"
.\" commit 123be07b0b399670a7cc3d82fef0cb4f93ef885c
.B CLONE_PARENT
@@ -1444,7 +1449,7 @@ or
was specified in the
.I flags
mask, but a signal was specified in
-.I exit_signal.
+.IR exit_signal .
.TP
.BR EINVAL " (AArch64 only, Linux 4.6 and earlier)"
.I stack
@@ -1568,7 +1573,7 @@ So, in cases where
is used to recursively create children,
do not use the buffer employed for the parent's stack
as the stack of the child.
-.PP
+.P
On i386,
.BR clone ()
should not be called through vsyscall, but directly through
@@ -1587,7 +1592,7 @@ and
arguments of the
.BR clone ()
wrapper function are omitted.
-.PP
+.P
In contrast to the glibc wrapper, the raw
.BR clone ()
system call accepts NULL as a
@@ -1609,14 +1614,14 @@ the parent's memory because of the use of the
.B CLONE_VM
flag,
then no copy-on-write duplication occurs and chaos is likely to result.)
-.PP
+.P
The order of the arguments also differs in the raw system call,
and there are variations in the arguments across architectures,
as detailed in the following paragraphs.
-.PP
+.P
The raw system call interface on x86-64 and some other architectures
(including sh, tile, and alpha) is:
-.PP
+.P
.in +4n
.EX
.BI "long clone(unsigned long " flags ", void *" stack ,
@@ -1624,13 +1629,13 @@ The raw system call interface on x86-64 and some other architectures
.BI " unsigned long " tls );
.EE
.in
-.PP
+.P
On x86-32, and several other common architectures
(including score, ARM, ARM 64, PA-RISC, arc, Power PC, xtensa,
and MIPS),
.\" CONFIG_CLONE_BACKWARDS
the order of the last two arguments is reversed:
-.PP
+.P
.in +4n
.EX
.BI "long clone(unsigned long " flags ", void *" stack ,
@@ -1638,11 +1643,11 @@ the order of the last two arguments is reversed:
.BI " int *" child_tid );
.EE
.in
-.PP
+.P
On the cris and s390 architectures,
.\" CONFIG_CLONE_BACKWARDS2
the order of the first two arguments is reversed:
-.PP
+.P
.in +4n
.EX
.BI "long clone(void *" stack ", unsigned long " flags ,
@@ -1650,11 +1655,11 @@ the order of the first two arguments is reversed:
.BI " unsigned long " tls );
.EE
.in
-.PP
+.P
On the microblaze architecture,
.\" CONFIG_CLONE_BACKWARDS3
an additional argument is supplied:
-.PP
+.P
.in +4n
.EX
.BI "long clone(unsigned long " flags ", void *" stack ,
@@ -1673,7 +1678,7 @@ blackfin, m68k, and sparc are different from the descriptions above.
For details, see the kernel (and glibc) source.
.SS ia64
On ia64, a different interface is used:
-.PP
+.P
.in +4n
.EX
.BI "int __clone2(int (*" "fn" ")(void *),"
@@ -1683,13 +1688,13 @@ On ia64, a different interface is used:
.BI " pid_t *" child_tid " */ );"
.EE
.in
-.PP
+.P
The prototype shown above is for the glibc wrapper function;
for the system call itself,
the prototype can be described as follows (it is identical to the
.BR clone ()
prototype on microblaze):
-.PP
+.P
.in +4n
.EX
.BI "long clone2(unsigned long " flags ", void *" stack_base ,
@@ -1698,7 +1703,7 @@ prototype on microblaze):
.BI " unsigned long " tls );
.EE
.in
-.PP
+.P
.BR __clone2 ()
operates in the same way as
.BR clone (),
@@ -1731,7 +1736,7 @@ However, from Linux 2.4.7 to Linux 2.4.18 the
flag implied the
.B CLONE_PARENT
flag (as in Linux 2.6.0 and later).
-.PP
+.P
In Linux 2.4 and earlier,
.BR clone ()
does not take arguments
@@ -1740,16 +1745,16 @@ does not take arguments
and
.IR child_tid .
.SH NOTES
-One use of these systems calls
+One use of these system calls
is to implement threads: multiple flows of control in a program that
run concurrently in a shared address space.
-.PP
+.P
The
.BR kcmp (2)
system call can be used to test whether two processes share various
resources such as a file descriptor table,
System V semaphore undo operations, or a virtual address space.
-.PP
+.P
Handlers registered using
.BR pthread_atfork (3)
are not executed during a clone call.
@@ -1784,7 +1789,7 @@ The stale-cache problem also does not occur if the
argument includes
.BR CLONE_VM .)
To get the truth, it was sometimes necessary to use code such as the following:
-.PP
+.P
.in +4n
.EX
#include <syscall.h>
@@ -1797,7 +1802,7 @@ mypid = syscall(SYS_getpid);
.\" See also the following bug reports
.\" https://bugzilla.redhat.com/show_bug.cgi?id=417521
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6910
-.PP
+.P
Because of the stale-cache problem, as well as other problems noted in
.BR getpid (2),
the PID caching feature was removed in glibc 2.25.
@@ -1811,7 +1816,7 @@ making it possible to see that the hostname
differs in the UTS namespaces of the parent and child.
For an example of the use of this program, see
.BR setns (2).
-.PP
+.P
Within the sample program, we allocate the memory that is to
be used for the child's stack using
.BR mmap (2)
diff --git a/man2/close.2 b/man2/close.2
index 239979b..c653acb 100644
--- a/man2/close.2
+++ b/man2/close.2
@@ -13,7 +13,7 @@
.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
.\" added note about close(2) not guaranteeing that data is safe on close.
.\"
-.TH close 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH close 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
close \- close a file descriptor
.SH LIBRARY
@@ -22,7 +22,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int close(int " fd );
.fi
.SH DESCRIPTION
@@ -32,9 +32,15 @@ may be reused.
Any record locks (see
.BR fcntl (2))
held on the file it was associated with,
-and owned by the process, are removed (regardless of the file
-descriptor that was used to obtain the lock).
-.PP
+and owned by the process,
+are removed regardless of the file descriptor that was used to obtain the lock.
+This has some unfortunate consequences
+and one should be extra careful when using advisory record locking.
+See
+.BR fcntl (2)
+for discussion of the risks and consequences
+as well as for the (probably preferred) open file description locks.
+.P
If
.I fd
is the last file descriptor referring to the underlying
@@ -68,7 +74,9 @@ call was interrupted by a signal; see
.B EIO
An I/O error occurred.
.TP
-.BR ENOSPC ", " EDQUOT
+.B ENOSPC
+.TQ
+.B EDQUOT
On NFS, these errors are not normally reported against the first write
which exceeds the available storage space, but instead against a
subsequent
@@ -76,7 +84,7 @@ subsequent
.BR fsync (2),
or
.BR close ().
-.PP
+.P
See NOTES for a discussion of why
.BR close ()
should not be retried after an error.
@@ -93,7 +101,7 @@ If you need to be sure that
the data is physically stored on the underlying disk, use
.BR fsync (2).
(It will depend on the disk hardware at this point.)
-.PP
+.P
The close-on-exec file descriptor flag can be used to ensure
that a file descriptor is automatically closed upon a successful
.BR execve (2);
@@ -116,7 +124,7 @@ that may cause unintended side effects.
.\" call has restarted after ERESTARTSYS, the original system call will
.\" later restart with the reused file descriptor. This is most likely a
.\" serious programming error.
-.PP
+.P
Furthermore, consider the following scenario where two threads are
performing operations on the same file descriptor:
.IP (1) 5
@@ -128,11 +136,11 @@ to a pipe that is already full, or trying to
from a stream socket which currently has no available data.
.IP (2)
Another thread closes the file descriptor.
-.PP
+.P
The behavior in this situation varies across systems.
On some systems, when the file descriptor is closed,
the blocking system call returns immediately with an error.
-.PP
+.P
On Linux (and possibly some other systems), the behavior is different:
the blocking I/O system call holds a reference to the underlying
open file description, and this reference keeps the description open
@@ -158,13 +166,13 @@ Failing to check the return value when closing a file may lead to
.I silent
loss of data.
This can especially be observed with NFS and with disk quota.
-.PP
+.P
Note, however, that a failure return should be used only for
diagnostic purposes (i.e., a warning to the application that there
may still be I/O pending or there may have been failed I/O)
or remedial purposes
(e.g., writing the file once more or creating a backup).
-.PP
+.P
Retrying the
.BR close ()
after a failure return is the wrong thing to do,
@@ -185,7 +193,7 @@ the steps that may return an error,
.\" filp_close()
such as flushing data to the filesystem or device,
occur only later in the close operation.
-.PP
+.P
Many other implementations similarly always close the file descriptor
.\" FreeBSD documents this explicitly. From the look of the source code
.\" SVR4, ancient SunOS, later Solaris, and AIX all do this.
@@ -198,19 +206,19 @@ POSIX.1 is currently silent on this point,
but there are plans to mandate this behavior in the next major release
.\" Issue 8
of the standard.
-.PP
+.P
A careful programmer who wants to know about I/O errors may precede
.BR close ()
with a call to
.BR fsync (2).
-.PP
+.P
The
.B EINTR
error is a somewhat special case.
Regarding the
.B EINTR
error, POSIX.1-2008 says:
-.PP
+.P
.RS
If
.BR close ()
@@ -222,7 +230,7 @@ and the state of
.I fildes
is unspecified.
.RE
-.PP
+.P
This permits the behavior that occurs on Linux and
many other implementations, where,
as with other errors that may be reported by
diff --git a/man2/close_range.2 b/man2/close_range.2
index c1aa3db..d9582b0 100644
--- a/man2/close_range.2
+++ b/man2/close_range.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH close_range 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH close_range 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
close_range \- close all file descriptors in a given range
.SH LIBRARY
@@ -11,10 +11,14 @@ Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
-.B #include <linux/close_range.h>
-.PP
-.BI "int close_range(unsigned int " first ", unsigned int " last ,
-.BI " unsigned int " flags );
+.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
+.B #include <unistd.h>
+.P
+.BR "#include <linux/close_range.h>" " /* Definition of " CLOSE_RANGE_*
+.BR "" " constants */"
+.P
+.BI "int close_range(unsigned int " first ", unsigned int " last \
+", int " flags );
.fi
.SH DESCRIPTION
The
@@ -24,9 +28,9 @@ system call closes all open file descriptors from
to
.I last
(included).
-.PP
+.P
Errors closing a given file descriptor are currently ignored.
-.PP
+.P
.I flags
is a bit mask containing 0 or more of the following:
.TP
@@ -53,7 +57,7 @@ is not valid, or
.I first
is greater than
.IR last .
-.PP
+.P
The following can occur with
.B CLOSE_RANGE_UNSHARE
(when constructing the new descriptor table):
@@ -97,7 +101,7 @@ which provides significant performance benefits.
.SS Closing file descriptors before exec
.\" 60997c3d45d9a67daf01c56d805ae4fec37e0bd8
File descriptors can be closed safely using
-.PP
+.P
.in +4n
.EX
/* we don't want anything past stderr here */
@@ -105,17 +109,17 @@ close_range(3, \[ti]0U, CLOSE_RANGE_UNSHARE);
execve(....);
.EE
.in
-.PP
+.P
.B CLOSE_RANGE_UNSHARE
is conceptually equivalent to
-.PP
+.P
.in +4n
.EX
unshare(CLONE_FILES);
close_range(first, last, 0);
.EE
.in
-.PP
+.P
but can be more efficient:
if the unshared range extends past
the current maximum number of file descriptors allocated
@@ -168,7 +172,7 @@ uses
to close all file descriptors greater than or equal to 3,
and then once more displays the process's list of open files.
The following example demonstrates the use of the program:
-.PP
+.P
.in +4n
.EX
$ \fBtouch /tmp/a /tmp/b /tmp/c\fP
@@ -190,7 +194,7 @@ $ \fB./a.out /tmp/a /tmp/b /tmp/c\fP
/proc/self/fd/3 ==> /proc/9005/fd
.EE
.in
-.PP
+.P
Note that the lines showing the pathname
.I /proc/9005/fd
result from the calls to
@@ -205,7 +209,6 @@ result from the calls to
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
-#include <sys/syscall.h>
#include <unistd.h>
\&
/* Show the contents of the symbolic links in /proc/self/fd */
@@ -259,7 +262,7 @@ main(int argc, char *argv[])
\&
printf("========= About to call close_range() =======\en");
\&
- if (syscall(SYS_close_range, 3, \[ti]0U, 0) == \-1) {
+ if (close_range(3, \[ti]0U, 0) == \-1) {
perror("close_range");
exit(EXIT_FAILURE);
}
diff --git a/man2/connect.2 b/man2/connect.2
index abd9e87..ad8888a 100644
--- a/man2/connect.2
+++ b/man2/connect.2
@@ -16,7 +16,7 @@
.\" Modified 1998, 1999 by Andi Kleen
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH connect 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH connect 2 2023-11-01 "Linux man-pages 6.7"
.SH NAME
connect \- initiate a connection on a socket
.SH LIBRARY
@@ -25,7 +25,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int connect(int " sockfd ", const struct sockaddr *" addr ,
.BI " socklen_t " addrlen );
.fi
@@ -47,7 +47,7 @@ is determined by the address space of the socket
see
.BR socket (2)
for further details.
-.PP
+.P
If the socket
.I sockfd
is of type
@@ -63,18 +63,18 @@ or
this call attempts to make a connection to the socket that is bound
to the address specified by
.IR addr .
-.PP
+.P
Some protocol sockets (e.g., UNIX domain stream sockets)
may successfully
.BR connect ()
only once.
-.PP
+.P
Some protocol sockets
(e.g., datagram sockets in the UNIX and Internet domains)
may use
.BR connect ()
multiple times to change their association.
-.PP
+.P
Some protocol sockets
(e.g., TCP sockets as well as datagram sockets in the UNIX and
Internet domains)
@@ -104,7 +104,9 @@ in the path prefix.
(See also
.BR path_resolution (7).)
.TP
-.BR EACCES ", " EPERM
+.B EACCES
+.TQ
+.B EPERM
The user tried to connect to a broadcast address without having the socket
broadcast flag enabled or the connection request failed because of a local
firewall rule.
@@ -216,7 +218,7 @@ be very long when syncookies are enabled on the server.
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4, 4.4BSD,
-.RB (connect ()
+.RB ( connect ()
first appeared in 4.2BSD).
.\" SVr4 documents the additional
.\" general error codes
diff --git a/man2/copy_file_range.2 b/man2/copy_file_range.2
index 8bea2e8..aee9801 100644
--- a/man2/copy_file_range.2
+++ b/man2/copy_file_range.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH copy_file_range 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH copy_file_range 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
copy_file_range \- Copy a range of data from one file to another
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.B #define _GNU_SOURCE
.B #define _FILE_OFFSET_BITS 64
.B #include <unistd.h>
-.PP
+.P
.BI "ssize_t copy_file_range(int " fd_in ", off_t *_Nullable " off_in ,
.BI " int " fd_out ", off_t *_Nullable " off_out ,
.BI " size_t " len ", unsigned int " flags );
@@ -31,7 +31,7 @@ bytes of data from the source file descriptor
to the target file descriptor
.IR fd_out ,
overwriting any data that exists within the requested range of the target file.
-.PP
+.P
The following semantics apply for
.IR off_in ,
and similar statements apply to
@@ -57,14 +57,14 @@ The file offset of
is not changed, but
.I off_in
is adjusted appropriately.
-.PP
+.P
.I fd_in
and
.I fd_out
can refer to the same file.
If they refer to the same file, then the source and target ranges are not
allowed to overlap.
-.PP
+.P
The
.I flags
argument is provided to allow for future extensions
@@ -79,7 +79,7 @@ If the file offset of
is at or past the end of file, no bytes are copied, and
.BR copy_file_range ()
returns zero.
-.PP
+.P
On error,
.BR copy_file_range ()
returns \-1 and
@@ -189,13 +189,13 @@ or do not support cross-filesystem copy.
A major rework of the kernel implementation occurred in Linux 5.3.
Areas of the API that weren't clearly defined were clarified and the API bounds
are much more strictly checked than on earlier kernels.
-.PP
+.P
Since Linux 5.19,
cross-filesystem copies can be achieved
when both filesystems are of the same type,
and that filesystem implements support for it.
See BUGS for behavior prior to Linux 5.19.
-.PP
+.P
Applications should target the behaviour and requirements of Linux 5.19,
that was also backported to earlier stable kernels.
.SH STANDARDS
@@ -219,13 +219,13 @@ in a loop, and using the
and
.B SEEK_HOLE
operations to find the locations of data segments.
-.PP
+.P
.BR copy_file_range ()
gives filesystems an opportunity to implement "copy acceleration" techniques,
such as the use of reflinks (i.e., two or more inodes that share
pointers to the same copy-on-write disk blocks)
or server-side-copy (in the case of NFS).
-.PP
+.P
.B _FILE_OFFSET_BITS
should be defined to be 64 in code that uses non-null
.I off_in
diff --git a/man2/create_module.2 b/man2/create_module.2
index d159cb1..153acc2 100644
--- a/man2/create_module.2
+++ b/man2/create_module.2
@@ -5,19 +5,19 @@
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH create_module 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH create_module 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
create_module \- create a loadable module entry
.SH SYNOPSIS
.nf
.B #include <linux/module.h>
-.PP
+.P
.BI "[[deprecated]] caddr_t create_module(const char *" name ", size_t " size );
.fi
.SH DESCRIPTION
.IR Note :
This system call is present only before Linux 2.6.
-.PP
+.P
.BR create_module ()
attempts to create a loadable module entry and reserve the kernel memory
that will be needed to hold the module.
@@ -58,7 +58,7 @@ Linux.
.SH HISTORY
Removed in Linux 2.6.
.\" Removed in Linux 2.5.48
-.PP
+.P
This obsolete system call is not supported by glibc.
No declaration is provided in glibc headers, but, through a quirk of history,
glibc versions before glibc 2.23 did export an ABI for this system call.
diff --git a/man2/delete_module.2 b/man2/delete_module.2
index a909729..bbee49b 100644
--- a/man2/delete_module.2
+++ b/man2/delete_module.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH delete_module 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH delete_module 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
delete_module \- unload a kernel module
.SH LIBRARY
@@ -13,10 +13,10 @@ Standard C library
.BR "#include <fcntl.h>" " /* Definition of " O_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_delete_module, const char *" name ", unsigned int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR delete_module (),
@@ -36,7 +36,7 @@ The
argument is used to modify the behavior of the system call,
as described below.
This system call requires privilege.
-.PP
+.P
Module removal is attempted according to the following rules:
.IP (1) 5
If there are other loaded modules that depend on
@@ -88,7 +88,7 @@ until the reference count is zero, at which point the call unblocks.
The module is unloaded in the usual way.
.RE
.RE
-.PP
+.P
The
.B O_TRUNC
flag has one further effect on the rules described above.
@@ -100,7 +100,7 @@ function, then an attempt to remove the module fails.
However, if
.B O_TRUNC
was specified, this requirement is bypassed.
-.PP
+.P
Using the
.B O_TRUNC
flag is dangerous!
@@ -174,13 +174,13 @@ alternatively, you can invoke the system call using
.BR syscall (2).
.SS Linux 2.4 and earlier
In Linux 2.4 and earlier, the system call took only one argument:
-.PP
+.P
.BI " int delete_module(const char *" name );
-.PP
+.P
If
.I name
is NULL, all unused modules marked auto-clean are removed.
-.PP
+.P
Some further details of differences in the behavior of
.BR delete_module ()
in Linux 2.4 and earlier are
diff --git a/man2/dup.2 b/man2/dup.2
index b7187ed..e03ca26 100644
--- a/man2/dup.2
+++ b/man2/dup.2
@@ -14,7 +14,7 @@
.\" details for dup2().
.\" 2008-10-09, mtk: add description of dup3()
.\"
-.TH dup 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH dup 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
dup, dup2, dup3 \- duplicate a file descriptor
.SH LIBRARY
@@ -23,14 +23,14 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int dup(int " oldfd );
.BI "int dup2(int " oldfd ", int " newfd );
-.PP
+.P
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.BR "#include <fcntl.h>" " /* Definition of " O_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int dup3(int " oldfd ", int " newfd ", int " flags );
.fi
.SH DESCRIPTION
@@ -43,7 +43,7 @@ open file description as the descriptor
.BR open (2).)
The new file descriptor number is guaranteed to be the lowest-numbered
file descriptor that was unused in the calling process.
-.PP
+.P
After a successful return,
the old and new file descriptors may be used interchangeably.
Since the two file descriptors refer to the same open file description,
@@ -52,7 +52,7 @@ for example, if the file offset is modified by using
.BR lseek (2)
on one of the file descriptors,
the offset is also changed for the other file descriptor.
-.PP
+.P
The two file descriptors do not share file descriptor flags
(the close-on-exec flag).
The close-on-exec flag
@@ -74,14 +74,14 @@ the file descriptor
.I newfd
is adjusted so that it now refers to the same open file description as
.IR oldfd .
-.PP
+.P
If the file descriptor
.I newfd
was previously open, it is closed before being reused;
the close is performed silently
(i.e., any errors during the close are not reported by
.BR dup2 ()).
-.PP
+.P
The steps of closing and reusing the file descriptor
.I newfd
are performed
@@ -97,7 +97,7 @@ might be reused between the two steps.
Such reuse could happen because the main program is interrupted
by a signal handler that allocates a file descriptor,
or because a parallel thread allocates a file descriptor.
-.PP
+.P
Note the following points:
.IP \[bu] 3
If
@@ -233,7 +233,7 @@ also sometimes returns
.B EINVAL
like
.BR F_DUPFD .
-.PP
+.P
If
.I newfd
was open, any errors that would have been reported at
@@ -249,7 +249,7 @@ before calling
.BR dup2 (),
because of the race condition described above.
Instead, code something like the following could be used:
-.PP
+.P
.in +4n
.EX
/* Obtain a duplicate of \[aq]newfd\[aq] that can subsequently
diff --git a/man2/epoll_create.2 b/man2/epoll_create.2
index 8d2c0be..c6369f4 100644
--- a/man2/epoll_create.2
+++ b/man2/epoll_create.2
@@ -8,7 +8,7 @@
.\" Modified 2005-04-04 by Marko Kohtala <marko.kohtala@gmail.com>
.\" 2008-10-10, mtk: add description of epoll_create1()
.\"
-.TH epoll_create 2 2023-07-16 "Linux man-pages 6.05.01"
+.TH epoll_create 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
epoll_create, epoll_create1 \- open an epoll file descriptor
.SH LIBRARY
@@ -17,7 +17,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/epoll.h>
-.PP
+.P
.BI "int epoll_create(int " size );
.BI "int epoll_create1(int " flags );
.fi
@@ -29,7 +29,7 @@ instance.
Since Linux 2.6.8, the
.I size
argument is ignored, but must be greater than zero; see HISTORY.
-.PP
+.P
.BR epoll_create ()
returns a file descriptor referring to the new epoll instance.
This file descriptor is used for all the subsequent calls to the
@@ -103,7 +103,7 @@ glibc 2.3.2.
.BR epoll_create1 ()
Linux 2.6.27,
glibc 2.9.
-.PP
+.P
In the initial
.BR epoll_create ()
implementation, the
@@ -126,7 +126,7 @@ must still be greater than zero,
in order to ensure backward compatibility when new
.B epoll
applications are run on older kernels.
-.PP
+.P
Prior to Linux 2.6.29,
.\" commit 9df04e1f25effde823a600e755b51475d438f56b
a
diff --git a/man2/epoll_ctl.2 b/man2/epoll_ctl.2
index e8ee1e6..73a0446 100644
--- a/man2/epoll_ctl.2
+++ b/man2/epoll_ctl.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH epoll_ctl 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH epoll_ctl 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
epoll_ctl \- control interface for an epoll file descriptor
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/epoll.h>
-.PP
+.P
.BI "int epoll_ctl(int " epfd ", int " op ", int " fd ,
.BI " struct epoll_event *_Nullable " event );
.fi
@@ -28,7 +28,7 @@ It requests that the operation
.I op
be performed for the target file descriptor,
.IR fd .
-.PP
+.P
Valid values for the
.I op
argument are:
@@ -58,7 +58,7 @@ from the interest list.
The
.I event
argument is ignored and can be NULL (but see BUGS below).
-.PP
+.P
The
.I event
argument describes the object linked to the file descriptor
@@ -67,7 +67,7 @@ The
.I struct epoll_event
is described in
.BR epoll_event (3type).
-.PP
+.P
The
.I data
member of the
@@ -75,7 +75,7 @@ member of the
structure specifies data that the kernel should save and then return (via
.BR epoll_wait (2))
when this file descriptor becomes ready.
-.PP
+.P
The
.I events
member of the
@@ -133,7 +133,7 @@ Note that when reading from a channel such as a pipe or a stream socket,
this event merely indicates that the peer closed its end of the channel.
Subsequent reads from the channel will return 0 (end of file)
only after all outstanding data in the channel has been consumed.
-.PP
+.P
And the available input flags are:
.TP
.B EPOLLET
@@ -395,7 +395,7 @@ when using
Applications that need to be portable to kernels before Linux 2.6.9
should specify a non-null pointer in
.IR event .
-.PP
+.P
If
.B EPOLLWAKEUP
is specified in
diff --git a/man2/epoll_wait.2 b/man2/epoll_wait.2
index 5efaada..72d6fab 100644
--- a/man2/epoll_wait.2
+++ b/man2/epoll_wait.2
@@ -6,7 +6,7 @@
.\"
.\" 2007-04-30: mtk, Added description of epoll_pwait()
.\"
-.TH epoll_wait 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH epoll_wait 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
epoll_wait, epoll_pwait, epoll_pwait2 \-
wait for an I/O event on an epoll file descriptor
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/epoll.h>
-.PP
+.P
.BI "int epoll_wait(int " epfd ", struct epoll_event *" events ,
.BI " int " maxevents ", int " timeout );
.BI "int epoll_pwait(int " epfd ", struct epoll_event *" events ,
@@ -46,7 +46,7 @@ are returned by
The
.I maxevents
argument must be greater than zero.
-.PP
+.P
The
.I timeout
argument specifies the number of milliseconds that
@@ -55,7 +55,7 @@ will block.
Time is measured against the
.B CLOCK_MONOTONIC
clock.
-.PP
+.P
A call to
.BR epoll_wait ()
will block until either:
@@ -65,7 +65,7 @@ a file descriptor delivers an event;
the call is interrupted by a signal handler; or
.IP \[bu]
the timeout expires.
-.PP
+.P
Note that the
.I timeout
interval will be rounded up to the system clock granularity,
@@ -77,15 +77,15 @@ of \-1 causes
.BR epoll_wait ()
to block indefinitely, while specifying a
.I timeout
-equal to zero cause
+equal to zero causes
.BR epoll_wait ()
to return immediately, even if no events are available.
-.PP
+.P
The
.I struct epoll_event
is described in
.BR epoll_event (3type).
-.PP
+.P
The
.I data
field of each returned
@@ -95,7 +95,7 @@ in the most recent call to
.BR epoll_ctl (2)
.RB ( EPOLL_CTL_ADD ", " EPOLL_CTL_MOD )
for the corresponding open file descriptor.
-.PP
+.P
The
.I events
field is a bit mask that indicates the events that have occurred for the
@@ -118,21 +118,21 @@ like
.BR epoll_pwait ()
allows an application to safely wait until either a file descriptor
becomes ready or until a signal is caught.
-.PP
+.P
The following
.BR epoll_pwait ()
call:
-.PP
+.P
.in +4n
.EX
ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);
.EE
.in
-.PP
+.P
is equivalent to
.I atomically
executing the following calls:
-.PP
+.P
.in +4n
.EX
sigset_t origmask;
@@ -142,7 +142,7 @@ ready = epoll_wait(epfd, &events, maxevents, timeout);
pthread_sigmask(SIG_SETMASK, &origmask, NULL);
.EE
.in
-.PP
+.P
The
.I sigmask
argument may be specified as NULL, in which case
@@ -173,8 +173,8 @@ can block indefinitely.
.SH RETURN VALUE
On success,
.BR epoll_wait ()
-returns the number of file descriptors ready for the requested I/O, or zero
-if no file descriptor became ready during the requested
+returns the number of file descriptors ready for the requested I/O operation,
+or zero if no file descriptor became ready during the requested
.I timeout
milliseconds.
On failure,
@@ -233,7 +233,7 @@ If the new file descriptor becomes ready,
it will cause the
.BR epoll_wait ()
call to unblock.
-.PP
+.P
If more than
.I maxevents
file descriptors are ready when
@@ -245,7 +245,7 @@ This behavior helps avoid starvation scenarios,
where a process fails to notice that additional file descriptors
are ready because it focuses on a set of file descriptors that
are already known to be ready.
-.PP
+.P
Note that it is possible to call
.BR epoll_wait ()
on an
diff --git a/man2/eventfd.2 b/man2/eventfd.2
index 7be6a3a..2de063e 100644
--- a/man2/eventfd.2
+++ b/man2/eventfd.2
@@ -6,7 +6,7 @@
.\"
.\" 2008-10-10, mtk: describe eventfd2(), and EFD_NONBLOCK and EFD_CLOEXEC
.\"
-.TH eventfd 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH eventfd 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
eventfd \- create a file descriptor for event notification
.SH LIBRARY
@@ -15,7 +15,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/eventfd.h>
-.PP
+.P
.BI "int eventfd(unsigned int " initval ", int " flags );
.fi
.SH DESCRIPTION
@@ -28,12 +28,12 @@ The object contains an unsigned 64-bit integer
counter that is maintained by the kernel.
This counter is initialized with the value specified in the argument
.IR initval .
-.PP
+.P
As its return value,
.BR eventfd ()
returns a new file descriptor that can be used to refer to the
eventfd object.
-.PP
+.P
The following values may be bitwise ORed in
.I flags
to change the behavior of
@@ -62,11 +62,11 @@ to achieve the same result.
.BR EFD_SEMAPHORE " (since Linux 2.6.30)"
Provide semaphore-like semantics for reads from the new file descriptor.
See below.
-.PP
+.P
Up to Linux 2.6.26, the
.I flags
argument is unused, and must be specified as zero.
-.PP
+.P
The following operations can be performed on the file descriptor returned by
.BR eventfd ():
.TP
@@ -142,7 +142,11 @@ fails with the error
if the size of the supplied buffer is less than 8 bytes,
or if an attempt is made to write the value 0xffffffffffffffff.
.TP
-.BR poll "(2), " select "(2) (and similar)"
+.BR poll (2)
+.TQ
+.BR select (2)
+.TQ
+(and similar)
The returned file descriptor supports
.BR poll (2)
(and analogously
@@ -203,7 +207,7 @@ and
When the file descriptor is no longer required it should be closed.
When all file descriptors associated with the same eventfd object
have been closed, the resources for object are freed by the kernel.
-.PP
+.P
A copy of the file descriptor created by
.BR eventfd ()
is inherited by the child produced by
@@ -260,7 +264,6 @@ T{
.BR eventfd ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH VERSIONS
.SS C library/kernel differences
There are two underlying Linux system calls:
@@ -280,7 +283,7 @@ where it is available.
The GNU C library defines an additional type,
and two functions that attempt to abstract some of the details of
reading and writing on an eventfd file descriptor:
-.PP
+.P
.in +4n
.EX
typedef uint64_t eventfd_t;
@@ -289,7 +292,7 @@ int eventfd_read(int fd, eventfd_t *value);
int eventfd_write(int fd, eventfd_t value);
.EE
.in
-.PP
+.P
The functions perform the read and write operations on an
eventfd file descriptor,
returning 0 if the correct number of bytes was transferred,
@@ -318,13 +321,13 @@ The kernel overhead of an eventfd file descriptor
is much lower than that of a pipe,
and only one file descriptor is
required (versus the two required for a pipe).
-.PP
+.P
When used in the kernel, an eventfd
file descriptor can provide a bridge from kernel to user space, allowing,
for example, functionalities like KAIO (kernel AIO)
.\" or eventually syslets/threadlets
to signal to a file descriptor that some operation is complete.
-.PP
+.P
A key point about an eventfd file descriptor is that it can be
monitored just like any other file descriptor using
.BR select (2),
@@ -341,7 +344,7 @@ interface, these mechanisms could not be multiplexed via
.BR poll (2),
or
.BR epoll (7).)
-.PP
+.P
The current value of an eventfd counter can be viewed
via the entry for the corresponding file descriptor in the process's
.IR /proc/ pid /fdinfo
@@ -357,9 +360,9 @@ the child writes each of the integers supplied in the program's
command-line arguments to the eventfd file descriptor.
When the parent has finished sleeping,
it reads from the eventfd file descriptor.
-.PP
+.P
The following shell session shows a sample run of the program:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./a.out 1 2 4 7 14"
diff --git a/man2/execve.2 b/man2/execve.2
index ae1863c..23404b5 100644
--- a/man2/execve.2
+++ b/man2/execve.2
@@ -14,7 +14,7 @@
.\" 2007-09-14 Ollie Wild <aaw@google.com>, mtk
.\" Add text describing limits on command-line arguments + environment
.\"
-.TH execve 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH execve 2 2023-11-01 "Linux man-pages 6.7"
.SH NAME
execve \- execute program
.SH LIBRARY
@@ -23,7 +23,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int execve(const char *" pathname ", char *const _Nullable " argv [],
.BI " char *const _Nullable " envp []);
.fi
@@ -33,18 +33,18 @@ executes the program referred to by \fIpathname\fP.
This causes the program that is currently being run by the calling process
to be replaced with a new program, with newly initialized stack, heap,
and (initialized and uninitialized) data segments.
-.PP
+.P
\fIpathname\fP must be either a binary executable, or a script
starting with a line of the form:
-.PP
+.P
.in +4n
.EX
\fB#!\fP\fIinterpreter \fP[optional-arg]
.EE
.in
-.PP
+.P
For details of the latter case, see "Interpreter scripts" below.
-.PP
+.P
.I argv
is an array of pointers to strings passed to the new program
as its command-line arguments.
@@ -53,19 +53,19 @@ By convention, the first of these strings (i.e.,
should contain the filename associated with the file being executed.
The
.I argv
-array must be terminated by a NULL pointer.
+array must be terminated by a null pointer.
(Thus, in the new program,
.I argv[argc]
-will be NULL.)
-.PP
+will be a null pointer.)
+.P
.I envp
is an array of pointers to strings, conventionally of the form
.BR key=value ,
which are passed as the environment of the new program.
The
.I envp
-array must be terminated by a NULL pointer.
-.PP
+array must be terminated by a null pointer.
+.P
This manual page describes the Linux system call in detail;
for an overview of the nomenclature and the many, often preferable,
standardised variants of this function provided by libc,
@@ -73,31 +73,31 @@ including ones that search the
.B PATH
environment variable, see
.BR exec (3).
-.PP
+.P
The argument vector and environment can be accessed by the
new program's main function, when it is defined as:
-.PP
+.P
.in +4n
.EX
int main(int argc, char *argv[], char *envp[])
.EE
.in
-.PP
+.P
Note, however, that the use of a third argument to the main function
is not specified in POSIX.1;
according to POSIX.1,
the environment should be accessed via the external variable
.BR environ (7).
-.PP
+.P
.BR execve ()
does not return on success, and the text, initialized data,
uninitialized data (bss), and stack of the calling process are overwritten
according to the contents of the newly loaded program.
-.PP
+.P
If the current program is being ptraced, a \fBSIGTRAP\fP signal is sent to it
after a successful
.BR execve ().
-.PP
+.P
If the set-user-ID bit is set on the program file referred to by
\fIpathname\fP,
then the effective user ID of the calling process is changed
@@ -105,7 +105,7 @@ to that of the owner of the program file.
Similarly, if the set-group-ID bit is set on the program file,
then the effective group ID of the calling
process is set to the group of the program file.
-.PP
+.P
The aforementioned transformations of the effective IDs are
.I not
performed (i.e., the set-user-ID and set-group-ID bits are ignored)
@@ -125,20 +125,20 @@ flag for
or
.IP \[bu]
the calling process is being ptraced.
-.PP
+.P
The capabilities of the program file (see
.BR capabilities (7))
are also ignored if any of the above are true.
-.PP
+.P
The effective user ID of the process is copied to the saved set-user-ID;
similarly, the effective group ID is copied to the saved set-group-ID.
This copying takes place after any effective ID changes that occur
because of the set-user-ID and set-group-ID mode bits.
-.PP
+.P
The process's real UID and real GID, as well as its supplementary group IDs,
are unchanged by a call to
.BR execve ().
-.PP
+.P
If the executable is an a.out dynamically linked
binary executable containing
shared-library stubs, the Linux dynamic linker
@@ -146,7 +146,7 @@ shared-library stubs, the Linux dynamic linker
is called at the start of execution to bring
needed shared objects into memory
and link the executable with them.
-.PP
+.P
If the executable is a dynamically linked ELF executable, the
interpreter named in the PT_INTERP segment is used to load the needed
shared objects.
@@ -198,7 +198,7 @@ Exit handlers are not preserved
.IP \[bu]
The floating-point environment is reset to the default (see
.BR fenv (3)).
-.PP
+.P
The process attributes in the preceding list are all specified
in POSIX.1.
The following Linux-specific process attributes are also
@@ -257,7 +257,7 @@ The file descriptor table is unshared, undoing the effect of the
.B CLONE_FILES
flag of
.BR clone (2).
-.PP
+.P
Note the following further points:
.IP \[bu] 3
All threads other than the calling thread are destroyed during an
@@ -313,17 +313,17 @@ closed across an
.SS Interpreter scripts
An interpreter script is a text file that has execute
permission enabled and whose first line is of the form:
-.PP
+.P
.in +4n
.EX
\fB#!\fP\fIinterpreter \fP[optional-arg]
.EE
.in
-.PP
+.P
The
.I interpreter
must be a valid pathname for an executable file.
-.PP
+.P
If the
.I pathname
argument of
@@ -331,13 +331,13 @@ argument of
specifies an interpreter script, then
.I interpreter
will be invoked with the following arguments:
-.PP
+.P
.in +4n
.EX
\fIinterpreter\fP [optional-arg] \fIpathname\fP arg...
.EE
.in
-.PP
+.P
where
.I pathname
is the pathname of the file specified as the first argument of
@@ -358,12 +358,12 @@ call.
.\" See the P - preserve-argv[0] option.
.\" Documentation/admin-guide/binfmt-misc.rst
.\" https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.html
-.PP
+.P
For portable use,
.I optional-arg
should either be absent, or be specified as a single word (i.e., it
should not contain white space); see NOTES below.
-.PP
+.P
Since Linux 2.6.28,
.\" commit bf2a9a39639b8b51377905397a5005f444e9a892
the kernel permits the interpreter of a script to itself be a script.
@@ -383,14 +383,14 @@ constant (either defined in
.I <limits.h>
or available at run time using the call
.IR "sysconf(_SC_ARG_MAX)" ).
-.PP
+.P
Before Linux 2.6.23, the memory used to store the
environment and argument strings was limited to 32 pages
(defined by the kernel constant
.BR MAX_ARG_PAGES ).
On architectures with a 4-kB page size,
this yields a maximum size of 128\ kB.
-.PP
+.P
On Linux 2.6.23 and later, most architectures support a size limit
derived from the soft
.B RLIMIT_STACK
@@ -443,7 +443,12 @@ The total number of bytes in the environment
.RI ( envp )
and argument list
.RI ( argv )
-is too large.
+is too large,
+an argument or environment string is too long,
+or the full
+.I pathname
+of the executable is too long.
+The terminating null byte is counted as part of the string length.
.TP
.B EACCES
Search permission is denied on a component of the path prefix of
@@ -555,7 +560,7 @@ The specified executable was open for writing by one or more processes.
.SH VERSIONS
POSIX does not document the #! behavior, but it exists
(with some variations) on other UNIX systems.
-.PP
+.P
On Linux,
.I argv
and
@@ -577,7 +582,7 @@ case the same as Linux.
.\" Bug filed 30 Apr 2007: http://bugzilla.kernel.org/show_bug.cgi?id=8408
.\" Bug rejected (because fix would constitute an ABI change).
.\"
-.PP
+.P
POSIX.1 says that values returned by
.BR sysconf (3)
should be invariant over the lifetime of a process.
@@ -597,7 +602,7 @@ Before Linux 5.1, the limit is 127 characters.
Since Linux 5.1,
.\" commit 6eb3c3d0a52dca337e327ae8868ca1f44a712e02
the limit is 255 characters.
-.PP
+.P
The semantics of the
.I optional-arg
argument of an interpreter script vary across implementations.
@@ -616,7 +621,7 @@ an interpreter script can have multiple arguments,
and white spaces in
.I optional-arg
are used to delimit the arguments.
-.PP
+.P
Linux (like most other modern UNIX systems)
ignores the set-user-ID and set-group-ID bits on scripts.
.SH STANDARDS
@@ -627,7 +632,7 @@ POSIX.1-2001, SVr4, 4.3BSD.
.\" conditions EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX does not
.\" document ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL,
.\" EISDIR or ELIBBAD error conditions.
-.PP
+.P
With UNIX\ V6, the argument list of an
.BR exec ()
call was ended by 0,
@@ -654,10 +659,10 @@ All that
.BR execve ()
does is arrange for an existing process (the calling process)
to execute a new program.
-.PP
+.P
Set-user-ID and set-group-ID processes can not be
.BR ptrace (2)d.
-.PP
+.P
The result of mounting a filesystem
.I nosuid
varies across Linux kernel versions:
@@ -668,7 +673,7 @@ give the user powers they did not have already (and return
some will just ignore the set-user-ID and set-group-ID bits and
.BR exec ()
successfully.
-.PP
+.P
In most cases where
.BR execve ()
fails, control returns to the original executable image,
@@ -691,7 +696,7 @@ A more detailed explanation of the
error that can occur (since Linux 3.1) when calling
.BR execve ()
is as follows.
-.PP
+.P
The
.B EAGAIN
error can occur when a
@@ -713,7 +718,7 @@ call to fail.
.\" commit 909cc4ae86f3380152a18e2a3c44523893ee11c4
the resource limit was not imposed on processes that
changed their user IDs.)
-.PP
+.P
Since Linux 3.1, the scenario just described no longer causes the
.BR set*uid ()
call to fail,
@@ -744,7 +749,7 @@ common privileged daemon workflow\[em]namely,
.BR set*uid ()
+
.BR execve ().
-.PP
+.P
If the resource limit was not still exceeded at the time of the
.BR execve ()
call
@@ -772,7 +777,7 @@ by this process succeeds.
.SH EXAMPLES
The following program is designed to be execed by the second program below.
It just echoes its command-line arguments, one per line.
-.PP
+.P
.in +4n
.\" SRC BEGIN (myecho.c)
.EX
@@ -792,10 +797,10 @@ main(int argc, char *argv[])
.EE
.\" SRC END
.in
-.PP
+.P
This program can be used to exec the program named in its command-line
argument:
-.PP
+.P
.in +4n
.\" SRC BEGIN (execve.c)
.EX
@@ -825,9 +830,9 @@ main(int argc, char *argv[])
.EE
.\" SRC END
.in
-.PP
+.P
We can use the second program to exec the first as follows:
-.PP
+.P
.in +4n
.EX
.RB "$" " cc myecho.c \-o myecho"
@@ -838,13 +843,13 @@ argv[1]: hello
argv[2]: world
.EE
.in
-.PP
+.P
We can also use these programs to demonstrate the use of a script
interpreter.
To do this we create a script whose "interpreter" is our
.I myecho
program:
-.PP
+.P
.in +4n
.EX
.RB "$" " cat > script"
@@ -853,9 +858,9 @@ program:
.RB "$" " chmod +x script"
.EE
.in
-.PP
+.P
We can then use our program to exec the script:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./execve ./script"
diff --git a/man2/execveat.2 b/man2/execveat.2
index 22c468a..3a612ae 100644
--- a/man2/execveat.2
+++ b/man2/execveat.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH execveat 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH execveat 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
execveat \- execute program relative to a directory file descriptor
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.BR "#include <linux/fcntl.h>" " /* Definition of " AT_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int execveat(int " dirfd ", const char *" pathname ,
.BI " char *const _Nullable " argv [],
.BI " char *const _Nullable " envp [],
@@ -30,7 +30,7 @@ and
It operates in exactly the same way as
.BR execve (2),
except for the differences described in this manual page.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -40,7 +40,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR execve (2)
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -52,13 +52,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR execve (2)).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
If
.I pathname
is an empty string and the
@@ -68,7 +68,7 @@ flag is specified, then the file descriptor
specifies the file to be executed (i.e.,
.I dirfd
refers to an executable file, rather than a directory).
-.PP
+.P
The
.I flags
argument is a bit mask that can include zero or more of the following flags:
@@ -160,7 +160,7 @@ system call is also needed to allow
to be implemented on systems that do not have the
.I /proc
filesystem mounted.
-.PP
+.P
When asked to execute a script file, the
.I argv[0]
that is passed to the script interpreter is a string of the form
@@ -183,7 +183,7 @@ in this case,
.I P
is the value given in
.IR pathname .
-.PP
+.P
For the same reasons described in
.BR fexecve (3),
the natural idiom when using
@@ -196,13 +196,13 @@ The
.B ENOENT
error described above means that it is not possible to set the
close-on-exec flag on the file descriptor given to a call of the form:
-.PP
+.P
.in +4n
.EX
execveat(fd, "", argv, envp, AT_EMPTY_PATH);
.EE
.in
-.PP
+.P
However, the inability to set the close-on-exec flag means that a file
descriptor referring to the script leaks through to the script itself.
As well as wasting a file descriptor,
diff --git a/man2/exit_group.2 b/man2/exit_group.2
index 3515406..af66e6a 100644
--- a/man2/exit_group.2
+++ b/man2/exit_group.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH exit_group 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH exit_group 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
exit_group \- exit all threads in a process
.SH LIBRARY
@@ -12,10 +12,10 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "[[noreturn]] void syscall(SYS_exit_group, int " status );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR exit_group (),
diff --git a/man2/fallocate.2 b/man2/fallocate.2
index e462658..bedc533 100644
--- a/man2/fallocate.2
+++ b/man2/fallocate.2
@@ -6,7 +6,7 @@
.\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE
.\" 2011-09-19: Substantial restructuring of the page
.\"
-.TH fallocate 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH fallocate 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
fallocate \- manipulate file space
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <fcntl.h>
-.PP
+.P
.BI "int fallocate(int " fd ", int " mode ", off_t " offset \
", off_t " len ");"
.fi
@@ -25,7 +25,7 @@ This is a nonportable, Linux-specific system call.
For the portable, POSIX.1-specified method of ensuring that space
is allocated for a file, see
.BR posix_fallocate (3).
-.PP
+.P
.BR fallocate ()
allows the caller to directly manipulate the allocated disk space
for the file referred to by
@@ -35,7 +35,7 @@ for the byte range starting at
and continuing for
.I len
bytes.
-.PP
+.P
The
.I mode
argument determines the operation to be performed on the given range.
@@ -63,13 +63,13 @@ This default behavior closely resembles the behavior of the
.BR posix_fallocate (3)
library function,
and is intended as a method of optimally implementing that function.
-.PP
+.P
After a successful call, subsequent writes into the range specified by
.I offset
and
.I len
are guaranteed not to fail because of lack of disk space.
-.PP
+.P
If the
.B FALLOC_FL_KEEP_SIZE
flag is specified in
@@ -80,7 +80,7 @@ but the file size will not be changed even if
is greater than the file size.
Preallocating zeroed blocks beyond the end of the file in this manner
is useful for optimizing append workloads.
-.PP
+.P
If the
.B FALLOC_FL_UNSHARE_RANGE
flag is specified in
@@ -90,7 +90,7 @@ that a subsequent write will not fail due to lack of space.
Typically, this will be done by performing a copy-on-write operation on
all shared data in the file.
This flag may not be supported by all filesystems.
-.PP
+.P
Because allocation is done in block size chunks,
.BR fallocate ()
may allocate a larger range of disk space than was specified.
@@ -109,7 +109,7 @@ Within the specified range, partial filesystem blocks are zeroed,
and whole filesystem blocks are removed from the file.
After a successful call,
subsequent reads from this range will return zeros.
-.PP
+.P
The
.B FALLOC_FL_PUNCH_HOLE
flag must be ORed with
@@ -120,7 +120,7 @@ in other words, even when punching off the end of the file, the file size
(as reported by
.BR stat (2))
does not change.
-.PP
+.P
Not all filesystems support
.BR FALLOC_FL_PUNCH_HOLE ;
if a filesystem doesn't support the operation, an error is returned.
@@ -160,7 +160,7 @@ will be appended at the location
and the file will be
.I len
bytes smaller.
-.PP
+.P
A filesystem may place limitations on the granularity of the operation,
in order to ensure efficient implementation.
Typically,
@@ -174,7 +174,7 @@ If a filesystem has such a requirement,
fails with the error
.B EINVAL
if this requirement is violated.
-.PP
+.P
If the region specified by
.I offset
plus
@@ -183,12 +183,12 @@ reaches or passes the end of file, an error is returned;
instead, use
.BR ftruncate (2)
to truncate a file.
-.PP
+.P
No other flags may be specified in
.I mode
in conjunction with
.BR FALLOC_FL_COLLAPSE_RANGE .
-.PP
+.P
As at Linux 3.15,
.B FALLOC_FL_COLLAPSE_RANGE
is supported by
@@ -212,13 +212,13 @@ Within the specified range, blocks are preallocated for the regions
that span the holes in the file.
After a successful call, subsequent
reads from this range will return zeros.
-.PP
+.P
Zeroing is done within the filesystem preferably by converting the range into
unwritten extents.
This approach means that the specified range will not be physically zeroed
out on the device (except for partial blocks at the either end of the range),
and I/O is (otherwise) required only to update metadata.
-.PP
+.P
If the
.B FALLOC_FL_KEEP_SIZE
flag is additionally specified in
@@ -230,7 +230,7 @@ is greater than the file size.
This behavior is the same as when preallocating space with
.B FALLOC_FL_KEEP_SIZE
specified.
-.PP
+.P
Not all filesystems support
.BR FALLOC_FL_ZERO_RANGE ;
if a filesystem doesn't support the operation, an error is returned.
@@ -270,7 +270,7 @@ bytes.
Inserting a hole inside a file increases the file size by
.I len
bytes.
-.PP
+.P
This mode has the same limitations as
.B FALLOC_FL_COLLAPSE_RANGE
regarding the granularity of the operation.
@@ -284,12 +284,12 @@ is equal to or greater than the end of file, an error is returned.
For such operations (i.e., inserting a hole at the end of file),
.BR ftruncate (2)
should be used.
-.PP
+.P
No other flags may be specified in
.I mode
in conjunction with
.BR FALLOC_FL_INSERT_RANGE .
-.PP
+.P
.B FALLOC_FL_INSERT_RANGE
requires filesystem support.
Filesystems that support this operation include
diff --git a/man2/fanotify_init.2 b/man2/fanotify_init.2
index f48e43a..8a9667b 100644
--- a/man2/fanotify_init.2
+++ b/man2/fanotify_init.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH fanotify_init 2 2023-07-08 "Linux man-pages 6.05.01"
+.TH fanotify_init 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
fanotify_init \- create and initialize fanotify group
.SH LIBRARY
@@ -11,17 +11,17 @@ Standard C library
.nf
.BR "#include <fcntl.h>" " /* Definition of " O_* " constants */"
.B #include <sys/fanotify.h>
-.PP
+.P
.BI "int fanotify_init(unsigned int " flags ", unsigned int " event_f_flags );
.fi
.SH DESCRIPTION
For an overview of the fanotify API, see
.BR fanotify (7).
-.PP
+.P
.BR fanotify_init ()
initializes a new fanotify group and returns a file descriptor for the event
queue associated with the group.
-.PP
+.P
The file descriptor is used in calls to
.BR fanotify_mark (2)
to specify the files, directories, mounts, or filesystems for which fanotify
@@ -32,25 +32,25 @@ Other events can be used to determine whether
another application is permitted to access a file or directory.
Permission to access filesystem objects is granted by writing to the file
descriptor.
-.PP
+.P
Multiple programs may be using the fanotify interface at the same time to
monitor the same files.
-.PP
+.P
The number of fanotify groups per user is limited.
See
.BR fanotify (7)
for details about this limit.
-.PP
+.P
The
.I flags
argument contains a multi-bit field defining the notification class of the
listening application and further single bit fields specifying the behavior
of the file descriptor.
-.PP
+.P
If multiple listeners for permission events exist,
the notification class is used to establish the sequence
in which the listeners receive the events.
-.PP
+.P
Only one of the following notification classes may be specified in
.IR flags :
.TP
@@ -82,7 +82,7 @@ It does not need to be specified.
This value only allows the receipt of events notifying that a file has been
accessed.
Permission decisions before the file is accessed are not possible.
-.PP
+.P
Listeners with different notification classes will receive events in the
order
.BR FAN_CLASS_PRE_CONTENT ,
@@ -90,7 +90,7 @@ order
.BR FAN_CLASS_NOTIF .
The order of notification for listeners in the same notification class
is undefined.
-.PP
+.P
The following bits can additionally be set in
.IR flags :
.TP
@@ -364,7 +364,7 @@ so this restriction may eventually be lifted.
For more details on information records,
see
.BR fanotify (7).
-.PP
+.P
The
.I event_f_flags
argument
@@ -386,7 +386,7 @@ This value allows only write access.
.TP
.B O_RDWR
This value allows read and write access.
-.PP
+.P
Additional bits can be set in
.IR event_f_flags .
The most useful values are:
@@ -406,7 +406,7 @@ See the description of the
flag in
.BR open (2)
for reasons why this may be useful.
-.PP
+.P
The following are also allowable:
.BR O_APPEND ,
.BR O_DSYNC ,
@@ -525,7 +525,7 @@ The
.B O_CLOEXEC
is ignored when passed in
.IR event_f_flags .
-.PP
+.P
The following bug was present before Linux 3.14:
.IP \[bu] 3
.\" Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580
diff --git a/man2/fanotify_mark.2 b/man2/fanotify_mark.2
index d1f7eec..c942b0b 100644
--- a/man2/fanotify_mark.2
+++ b/man2/fanotify_mark.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH fanotify_mark 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH fanotify_mark 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
fanotify_mark \- add, remove, or modify an fanotify mark on a filesystem
object
@@ -11,7 +11,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/fanotify.h>
-.PP
+.P
.BI "int fanotify_mark(int " fanotify_fd ", unsigned int " flags ,
.BI " uint64_t " mask ", int " dirfd ,
.BI " const char *_Nullable " pathname );
@@ -19,17 +19,17 @@ Standard C library
.SH DESCRIPTION
For an overview of the fanotify API, see
.BR fanotify (7).
-.PP
+.P
.BR fanotify_mark ()
adds, removes, or modifies an fanotify mark on a filesystem object.
The caller must have read permission on the filesystem object that
is to be marked.
-.PP
+.P
The
.I fanotify_fd
argument is a file descriptor returned by
.BR fanotify_init (2).
-.PP
+.P
.I flags
is a bit mask describing the modification to perform.
It must include exactly one of the following values:
@@ -74,11 +74,11 @@ can be used in conjunction with
.BR FAN_MARK_FLUSH .
.I mask
is ignored.
-.PP
+.P
If none of the values above is specified, or more than one is specified,
the call fails with the error
.BR EINVAL .
-.PP
+.P
In addition,
zero or more of the following values may be ORed into
.IR flags :
@@ -311,7 +311,7 @@ and if it is not,
the listener sets a mark with an ignore mask on the directory.
Evictable inode marks allow using this method for a large number of directories
without the concern of pinning all inodes and exhausting the system's memory.
-.PP
+.P
.I mask
defines which events shall be listened for (or which shall be ignored).
It is a bit mask composed of the following values:
@@ -486,7 +486,7 @@ and
are not generated for children of marked directories.
To monitor complete directory trees it is necessary to mark the relevant
mount or filesystem.
-.PP
+.P
The following composed values are defined:
.TP
.B FAN_CLOSE
@@ -496,7 +496,7 @@ A file is closed
.B FAN_MOVE
A file or directory has been moved
.RB ( FAN_MOVED_FROM | FAN_MOVED_TO ).
-.PP
+.P
The filesystem object to be marked is determined by the file descriptor
.I dirfd
and the pathname specified in
@@ -743,10 +743,17 @@ do not specify a directory.
.B EOPNOTSUPP
The object indicated by
.I pathname
-is associated with a filesystem that does not support the encoding of file
-handles.
+is associated with a filesystem
+that does not support the encoding of file handles.
This error can be returned only with an fanotify group that identifies
filesystem objects by file handles.
+Calling
+.BR name_to_handle_at (2)
+with the flag
+.BR AT_HANDLE_FID " (since Linux 6.5)"
+.\" commit 96b2b072ee62be8ae68c8ecf14854c4d0505a8f8
+can be used as a test
+to check if a filesystem supports reporting events with file handles.
.TP
.B EPERM
The operation is not permitted because the caller lacks a required capability.
@@ -784,28 +791,28 @@ or
.BR uselib (2).
Events of these types will not be raised in the situation where an
interpreter is passed (or reads) a file for interpretation.
-.PP
+.P
Additionally, if a mark has also been placed on the Linux dynamic
linker, a user should also expect to receive an event for it when
an ELF object has been successfully opened using
.BR execve (2)
or
.BR execveat (2).
-.PP
+.P
For example, if the following ELF binary were to be invoked and a
.B FAN_OPEN_EXEC
mark has been placed on /:
-.PP
+.P
.in +4n
.EX
$ /bin/echo foo
.EE
.in
-.PP
+.P
The listening application in this case would receive
.B FAN_OPEN_EXEC
events for both the ELF binary and interpreter, respectively:
-.PP
+.P
.in +4n
.EX
/bin/echo
diff --git a/man2/fcntl.2 b/man2/fcntl.2
index 9362044..01d18aa 100644
--- a/man2/fcntl.2
+++ b/man2/fcntl.2
@@ -44,7 +44,7 @@
.\" 2017-06-26, Jens Axboe <axboe@kernel.dk>
.\" Document F_{GET,SET}_RW_HINT and F_{GET,SET}_FILE_RW_HINT
.\"
-.TH fcntl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH fcntl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
fcntl \- manipulate file descriptor
.SH LIBRARY
@@ -53,22 +53,22 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <fcntl.h>
-.PP
-.BI "int fcntl(int " fd ", int " cmd ", ... /* " arg " */ );"
+.P
+.BI "int fcntl(int " fd ", int " op ", ... /* " arg " */ );"
.fi
.SH DESCRIPTION
.BR fcntl ()
performs one of the operations described below on the open file descriptor
.IR fd .
The operation is determined by
-.IR cmd .
-.PP
+.IR op .
+.P
.BR fcntl ()
can take an optional third argument.
Whether or not this argument is required is determined by
-.IR cmd .
+.IR op .
The required argument type is indicated in parentheses after each
-.I cmd
+.I op
name (in most cases, the required type is
.IR int ,
and we identify the argument using the name
@@ -76,14 +76,14 @@ and we identify the argument using the name
or
.I void
is specified if the argument is not required.
-.PP
+.P
Certain of the operations below are supported only since a particular
Linux kernel version.
The preferred method of checking whether the host kernel supports
a particular operation is to invoke
.BR fcntl ()
with the desired
-.I cmd
+.I op
value and then test whether the call failed with
.BR EINVAL ,
indicating that the kernel does not recognize this value.
@@ -121,7 +121,7 @@ see the description of
in
.BR open (2).
.SS File descriptor flags
-The following commands manipulate the flags associated with
+The following operations manipulate the flags associated with
a file descriptor.
Currently, only one such flag is defined:
.BR FD_CLOEXEC ,
@@ -147,7 +147,7 @@ is ignored.
.BR F_SETFD " (\fIint\fP)"
Set the file descriptor flags to the value specified by
.IR arg .
-.PP
+.P
In multithreaded programs, using
.BR fcntl ()
.B F_SETFD
@@ -177,7 +177,7 @@ Duplicated file descriptors
.BR fork (2),
etc.) refer to the same open file description, and thus
share the same file status flags.
-.PP
+.P
The file status flags and their semantics are described in
.BR open (2).
.TP
@@ -198,7 +198,7 @@ and file creation flags
in
.I arg
are ignored.
-On Linux, this command can change only the
+On Linux, this operation can change only the
.BR O_APPEND ,
.BR O_ASYNC ,
.BR O_DIRECT ,
@@ -216,7 +216,7 @@ Linux implements traditional ("process-associated") UNIX record locks,
as standardized by POSIX.
For a Linux-specific alternative with better semantics,
see the discussion of open file description locks below.
-.PP
+.P
.BR F_SETLK ,
.BR F_SETLKW ,
and
@@ -227,7 +227,7 @@ The third argument,
.IR lock ,
is a pointer to a structure that has at least the following fields
(in unspecified order).
-.PP
+.P
.in +4n
.EX
struct flock {
@@ -244,13 +244,13 @@ struct flock {
};
.EE
.in
-.PP
+.P
The
.IR l_whence ", " l_start ", and " l_len
fields of this structure specify the range of bytes we wish to lock.
Bytes past the end of the file may be locked,
but not bytes before the start of the file.
-.PP
+.P
.I l_start
is the starting offset for the lock, and is interpreted
relative to either:
@@ -270,7 +270,7 @@ In the final two cases,
.I l_start
can be a negative number provided the
offset does not lie before the start of the file.
-.PP
+.P
.I l_len
specifies the number of bytes to be locked.
If
@@ -285,7 +285,7 @@ has the special meaning: lock all bytes starting at the
location specified by
.IR l_whence " and " l_start
through to the end of file, no matter how large the file grows.
-.PP
+.P
POSIX.1-2001 allows (but does not require)
an implementation to support a negative
.I l_len
@@ -298,7 +298,7 @@ covers bytes
up to and including
.IR l_start \-1.
This is supported since Linux 2.4.21 and Linux 2.5.49.
-.PP
+.P
The
.I l_type
field can be used to place a read
@@ -387,7 +387,7 @@ If the conflicting lock is an open file description lock, then
is set to \-1.
Note that the returned information
may already be out of date by the time the caller inspects it.
-.PP
+.P
In order to place a read lock,
.I fd
must be open for reading.
@@ -395,7 +395,7 @@ In order to place a write lock,
.I fd
must be open for writing.
To place both types of lock, open a file read-write.
-.PP
+.P
When placing locks with
.BR F_SETLKW ,
the kernel detects
@@ -418,16 +418,16 @@ attempting regain the locks that it requires.
Circular deadlocks involving more than two processes are also detected.
Note, however, that there are limitations to the kernel's
deadlock-detection algorithm; see BUGS.
-.PP
+.P
As well as being removed by an explicit
.BR F_UNLCK ,
record locks are automatically released when the process terminates.
-.PP
+.P
Record locks are not inherited by a child created via
.BR fork (2),
but are preserved across an
.BR execve (2).
-.PP
+.P
Because of the buffering performed by the
.BR stdio (3)
library, the use of record locking with routines in that package
@@ -436,7 +436,7 @@ should be avoided; use
and
.BR write (2)
instead.
-.PP
+.P
The record locks described above are associated with the process
(unlike the open file description locks described below).
This has some unfortunate consequences:
@@ -461,7 +461,7 @@ The threads in a process share locks.
In other words,
a multithreaded program can't use record locking to ensure
that threads don't simultaneously access the same region of a file.
-.PP
+.P
Open file description locks solve both of these problems.
.SS Open file description locks (non-POSIX)
Open file description locks are advisory byte-range locks whose operation is
@@ -474,7 +474,7 @@ and available since Linux 3.15.
to include this lock type in the next revision of POSIX.1.)
For an explanation of open file descriptions, see
.BR open (2).
-.PP
+.P
The principal difference between the two lock types
is that whereas traditional record locks
are associated with a process,
@@ -492,13 +492,13 @@ with
and are only automatically released on the last close
of the open file description,
instead of being released on any close of the file.
-.PP
+.P
Conflicting lock combinations
(i.e., a read lock and a write lock or two write locks)
where one lock is an open file description lock and the other
is a traditional record lock conflict
even when they are acquired by the same process on the same file descriptor.
-.PP
+.P
Open file description locks placed via the same open file description
(i.e., via the same file descriptor,
or via a duplicate of the file descriptor created by
@@ -511,7 +511,7 @@ if a new lock is placed on an already locked region,
then the existing lock is converted to the new lock type.
(Such conversions may result in splitting, shrinking, or coalescing with
an existing lock as discussed above.)
-.PP
+.P
On the other hand, open file description locks may conflict with
each other when they are acquired via different open file descriptions.
Thus, the threads in a multithreaded program can use
@@ -519,7 +519,7 @@ open file description locks to synchronize access to a file region
by having each thread perform its own
.BR open (2)
on the file and applying locks via the resulting file descriptor.
-.PP
+.P
As with traditional advisory locks, the third argument to
.BR fcntl (),
.IR lock ,
@@ -529,9 +529,9 @@ structure.
By contrast with traditional record locks, the
.I l_pid
field of that structure must be set to zero
-when using the commands described below.
-.PP
-The commands for working with open file description locks are analogous
+when using the operations described below.
+.P
+The operations for working with open file description locks are analogous
to those used with traditional locks:
.TP
.BR F_OFD_SETLK " (\fIstruct flock *\fP)"
@@ -587,7 +587,7 @@ then details about one of these locks are returned via
.IR lock ,
as described above for
.BR F_GETLK .
-.PP
+.P
In the current implementation,
.\" commit 57b65325fe34ec4c917bc4e555144b4a94d9e1f7
no deadlock detection is performed for open file description locks.
@@ -604,12 +604,12 @@ since Linux 4.5, mandatory locking has been made an optional feature,
governed by a configuration option
.RB ( CONFIG_MANDATORY_FILE_LOCKING ).
This feature is no longer supported at all in Linux 5.15 and above.
-.PP
+.P
By default, both traditional (process-associated) and open file description
record locks are advisory.
Advisory locks are not enforced and are useful only between
cooperating processes.
-.PP
+.P
Both lock types can also be mandatory.
Mandatory locks are enforced for all processes.
If a process tries to perform an incompatible access (e.g.,
@@ -629,7 +629,7 @@ If the
.B O_NONBLOCK
flag is enabled, then the system call fails with the error
.BR EAGAIN .
-.PP
+.P
To make use of mandatory locks, mandatory locking must be enabled
both on the filesystem that contains the file to be locked,
and on the file itself.
@@ -646,7 +646,7 @@ permission bit (see
.BR chmod (1)
and
.BR chmod (2)).
-.PP
+.P
Mandatory locking is not specified by POSIX.
Some other systems also support mandatory locking,
although the details of how to enable it vary across systems.
@@ -658,7 +658,7 @@ This may happen due to administrative action on the server, or due to a
network partition (i.e., loss of network connectivity with the server)
which lasts long enough for the server to assume
that the client is no longer functioning.
-.PP
+.P
When the filesystem determines that a lock has been lost, future
.BR read (2)
or
@@ -670,7 +670,7 @@ descriptor is closed.
Since Linux 3.12,
.\" commit ef1820f9be27b6ad158f433ab38002ab8131db4d
this happens at least for NFSv4 (including all minor versions).
-.PP
+.P
Some versions of UNIX send a signal
.RB ( SIGLOST )
in this circumstance.
@@ -722,7 +722,7 @@ one must also enable generation of signals on the file descriptor.
This is done by using the
.BR fcntl ()
.B F_SETFL
-command to set the
+operation to set the
.B O_ASYNC
file status flag on the file descriptor.
Subsequently, a
@@ -732,7 +732,7 @@ on the file descriptor.
The
.BR fcntl ()
.B F_SETSIG
-command can be used to obtain delivery of a signal other than
+operation can be used to obtain delivery of a signal other than
.BR SIGIO .
.IP
Sending a signal to the owner process (group) specified by
@@ -1002,14 +1002,14 @@ delivering
and this signal is delivered to the entire
process rather than to a specific thread.
.\" See fs/fcntl.c::send_sigio_to_task() (2.4/2.6) sources -- MTK, Apr 05
-.PP
+.P
Using these mechanisms, a program can implement fully asynchronous I/O
without using
.BR select (2)
or
.BR poll (2)
most of the time.
-.PP
+.P
The use of
.B O_ASYNC
is specific to BSD and Linux.
@@ -1074,7 +1074,7 @@ other open file descriptors for the file.
.B F_UNLCK
Remove our lease from the file.
.RE
-.PP
+.P
Leases are associated with an open file description (see
.BR open (2)).
This means that duplicate file descriptors (created by, for example,
@@ -1087,7 +1087,7 @@ Furthermore, the lease is released by either an explicit
.B F_UNLCK
operation on any of these duplicate file descriptors, or when all
such file descriptors have been closed.
-.PP
+.P
Leases may be taken out only on regular files.
An unprivileged process may take out a lease only on a file whose
UID (owner) matches the filesystem UID of the process.
@@ -1103,7 +1103,7 @@ by returning either
indicating, respectively, a read lease , a write lease, or no lease.
.I arg
is ignored.
-.PP
+.P
When a process (the "lease breaker") performs an
.BR open (2)
or
@@ -1120,7 +1120,7 @@ accessed by another process (e.g., flushing cached buffers) and
then either remove or downgrade its lease.
A lease is removed by performing an
.B F_SETLEASE
-command specifying
+operation specifying
.I arg
as
.BR F_UNLCK .
@@ -1130,16 +1130,16 @@ then it is sufficient for the lease holder to downgrade
the lease to a read lease.
This is done by performing an
.B F_SETLEASE
-command specifying
+operation specifying
.I arg
as
.BR F_RDLCK .
-.PP
+.P
If the lease holder fails to downgrade or remove the lease within
the number of seconds specified in
.IR /proc/sys/fs/lease\-break\-time ,
then the kernel forcibly removes or downgrades the lease holder's lease.
-.PP
+.P
Once a lease break has been initiated,
.B F_GETLEASE
returns the target lease type (either
@@ -1149,11 +1149,11 @@ or
depending on what would be compatible with the lease breaker)
until the lease holder voluntarily downgrades or removes the lease or
the kernel forcibly does so after the lease break timer expires.
-.PP
+.P
Once the lease has been voluntarily or forcibly removed or downgraded,
and assuming the lease breaker has not unblocked its system call,
the kernel permits the lease breaker's system call to proceed.
-.PP
+.P
If the lease breaker's blocked
.BR open (2)
or
@@ -1174,16 +1174,16 @@ flag when calling
then the call immediately fails with the error
.BR EWOULDBLOCK ,
but the other steps still occur as described above.
-.PP
+.P
The default signal used to notify the lease holder is
.BR SIGIO ,
but this can be changed using the
.B F_SETSIG
-command to
+operation to
.BR fcntl ().
If a
.B F_SETSIG
-command is performed (even one specifying
+operation is performed (even one specifying
.BR SIGIO ),
and the signal
handler is established using
@@ -1206,7 +1206,7 @@ The events to be notified are specified in
.IR arg ,
which is a bit mask specified by ORing together zero or more of
the following bits:
-.PP
+.P
.RS
.PD 0
.TP
@@ -1289,7 +1289,7 @@ The default signal is
.BR SIGIO ,
but this can be changed using the
.B F_SETSIG
-command to
+operation to
.BR fcntl ().
(Note that
.B SIGIO
@@ -1377,7 +1377,7 @@ file and filesystem.
For an overview of file sealing, a discussion of its purpose,
and some code examples, see
.BR memfd_create (2).
-.PP
+.P
Currently,
file seals can be applied only to a file descriptor returned by
.BR memfd_create (2)
@@ -1388,7 +1388,7 @@ On other filesystems, all
.BR fcntl ()
operations that operate on seals will return
.BR EINVAL .
-.PP
+.P
Seals are a property of an inode.
Thus, all open file descriptors referring to the same inode share
the same set of seals.
@@ -1421,7 +1421,7 @@ If the file does not support sealing, \-1 is returned and
.I errno
is set to
.BR EINVAL .
-.PP
+.P
The following seals are available:
.TP
.B F_SEAL_SEAL
@@ -1534,7 +1534,7 @@ for an explanation of open file descriptions.)
In this context, the term "write lifetime" means
the expected time the data will live on media, before
being overwritten or erased.
-.PP
+.P
An application may use the different hint values specified below to
separate writes into different write classes,
so that multiple users or applications running on a single storage back-end
@@ -1542,7 +1542,7 @@ can aggregate their I/O patterns in a consistent manner.
However, there are no functional semantics implied by these flags,
and different I/O classes can use the write lifetime hints
in arbitrary ways, so long as the hints are used consistently.
-.PP
+.P
The following operations can be applied to the file descriptor,
.IR fd :
.TP
@@ -1567,10 +1567,10 @@ the open file description referred to by
Sets the read/write hint value associated with the open file description
referred to by
.IR fd .
-.PP
+.P
If an open file description has not been assigned a read/write hint,
then it shall use the value assigned to the inode, if any.
-.PP
+.P
The following read/write
hints are valid since Linux 4.13:
.TP
@@ -1602,7 +1602,7 @@ Data written to this inode or via this open file description
is expected to have a lifetime longer than
data written with
.BR RWH_WRITE_LIFE_LONG .
-.PP
+.P
All the write-specific hints are relative to each other,
and no individual absolute meaning should be attributed to them.
.SH RETURN VALUE
@@ -1629,7 +1629,9 @@ for traditional
.B SIGIO
behavior.
.TP
-.BR F_GETPIPE_SZ ", " F_SETPIPE_SZ
+.B F_GETPIPE_SZ
+.TQ
+.B F_SETPIPE_SZ
The pipe capacity.
.TP
.B F_GET_SEALS
@@ -1637,9 +1639,9 @@ A bit mask identifying the seals that have been set
for the inode referred to by
.IR fd .
.TP
-All other commands
+All other operations
Zero.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -1657,7 +1659,7 @@ another process.
is not an open file descriptor
.TP
.B EBADF
-.I cmd
+.I op
is
.B F_SETLK
or
@@ -1666,7 +1668,7 @@ and the file descriptor open mode doesn't match with the
type of lock requested.
.TP
.B EBUSY
-.I cmd
+.I op
is
.B F_SETPIPE_SZ
and the new pipe capacity specified in
@@ -1675,7 +1677,7 @@ is smaller than the amount of buffer space currently
used to store data in the pipe.
.TP
.B EBUSY
-.I cmd
+.I op
is
.BR F_ADD_SEALS ,
.I arg
@@ -1687,14 +1689,14 @@ and there exists a writable, shared mapping on the file referred to by
.B EDEADLK
It was detected that the specified
.B F_SETLKW
-command would cause a deadlock.
+operation would cause a deadlock.
.TP
.B EFAULT
.I lock
is outside your accessible address space.
.TP
.B EINTR
-.I cmd
+.I op
is
.B F_SETLKW
or
@@ -1703,7 +1705,7 @@ and the operation was interrupted by a signal; see
.BR signal (7).
.TP
.B EINTR
-.I cmd
+.I op
is
.BR F_GETLK ,
.BR F_SETLK ,
@@ -1717,11 +1719,11 @@ NFS), but can sometimes happen locally.
.TP
.B EINVAL
The value specified in
-.I cmd
+.I op
is not recognized by this kernel.
.TP
.B EINVAL
-.I cmd
+.I op
is
.B F_ADD_SEALS
and
@@ -1729,7 +1731,7 @@ and
includes an unrecognized sealing bit.
.TP
.B EINVAL
-.I cmd
+.I op
is
.B F_ADD_SEALS
or
@@ -1739,7 +1741,7 @@ and the filesystem containing the inode referred to by
does not support sealing.
.TP
.B EINVAL
-.I cmd
+.I op
is
.B F_DUPFD
and
@@ -1751,7 +1753,7 @@ in
.BR getrlimit (2)).
.TP
.B EINVAL
-.I cmd
+.I op
is
.B F_SETSIG
and
@@ -1759,7 +1761,7 @@ and
is not an allowable signal number.
.TP
.B EINVAL
-.I cmd
+.I op
is
.BR F_OFD_SETLK ,
.BR F_OFD_SETLKW ,
@@ -1770,7 +1772,7 @@ and
was not specified as zero.
.TP
.B EMFILE
-.I cmd
+.I op
is
.B F_DUPFD
and the per-process limit on the number of open file descriptors
@@ -1783,13 +1785,13 @@ protocol failed (e.g., locking over NFS).
.B ENOTDIR
.B F_NOTIFY
was specified in
-.IR cmd ,
+.IR op ,
but
.I fd
does not refer to a directory.
.TP
.B EPERM
-.I cmd
+.I op
is
.B F_SETPIPE_SZ
and the soft or hard user pipe limit has been reached; see
@@ -1801,7 +1803,7 @@ Attempted to clear the
flag on a file that has the append-only attribute set.
.TP
.B EPERM
-.I cmd
+.I op
was
.BR F_ADD_SEALS ,
but
@@ -1811,7 +1813,7 @@ or the current set of seals on the file already includes
.BR F_SEAL_SEAL .
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
.BR F_GETOWN_EX ,
.BR F_SETOWN_EX ,
.BR F_SETPIPE_SZ ,
@@ -1826,9 +1828,9 @@ are Linux-specific.
(Define the
.B _GNU_SOURCE
macro to obtain these definitions.)
-.\" .PP
+.\" .P
.\" SVr4 documents additional EIO, ENOLINK and EOVERFLOW error conditions.
-.PP
+.P
.BR F_OFD_SETLK ,
.BR F_OFD_SETLKW ,
and
@@ -1837,7 +1839,7 @@ are Linux-specific (and one must define
.B _GNU_SOURCE
to obtain their definitions),
but work is being done to have them included in the next version of POSIX.1.
-.PP
+.P
.B F_ADD_SEALS
and
.B F_GET_SEALS
@@ -1845,7 +1847,7 @@ are Linux-specific.
.\" FIXME . Once glibc adds support, add a note about FTM requirements
.SH HISTORY
SVr4, 4.3BSD, POSIX.1-2001.
-.PP
+.P
Only the operations
.BR F_DUPFD ,
.BR F_GETFD ,
@@ -1857,7 +1859,7 @@ Only the operations
and
.B F_SETLKW
are specified in POSIX.1-2001.
-.PP
+.P
.B F_GETOWN
and
.B F_SETOWN
@@ -1869,7 +1871,7 @@ are specified in POSIX.1-2001.
with the value 500 or greater, or
.B _POSIX_C_SOURCE
with the value 200809L or greater.)
-.PP
+.P
.B F_DUPFD_CLOEXEC
is specified in POSIX.1-2008.
(To get this definition, define
@@ -1895,7 +1897,7 @@ Consequently, an
system call was added in Linux 2.4.
The newer system call employs a different structure for file locking,
.IR flock64 ,
-and corresponding commands,
+and corresponding operations,
.BR F_GETLK64 ,
.BR F_SETLK64 ,
and
@@ -1911,7 +1913,7 @@ placed by
.BR flock (2)
and
.BR fcntl ().
-.PP
+.P
Several systems have more fields in
.I "struct flock"
such as, for example,
@@ -1926,7 +1928,7 @@ alone is not going to be very useful if the process holding the lock
may live on a different machine;
on Linux, while present on some architectures (such as MIPS32),
this field is not used.
-.PP
+.P
The original Linux
.BR fcntl ()
system call was not designed to handle large file offsets
@@ -1938,7 +1940,7 @@ Consequently, an
system call was added in Linux 2.4.
The newer system call employs a different structure for file locking,
.IR flock64 ,
-and corresponding commands,
+and corresponding operations,
.BR F_GETLK64 ,
.BR F_SETLK64 ,
and
@@ -1975,7 +1977,7 @@ The default value for this file is 90.)
This scenario potentially risks data corruption,
since another process might acquire a lock in the intervening period
and perform file I/O.
-.PP
+.P
Since Linux 3.12,
.\" commit ef1820f9be27b6ad158f433ab38002ab8131db4d
if an NFSv4 client loses contact with the server,
@@ -2096,7 +2098,7 @@ It is therefore inadvisable to rely on mandatory locking.
.BR capabilities (7),
.BR feature_test_macros (7),
.BR lslocks (8)
-.PP
+.P
.IR locks.txt ,
.IR mandatory\-locking.txt ,
and
diff --git a/man2/flock.2 b/man2/flock.2
index 5f2917f..c2c93ca 100644
--- a/man2/flock.2
+++ b/man2/flock.2
@@ -12,7 +12,7 @@
.\" FIXME Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE
.\" which only have effect for SAMBA.
.\"
-.TH flock 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH flock 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
flock \- apply or remove an advisory lock on an open file
.SH LIBRARY
@@ -21,14 +21,14 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/file.h>
-.PP
-.BI "int flock(int " fd ", int " operation );
+.P
+.BI "int flock(int " fd ", int " op );
.fi
.SH DESCRIPTION
Apply or remove an advisory lock on the open file specified by
.IR fd .
The argument
-.I operation
+.I op
is one of the following:
.RS 4
.TP 9
@@ -45,7 +45,7 @@ file at a given time.
.B LOCK_UN
Remove an existing lock held by this process.
.RE
-.PP
+.P
A call to
.BR flock ()
may block if an incompatible lock is held by another process.
@@ -53,9 +53,9 @@ To make a nonblocking request, include
.B LOCK_NB
(by ORing)
with any of the above operations.
-.PP
+.P
A single file may not simultaneously have both shared and exclusive locks.
-.PP
+.P
Locks created by
.BR flock ()
are associated with an open file description (see
@@ -70,7 +70,7 @@ Furthermore, the lock is released either by an explicit
.B LOCK_UN
operation on any of these duplicate file descriptors, or when all
such file descriptors have been closed.
-.PP
+.P
If a process uses
.BR open (2)
(or similar) to obtain more than one file descriptor for the same file,
@@ -79,19 +79,19 @@ these file descriptors are treated independently by
An attempt to lock the file using one of these file descriptors
may be denied by a lock that the calling process has
already placed via another file descriptor.
-.PP
+.P
A process may hold only one type of lock (shared or exclusive)
on a file.
Subsequent
.BR flock ()
calls on an already locked file will convert an existing lock to the new
lock mode.
-.PP
+.P
Locks created by
.BR flock ()
are preserved across an
.BR execve (2).
-.PP
+.P
A shared or exclusive lock can be placed on a file regardless of the
mode in which the file was opened.
.SH RETURN VALUE
@@ -111,7 +111,7 @@ delivery of a signal caught by a handler; see
.BR signal (7).
.TP
.B EINVAL
-.I operation
+.I op
is invalid.
.TP
.B ENOLCK
@@ -149,7 +149,7 @@ Up to Linux 5.4,
.BR flock ()
is not propagated over SMB.
A file with such locks will not appear locked for remote clients.
-.PP
+.P
Since Linux 5.5,
.BR flock ()
locks are emulated with SMB byte-range locks on the entire file.
@@ -164,7 +164,7 @@ any IO on a locked file will always fail with
when done from a separate file descriptor.
This difference originates from the design of locks in the SMB protocol,
which provides mandatory locking semantics.
-.PP
+.P
Remote and mandatory locking semantics may vary with
SMB protocol, mount options and server type.
See
@@ -191,7 +191,7 @@ Instead, one could use
byte-range locking, which does work over NFS,
given a sufficiently recent version of
Linux and a server which supports locking.
-.PP
+.P
Since Linux 2.6.12, NFS clients support
.BR flock ()
locks by emulating them as
@@ -206,7 +206,7 @@ locks
interact with one another over NFS.
It also means that in order to place an exclusive lock,
the file must be opened for writing.
-.PP
+.P
Since Linux 2.6.37,
.\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2
the kernel supports a compatibility mode that allows
@@ -224,7 +224,7 @@ places advisory locks only; given suitable permissions on a file,
a process is free to ignore the use of
.BR flock ()
and perform I/O on the file.
-.PP
+.P
.BR flock ()
and
.BR fcntl (2)
@@ -237,7 +237,7 @@ using
the semantics of
.BR flock ()
will be different from those described in this manual page.
-.PP
+.P
Converting a lock
(shared to exclusive, or vice versa) is not guaranteed to be atomic:
the existing lock is first removed, and then a new lock is established.
@@ -260,7 +260,7 @@ and occurs on many other implementations.)
.BR open (2),
.BR lockf (3),
.BR lslocks (8)
-.PP
+.P
.I Documentation/filesystems/locks.txt
in the Linux kernel source tree
.RI ( Documentation/locks.txt
diff --git a/man2/fork.2 b/man2/fork.2
index 607a86b..abfbbed 100644
--- a/man2/fork.2
+++ b/man2/fork.2
@@ -16,7 +16,7 @@
.\" Greatly expanded, to describe all attributes that differ
.\" parent and child.
.\"
-.TH fork 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH fork 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
fork \- create a child process
.SH LIBRARY
@@ -25,7 +25,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B pid_t fork(void);
.fi
.SH DESCRIPTION
@@ -37,7 +37,7 @@ process.
The calling process is referred to as the
.I parent
process.
-.PP
+.P
The child process and the parent process run in separate memory spaces.
At the time of
.BR fork ()
@@ -47,7 +47,7 @@ Memory writes, file mappings
and unmappings
.RB ( munmap (2))
performed by one of the processes do not affect the other.
-.PP
+.P
The child process is an exact duplicate of the parent
process except for the following points:
.IP \[bu] 3
@@ -93,7 +93,7 @@ from its parent
.BR aio_write (3)),
nor does it inherit any asynchronous I/O contexts from its parent (see
.BR io_setup (2)).
-.PP
+.P
The process attributes in the preceding list are all specified
in POSIX.1.
The parent and child also differ with respect to the following
@@ -144,7 +144,7 @@ The port access permission bits set by
are not inherited by the child;
the child must turn on any bits that it requires using
.BR ioperm (2).
-.PP
+.P
Note the following further points:
.IP \[bu] 3
The child process is created with a single thread\[em]the
@@ -300,7 +300,7 @@ See
and
.BR wait (2)
for more examples.
-.PP
+.P
.\" SRC BEGIN (fork.c)
.EX
#include <signal.h>
diff --git a/man2/fsync.2 b/man2/fsync.2
index 623e7ca..8566ef7 100644
--- a/man2/fsync.2
+++ b/man2/fsync.2
@@ -15,7 +15,7 @@
.\" 2006-04-28, mtk, substantial rewrite of various parts.
.\" 2012-02-27 Various changes by Christoph Hellwig <hch@lst.de>
.\"
-.TH fsync 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH fsync 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
fsync, fdatasync \- synchronize a file's in-core state with storage device
.SH LIBRARY
@@ -24,17 +24,17 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int fsync(int " fd );
-.PP
+.P
.BI "int fdatasync(int " fd );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.nf
.BR fsync ():
glibc 2.16 and later:
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
_BSD_SOURCE || _XOPEN_SOURCE
|| /* Since glibc 2.8: */ _POSIX_C_SOURCE >= 200112L
.fi
-.PP
+.P
.BR fdatasync ():
.nf
_POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500
@@ -59,12 +59,12 @@ changed information can be retrieved even if the system crashes or
is rebooted.
This includes writing through or flushing a disk cache if present.
The call blocks until the device reports that the transfer has completed.
-.PP
+.P
As well as flushing the file data,
.BR fsync ()
also flushes the metadata information associated with the file (see
.BR inode (7)).
-.PP
+.P
Calling
.BR fsync ()
does not necessarily ensure
@@ -72,7 +72,7 @@ that the entry in the directory containing the file has also reached disk.
For that an explicit
.BR fsync ()
on a file descriptor for the directory is also needed.
-.PP
+.P
.BR fdatasync ()
is similar to
.BR fsync (),
@@ -93,7 +93,7 @@ On the other hand, a change to the file size
as made by say
.BR ftruncate (2)),
would require a metadata flush.
-.PP
+.P
The aim of
.BR fdatasync ()
is to reduce disk activity for applications that do not
@@ -130,12 +130,16 @@ all file descriptors that were open on the file when the error was recorded.
.B ENOSPC
Disk space was exhausted while synchronizing.
.TP
-.BR EROFS ", " EINVAL
+.B EROFS
+.TQ
+.B EINVAL
.I fd
is bound to a special file (e.g., a pipe, FIFO, or socket)
which does not support synchronization.
.TP
-.BR ENOSPC ", " EDQUOT
+.B ENOSPC
+.TQ
+.B EDQUOT
.I fd
is bound to a file on NFS or another filesystem which does not allocate
space at the time of a
@@ -155,23 +159,17 @@ to a value greater than 0.
.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
.\" -1: unavailable, 0: ask using sysconf().
.\" glibc defines them to 1.
-.PP
-On some UNIX systems (but not Linux),
-.I fd
-must be a
-.I writable
-file descriptor.
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
-POSIX.1-2001, 4.3BSD.
-.PP
+POSIX.1-2001, 4.2BSD.
+.P
In Linux 2.2 and earlier,
.BR fdatasync ()
is equivalent to
.BR fsync (),
and so has no performance advantage.
-.PP
+.P
The
.BR fsync ()
implementations in older kernels and lesser used filesystems
@@ -181,6 +179,13 @@ In these cases disk caches need to be disabled using
or
.BR sdparm (8)
to guarantee safe operation.
+.P
+Under AT&T UNIX System V Release 4
+.I fd
+needs to be opened for writing.
+This is by itself incompatible with the original BSD interface
+and forbidden by POSIX,
+but nevertheless survives in HP-UX and AIX.
.SH SEE ALSO
.BR sync (1),
.BR bdflush (2),
diff --git a/man2/futex.2 b/man2/futex.2
index 43b1075..2ff300b 100644
--- a/man2/futex.2
+++ b/man2/futex.2
@@ -19,7 +19,7 @@
.\" FIXME Do we need to add some text regarding Torvald Riegel's 2015-01-24 mail
.\" http://thread.gmane.org/gmane.linux.kernel/1703405/focus=1873242
.\"
-.TH futex 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH futex 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
futex \- fast user-space locking
.SH LIBRARY
@@ -27,18 +27,18 @@ Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
-.PP
+.P
.BR "#include <linux/futex.h>" " /* Definition of " FUTEX_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_futex, uint32_t *" uaddr ", int " futex_op \
", uint32_t " val ,
.BI " const struct timespec *" timeout , \
" \fR /* or: \fBuint32_t \fIval2\fP */"
.BI " uint32_t *" uaddr2 ", uint32_t " val3 );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR futex (),
@@ -61,7 +61,7 @@ Other
.BR futex ()
operations can be used to wake any processes or threads waiting
for a particular condition.
-.PP
+.P
A futex is a 32-bit value\[em]referred to below as a
.IR "futex word" \[em]whose
address is supplied to the
@@ -80,7 +80,7 @@ virtual addresses in different processes,
but these addresses all refer to the same location in physical memory.)
In a multithreaded program, it is sufficient to place the futex word
in a global variable shared by all threads.
-.PP
+.P
When executing a futex operation that requests to block a thread,
the kernel will block only if the futex word has the value that the
calling thread supplied (as one of the arguments of the
@@ -113,7 +113,7 @@ blocking via a futex is an atomic compare-and-block operation.
.\" the reference in the following sentence
.\" See NOTES for a detailed specification of
.\" the synchronization semantics.
-.PP
+.P
One use of futexes is for implementing locks.
The state of the lock (i.e., acquired or not acquired)
can be represented as an atomically accessed flag in shared memory.
@@ -140,10 +140,10 @@ operation that wakes threads blocked on the lock flag used as a futex word
See
.BR futex (7)
for more detail on how to use futexes.
-.PP
+.P
Besides the basic wait and wake-up futex functionality, there are further
futex operations aimed at supporting more complex use cases.
-.PP
+.P
Note that
no explicit initialization or destruction is necessary to use futexes;
the kernel maintains a futex
@@ -164,7 +164,7 @@ argument;
.I val
is a value whose meaning and purpose depends on
.IR futex_op .
-.PP
+.P
The remaining arguments
.RI ( timeout ,
.IR uaddr2 ,
@@ -172,7 +172,7 @@ and
.IR val3 )
are required only for certain of the futex operations described below.
Where one of these arguments is not required, it is ignored.
-.PP
+.P
For several blocking operations, the
.I timeout
argument is a pointer to a
@@ -190,12 +190,12 @@ then to
and in the remainder of this page, this argument is referred to as
.I val2
when interpreted in this fashion.
-.PP
+.P
Where it is required, the
.I uaddr2
argument is a pointer to a second futex word that is employed
by the operation.
-.PP
+.P
The interpretation of the final integer argument,
.IR val3 ,
depends on the operation.
@@ -264,7 +264,7 @@ If this option is not set, the kernel measures the
against the
.B CLOCK_MONOTONIC
clock.
-.PP
+.P
The operation specified in
.I futex_op
is one of the following:
@@ -835,7 +835,7 @@ while tasks at an intermediate priority continuously preempt
the low-priority task from the CPU.
Consequently, the low-priority task makes no progress toward
releasing the lock, and the high-priority task remains blocked.
-.PP
+.P
Priority inheritance is a mechanism for dealing with
the priority-inversion problem.
With this mechanism, when a high-priority task becomes blocked
@@ -852,7 +852,7 @@ held by another intermediate-priority task
then both of those tasks
(or more generally, all of the tasks in a lock chain)
have their priorities raised to be the same as the high-priority task.
-.PP
+.P
From a user-space perspective,
what makes a futex PI-aware is a policy agreement (described below)
between user space and the kernel about the value of the futex word,
@@ -868,7 +868,7 @@ for the implementation of very specific IPC mechanisms.)
.\" talk about a PI aware pthread_mutex, than a PI aware futex, since
.\" there is a lot of policy and scaffolding that has to be built up
.\" around it to use it properly (this is what a PI pthread_mutex is).
-.PP
+.P
.\" mtk: The following text is drawn from the Hart/Guniguntala paper
.\" (listed in SEE ALSO), but I have reworded some pieces
.\" significantly.
@@ -899,7 +899,7 @@ FUTEX_WAITERS | TID
(Note that is invalid for a PI futex word to have no owner and
.B FUTEX_WAITERS
set.)
-.PP
+.P
With this policy in place,
a user-space application can acquire an unacquired
lock or release a lock using atomic instructions executed in user mode
@@ -910,7 +910,7 @@ Acquiring a lock simply consists of using compare-and-swap to atomically
set the futex word's value to the caller's TID if its previous value was 0.
Releasing a lock requires using compare-and-swap to set the futex word's
value to 0 if the previous value was the expected TID.
-.PP
+.P
If a futex is already acquired (i.e., has a nonzero value),
waiters must employ the
.B FUTEX_LOCK_PI
@@ -923,7 +923,7 @@ bit is set in the futex value;
in this case, the lock owner must employ the
.B FUTEX_UNLOCK_PI
operation to release the lock.
-.PP
+.P
In the cases where callers are forced into the kernel
(i.e., required to perform a
.BR futex ()
@@ -933,7 +933,7 @@ a kernel locking mechanism which implements the required
priority-inheritance semantics.
After the RT-mutex is acquired, the futex value is updated accordingly,
before the calling thread returns to user space.
-.PP
+.P
It is important to note
.\" tglx (July 2015):
.\" If there are multiple waiters on a pi futex then a wake pi operation
@@ -950,7 +950,7 @@ up in an invalid state, such as having an owner but the value being 0,
or having waiters but not having the
.B FUTEX_WAITERS
bit set.)
-.PP
+.P
If a futex has an associated RT-mutex in the kernel
(i.e., there are blocked waiters)
and the owner of the futex/RT-mutex dies unexpectedly,
@@ -969,7 +969,7 @@ the dead owner.
.\" mechanism. In that case the futex value will be set to
.\" FUTEX_OWNER_DIED. The robust futex mechanism is also available for non
.\" PI futexes.
-.PP
+.P
PI futexes are operated on by specifying one of the values listed below in
.IR futex_op .
Note that the PI futex operations must be used as paired operations
@@ -1000,7 +1000,7 @@ Additionally,
(or the error
.B EINVAL
results).
-.PP
+.P
The PI futex operations are as follows:
.\"
.\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -1362,7 +1362,7 @@ was invoked via
all operations return \-1 and set
.I errno
to indicate the error.
-.PP
+.P
The return value on success depends on the operation,
as described in the following list:
.TP
@@ -1742,7 +1742,7 @@ and the timeout expired before the operation completed.
Linux.
.SH HISTORY
Linux 2.6.0.
-.PP
+.P
Initial futex support was merged in Linux 2.5.7 but with different
semantics from what was described above.
A four-argument system call with the semantics
@@ -1760,7 +1760,7 @@ The two processes each write
messages to the terminal and employ a synchronization protocol
that ensures that they alternate in writing messages.
Upon running this program we see output such as the following:
-.PP
+.P
.in +4n
.EX
$ \fB./futex_demo\fP
@@ -1931,7 +1931,7 @@ main(int argc, char *argv[])
.BR pthread_mutexattr_getprotocol (3),
.BR futex (7),
.BR sched (7)
-.PP
+.P
The following kernel source files:
.IP \[bu] 3
.I Documentation/pi\-futex.txt
@@ -1943,28 +1943,28 @@ The following kernel source files:
.I Documentation/locking/rt\-mutex\-design.txt
.IP \[bu]
.I Documentation/robust\-futex\-ABI.txt
-.PP
+.P
Franke, H., Russell, R., and Kirwood, M., 2002.
\fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP
(from proceedings of the Ottawa Linux Symposium 2002),
.br
.UR http://kernel.org\:/doc\:/ols\:/2002\:/ols2002\-pages\-479\-495.pdf
.UE
-.PP
+.P
Hart, D., 2009. \fIA futex overview and update\fP,
.UR http://lwn.net/Articles/360699/
.UE
-.PP
+.P
Hart, D.\& and Guniguntala, D., 2009.
\fIRequeue-PI: Making glibc Condvars PI-Aware\fP
(from proceedings of the 2009 Real-Time Linux Workshop),
.UR http://lwn.net/images/conf/rtlws11/papers/proc/p10.pdf
.UE
-.PP
+.P
Drepper, U., 2011. \fIFutexes Are Tricky\fP,
.UR http://www.akkadia.org/drepper/futex.pdf
.UE
-.PP
+.P
Futex example library, futex\-*.tar.bz2 at
.br
.UR https://mirrors.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/
diff --git a/man2/futimesat.2 b/man2/futimesat.2
index 4a120cd..b2a18ab 100644
--- a/man2/futimesat.2
+++ b/man2/futimesat.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH futimesat 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH futimesat 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
futimesat \- change timestamps of a file relative to a \
directory file descriptor
@@ -13,16 +13,16 @@ Standard C library
.nf
.BR "#include <fcntl.h>" " /* Definition of " AT_* " constants */"
.B #include <sys/time.h>
-.PP
+.P
.BI "[[deprecated]] int futimesat(int " dirfd ", const char *" pathname ,
.BI " const struct timeval " times [2]);
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR futimesat ():
.nf
_GNU_SOURCE
@@ -32,13 +32,13 @@ This system call is obsolete.
Use
.BR utimensat (2)
instead.
-.PP
+.P
The
.BR futimesat ()
system call operates in exactly the same way as
.BR utimes (2),
except for the differences described in this manual page.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -48,7 +48,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR utimes (2)
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -60,7 +60,7 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR utimes (2)).
-.PP
+.P
If
.I pathname
is absolute, then
@@ -113,11 +113,11 @@ None.
.SH HISTORY
Linux 2.6.16,
glibc 2.4.
-.PP
+.P
It was implemented from a specification that was proposed for POSIX.1,
but that specification was replaced by the one for
.BR utimensat (2).
-.PP
+.P
A similar system call exists on Solaris.
.SH NOTES
.SH SEE ALSO
diff --git a/man2/get_kernel_syms.2 b/man2/get_kernel_syms.2
index 307d9ca..a1029b1 100644
--- a/man2/get_kernel_syms.2
+++ b/man2/get_kernel_syms.2
@@ -5,26 +5,26 @@
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH get_kernel_syms 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH get_kernel_syms 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
get_kernel_syms \- retrieve exported kernel and module symbols
.SH SYNOPSIS
.nf
.B #include <linux/module.h>
-.PP
+.P
.BI "[[deprecated]] int get_kernel_syms(struct kernel_sym *" table );
.fi
.SH DESCRIPTION
.BR Note :
This system call is present only before Linux 2.6.
-.PP
+.P
If
.I table
is NULL,
.BR get_kernel_syms ()
returns the number of symbols available for query.
Otherwise, it fills in a table of structures:
-.PP
+.P
.in +4n
.EX
struct kernel_sym {
@@ -33,13 +33,13 @@ struct kernel_sym {
};
.EE
.in
-.PP
+.P
The symbols are interspersed with magic symbols of the form
.BI # module-name
with the kernel having an empty name.
The value associated with a symbol of this form is the address at
which the module is loaded.
-.PP
+.P
The symbols exported from each module follow their magic module tag
and the modules are returned in the reverse of the
order in which they were loaded.
@@ -60,7 +60,7 @@ Linux.
.SH HISTORY
Removed in Linux 2.6.
.\" Removed in Linux 2.5.48
-.PP
+.P
This obsolete system call is not supported by glibc.
No declaration is provided in glibc headers, but, through a quirk of history,
glibc versions before glibc 2.23 did export an ABI for this system call.
@@ -73,9 +73,9 @@ There is no way to indicate the size of the buffer allocated for
.IR table .
If symbols have been added to the kernel since the
program queried for the symbol table size, memory will be corrupted.
-.PP
+.P
The length of exported symbol names is limited to 59 characters.
-.PP
+.P
Because of these limitations, this system call is deprecated in
favor of
.BR query_module (2)
diff --git a/man2/get_mempolicy.2 b/man2/get_mempolicy.2
index 45b8f2f..3846bcc 100644
--- a/man2/get_mempolicy.2
+++ b/man2/get_mempolicy.2
@@ -7,7 +7,7 @@
.\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
.\" more precise specification of behavior.
.\"
-.TH get_mempolicy 2 2023-07-16 "Linux man-pages 6.05.01"
+.TH get_mempolicy 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
get_mempolicy \- retrieve NUMA memory policy for a thread
.SH LIBRARY
@@ -16,7 +16,7 @@ NUMA (Non-Uniform Memory Access) policy library
.SH SYNOPSIS
.B "#include <numaif.h>"
.nf
-.PP
+.P
.BI "long get_mempolicy(int *" mode ,
.BI " unsigned long " nodemask [(. maxnode " + ULONG_WIDTH - 1)"
.B " / ULONG_WIDTH],"
@@ -28,12 +28,12 @@ NUMA (Non-Uniform Memory Access) policy library
retrieves the NUMA policy of the calling thread or of a memory address,
depending on the setting of
.IR flags .
-.PP
+.P
A NUMA machine has different
memory controllers with different distances to specific CPUs.
The memory policy defines from which node memory is allocated for
the thread.
-.PP
+.P
If
.I flags
is specified as 0,
@@ -55,7 +55,7 @@ When
is 0,
.I addr
must be specified as NULL.
-.PP
+.P
If
.I flags
specifies
@@ -77,7 +77,7 @@ with either
.B MPOL_F_ADDR
or
.BR MPOL_F_NODE .
-.PP
+.P
If
.I flags
specifies
@@ -91,7 +91,7 @@ or one of the helper functions described in
.BR numa (3)
has been used to establish a policy for the memory range containing
.IR addr .
-.PP
+.P
If the
.I mode
argument is not NULL, then
@@ -112,7 +112,7 @@ The value specified by
.I maxnode
is always rounded to a multiple of
.IR "sizeof(unsigned\ long)*8" .
-.PP
+.P
If
.I flags
specifies both
@@ -129,7 +129,7 @@ If no page has yet been allocated for the specified address,
will allocate a page as if the thread had performed a read
(load) access to that address, and return the ID of the node
where that page was allocated.
-.PP
+.P
If
.I flags
specifies
@@ -154,9 +154,9 @@ call with the
flag for read accesses, and in memory ranges mapped with the
.B MAP_SHARED
flag for all accesses.
-.PP
+.P
Other flag values are reserved.
-.PP
+.P
For an overview of the possible policies see
.BR set_mempolicy (2).
.SH RETURN VALUE
diff --git a/man2/get_robust_list.2 b/man2/get_robust_list.2
index 7ca4817..bd8682a 100644
--- a/man2/get_robust_list.2
+++ b/man2/get_robust_list.2
@@ -7,7 +7,7 @@
.\" FIXME Something could be added to this page (or exit(2))
.\" about exit_robust_list processing
.\"
-.TH get_robust_list 2 2022-10-30 "Linux man-pages 6.05.01"
+.TH get_robust_list 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
get_robust_list, set_robust_list \- get/set list of robust futexes
.SH LIBRARY
@@ -19,13 +19,13 @@ Standard C library
" /* Definition of " "struct robust_list_head" " */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_get_robust_list, int " pid ,
.BI " struct robust_list_head **" head_ptr ", size_t *" len_ptr );
.B long syscall(SYS_set_robust_list,
.BI " struct robust_list_head *" head ", size_t " len );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -38,7 +38,7 @@ A thread can inform the kernel of the location of its robust futex list using
.BR set_robust_list ().
The address of a thread's robust futex list can be obtained using
.BR get_robust_list ().
-.PP
+.P
The purpose of the robust futex list is to ensure that if a thread
accidentally fails to unlock a futex before terminating or calling
.BR execve (2),
@@ -50,7 +50,7 @@ bit is set in the futex word, and the kernel performs a
.BR futex (2)
.B FUTEX_WAKE
operation on one of the threads waiting on the futex.
-.PP
+.P
The
.BR get_robust_list ()
system call returns the head of the robust futex list of the thread
@@ -66,14 +66,14 @@ The size of the object pointed to by
.I **head_ptr
is stored in
.IR len_ptr .
-.PP
+.P
Permission to employ
.BR get_robust_list ()
is governed by a ptrace access mode
.B PTRACE_MODE_READ_REALCREDS
check; see
.BR ptrace (2).
-.PP
+.P
The
.BR set_robust_list ()
system call requests the kernel to record the head of the list of
@@ -101,7 +101,7 @@ system call can fail with the following error:
.I len
does not equal
.IR "sizeof(struct\ robust_list_head)" .
-.PP
+.P
The
.BR get_robust_list ()
system call can fail with the following errors:
@@ -126,11 +126,11 @@ could be found.
These system calls were added in Linux 2.6.17.
.SH NOTES
These system calls are not needed by normal applications.
-.PP
+.P
A thread can have only one robust futex list;
therefore applications that wish
to use this functionality should use the robust mutexes provided by glibc.
-.PP
+.P
In the initial implementation,
a thread waiting on a futex was notified that the owner had died
only if the owner terminated.
@@ -138,7 +138,7 @@ Starting with Linux 2.6.28,
.\" commit 8141c7f3e7aee618312fa1c15109e1219de784a7
notification was extended to include the case where the owner performs an
.BR execve (2).
-.PP
+.P
The thread IDs mentioned in the main text are
.I kernel
thread IDs of the kind returned by
@@ -148,7 +148,7 @@ and
.SH SEE ALSO
.BR futex (2),
.BR pthread_mutexattr_setrobust (3)
-.PP
+.P
.I Documentation/robust\-futexes.txt
and
.I Documentation/robust\-futex\-ABI.txt
diff --git a/man2/getcpu.2 b/man2/getcpu.2
index f90401f..4525470 100644
--- a/man2/getcpu.2
+++ b/man2/getcpu.2
@@ -4,7 +4,7 @@
.\"
.\" 2008, mtk, various edits
.\"
-.TH getcpu 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH getcpu 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getcpu \- determine CPU and NUMA node on which the calling thread is running
.SH LIBRARY
@@ -14,7 +14,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sched.h>
-.PP
+.P
.BI "int getcpu(unsigned int *_Nullable " cpu ", \
unsigned int *_Nullable " node );
.fi
@@ -35,7 +35,7 @@ When either
or
.I node
is NULL nothing is written to the respective pointer.
-.PP
+.P
The information placed in
.I cpu
is guaranteed to be current only at the time of the call:
@@ -67,21 +67,21 @@ glibc 2.29.
.\"
.SS C library/kernel differences
The kernel system call has a third argument:
-.PP
+.P
.in +4n
.nf
.BI "int getcpu(unsigned int *" cpu ", unsigned int *" node ,
.BI " struct getcpu_cache *" tcache );
.fi
.in
-.PP
+.P
The
.I tcache
argument is unused since Linux 2.6.24,
and (when invoking the system call directly)
should be specified as NULL,
unless portability to Linux 2.6.23 or earlier is required.
-.PP
+.P
.\" commit 4307d1e5ada595c87f9a4d16db16ba5edb70dcb1
.\" Author: Ingo Molnar <mingo@elte.hu>
.\" Date: Wed Nov 7 18:37:48 2007 +0100
diff --git a/man2/getdents.2 b/man2/getdents.2
index 604a6ef..728d4d7 100644
--- a/man2/getdents.2
+++ b/man2/getdents.2
@@ -8,7 +8,7 @@
.\" Derived from 'readdir.2'.
.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\"
-.TH getdents 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH getdents 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
getdents, getdents64 \- get directory entries
.SH LIBRARY
@@ -18,23 +18,23 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_getdents, unsigned int " fd \
", struct linux_dirent *" dirp ,
.BI " unsigned int " count );
-.PP
+.P
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <dirent.h>
-.PP
+.P
.BI "ssize_t getdents64(int " fd ", void " dirp [. count "], size_t " count );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR getdents (),
necessitating the use of
.BR syscall (2).
-.PP
+.P
.IR Note :
There is no definition of
.I struct linux_dirent
@@ -58,16 +58,16 @@ into the buffer pointed to by
The argument
.I count
specifies the size of that buffer.
-.PP
+.P
The
.I linux_dirent
structure is declared as follows:
-.PP
+.P
.in +4n
.EX
struct linux_dirent {
unsigned long d_ino; /* Inode number */
- unsigned long d_off; /* Offset to next \fIlinux_dirent\fP */
+ unsigned long d_off; /* Not an offset; see below */
unsigned short d_reclen; /* Length of this \fIlinux_dirent\fP */
char d_name[]; /* Filename (null\-terminated) */
/* length is actually (d_reclen \- 2 \-
@@ -80,18 +80,22 @@ struct linux_dirent {
}
.EE
.in
-.PP
+.P
.I d_ino
is an inode number.
.I d_off
-is the distance from the start of the directory to the start of the next
-.IR linux_dirent .
+is a filesystem-specific value with no specific meaning to user space,
+though on older filesystems it used to be
+the distance from the start of the directory to the start of the next
+.IR linux_dirent ;
+see
+.BR readdir (3) .
.I d_reclen
is the size of this entire
.IR linux_dirent .
.I d_name
is a null-terminated filename.
-.PP
+.P
.I d_type
is a byte at the end of the structure that indicates the file type.
It contains one of the following values (defined in
@@ -120,7 +124,7 @@ This is a UNIX domain socket.
.TP
.B DT_UNKNOWN
The file type is unknown.
-.PP
+.P
The
.I d_type
field is implemented since Linux 2.6.4.
@@ -130,7 +134,7 @@ structure.
Thus, on kernels up to and including Linux 2.6.3,
attempting to access this field always provides the value 0
.RB ( DT_UNKNOWN ).
-.PP
+.P
Currently,
.\" kernel 2.6.27
.\" The same sentence is in readdir.2
@@ -155,19 +159,19 @@ In addition,
supports an explicit
.I d_type
field.
-.PP
+.P
The
.BR getdents64 ()
system call is like
.BR getdents (),
except that its second argument is a pointer to a buffer containing
structures of the following type:
-.PP
+.P
.in +4n
.EX
struct linux_dirent64 {
ino64_t d_ino; /* 64\-bit inode number */
- off64_t d_off; /* 64\-bit offset to next structure */
+ off64_t d_off; /* Not an offset; see getdents() */
unsigned short d_reclen; /* Size of this dirent */
unsigned char d_type; /* File type */
char d_name[]; /* Filename (null\-terminated) */
@@ -217,11 +221,11 @@ In that case you will need to define the
or
.I linux_dirent64
structure yourself.
-.PP
+.P
Probably, you want to use
.BR readdir (3)
instead of these system calls.
-.PP
+.P
These calls supersede
.BR readdir (2).
.SH EXAMPLES
@@ -231,7 +235,7 @@ The program below demonstrates the use of
.BR getdents ().
The following output shows an example of what we see when running this
program on an ext2 directory:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./a.out /testfs/"
diff --git a/man2/getdomainname.2 b/man2/getdomainname.2
index b65cbfb..9c3b6e5 100644
--- a/man2/getdomainname.2
+++ b/man2/getdomainname.2
@@ -6,7 +6,7 @@
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2008-11-27 by mtk
.\"
-.TH getdomainname 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getdomainname 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getdomainname, setdomainname \- get/set NIS domain name
.SH LIBRARY
@@ -15,16 +15,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int getdomainname(char *" name ", size_t " len );
.BI "int setdomainname(const char *" name ", size_t " len );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR getdomainname (),
.BR setdomainname ():
.nf
@@ -41,7 +41,7 @@ These functions are used to access or to change the NIS domain name of the
host system.
More precisely, they operate on the NIS domain name associated with the calling
process's UTS namespace.
-.PP
+.P
.BR setdomainname ()
sets the domain name to the value given in the character array
.IR name .
@@ -52,7 +52,7 @@ argument specifies the number of bytes in
(Thus,
.I name
does not require a terminating null byte.)
-.PP
+.P
.BR getdomainname ()
returns the null-terminated domain name in the character array
.IR name ,
@@ -84,7 +84,7 @@ The caller did not have the
.B CAP_SYS_ADMIN
capability in the user namespace associated with its UTS namespace (see
.BR namespaces (7)).
-.PP
+.P
.BR getdomainname ()
can fail with the following errors:
.TP
diff --git a/man2/getgid.2 b/man2/getgid.2
index a1f64e0..74394a1 100644
--- a/man2/getgid.2
+++ b/man2/getgid.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getgid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getgid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getgid, getegid \- get group identity
.SH LIBRARY
@@ -11,14 +11,14 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B gid_t getgid(void);
.B gid_t getegid(void);
.fi
.SH DESCRIPTION
.BR getgid ()
returns the real group ID of the calling process.
-.PP
+.P
.BR getegid ()
returns the effective group ID of the calling process.
.SH ERRORS
@@ -47,7 +47,7 @@ for details regarding register mapping.
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, 4.3BSD.
-.PP
+.P
The original Linux
.BR getgid ()
and
diff --git a/man2/getgroups.2 b/man2/getgroups.2
index eb282b9..d00dc9e 100644
--- a/man2/getgroups.2
+++ b/man2/getgroups.2
@@ -9,7 +9,7 @@
.\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN
.\" VALUE, made style of page more consistent with man-pages style.
.\"
-.TH getgroups 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getgroups 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getgroups, setgroups \- get/set list of supplementary group IDs
.SH LIBRARY
@@ -18,19 +18,19 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int getgroups(int " size ", gid_t " list []);
-.PP
+.P
.B #include <grp.h>
-.PP
+.P
.BI "int setgroups(size_t " size ", const gid_t *_Nullable " list );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR setgroups ():
.nf
Since glibc 2.19:
@@ -50,13 +50,13 @@ buffer pointed to by
If the calling process is a member of more than
.I size
supplementary groups, then an error results.
-.PP
+.P
It is unspecified whether the effective group ID of the calling process
is included in the returned list.
(Thus, an application should also call
.BR getegid (2)
and add or remove the resulting value.)
-.PP
+.P
If
.I size
is zero,
@@ -67,7 +67,7 @@ This allows the caller to determine the size of a dynamically allocated
.I list
to be used in a further call to
.BR getgroups ().
-.PP
+.P
.BR setgroups ()
sets the supplementary group IDs for the calling process.
Appropriate privileges are required (see the description of the
@@ -79,7 +79,7 @@ argument specifies the number of supplementary group IDs
in the buffer pointed to by
.IR list .
A process can drop all of its supplementary groups with the call:
-.PP
+.P
.in +4n
.EX
setgroups(0, NULL);
@@ -92,7 +92,7 @@ returns the number of supplementary group IDs.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
On success,
.BR setgroups ()
returns 0.
@@ -104,14 +104,14 @@ is set to indicate the error.
.B EFAULT
.I list
has an invalid address.
-.PP
+.P
.BR getgroups ()
can additionally fail with the following error:
.TP
.B EINVAL
.I size
is less than the number of supplementary group IDs, but is not zero.
-.PP
+.P
.BR setgroups ()
can additionally fail with the following errors:
.TP
@@ -170,7 +170,7 @@ SVr4, 4.3BSD.
Since
.BR setgroups ()
requires privilege, it is not covered by POSIX.1.
-.PP
+.P
The original Linux
.BR getgroups ()
system call supported only 16-bit group IDs.
@@ -192,17 +192,17 @@ is defined in
The set of supplementary group IDs
is inherited from the parent process, and preserved across an
.BR execve (2).
-.PP
+.P
The maximum number of supplementary group IDs can be found at run time using
.BR sysconf (3):
-.PP
+.P
.in +4n
.EX
long ngroups_max;
ngroups_max = sysconf(_SC_NGROUPS_MAX);
.EE
.in
-.PP
+.P
The maximum return value of
.BR getgroups ()
cannot be larger than one more than this value.
diff --git a/man2/gethostname.2 b/man2/gethostname.2
index 26b8df3..0e3ed70 100644
--- a/man2/gethostname.2
+++ b/man2/gethostname.2
@@ -9,7 +9,7 @@
.\" Modified 2004-06-17 by mtk
.\" Modified 2008-11-27 by mtk
.\"
-.TH gethostname 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH gethostname 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
gethostname, sethostname \- get/set hostname
.SH LIBRARY
@@ -18,16 +18,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int gethostname(char *" name ", size_t " len );
.BI "int sethostname(const char *" name ", size_t " len );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR gethostname ():
.nf
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
@@ -35,7 +35,7 @@ Feature Test Macro Requirements for glibc (see
.\" The above is something of a simplification
.\" also before glibc 2.3 there was a bit churn
.fi
-.PP
+.P
.BR sethostname ():
.nf
Since glibc 2.21:
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
These system calls are used to access or to change the system hostname.
More precisely, they operate on the hostname associated with the calling
process's UTS namespace.
-.PP
+.P
.BR sethostname ()
sets the hostname to the value given in the character array
.IR name .
@@ -61,7 +61,7 @@ argument specifies the number of bytes in
(Thus,
.I name
does not require a terminating null byte.)
-.PP
+.P
.BR gethostname ()
returns the null-terminated hostname in the character array
.IR name ,
@@ -155,7 +155,7 @@ POSIX.1-2001 and POSIX.1-2008 specify
.BR gethostname ()
but not
.BR sethostname ().
-.PP
+.P
Versions of glibc before glibc 2.2
.\" At least glibc 2.0 and glibc 2.1, older versions not checked
handle the case where the length of the
diff --git a/man2/getitimer.2 b/man2/getitimer.2
index 422a04e..6674117 100644
--- a/man2/getitimer.2
+++ b/man2/getitimer.2
@@ -10,7 +10,7 @@
.\" 2005-04-06 mtk, Matthias Lang <matthias@corelatus.se>
.\" Noted MAX_SEC_IN_JIFFIES ceiling
.\"
-.TH getitimer 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH getitimer 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getitimer, setitimer \- get or set value of an interval timer
.SH LIBRARY
@@ -19,7 +19,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/time.h>
-.PP
+.P
.BI "int getitimer(int " which ", struct itimerval *" curr_value );
.BI "int setitimer(int " which ", const struct itimerval *restrict " new_value ,
.BI " struct itimerval *_Nullable restrict " old_value );
@@ -31,7 +31,7 @@ and (optionally) at regular intervals after that.
When a timer expires, a signal is generated for the calling process,
and the timer is reset to the specified interval
(if the interval is nonzero).
-.PP
+.P
Three types of timers\[em]specified via the
.I which
argument\[em]are provided,
@@ -63,11 +63,11 @@ In conjunction with
.BR ITIMER_VIRTUAL ,
this timer can be used to profile user and system CPU time
consumed by the process.
-.PP
+.P
A process has only one of each of the three types of timers.
-.PP
+.P
Timer values are defined by the following structures:
-.PP
+.P
.in +4n
.EX
struct itimerval {
@@ -89,7 +89,7 @@ places the current value of the timer specified by
.I which
in the buffer pointed to by
.IR curr_value .
-.PP
+.P
The
.I it_value
substructure is populated with the amount of time remaining until
@@ -100,7 +100,7 @@ when the timer expires.
If both fields of
.I it_value
are zero, then this timer is currently disarmed (inactive).
-.PP
+.P
The
.I it_interval
substructure is populated with the timer interval.
@@ -120,7 +120,7 @@ is non-NULL,
the buffer it points to is used to return the previous value of the timer
(i.e., the same information that is returned by
.BR getitimer ()).
-.PP
+.P
If either field in
.I new_value.it_value
is nonzero,
@@ -128,7 +128,7 @@ then the timer is armed to initially expire at the specified time.
If both fields in
.I new_value.it_value
are zero, then the timer is disarmed.
-.PP
+.P
The
.I new_value.it_interval
field specifies the new interval for the timer;
@@ -161,22 +161,22 @@ fields in the structure pointed to by
contains a value outside the range [0, 999999].
.SH VERSIONS
The standards are silent on the meaning of the call:
-.PP
+.P
.in +4n
.EX
setitimer(which, NULL, &old_value);
.EE
.in
-.PP
+.P
Many systems (Solaris, the BSDs, and perhaps others)
treat this as equivalent to:
-.PP
+.P
.in +4n
.EX
getitimer(which, &old_value);
.EE
.in
-.PP
+.P
In Linux, this is treated as being equivalent to a call in which the
.I new_value
fields are zero; that is, the timer is disabled.
@@ -203,13 +203,13 @@ on the system timer resolution and on the system load; see
If the timer expires while the process is active (always true for
.BR ITIMER_VIRTUAL ),
the signal will be delivered immediately when generated.
-.PP
+.P
A child created via
.BR fork (2)
does not inherit its parent's interval timers.
Interval timers are preserved across an
.BR execve (2).
-.PP
+.P
POSIX.1 leaves the
interaction between
.BR setitimer ()
@@ -228,7 +228,7 @@ Under very heavy loading, an
timer may expire before the signal from a previous expiration
has been delivered.
The second signal in such an event will be lost.
-.PP
+.P
Before Linux 2.6.16, timer values are represented in jiffies.
If a request is made set a timer with a value whose jiffies
representation exceeds
@@ -243,14 +243,14 @@ approximately 99.42 days.
Since Linux 2.6.16,
the kernel uses a different internal representation for times,
and this ceiling is removed.
-.PP
+.P
On certain systems (including i386),
Linux kernels before Linux 2.6.12 have a bug which will produce
premature timer expirations of up to one jiffy under some circumstances.
This bug is fixed in Linux 2.6.12.
.\" 4 Jul 2005: It looks like this bug may remain in Linux 2.4.x.
.\" http://lkml.org/lkml/2005/7/1/165
-.PP
+.P
POSIX.1-2001 says that
.BR setitimer ()
should fail if a
diff --git a/man2/getpagesize.2 b/man2/getpagesize.2
index 6f3b54b..25fcbcd 100644
--- a/man2/getpagesize.2
+++ b/man2/getpagesize.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getpagesize 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getpagesize 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getpagesize \- get memory page size
.SH LIBRARY
@@ -11,15 +11,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B int getpagesize(void);
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR getpagesize ():
.nf
Since glibc 2.20:
@@ -52,19 +52,19 @@ Portable applications should employ
.I sysconf(_SC_PAGESIZE)
instead of
.BR getpagesize ():
-.PP
+.P
.in +4n
.EX
#include <unistd.h>
long sz = sysconf(_SC_PAGESIZE);
.EE
.in
-.PP
+.P
(Most systems allow the synonym
.B _SC_PAGE_SIZE
for
.BR _SC_PAGESIZE .)
-.PP
+.P
Whether
.BR getpagesize ()
is present as a Linux system call depends on the architecture.
diff --git a/man2/getpeername.2 b/man2/getpeername.2
index d150617..b738e9e 100644
--- a/man2/getpeername.2
+++ b/man2/getpeername.2
@@ -11,7 +11,7 @@
.\" Modified 17 Jul 2002, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added 'socket' to NAME, so that "man -k socket" will show this page.
.\"
-.TH getpeername 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH getpeername 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getpeername \- get name of connected peer socket
.SH LIBRARY
@@ -20,7 +20,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int getpeername(int " sockfd ", struct sockaddr *restrict " addr ,
.BI " socklen_t *restrict " addrlen );
.fi
@@ -37,7 +37,7 @@ by
.IR addr .
On return it contains the actual size of the name returned (in bytes).
The name is truncated if the buffer provided is too small.
-.PP
+.P
The returned address is truncated if the buffer provided is too small;
in this case,
.I addrlen
diff --git a/man2/getpid.2 b/man2/getpid.2
index 3b78823..5166035 100644
--- a/man2/getpid.2
+++ b/man2/getpid.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getpid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getpid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getpid, getppid \- get process identification
.SH LIBRARY
@@ -11,7 +11,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B pid_t getpid(void);
.B pid_t getppid(void);
.fi
@@ -20,7 +20,7 @@ Standard C library
returns the process ID (PID) of the calling process.
(This is often used by
routines that generate unique temporary filenames.)
-.PP
+.P
.BR getppid ()
returns the process ID of the parent of the calling process.
This will be either the ID of the process that created this process using
@@ -109,7 +109,7 @@ via the glibc wrapper function.
.BR clone (2).)
Furthermore, the complexity of the caching code had been
the source of a few bugs within glibc over the years.
-.PP
+.P
Because of the aforementioned problems,
since glibc 2.25, the PID cache is removed:
.\" commit c579f48edba88380635ab98cb612030e3ed8691e
@@ -124,7 +124,7 @@ If the caller's parent is in a different PID namespace (see
.BR pid_namespaces (7)),
.BR getppid ()
returns 0.
-.PP
+.P
From a kernel perspective,
the PID (which is shared by all of the threads in a multithreaded process)
is sometimes also known as the thread group ID (TGID).
diff --git a/man2/getpriority.2 b/man2/getpriority.2
index 723d3d4..e4aa4f0 100644
--- a/man2/getpriority.2
+++ b/man2/getpriority.2
@@ -14,7 +14,7 @@
.\" Clarified meaning of 0 value for 'who' argument
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH getpriority 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getpriority 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getpriority, setpriority \- get/set program scheduling priority
.SH LIBRARY
@@ -23,7 +23,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/resource.h>
-.PP
+.P
.BI "int getpriority(int " which ", id_t " who );
.BI "int setpriority(int " which ", id_t " who ", int " prio );
.fi
@@ -41,7 +41,7 @@ call.
The process attribute dealt with by these system calls is
the same attribute (also known as the "nice" value) that is dealt with by
.BR nice (2).
-.PP
+.P
The value
.I which
is one of
@@ -64,7 +64,7 @@ A zero value for
.I who
denotes (respectively) the calling process, the process group of the
calling process, or the real user ID of the calling process.
-.PP
+.P
The
.I prio
argument is a value in the range \-20 to 19 (but see NOTES below),
@@ -73,7 +73,7 @@ Attempts to set a priority outside this range
are silently clamped to the range.
The default priority is 0;
lower values give a process a higher scheduling priority.
-.PP
+.P
The
.BR getpriority ()
call returns the highest priority (lowest numerical value)
@@ -82,7 +82,7 @@ The
.BR setpriority ()
call sets the priorities of all of the specified processes
to the specified value.
-.PP
+.P
Traditionally, only a privileged process could lower the nice value
(i.e., set a higher priority).
However, since Linux 2.6.12, an unprivileged process can decrease
@@ -98,7 +98,7 @@ returns the calling thread's nice value, which may be a negative number.
On error, it returns \-1 and sets
.I errno
to indicate the error.
-.PP
+.P
Since a successful call to
.BR getpriority ()
can legitimately return the value \-1, it is necessary
@@ -109,7 +109,7 @@ call, then check
.I errno
afterward to determine
if \-1 is an error or a legitimate value.
-.PP
+.P
.BR setpriority ()
returns 0 on success.
On failure, it returns \-1 and sets
@@ -154,19 +154,19 @@ SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD).
.SH NOTES
For further details on the nice value, see
.BR sched (7).
-.PP
+.P
.IR Note :
the addition of the "autogroup" feature in Linux 2.6.38 means that
the nice value no longer has its traditional effect in many circumstances.
For details, see
.BR sched (7).
-.PP
+.P
A child created by
.BR fork (2)
inherits its parent's nice value.
The nice value is preserved across
.BR execve (2).
-.PP
+.P
The details on the condition for
.B EPERM
depend on the system.
@@ -204,6 +204,6 @@ which may be made standards conformant in the future.
.BR fork (2),
.BR capabilities (7),
.BR sched (7)
-.PP
+.P
.I Documentation/scheduler/sched\-nice\-design.txt
in the Linux kernel source tree (since Linux 2.6.23)
diff --git a/man2/getrandom.2 b/man2/getrandom.2
index 565763b..e4c63a8 100644
--- a/man2/getrandom.2
+++ b/man2/getrandom.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getrandom 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getrandom 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getrandom \- obtain a series of random bytes
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/random.h>
-.PP
+.P
.BI "ssize_t getrandom(void " buf [. buflen "], size_t " buflen ", \
unsigned int " flags );
.fi
@@ -27,7 +27,7 @@ with up to
random bytes.
These bytes can be used to seed user-space random number generators
or for cryptographic purposes.
-.PP
+.P
By default,
.BR getrandom ()
draws entropy from the
@@ -38,7 +38,7 @@ device).
This behavior can be changed via the
.I flags
argument.
-.PP
+.P
If the
.I urandom
source has been initialized,
@@ -48,7 +48,7 @@ No such guarantees apply for larger buffer sizes.
For example, if the call is interrupted by a signal handler,
it may return a partially filled buffer, or fail with the error
.BR EINTR .
-.PP
+.P
If the
.I urandom
source has not yet been initialized, then
@@ -57,7 +57,7 @@ will block, unless
.B GRND_NONBLOCK
is specified in
.IR flags .
-.PP
+.P
The
.I flags
argument is a bit mask that can contain zero or more of the following values
@@ -119,7 +119,7 @@ was specified in
and insufficient entropy was present in the
.I random
source or the system call was interrupted by a signal.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -164,7 +164,7 @@ glibc 2.25.
For an overview and comparison of the various interfaces that
can be used to obtain randomness, see
.BR random (7).
-.PP
+.P
Unlike
.I /dev/random
and
@@ -222,7 +222,7 @@ will block until some random bytes become available
(unless the
.B GRND_NONBLOCK
flag was specified).
-.PP
+.P
The behavior when a call to
.BR getrandom ()
that is blocked while reading from the
@@ -247,26 +247,26 @@ then
will not fail with
.BR EINTR .
Instead, it will return all of the bytes that have been requested.
-.PP
+.P
When reading from the
.I random
source, blocking requests of any size can be interrupted by a signal handler
(the call fails with the error
.BR EINTR ).
-.PP
+.P
Using
.BR getrandom ()
to read small buffers (<=\ 256 bytes) from the
.I urandom
source is the preferred mode of usage.
-.PP
+.P
The special treatment of small values of
.I buflen
was designed for compatibility with
OpenBSD's
.BR getentropy (3),
which is nowadays supported by glibc.
-.PP
+.P
The user of
.BR getrandom ()
.I must
diff --git a/man2/getresuid.2 b/man2/getresuid.2
index d5cadd7..9b4a1ff 100644
--- a/man2/getresuid.2
+++ b/man2/getresuid.2
@@ -5,7 +5,7 @@
.\"
.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
.\"
-.TH getresuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getresuid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getresuid, getresgid \- get real, effective, and saved user/group IDs
.SH LIBRARY
@@ -15,7 +15,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <unistd.h>
-.PP
+.P
.BI "int getresuid(uid_t *" ruid ", uid_t *" euid ", uid_t *" suid );
.BI "int getresgid(gid_t *" rgid ", gid_t *" egid ", gid_t *" sgid );
.fi
@@ -46,7 +46,7 @@ These calls also appear on HP-UX and some of the BSDs.
.SH HISTORY
Linux 2.1.44,
glibc 2.3.2.
-.PP
+.P
The original Linux
.BR getresuid ()
and
diff --git a/man2/getrlimit.2 b/man2/getrlimit.2
index afc2c22..ece8e97 100644
--- a/man2/getrlimit.2
+++ b/man2/getrlimit.2
@@ -42,7 +42,7 @@
.\" 2008-05-07, mtk / Peter Zijlstra, Added description of RLIMIT_RTTIME
.\" 2010-11-06, mtk: Added documentation of prlimit()
.\"
-.TH getrlimit 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH getrlimit 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
getrlimit, setrlimit, prlimit \- get/set resource limits
.SH LIBRARY
@@ -51,20 +51,20 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/resource.h>
-.PP
+.P
.BI "int getrlimit(int " resource ", struct rlimit *" rlim );
.BI "int setrlimit(int " resource ", const struct rlimit *" rlim );
-.PP
+.P
.BI "int prlimit(pid_t " pid ", int " resource ,
.BI " const struct rlimit *_Nullable " new_limit ,
.BI " struct rlimit *_Nullable " old_limit );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR prlimit ():
.nf
_GNU_SOURCE
@@ -78,7 +78,7 @@ system calls get and set resource limits.
Each resource has an associated soft and hard limit, as defined by the
.I rlimit
structure:
-.PP
+.P
.in +4n
.EX
struct rlimit {
@@ -87,7 +87,7 @@ struct rlimit {
};
.EE
.in
-.PP
+.P
The soft limit is the value that the kernel enforces for the
corresponding resource.
The hard limit acts as a ceiling for the soft limit:
@@ -97,14 +97,14 @@ A privileged process (under Linux: one with the
.B CAP_SYS_RESOURCE
capability in the initial user namespace)
may make arbitrary changes to either limit value.
-.PP
+.P
The value
.B RLIM_INFINITY
denotes no limit on a resource (both in the structure returned by
.BR getrlimit ()
and in the structure passed to
.BR setrlimit ()).
-.PP
+.P
The
.I resource
argument must be one of:
@@ -450,14 +450,14 @@ system call combines and extends the functionality of
and
.BR getrlimit ().
It can be used to both set and get the resource limits of an arbitrary process.
-.PP
+.P
The
.I resource
argument has the same meaning as for
.BR setrlimit ()
and
.BR getrlimit ().
-.PP
+.P
If the
.I new_limit
argument is not NULL, then the
@@ -475,7 +475,7 @@ in the
.I rlimit
structure pointed to by
.IR old_limit .
-.PP
+.P
The
.I pid
argument specifies the ID of the process on which the call is to operate.
@@ -556,7 +556,6 @@ T{
.BR prlimit ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH STANDARDS
.TP
.BR getrlimit ()
@@ -566,7 +565,7 @@ POSIX.1-2008.
.TP
.BR prlimit ()
Linux.
-.PP
+.P
.B RLIMIT_MEMLOCK
and
.B RLIMIT_NPROC
@@ -598,15 +597,15 @@ A child process created via
inherits its parent's resource limits.
Resource limits are preserved across
.BR execve (2).
-.PP
+.P
Resource limits are per-process attributes that are shared
by all of the threads in a process.
-.PP
+.P
Lowering the soft limit for a resource below the process's
current consumption of that resource will succeed
(but will prevent the process from further increasing
its consumption of the resource).
-.PP
+.P
One can set the resource limits of the shell using the built-in
.I ulimit
command
@@ -615,12 +614,12 @@ in
.BR csh (1)).
The shell's resource limits are inherited by the processes that
it creates to execute commands.
-.PP
+.P
Since Linux 2.6.24, the resource limits of any process can be inspected via
.IR /proc/ pid /limits ;
see
.BR proc (5).
-.PP
+.P
Ancient systems provided a
.BR vlimit ()
function with a similar purpose to
@@ -638,7 +637,7 @@ wrapper functions no longer invoke the corresponding system calls,
but instead employ
.BR prlimit (),
for the reasons described in BUGS.
-.PP
+.P
The name of the glibc wrapper function is
.BR prlimit ();
the underlying system call is
@@ -652,7 +651,7 @@ signals delivered when a process encountered the soft and hard
.B RLIMIT_CPU
limits were delivered one (CPU) second later than they should have been.
This was fixed in Linux 2.6.8.
-.PP
+.P
In Linux 2.6.x kernels before Linux 2.6.17, a
.B RLIMIT_CPU
limit of 0 is wrongly treated as "no limit" (like
@@ -660,12 +659,12 @@ limit of 0 is wrongly treated as "no limit" (like
Since Linux 2.6.17, setting a limit of 0 does have an effect,
but is actually treated as a limit of 1 second.
.\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
-.PP
+.P
A kernel bug means that
.\" See https://lwn.net/Articles/145008/
.B RLIMIT_RTPRIO
does not work in Linux 2.6.12; the problem is fixed in Linux 2.6.13.
-.PP
+.P
In Linux 2.6.12, there was an off-by-one mismatch
between the priority ranges returned by
.BR getpriority (2)
@@ -676,7 +675,7 @@ was calculated as
.IR "19\ \-\ rlim_cur" .
This was fixed in Linux 2.6.13.
.\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
-.PP
+.P
Since Linux 2.6.12,
.\" The relevant patch, sent to LKML, seems to be
.\" http://thread.gmane.org/gmane.linux.kernel/273462
@@ -703,7 +702,7 @@ portable applications should avoid relying on this Linux-specific behavior.
The Linux-specific
.B RLIMIT_RTTIME
limit exhibits the same behavior when the soft limit is encountered.
-.PP
+.P
Kernels before Linux 2.4.22 did not diagnose the error
.B EINVAL
for
@@ -713,12 +712,12 @@ when
was greater than
.IR rlim\->rlim_max .
.\" d3561f78fd379a7110e46c87964ba7aa4120235c
-.PP
+.P
Linux doesn't return an error when an attempt to set
.B RLIMIT_CPU
has failed, for compatibility reasons.
.\"
-.SS Representation of """large""" resource limit values on 32-bit platforms
+.SS Representation of \[dq]large\[dq] resource limit values on 32-bit platforms
The glibc
.BR getrlimit ()
and
@@ -753,7 +752,7 @@ represent file offsets\[em]that is, as wide as a 64-bit
.B off_t
(assuming a program compiled with
.IR _FILE_OFFSET_BITS=64 ).
-.PP
+.P
To work around this kernel limitation,
if a program tried to set a resource limit to a value larger than
can be represented in a 32-bit
@@ -763,7 +762,7 @@ then the glibc
wrapper function silently converted the limit value to
.BR RLIM_INFINITY .
In other words, the requested resource limit setting was silently ignored.
-.PP
+.P
Since glibc 2.13,
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=12201
glibc works around the limitations of the
@@ -779,7 +778,7 @@ as wrapper functions that call
.SH EXAMPLES
The program below demonstrates the use of
.BR prlimit ().
-.PP
+.P
.\" SRC BEGIN (getrlimit.c)
.EX
#define _GNU_SOURCE
diff --git a/man2/getrusage.2 b/man2/getrusage.2
index 8966295..97c144f 100644
--- a/man2/getrusage.2
+++ b/man2/getrusage.2
@@ -17,7 +17,7 @@
.\" document ru_maxrss
.\" 2010-05-24, mtk, enhanced description of various fields
.\"
-.TH getrusage 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH getrusage 2 2024-03-14 "Linux man-pages 6.7"
.SH NAME
getrusage \- get resource usage
.SH LIBRARY
@@ -26,7 +26,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/resource.h>
-.PP
+.P
.BI "int getrusage(int " who ", struct rusage *" usage );
.fi
.SH DESCRIPTION
@@ -55,11 +55,11 @@ feature test macro must be defined (before including
header file)
in order to obtain the definition of this constant from
.IR <sys/resource.h> .
-.PP
+.P
The resource usages are returned in the structure pointed to by
.IR usage ,
which has the following form:
-.PP
+.P
.in +4n
.EX
struct rusage {
@@ -82,7 +82,7 @@ struct rusage {
};
.EE
.in
-.PP
+.P
Not all fields are completed;
unmaintained fields are set to zero by the kernel.
(The unmaintained fields are provided for compatibility with other systems,
@@ -195,22 +195,21 @@ T{
.BR getrusage ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
POSIX.1 specifies
.BR getrusage (),
but specifies only the fields
.I ru_utime
and
.IR ru_stime .
-.PP
+.P
.B RUSAGE_THREAD
is Linux-specific.
.SH HISTORY
POSIX.1-2001, SVr4, 4.3BSD.
-.PP
+.P
Before Linux 2.6.9, if the disposition of
.B SIGCHLD
is set to
@@ -222,10 +221,10 @@ although POSIX.1-2001 explicitly prohibits this.
This nonconformance is rectified in Linux 2.6.9 and later.
.\" See the description of getrusage() in XSH.
.\" A similar statement was also in SUSv2.
-.PP
+.P
The structure definition shown at the start of this page
was taken from 4.3BSD Reno.
-.PP
+.P
Ancient systems provided a
.BR vtimes ()
function with a similar purpose to
@@ -240,15 +239,12 @@ implementation.)
.SH NOTES
Resource usage metrics are preserved across an
.BR execve (2).
-.PP
-See also the description of
-.IR /proc/ pid /stat
-in
-.BR proc (5).
.SH SEE ALSO
.BR clock_gettime (2),
.BR getrlimit (2),
.BR times (2),
.BR wait (2),
.BR wait4 (2),
-.BR clock (3)
+.BR clock (3),
+.BR proc_pid_stat (5),
+.BR proc_pid_io (5)
diff --git a/man2/getsid.2 b/man2/getsid.2
index 842c980..25f0b2d 100644
--- a/man2/getsid.2
+++ b/man2/getsid.2
@@ -5,7 +5,7 @@
.\"
.\" Modified Thu Oct 31 14:18:40 1996 by Eric S. Raymond <esr@y\thyrsus.com>
.\" Modified 2001-12-17, aeb
-.TH getsid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getsid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getsid \- get session ID
.SH LIBRARY
@@ -14,15 +14,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "pid_t getsid(pid_t" " pid" );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR getsid ():
.nf
_XOPEN_SOURCE >= 500
diff --git a/man2/getsockname.2 b/man2/getsockname.2
index e2cc11e..6d4a9f6 100644
--- a/man2/getsockname.2
+++ b/man2/getsockname.2
@@ -9,7 +9,7 @@
.\" Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Sun Mar 28 21:26:46 1999 by Andries Brouwer <aeb@cwi.nl>
.\"
-.TH getsockname 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH getsockname 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getsockname \- get socket name
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int getsockname(int " sockfd ", struct sockaddr *restrict " addr ,
.BI " socklen_t *restrict " addrlen );
.fi
@@ -34,7 +34,7 @@ argument should be initialized to indicate
the amount of space (in bytes) pointed to by
.IR addr .
On return it contains the actual size of the socket address.
-.PP
+.P
The returned address is truncated if the buffer provided is too small;
in this case,
.I addrlen
diff --git a/man2/getsockopt.2 b/man2/getsockopt.2
index f80900a..baf3395 100644
--- a/man2/getsockopt.2
+++ b/man2/getsockopt.2
@@ -13,7 +13,7 @@
.\" Modified 1999 by Andi Kleen <ak@muc.de>.
.\" Removed most stuff because it is in socket.7 now.
.\"
-.TH getsockopt 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH getsockopt 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getsockopt, setsockopt \- get and set options on sockets
.SH LIBRARY
@@ -22,7 +22,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int getsockopt(int " sockfd ", int " level ", int " optname ,
.BI " void " optval "[restrict *." optlen ],
.BI " socklen_t *restrict " optlen );
@@ -39,7 +39,7 @@ manipulate options for the socket referred to by the file descriptor
Options may exist at multiple
protocol levels; they are always present at the uppermost
socket level.
-.PP
+.P
When manipulating socket options, the level at which the
option resides and the name of the option must be specified.
To manipulate options at the sockets API level,
@@ -58,7 +58,7 @@ should be set to the protocol number of
.BR TCP ;
see
.BR getprotoent (3).
-.PP
+.P
The arguments
.I optval
and
@@ -80,7 +80,7 @@ the value returned.
If no option value is to be supplied or returned,
.I optval
may be NULL.
-.PP
+.P
.I Optname
and any specified options are passed uninterpreted to the appropriate
protocol module for interpretation.
@@ -90,7 +90,7 @@ contains definitions for socket level options, described below.
Options at
other protocol levels vary in format and name; consult the appropriate
entries in section 4 of the manual.
-.PP
+.P
Most socket-level options utilize an
.I int
argument for
@@ -99,7 +99,7 @@ For
.BR setsockopt (),
the argument should be nonzero to enable a boolean option, or zero if the
option is to be disabled.
-.PP
+.P
For a description of the available socket options see
.BR socket (7)
and the appropriate protocol man pages.
@@ -108,7 +108,7 @@ On success, zero is returned for the standard options.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
Netfilter allows the programmer
to define custom socket options with associated handlers; for such
options, the return value on success is the value returned by the handler.
diff --git a/man2/gettid.2 b/man2/gettid.2
index d4ca4d0..297a902 100644
--- a/man2/gettid.2
+++ b/man2/gettid.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH gettid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH gettid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
gettid \- get thread identification
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.B #define _GNU_SOURCE
.B #include <unistd.h>
-.PP
+.P
.B pid_t gettid(void);
.fi
.SH DESCRIPTION
@@ -41,7 +41,7 @@ glibc 2.30.
The thread ID returned by this call is not the same thing as a
POSIX thread ID (i.e., the opaque value returned by
.BR pthread_self (3)).
-.PP
+.P
In a new thread group created by a
.BR clone (2)
call that does not specify the
diff --git a/man2/gettimeofday.2 b/man2/gettimeofday.2
index 8381cc0..cd8bc84 100644
--- a/man2/gettimeofday.2
+++ b/man2/gettimeofday.2
@@ -17,7 +17,7 @@
.\" Modified, 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirement.
.\"
-.TH gettimeofday 2 2023-07-28 "Linux man-pages 6.05.01"
+.TH gettimeofday 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
gettimeofday, settimeofday \- get / set time
.SH LIBRARY
@@ -26,18 +26,18 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/time.h>
-.PP
+.P
.BI "int gettimeofday(struct timeval *restrict " tv ,
.BI " struct timezone *_Nullable restrict " tz );
.BI "int settimeofday(const struct timeval *" tv ,
.BI " const struct timezone *_Nullable " tz );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR settimeofday ():
.nf
Since glibc 2.19:
@@ -51,14 +51,14 @@ The functions
and
.BR settimeofday ()
can get and set the time as well as a timezone.
-.PP
+.P
The
.I tv
argument is a
.I struct timeval
(as specified in
.IR <sys/time.h> ):
-.PP
+.P
.in +4n
.EX
struct timeval {
@@ -67,15 +67,15 @@ struct timeval {
};
.EE
.in
-.PP
+.P
and gives the number of seconds and microseconds since the Epoch (see
.BR time (2)).
-.PP
+.P
The
.I tz
argument is a
.IR "struct timezone" :
-.PP
+.P
.in +4n
.EX
struct timezone {
@@ -84,7 +84,7 @@ struct timezone {
};
.EE
.in
-.PP
+.P
If either
.I tv
or
@@ -96,17 +96,17 @@ is NULL, the corresponding structure is not set or returned.
.I tv
is NULL.)
.\" The following is covered under EPERM below:
-.\" .PP
+.\" .P
.\" Only the superuser may use
.\" .BR settimeofday ().
-.PP
+.P
The use of the
.I timezone
structure is obsolete; the
.I tz
argument should normally be specified as NULL.
(See NOTES below.)
-.PP
+.P
Under Linux, there are some peculiar "warp clock" semantics associated
with the
.BR settimeofday ()
@@ -175,11 +175,11 @@ On some architectures, an implementation of
.BR gettimeofday ()
is provided in the
.BR vdso (7).
-.PP
+.P
The kernel accepts NULL for both
.I tv
and
-.IR tz.
+.IR tz .
The timezone argument is ignored by glibc and musl,
and not passed to/from the kernel.
Android's bionic passes the timezone argument to/from the kernel,
@@ -204,7 +204,7 @@ POSIX.1-2008 marks
as obsolete, recommending the use of
.BR clock_gettime (2)
instead.
-.PP
+.P
Traditionally, the fields of
.I struct timeval
were of type
@@ -235,7 +235,7 @@ or
.\" Each and every occurrence of this field in the kernel source
.\" (other than the declaration) is a bug.
Thus, the following is purely of historical interest.
-.PP
+.P
On old systems, the field
.I tz_dsttime
contains a symbolic constant (values are given below)
@@ -245,7 +245,7 @@ is in force.
it does not indicate that DST is in force, it just selects an
algorithm.)
The daylight saving time algorithms defined are as follows:
-.PP
+.P
.in +4n
.EX
\fBDST_NONE\fP /* not on DST */
@@ -261,7 +261,7 @@ The daylight saving time algorithms defined are as follows:
\fBDST_AUSTALT\fP /* Australian style with shift in 1986 */
.EE
.in
-.PP
+.P
Of course it turned out that the period in which
Daylight Saving Time is in force cannot be given
by a simple algorithm, one per country; indeed,
@@ -277,7 +277,7 @@ affected by discontinuous jumps in the system time
(e.g., if the system administrator manually changes the system time).
If you need a monotonically increasing clock, see
.BR clock_gettime (2).
-.PP
+.P
Macros for operating on
.I timeval
structures are described in
diff --git a/man2/getuid.2 b/man2/getuid.2
index 1b94158..978b8ec 100644
--- a/man2/getuid.2
+++ b/man2/getuid.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Historical remark, aeb, 2004-06-05
-.TH getuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getuid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getuid, geteuid \- get user identity
.SH LIBRARY
@@ -12,14 +12,14 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B uid_t getuid(void);
.B uid_t geteuid(void);
.fi
.SH DESCRIPTION
.BR getuid ()
returns the real user ID of the calling process.
-.PP
+.P
.BR geteuid ()
returns the effective user ID of the calling process.
.SH ERRORS
@@ -32,7 +32,7 @@ and never modify
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, 4.3BSD.
-.PP
+.P
In UNIX\ V6 the
.BR getuid ()
call returned
@@ -41,7 +41,7 @@ UNIX\ V7 introduced separate calls
.BR getuid ()
and
.BR geteuid ().
-.PP
+.P
The original Linux
.BR getuid ()
and
@@ -57,7 +57,7 @@ The glibc
and
.BR geteuid ()
wrapper functions transparently deal with the variations across kernel versions.
-.PP
+.P
On Alpha, instead of a pair of
.BR getuid ()
and
diff --git a/man2/getunwind.2 b/man2/getunwind.2
index eaf7117..1a904b7 100644
--- a/man2/getunwind.2
+++ b/man2/getunwind.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getunwind 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH getunwind 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getunwind \- copy the unwind data to caller's buffer
.SH LIBRARY
@@ -15,13 +15,13 @@ Standard C library
.B #include <linux/unwind.h>
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "[[deprecated]] long syscall(SYS_getunwind, void " buf [. buf_size ],
.BI " size_t " buf_size );
.fi
.SH DESCRIPTION
.I Note: this system call is obsolete.
-.PP
+.P
The
IA-64-specific
.BR getunwind ()
@@ -31,7 +31,7 @@ unwind data into the buffer pointed to by
and returns the size of the unwind data;
this data describes the gate page (kernel code that
is mapped into user space).
-.PP
+.P
The size of the buffer
.I buf
is specified in
@@ -43,11 +43,11 @@ is greater than or equal to the size of the unwind data and
is not NULL;
otherwise, no data is copied, and the call succeeds,
returning the size that would be needed to store the unwind data.
-.PP
+.P
The first part of the unwind data contains an unwind table.
The rest contains the associated unwind information, in no particular order.
The unwind table contains entries of the following form:
-.PP
+.P
.in +4n
.EX
u64 start; (64\-bit address of start of function)
@@ -55,7 +55,7 @@ u64 end; (64\-bit address of end of function)
u64 info; (BUF\-relative offset to unwind info)
.EE
.in
-.PP
+.P
An entry whose
.I start
value is zero indicates the end of the table.
@@ -79,7 +79,7 @@ if the unwind info can't be stored in the space specified by
Linux on IA-64.
.SH HISTORY
Linux 2.4.
-.PP
+.P
This system call has been deprecated.
The modern way to obtain the kernel's unwind data is via the
.BR vdso (7).
diff --git a/man2/getxattr.2 b/man2/getxattr.2
index 21df6ca..6d7a0ee 100644
--- a/man2/getxattr.2
+++ b/man2/getxattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH getxattr 2 2023-07-28 "Linux man-pages 6.05.01"
+.TH getxattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
getxattr, lgetxattr, fgetxattr \- retrieve an extended attribute value
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/xattr.h>
-.PP
+.P
.BI "ssize_t getxattr(const char *" path ", const char *" name ,
.BI " void " value [. size "], size_t " size );
.BI "ssize_t lgetxattr(const char *" path ", const char *" name ,
@@ -30,7 +30,7 @@ with all inodes in the system (i.e., the
data).
A complete overview of extended attributes concepts can be found in
.BR xattr (7).
-.PP
+.P
.BR getxattr ()
retrieves the value of the extended attribute identified by
.I name
@@ -43,13 +43,13 @@ The attribute value is placed in the buffer pointed to by
specifies the size of that buffer.
The return value of the call is the number of bytes placed in
.IR value .
-.PP
+.P
.BR lgetxattr ()
is identical to
.BR getxattr (),
except in the case of a symbolic link, where the link itself is
interrogated, not the file that it refers to.
-.PP
+.P
.BR fgetxattr ()
is identical to
.BR getxattr (),
@@ -59,7 +59,7 @@ only the open file referred to by
.BR open (2))
is interrogated in place of
.IR path .
-.PP
+.P
An extended attribute
.I name
is a null-terminated string.
@@ -68,7 +68,7 @@ namespaces associated with an individual inode.
The value of an extended attribute is a chunk of arbitrary textual or
binary data that was assigned using
.BR setxattr (2).
-.PP
+.P
If
.I size
is specified as zero, these calls return the current size of the
@@ -113,7 +113,7 @@ The
of the
.I value
buffer is too small to hold the result.
-.PP
+.P
In addition, the errors documented in
.BR stat (2)
can also occur.
diff --git a/man2/idle.2 b/man2/idle.2
index 197f366..c32b3d7 100644
--- a/man2/idle.2
+++ b/man2/idle.2
@@ -9,13 +9,13 @@
.\" N.B. calling "idle" from user process used to hang process!
.\" Modified Thu Oct 31 14:41:15 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" "
-.TH idle 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH idle 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
idle \- make process 0 idle
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B [[deprecated]] int idle(void);
.fi
.SH DESCRIPTION
@@ -25,7 +25,7 @@ It marks the process's pages as swappable, lowers its priority,
and enters the main scheduling loop.
.BR idle ()
never returns.
-.PP
+.P
Only process 0 may call
.BR idle ().
Any user process, even a process with superuser permission,
diff --git a/man2/init_module.2 b/man2/init_module.2
index a5fed4d..5cc61d0 100644
--- a/man2/init_module.2
+++ b/man2/init_module.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH init_module 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH init_module 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
init_module, finit_module \- load a kernel module
.SH LIBRARY
@@ -15,14 +15,14 @@ Standard C library
.BR "#include <linux/module.h>" " /* Definition of " MODULE_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_init_module, void " module_image [. len "], \
unsigned long " len ,
.BI " const char *" param_values );
.BI "int syscall(SYS_finit_module, int " fd ,
.BI " const char *" param_values ", int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -36,7 +36,7 @@ and then runs the module's
.I init
function.
This system call requires privilege.
-.PP
+.P
The
.I module_image
argument points to a buffer containing the binary image
@@ -44,7 +44,7 @@ to be loaded;
.I len
specifies the size of that buffer.
The module image should be a valid ELF image, built for the running kernel.
-.PP
+.P
The
.I param_values
argument is a string containing space-delimited specifications of the
@@ -55,12 +55,12 @@ and
The kernel parses this string and initializes the specified
parameters.
Each of the parameter specifications has the form:
-.PP
+.P
.RI " " name [\c
.BI = value\c
.RB [ ,\c
.IR value ...]]
-.PP
+.P
The parameter
.I name
is one of those defined within the module using
@@ -93,7 +93,7 @@ The
.I param_values
argument is as for
.BR init_module ().
-.PP
+.P
The
.I flags
argument modifies the operation of
@@ -107,7 +107,7 @@ Ignore symbol version hashes.
.TP
.B MODULE_INIT_IGNORE_VERMAGIC
Ignore kernel version magic.
-.PP
+.P
There are some safety checks built into a module to ensure that
it matches the kernel against which it is loaded.
.\" http://www.tldp.org/HOWTO/Module-HOWTO/basekerncompat.html
@@ -125,7 +125,7 @@ for the function named by the symbol.
In this case, the kernel version number within the
"vermagic" string is ignored,
as the symbol version hashes are assumed to be sufficiently reliable.
-.PP
+.P
Using the
.B MODULE_INIT_IGNORE_VERMAGIC
flag indicates that the "vermagic" string is to be ignored, and the
@@ -177,7 +177,7 @@ or module loading is disabled
.I /proc/sys/kernel/modules_disabled
in
.BR proc (5)).
-.PP
+.P
The following errors may additionally occur for
.BR init_module ():
.TP
@@ -205,7 +205,7 @@ The binary image supplied in
.I module_image
is not an ELF image,
or is an ELF image that is invalid or for a different architecture.
-.PP
+.P
The following errors may additionally occur for
.BR finit_module ():
.TP
@@ -232,7 +232,7 @@ does not refer to an open file.
The file referred to by
.I fd
is opened for read-write.
-.PP
+.P
In addition to the above errors, if the module's
.I init
function is executed and returns an error, then
@@ -250,7 +250,7 @@ Linux.
.TP
.BR finit_module ()
Linux 3.8.
-.PP
+.P
The
.BR init_module ()
system call is not supported by glibc.
@@ -265,11 +265,11 @@ alternatively, you can invoke the system call using
In Linux 2.4 and earlier, the
.BR init_module ()
system call was rather different:
-.PP
+.P
.B " #include <linux/module.h>"
-.PP
+.P
.BI " int init_module(const char *" name ", struct module *" image );
-.PP
+.P
(User-space applications can detect which version of
.BR init_module ()
is available by calling
@@ -277,7 +277,7 @@ is available by calling
the latter call fails with the error
.B ENOSYS
on Linux 2.6 and later.)
-.PP
+.P
The older version of the system call
loads the relocated module image pointed to by
.I image
@@ -288,11 +288,11 @@ The caller is responsible for providing the relocated image (since
Linux 2.6, the
.BR init_module ()
system call does the relocation).
-.PP
+.P
The module image begins with a module structure and is followed by
code and data as appropriate.
Since Linux 2.2, the module structure is defined as follows:
-.PP
+.P
.in +4n
.EX
struct module {
@@ -317,7 +317,7 @@ struct module {
};
.EE
.in
-.PP
+.P
All of the pointer fields, with the exception of
.I next
and
@@ -330,7 +330,7 @@ Information about currently loaded modules can be found in
.I /proc/modules
and in the file trees under the per-module subdirectories under
.IR /sys/module .
-.PP
+.P
See the Linux kernel source file
.I include/linux/module.h
for some useful background information.
diff --git a/man2/inotify_add_watch.2 b/man2/inotify_add_watch.2
index 2604115..b86328b 100644
--- a/man2/inotify_add_watch.2
+++ b/man2/inotify_add_watch.2
@@ -6,7 +6,7 @@
.\" 2005-07-19 Robert Love <rlove@rlove.org> - initial version
.\" 2006-02-07 mtk, various changes
.\"
-.TH inotify_add_watch 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH inotify_add_watch 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
inotify_add_watch \- add a watch to an initialized inotify instance
.SH LIBRARY
@@ -15,7 +15,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/inotify.h>
-.PP
+.P
.BI "int inotify_add_watch(int " fd ", const char *" pathname ", uint32_t " mask );
.fi
.SH DESCRIPTION
@@ -37,7 +37,7 @@ See
.BR inotify (7)
for a description of the bits that can be set in
.IR mask .
-.PP
+.P
A successful call to
.BR inotify_add_watch ()
returns a unique watch descriptor for this inotify instance,
@@ -49,7 +49,7 @@ then the watch descriptor is newly allocated.
If the filesystem object was already being watched
(perhaps via a different link to the same object), then the descriptor
for the existing watch is returned.
-.PP
+.P
The watch descriptor is returned by later
.BR read (2)s
from the inotify file descriptor.
diff --git a/man2/inotify_init.2 b/man2/inotify_init.2
index e6be9c3..16694cf 100644
--- a/man2/inotify_init.2
+++ b/man2/inotify_init.2
@@ -7,7 +7,7 @@
.\" 2006-02-07 mtk, minor changes
.\" 2008-10-10 mtk: add description of inotify_init1()
.\"
-.TH inotify_init 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH inotify_init 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
inotify_init, inotify_init1 \- initialize an inotify instance
.SH LIBRARY
@@ -16,18 +16,18 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/inotify.h>
-.PP
+.P
.B "int inotify_init(void);"
.BI "int inotify_init1(int " flags );
.fi
.SH DESCRIPTION
For an overview of the inotify API, see
.BR inotify (7).
-.PP
+.P
.BR inotify_init ()
initializes a new inotify instance and returns a file descriptor associated
with a new inotify event queue.
-.PP
+.P
If
.I flags
is 0, then
diff --git a/man2/inotify_rm_watch.2 b/man2/inotify_rm_watch.2
index 8e1b283..9fb5238 100644
--- a/man2/inotify_rm_watch.2
+++ b/man2/inotify_rm_watch.2
@@ -5,7 +5,7 @@
.\" 2005-07-19 Robert Love <rlove@rlove.org> - initial version
.\" 2006-02-07 mtk, minor changes
.\"
-.TH inotify_rm_watch 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH inotify_rm_watch 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
inotify_rm_watch \- remove an existing watch from an inotify instance
.SH LIBRARY
@@ -14,7 +14,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/inotify.h>
-.PP
+.P
.BI "int inotify_rm_watch(int " fd ", int " wd );
.\" Before glibc 2.10, the second argument was types as uint32_t.
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=7040
@@ -25,7 +25,7 @@ removes the watch associated with the watch descriptor
.I wd
from the inotify instance associated with the file descriptor
.IR fd .
-.PP
+.P
Removing a watch causes an
.B IN_IGNORED
event to be generated for this watch descriptor.
diff --git a/man2/intro.2 b/man2/intro.2
index ef3d8cf..74af07c 100644
--- a/man2/intro.2
+++ b/man2/intro.2
@@ -6,7 +6,7 @@
.\" new _syscall(2) page, and substantially enhanced and rewrote
.\" the remaining material on this page.
.\"
-.TH intro 2 2023-02-05 "Linux man-pages 6.05.01"
+.TH intro 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
intro \- introduction to system calls
.SH DESCRIPTION
@@ -19,7 +19,7 @@ wrapper functions which perform the steps required
the system call.
Thus, making a system call looks the same as invoking a normal
library function.
-.PP
+.P
In many cases, the C library wrapper function does nothing more than:
.IP \[bu] 3
copying arguments and the unique system call number to the
@@ -32,7 +32,7 @@ setting
.I errno
if the system call returns an error number when the kernel returns the
CPU to user mode.
-.PP
+.P
However, in a few cases, a wrapper function may do rather more than this,
for example, performing some preprocessing
of the arguments before trapping to kernel mode,
@@ -42,7 +42,7 @@ try to note the details of both the (usually GNU) C library API
interface and the raw system call.
Most commonly, the main DESCRIPTION will focus on the C library interface,
and differences for the system call are covered in the NOTES section.
-.PP
+.P
For a list of the Linux system calls, see
.BR syscalls (2).
.SH RETURN VALUE
@@ -54,12 +54,12 @@ system call returns a negative value, the wrapper copies the
absolute value into the
.I errno
variable, and returns \-1 as the return value of the wrapper.
-.PP
+.P
The value returned by a successful system call depends on the call.
Many system calls return 0 on success, but some can return nonzero
values from a successful call.
The details are described in the individual manual pages.
-.PP
+.P
In some cases,
the programmer must define a feature test macro in order to obtain
the declaration of a system call from the header file specified
diff --git a/man2/io_cancel.2 b/man2/io_cancel.2
index 1b413e2..7cce965 100644
--- a/man2/io_cancel.2
+++ b/man2/io_cancel.2
@@ -2,13 +2,13 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_cancel 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH io_cancel 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
io_cancel \- cancel an outstanding asynchronous I/O operation
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
-.PP
+.P
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
see VERSIONS.
@@ -17,7 +17,7 @@ see VERSIONS.
.BR "#include <linux/aio_abi.h>" " /* Definition of needed types */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_io_cancel, aio_context_t " ctx_id ", struct iocb *" iocb ,
.BI " struct io_event *" result );
.fi
@@ -30,7 +30,7 @@ uses a different type for the
.I ctx_id
argument.
See VERSIONS.
-.PP
+.P
The
.BR io_cancel ()
system call
@@ -71,7 +71,7 @@ You probably want to use the
wrapper function provided by
.\" http://git.fedorahosted.org/git/?p=libaio.git
.IR libaio .
-.PP
+.P
Note that the
.I libaio
wrapper function uses a different type
diff --git a/man2/io_destroy.2 b/man2/io_destroy.2
index 4f513e5..b22be59 100644
--- a/man2/io_destroy.2
+++ b/man2/io_destroy.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_destroy 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH io_destroy 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
io_destroy \- destroy an asynchronous I/O context
.SH LIBRARY
@@ -13,10 +13,10 @@ Standard C library
.BR "#include <linux/aio_abi.h>" " /* Definition of " aio_context_t " */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_io_destroy, aio_context_t " ctx_id );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR io_destroy (),
@@ -31,7 +31,7 @@ uses a different type for the
.I ctx_id
argument.
See VERSIONS.
-.PP
+.P
The
.BR io_destroy ()
system call
@@ -62,7 +62,7 @@ You probably want to use the
wrapper function provided by
.\" http://git.fedorahosted.org/git/?p=libaio.git
.IR libaio .
-.PP
+.P
Note that the
.I libaio
wrapper function uses a different type
diff --git a/man2/io_getevents.2 b/man2/io_getevents.2
index 3cf506c..05332f3 100644
--- a/man2/io_getevents.2
+++ b/man2/io_getevents.2
@@ -2,13 +2,13 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_getevents 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH io_getevents 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
io_getevents \- read asynchronous I/O events from the completion queue
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
-.PP
+.P
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
see VERSIONS.
@@ -17,12 +17,12 @@ see VERSIONS.
.BR "#include <linux/aio_abi.h>" " /* Definition of " *io_* " types */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_io_getevents, aio_context_t " ctx_id ,
.BI " long " min_nr ", long " nr ", struct io_event *" events ,
.BI " struct timespec *" timeout );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR io_getevents (),
@@ -37,22 +37,22 @@ uses a different type for the
.I ctx_id
argument.
See VERSIONS.
-.PP
+.P
The
.BR io_getevents ()
system call
attempts to read at least \fImin_nr\fP events and
up to \fInr\fP events from the completion queue of the AIO context
specified by \fIctx_id\fP.
-.PP
+.P
The \fItimeout\fP argument specifies the amount of time to wait for events,
and is specified as a relative timeout in a
.BR timespec (3)
structure.
-.PP
+.P
The specified time will be rounded up to the system clock granularity
and is guaranteed not to expire early.
-.PP
+.P
Specifying
.I timeout
as NULL means block indefinitely until at least
@@ -70,7 +70,7 @@ expired.
It may also be a nonzero value less than
.IR min_nr ,
if the call was interrupted by a signal handler.
-.PP
+.P
For the failure return, see VERSIONS.
.SH ERRORS
.TP
@@ -95,7 +95,7 @@ You probably want to use the
wrapper function provided by
.\" http://git.fedorahosted.org/git/?p=libaio.git
.IR libaio .
-.PP
+.P
Note that the
.I libaio
wrapper function uses a different type
diff --git a/man2/io_setup.2 b/man2/io_setup.2
index 0745456..8fba0ba 100644
--- a/man2/io_setup.2
+++ b/man2/io_setup.2
@@ -2,23 +2,23 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_setup 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH io_setup 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
io_setup \- create an asynchronous I/O context
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
-.PP
+.P
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/aio_abi.h>" " /* Defines needed types */"
-.PP
+.P
.BI "long io_setup(unsigned int " nr_events ", aio_context_t *" ctx_idp );
.fi
-.PP
+.P
.IR Note :
There is no glibc wrapper for this system call; see VERSIONS.
.SH DESCRIPTION
@@ -30,7 +30,7 @@ uses a different type for the
.I ctx_idp
argument.
See VERSIONS.
-.PP
+.P
The
.BR io_setup ()
system call
@@ -79,7 +79,7 @@ But instead, you probably want to use the
wrapper function provided by
.\" http://git.fedorahosted.org/git/?p=libaio.git
.IR libaio .
-.PP
+.P
Note that the
.I libaio
wrapper function uses a different type
diff --git a/man2/io_submit.2 b/man2/io_submit.2
index 51efb6b..215701e 100644
--- a/man2/io_submit.2
+++ b/man2/io_submit.2
@@ -3,24 +3,24 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_submit 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH io_submit 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
io_submit \- submit asynchronous I/O blocks for processing
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
-.PP
+.P
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/aio_abi.h>" " /* Defines needed types */"
-.PP
+.P
.BI "int io_submit(aio_context_t " ctx_id ", long " nr \
", struct iocb **" iocbpp );
.fi
-.PP
+.P
.IR Note :
There is no glibc wrapper for this system call; see VERSIONS.
.SH DESCRIPTION
@@ -32,7 +32,7 @@ uses a different type for the
.I ctx_id
argument.
See VERSIONS.
-.PP
+.P
The
.BR io_submit ()
system call
@@ -42,13 +42,13 @@ The
.I iocbpp
argument should be an array of \fInr\fP AIO control blocks,
which will be submitted to context \fIctx_id\fP.
-.PP
+.P
The
.I iocb
(I/O control block) structure defined in
.I linux/aio_abi.h
defines the parameters that control the I/O operation.
-.PP
+.P
.in +4n
.EX
#include <linux/aio_abi.h>
@@ -68,7 +68,7 @@ struct iocb {
};
.EE
.in
-.PP
+.P
The fields of this structure are as follows:
.TP
.I aio_data
@@ -254,7 +254,7 @@ But instead, you probably want to use the
wrapper function provided by
.\" http://git.fedorahosted.org/git/?p=libaio.git
.IR libaio .
-.PP
+.P
Note that the
.I libaio
wrapper function uses a different type
diff --git a/man2/ioctl.2 b/man2/ioctl.2
index d6c0701..518712b 100644
--- a/man2/ioctl.2
+++ b/man2/ioctl.2
@@ -10,7 +10,7 @@
.\" Modified 1999-06-25 by Rachael Munns <vashti@dream.org.uk>
.\" Modified 2000-09-21 by Andries Brouwer <aeb@cwi.nl>
.\"
-.TH ioctl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ioctl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl \- control device
.SH LIBRARY
@@ -19,10 +19,9 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/ioctl.h>
-.PP
-.BI "int ioctl(int " fd ", unsigned long " request ", ...);"
-.\" POSIX says 'request' is int, but glibc has the above
-.\" See https://bugzilla.kernel.org/show_bug.cgi?id=42705
+.P
+.BI "int ioctl(int " fd ", unsigned long " op ", ...);" "\f[R] /* glibc, BSD */\f[]"
+.BI "int ioctl(int " fd ", int " op ", ...);" "\f[R] /* musl, other UNIX */\f[]"
.fi
.SH DESCRIPTION
The
@@ -31,22 +30,22 @@ system call manipulates the underlying device parameters of special files.
In particular, many operating characteristics of character special files
(e.g., terminals) may be controlled with
.BR ioctl ()
-requests.
+operations.
The argument
.I fd
must be an open file descriptor.
-.PP
-The second argument is a device-dependent request code.
+.P
+The second argument is a device-dependent operation code.
The third argument is an untyped pointer to memory.
It's traditionally
.BI "char *" argp
(from the days before
.B "void *"
was valid C), and will be so named for this discussion.
-.PP
+.P
An
.BR ioctl ()
-.I request
+.I op
has encoded in it whether the argument is an
.I in
parameter or
@@ -56,7 +55,7 @@ parameter, and the size of the argument
in bytes.
Macros and defines used in specifying an
.BR ioctl ()
-.I request
+.I op
are located in the file
.IR <sys/ioctl.h> .
See NOTES.
@@ -64,7 +63,7 @@ See NOTES.
Usually, on success zero is returned.
A few
.BR ioctl ()
-requests use the return value as an output parameter
+operations use the return value as an output parameter
and return a nonnegative value on success.
On error, \-1 is returned, and
.I errno
@@ -80,7 +79,7 @@ is not a valid file descriptor.
references an inaccessible memory area.
.TP
.B EINVAL
-.I request
+.I op
or
.I argp
is not valid.
@@ -90,7 +89,7 @@ is not valid.
is not associated with a character special device.
.TP
.B ENOTTY
-The specified request does not apply to the kind of object that the
+The specified operation does not apply to the kind of object that the
file descriptor
.I fd
references.
@@ -103,7 +102,52 @@ model).
.SH STANDARDS
None.
.SH HISTORY
-Version\~7 AT&T UNIX.
+Version\~7 AT&T UNIX has
+.PD 0
+.in +4n
+.nf
+.BI "ioctl(int " fildes ", int " op ", struct sgttyb *" argp );
+.fi
+.in
+.P
+.PD
+(where
+.B struct sgttyb
+has historically been used by
+.BR stty (2)
+and
+.BR gtty (2),
+and is polymorphic by operation type (like a
+.B void *
+would be, if it had been available)).
+.P
+SysIII documents
+.I arg
+without a type at all.
+.P
+4.3BSD has
+.PD 0
+.in +4n
+.nf
+.BI "ioctl(int " d ", unsigned long " op ", char *" argp );
+.fi
+.in
+.P
+.PD
+(with
+.B char *
+similarly in for
+.BR "void *" ).
+.P
+SysVr4 has
+.PD 0
+.in +4n
+.nf
+.BI "int ioctl(int " fildes ", int " op ", ... /* " arg " */);"
+.fi
+.in
+.P
+.PD
.SH NOTES
In order to use this call, one needs an open file descriptor.
Often the
@@ -115,10 +159,12 @@ flag.
.\"
.SS ioctl structure
.\" added two sections - aeb
-Ioctl command values are 32-bit constants.
+Ioctl
+.I op
+values are 32-bit constants.
In principle these constants are completely arbitrary, but people have
tried to build some structure into them.
-.PP
+.P
The old Linux situation was that of mostly 16-bit constants, where the
last byte is a serial number, and the preceding byte(s) give a type
indicating the driver.
@@ -137,7 +183,7 @@ has value
.B CYGETTIMEOUT
has value 0x00435906, with 0x43 0x59 = \[aq]C\[aq] \[aq]Y\[aq]
indicating the cyclades driver.
-.PP
+.P
Later (0.98p5) some more information was built into the number.
One has 2 direction bits
(00: none, 01: write, 10: read, 11: read/write)
@@ -145,7 +191,7 @@ followed by 14 size bits (giving the size of the argument),
followed by an 8-bit type (collecting the ioctls in groups
for a common purpose or a common driver), and an 8-bit
serial number.
-.PP
+.P
The macros describing this structure live in
.I <asm/ioctl.h>
and are
@@ -156,12 +202,12 @@ They use
.I sizeof(size)
so that size is a
misnomer here: this third argument is a data type.
-.PP
+.P
Note that the size bits are very unreliable: in lots of cases
they are wrong, either because of buggy macros using
.IR sizeof(sizeof(struct)) ,
or because of legacy values.
-.PP
+.P
Thus, it seems that the new structure only gave disadvantages:
it does not help in checking, but it causes varying values
for the various architectures.
diff --git a/man2/ioctl_console.2 b/man2/ioctl_console.2
index 455be75..f06725f 100644
--- a/man2/ioctl_console.2
+++ b/man2/ioctl_console.2
@@ -19,14 +19,14 @@
.\" VT_UNLOCKSWITCH (since Linux 1.3.47, needs CAP_SYS_TTY_CONFIG)
.\" VT_GETHIFONTMASK (since Linux 2.6.18)
.\"
-.TH ioctl_console 2 2023-01-22 "Linux man-pages 6.05.01"
+.TH ioctl_console 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl_console \- ioctls for console terminal and virtual consoles
.SH DESCRIPTION
The following Linux-specific
.BR ioctl (2)
-requests are supported for console terminals and virtual consoles.
-Each requires a third argument, assumed here to be
+operations are supported for console terminals and virtual consoles.
+Each operation requires a third argument, assumed here to be
.IR argp .
.TP
.B KDGETLED
@@ -53,7 +53,7 @@ unsigned long integer in
However, if a higher order bit is set,
the LEDs revert to normal: displaying the state of the
keyboard functions of caps lock, num lock, and scroll lock.
-.PP
+.P
Before Linux 1.1.54, the LEDs just reflected the state of the corresponding
keyboard flags, and KDGETLED/KDSETLED would also change the keyboard
flags.
@@ -546,7 +546,7 @@ points to a
struct vt_mode {
char mode; /* vt mode */
char waitv; /* if set, hang on writes if not active */
- short relsig; /* signal to raise on release req */
+ short relsig; /* signal to raise on release op */
short acqsig; /* signal to raise on acquisition */
short frsig; /* unused (set to 0) */
};
@@ -657,7 +657,7 @@ Note that this does not change the videomode.
See
.BR resizecons (8).
(Since Linux 1.3.3.)
-.PP
+.P
The action of the following ioctls depends on the first byte in the struct
pointed to by
.IR argp ,
@@ -715,12 +715,20 @@ is 0 for character-by-character selection,
or 2 for line-by-line selection.
The indicated screen characters are highlighted and saved
in a kernel buffer.
+.IP
+Since Linux 6.7, using this subcode requires the
+.B CAP_SYS_ADMIN
+capability.
.TP
.BR TIOCLINUX ", " subcode = TIOCL_PASTESEL
Paste selection.
The characters in the selection buffer are
written to
.IR fd .
+.IP
+Since Linux 6.7, using this subcode requires the
+.B CAP_SYS_ADMIN
+capability.
.TP
.BR TIOCLINUX ", " subcode = TIOCL_UNBLANKSCREEN
Unblank the screen.
@@ -729,6 +737,10 @@ Unblank the screen.
Sets contents of a 256-bit look up table defining characters in a "word",
for word-by-word selection.
(Since Linux 1.1.32.)
+.IP
+Since Linux 6.7, using this subcode requires the
+.B CAP_SYS_ADMIN
+capability.
.TP
.BR TIOCLINUX ", " subcode = TIOCL_GETSHIFTSTATE
.I argp
@@ -849,7 +861,7 @@ is invalid.
.TP
.B ENOTTY
The file descriptor is not associated with a character special device,
-or the specified request does not apply to it.
+or the specified operation does not apply to it.
.TP
.B EPERM
Insufficient permission.
@@ -864,16 +876,16 @@ without warning.
situation as of kernel version 1.1.94;
there are many minor and not-so-minor
differences with earlier versions.)
-.PP
+.P
Very often, ioctls are introduced for communication between the
kernel and one particular well-known program (fdisk, hdparm, setserial,
tunelp, loadkeys, selection, setfont, etc.), and their behavior will be
changed when required by this particular program.
-.PP
+.P
Programs using these ioctls will not be portable to other versions
of UNIX, will not work on older versions of Linux, and will not work
on future versions of Linux.
-.PP
+.P
Use POSIX functions.
.SH SEE ALSO
.BR dumpkeys (1),
@@ -898,6 +910,6 @@ Use POSIX functions.
.BR mapscrn (8),
.BR resizecons (8),
.BR setfont (8)
-.PP
+.P
.IR /usr/include/linux/kd.h ,
.I /usr/include/linux/vt.h
diff --git a/man2/ioctl_fat.2 b/man2/ioctl_fat.2
index 67b5a2c..a690cf1 100644
--- a/man2/ioctl_fat.2
+++ b/man2/ioctl_fat.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2014, Heinrich Schuchardt <xypron.glpk@gmx.de>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH ioctl_fat 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_fat 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioctl_fat \- manipulating the FAT filesystem
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.BR "#include <linux/msdos_fs.h>" " /* Definition of [" V ] FAT_* " and"
.BR " ATTR_* " constants */"
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " fd ", FAT_IOCTL_GET_ATTRIBUTES, uint32_t *" attr );
.BI "int ioctl(int " fd ", FAT_IOCTL_SET_ATTRIBUTES, uint32_t *" attr );
.BI "int ioctl(int " fd ", FAT_IOCTL_GET_VOLUME_ID, uint32_t *" id );
@@ -32,7 +32,7 @@ can be read with
.B FAT_IOCTL_GET_ATTRIBUTES
and written with
.BR FAT_IOCTL_SET_ATTRIBUTES .
-.PP
+.P
The
.I fd
argument contains a file descriptor for a file or directory.
@@ -41,7 +41,7 @@ It is sufficient to create the file descriptor by calling
with the
.B O_RDONLY
flag.
-.PP
+.P
The
.I attr
argument contains a pointer to a bit mask.
@@ -68,7 +68,7 @@ This attribute is read-only.
This bit indicates that this file or directory should be archived.
It is set when a file is created or modified.
It is reset by an archiving system.
-.PP
+.P
The zero value
.B ATTR_NONE
can be used to indicate that no attribute bit is set.
@@ -76,7 +76,7 @@ can be used to indicate that no attribute bit is set.
FAT filesystems are identified by a volume ID.
The volume ID can be read with
.BR FAT_IOCTL_GET_VOLUME_ID .
-.PP
+.P
The
.I fd
argument can be a file descriptor for any file or directory of the
@@ -86,13 +86,13 @@ It is sufficient to create the file descriptor by calling
with the
.B O_RDONLY
flag.
-.PP
+.P
The
.I id
argument is a pointer to the field that will be filled with the volume ID.
Typically the volume ID is displayed to the user as a group of two
16-bit fields:
-.PP
+.P
.in +4n
.EX
printf("Volume ID %04x\-%04x\en", id >> 16, id & 0xFFFF);
@@ -104,12 +104,12 @@ consisting of up to 8 capital letters, optionally followed by a period
and up to 3 capital letters for the file extension.
If the actual filename does not fit into this scheme, it is stored
as a long filename of up to 255 UTF-16 characters.
-.PP
+.P
The short filenames in a directory can be read with
.BR VFAT_IOCTL_READDIR_SHORT .
.B VFAT_IOCTL_READDIR_BOTH
reads both the short and the long filenames.
-.PP
+.P
The
.I fd
argument must be a file descriptor for a directory.
@@ -122,11 +122,11 @@ The file descriptor can be used only once to iterate over the directory
entries by calling
.BR ioctl (2)
repeatedly.
-.PP
+.P
The
.I entry
argument is a two-element array of the following structures:
-.PP
+.P
.in +4n
.EX
struct __fat_dirent {
@@ -137,10 +137,10 @@ struct __fat_dirent {
};
.EE
.in
-.PP
+.P
The first entry in the array is for the short filename.
The second entry is for the long filename.
-.PP
+.P
The
.I d_ino
and
@@ -154,7 +154,7 @@ The
field holds the offset of the file entry in the directory.
As these values are not available for short filenames, the user code should
simply ignore them.
-.PP
+.P
The field
.I d_reclen
contains the length of the filename in the field
@@ -174,7 +174,7 @@ is a character string of length 0 for the long filename.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
For
.B VFAT_IOCTL_READDIR_BOTH
and
@@ -205,7 +205,7 @@ does not refer to a directory.
The file descriptor
.I fd
does not refer to an object in a FAT filesystem.
-.PP
+.P
For further error values, see
.BR ioctl (2).
.SH STANDARDS
@@ -234,10 +234,10 @@ to manipulate file attributes.
The program reads and displays the archive attribute of a file.
After inverting the value of the attribute,
the program reads and displays the attribute again.
-.PP
+.P
The following was recorded when applying the program for the file
.IR /mnt/user/foo :
-.PP
+.P
.in +4n
.EX
# ./toggle_fat_archive_flag /mnt/user/foo
@@ -335,11 +335,11 @@ main(int argc, char *argv[])
The following program demonstrates the use of
.BR ioctl (2)
to display the volume ID of a FAT filesystem.
-.PP
+.P
The following output was recorded when applying the program for
directory
.IR /mnt/user :
-.PP
+.P
.in +4n
.EX
$ ./display_fat_volume_id /mnt/user
@@ -400,10 +400,10 @@ main(int argc, char *argv[])
The following program demonstrates the use of
.BR ioctl (2)
to list a directory.
-.PP
+.P
The following was recorded when applying the program to the directory
.IR /mnt/user :
-.PP
+.P
.in +4n
.EX
$ \fB./fat_dir /mnt/user\fP
diff --git a/man2/ioctl_ficlonerange.2 b/man2/ioctl_ficlonerange.2
index 68cfc67..b2c5e6b 100644
--- a/man2/ioctl_ficlonerange.2
+++ b/man2/ioctl_ficlonerange.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2016, Oracle. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_ficlonerange 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ioctl_ficlonerange 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioctl_ficlonerange, ioctl_ficlone \-
share some the data of one file with another file
@@ -12,7 +12,7 @@ Standard C library
.nf
.BR "#include <linux/fs.h>" " /* Definition of " FICLONE* " constants */"
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " dest_fd ", FICLONERANGE, struct file_clone_range *" arg );
.BI "int ioctl(int " dest_fd ", FICLONE, int " src_fd );
.fi
@@ -31,7 +31,7 @@ If a file write should occur to a shared region,
the filesystem must ensure that the changes remain private to the file being
written.
This behavior is commonly referred to as "copy on write".
-.PP
+.P
This ioctl reflinks up to
.I src_length
bytes from file descriptor
@@ -48,7 +48,7 @@ If
is zero, the ioctl reflinks to the end of the source file.
This information is conveyed in a structure of
the following form:
-.PP
+.P
.in +4n
.EX
struct file_clone_range {
@@ -59,10 +59,10 @@ struct file_clone_range {
};
.EE
.in
-.PP
+.P
Clones are atomic with regards to concurrent writes, so no locks need to be
taken to obtain a consistent cloned copy.
-.PP
+.P
The
.B FICLONE
ioctl clones entire files.
@@ -114,7 +114,7 @@ are not on the same mounted filesystem.
Linux.
.SH HISTORY
Linux 4.5.
-.PP
+.P
They were previously known as
.B BTRFS_IOC_CLONE
and
diff --git a/man2/ioctl_fideduperange.2 b/man2/ioctl_fideduperange.2
index 5388c5d..84fd2e8 100644
--- a/man2/ioctl_fideduperange.2
+++ b/man2/ioctl_fideduperange.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2016, Oracle. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_fideduperange 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ioctl_fideduperange 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl_fideduperange \- share some the data of one file with another file
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.BR "#include <linux/fs.h>" " /* Definition of " FIDEDUPERANGE " and"
.BR " FILE_DEDUPE_* " constants */
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " src_fd ", FIDEDUPERANGE, struct file_dedupe_range *" arg );
.fi
.SH DESCRIPTION
@@ -32,7 +32,7 @@ If a file write should occur to a shared
region, the filesystem must ensure that the changes remain private to the file
being written.
This behavior is commonly referred to as "copy on write".
-.PP
+.P
This ioctl performs the "compare and share if identical" operation on up to
.I src_length
bytes from file descriptor
@@ -40,7 +40,7 @@ bytes from file descriptor
at offset
.IR src_offset .
This information is conveyed in a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct file_dedupe_range {
@@ -53,20 +53,20 @@ struct file_dedupe_range {
};
.EE
.in
-.PP
+.P
Deduplication is atomic with regards to concurrent writes, so no locks need to
be taken to obtain a consistent deduplicated copy.
-.PP
+.P
The fields
.IR reserved1 " and " reserved2
must be zero.
-.PP
+.P
Destinations for the deduplication operation are conveyed in the array at the
end of the structure.
The number of destinations is given in
.IR dest_count ,
and the destination information is conveyed in the following form:
-.PP
+.P
.in +4n
.EX
struct file_dedupe_range_info {
@@ -78,7 +78,7 @@ struct file_dedupe_range_info {
};
.EE
.in
-.PP
+.P
Each deduplication operation targets
.I src_length
bytes in file descriptor
@@ -109,14 +109,14 @@ is mapped into
and the previous contents in
.I dest_fd
are freed.
-.PP
+.P
Upon successful completion of this ioctl, the number of bytes successfully
deduplicated is returned in
.I bytes_deduped
and a status code for the deduplication operation is returned in
.IR status .
If even a single byte in the range does not match, the deduplication
-request will be ignored and
+operation request will be ignored and
.I status
set to
.BR FILE_DEDUPE_RANGE_DIFFERS .
@@ -187,7 +187,7 @@ single call.
Linux.
.SH HISTORY
Linux 4.5.
-.PP
+.P
It was previously known as
.B BTRFS_IOC_FILE_EXTENT_SAME
and was private to Btrfs.
diff --git a/man2/ioctl_fslabel.2 b/man2/ioctl_fslabel.2
index 885a43c..7fcde80 100644
--- a/man2/ioctl_fslabel.2
+++ b/man2/ioctl_fslabel.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_fslabel 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ioctl_fslabel 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioctl_fslabel \- get or set a filesystem label
.SH LIBRARY
@@ -11,7 +11,7 @@ Standard C library
.nf
.BR "#include <linux/fs.h>" " /* Definition of " *FSLABEL* " constants */"
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " fd ", FS_IOC_GETFSLABEL, char " label [FSLABEL_MAX]);
.BI "int ioctl(int " fd ", FS_IOC_SETFSLABEL, char " label [FSLABEL_MAX]);
.fi
@@ -50,7 +50,7 @@ The calling process does not have sufficient permissions to set the label.
Linux.
.SH HISTORY
Linux 4.18.
-.PP
+.P
They were previously known as
.B BTRFS_IOC_GET_FSLABEL
and
diff --git a/man2/ioctl_getfsmap.2 b/man2/ioctl_getfsmap.2
index e80c1d9..97fbc67 100644
--- a/man2/ioctl_getfsmap.2
+++ b/man2/ioctl_getfsmap.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2017, Oracle. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_getfsmap 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_getfsmap 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl_getfsmap \- retrieve the physical layout of the filesystem
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.BR "#include <linux/fsmap.h> " "/* Definition of " FS_IOC_GETFSMAP ,
.BR " FM?_OF_*" ", and " *FMR_OWN_* " constants */"
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " fd ", FS_IOC_GETFSMAP, struct fsmap_head * " arg );
.fi
.SH DESCRIPTION
@@ -21,10 +21,10 @@ This
operation retrieves physical extent mappings for a filesystem.
This information can be used to discover which files are mapped to a physical
block, examine free space, or find known bad blocks, among other things.
-.PP
+.P
The sole argument to this operation should be a pointer to a single
.IR "struct fsmap_head" ":"
-.PP
+.P
.in +4n
.EX
struct fsmap {
@@ -50,7 +50,7 @@ struct fsmap_head {
};
.EE
.in
-.PP
+.P
The two
.I fmh_keys
array elements specify the lowest and highest reverse-mapping
@@ -60,7 +60,7 @@ A reverse mapping key consists of the tuple (device, block, owner, offset).
The owner and offset fields are part of the key because some filesystems
support sharing physical blocks between multiple files and
therefore may return multiple mappings for a given physical block.
-.PP
+.P
Filesystem mappings are copied into the
.I fmh_recs
array, which immediately follows the header data.
@@ -70,7 +70,7 @@ The
.I fmh_iflags
field is a bit mask passed to the kernel to alter the output.
No flags are currently defined, so the caller must set this value to zero.
-.PP
+.P
The
.I fmh_oflags
field is a bit mask of flags set by the kernel concerning the returned mappings.
@@ -81,7 +81,7 @@ is set, then the
field represents a
.I dev_t
structure containing the major and minor numbers of the block device.
-.PP
+.P
The
.I fmh_count
field contains the number of elements in the array being passed to the
@@ -91,13 +91,13 @@ If this value is 0,
will be set to the number of records that would have been returned had
the array been large enough;
no mapping information will be returned.
-.PP
+.P
The
.I fmh_entries
field contains the number of elements in the
.I fmh_recs
array that contain useful information.
-.PP
+.P
The
.I fmh_reserved
fields must be set to zero.
@@ -124,8 +124,8 @@ By convention, the field
.I fsmap_head.fmh_keys[0]
must contain the low key and
.I fsmap_head.fmh_keys[1]
-must contain the high key for the request.
-.PP
+must contain the high key for the operation.
+.P
For convenience, if
.I fmr_length
is set in the low key, it will be added to
@@ -154,11 +154,11 @@ field, this field contains a
from which major and minor numbers can be extracted.
If the flag is not set, this field contains a value that must be unique
for each unique storage device.
-.PP
+.P
The
.I fmr_physical
field contains the disk address of the extent in bytes.
-.PP
+.P
The
.I fmr_owner
field contains the owner of the extent.
@@ -168,7 +168,7 @@ is set in the
.I fmr_flags
field, in which case the value is determined by the filesystem.
See the section below about owner values for more details.
-.PP
+.P
The
.I fmr_offset
field contains the logical address in the mapping record in bytes.
@@ -176,11 +176,11 @@ This field has no meaning if the
.BR FMR_OF_SPECIAL_OWNER " or " FMR_OF_EXTENT_MAP
flags are set in
.IR fmr_flags "."
-.PP
+.P
The
.I fmr_length
field contains the length of the extent in bytes.
-.PP
+.P
The
.I fmr_flags
field is a bit mask of extent state flags.
@@ -207,7 +207,7 @@ field contains a special value instead of an inode number.
.B FMR_OF_LAST
This is the last record in the data set.
.RE
-.PP
+.P
The
.I fmr_reserved
field will be set to zero.
@@ -239,7 +239,7 @@ This extent is in use but its owner is not known or not easily retrieved.
.B FMR_OWN_METADATA
This extent is filesystem metadata.
.RE
-.PP
+.P
XFS can return the following special owner values:
.RS 0.4i
.TP
@@ -276,7 +276,7 @@ This extent is being used to stage a copy-on-write.
This extent has been marked defective either by the filesystem or the
underlying device.
.RE
-.PP
+.P
ext4 can return the following special owner values:
.RS 0.4i
.TP
@@ -328,16 +328,16 @@ physical storage address space than the high key, or a nonzero value
was passed in one of the fields that must be zero.
.TP
.B ENOMEM
-Insufficient memory to process the request.
+Insufficient memory to process the operation.
.TP
.B EOPNOTSUPP
-The filesystem does not support this command.
+The filesystem does not support this operation.
.TP
.B EUCLEAN
The filesystem metadata is corrupt and needs repair.
.SH STANDARDS
Linux.
-.PP
+.P
Not all filesystems support it.
.SH HISTORY
Linux 4.12.
diff --git a/man2/ioctl_iflags.2 b/man2/ioctl_iflags.2
index d2c3300..e6cc7cb 100644
--- a/man2/ioctl_iflags.2
+++ b/man2/ioctl_iflags.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ioctl_iflags 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_iflags 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioctl_iflags \- ioctl() operations for inode flags
.SH DESCRIPTION
@@ -13,7 +13,7 @@ that modify the semantics of files and directories.
These flags can be retrieved and modified using two
.BR ioctl (2)
operations:
-.PP
+.P
.in +4n
.EX
int attr;
@@ -26,14 +26,14 @@ ioctl(fd, FS_IOC_SETFLAGS, &attr); /* Update flags for inode
referred to by \[aq]fd\[aq] */
.EE
.in
-.PP
+.P
The
.BR lsattr (1)
and
.BR chattr (1)
shell commands provide interfaces to these two operations,
allowing a user to view and modify the inode flags associated with a file.
-.PP
+.P
The following flags are supported
(shown along with the corresponding letter used to indicate the flag by
.BR lsattr (1)
@@ -160,7 +160,7 @@ has an effect only for ext2, ext3, and ext4.
Allow the file to be undeleted if it is deleted.
This feature is not implemented by any filesystem,
since it is possible to implement file-recovery mechanisms outside the kernel.
-.PP
+.P
In most cases,
when any of the above flags is set on a directory,
the flag is inherited by files and subdirectories
@@ -180,7 +180,7 @@ the effective user ID of the caller must match the owner of the file,
or the caller must have the
.B CAP_FOWNER
capability.
-.PP
+.P
The type of the argument given to the
.B FS_IOC_GETFLAGS
and
diff --git a/man2/ioctl_ns.2 b/man2/ioctl_ns.2
index a11e54b..a21c14a 100644
--- a/man2/ioctl_ns.2
+++ b/man2/ioctl_ns.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ioctl_ns 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_ns 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl_ns \- ioctl() operations for Linux namespaces
.SH DESCRIPTION
@@ -17,13 +17,13 @@ operations are provided to allow discovery of namespace relationships (see
and
.BR pid_namespaces (7)).
The form of the calls is:
-.PP
+.P
.in +4n
.EX
-new_fd = ioctl(fd, request);
+new_fd = ioctl(fd, op);
.EE
.in
-.PP
+.P
In each case,
.I fd
refers to a
@@ -49,7 +49,7 @@ For user namespaces,
.B NS_GET_PARENT
is synonymous with
.BR NS_GET_USERNS .
-.PP
+.P
The new file descriptor returned by these operations is opened with the
.B O_RDONLY
and
@@ -57,7 +57,7 @@ and
(close-on-exec; see
.BR fcntl (2))
flags.
-.PP
+.P
By applying
.BR fstat (2)
to the returned file descriptor, one obtains a
@@ -70,7 +70,7 @@ structure whose
This inode number can be matched with the inode number of another
.IR /proc/ pid /ns/ { pid , user }
file to determine whether that is the owning/parent namespace.
-.PP
+.P
Either of these
.BR ioctl (2)
operations can fail with the following errors:
@@ -84,7 +84,7 @@ user or PID namespace.
.TP
.B ENOTTY
The operation is not supported by this kernel version.
-.PP
+.P
Additionally, the
.B NS_GET_PARENT
operation can fail with the following error:
@@ -92,7 +92,7 @@ operation can fail with the following error:
.B EINVAL
.I fd
refers to a nonhierarchical namespace.
-.PP
+.P
See the EXAMPLES section for an example of the use of these operations.
.\" ============================================================
.\"
@@ -103,18 +103,18 @@ The
operation (available since Linux 4.11) can be used to discover
the type of namespace referred to by the file descriptor
.IR fd :
-.PP
+.P
.in +4n
.EX
nstype = ioctl(fd, NS_GET_NSTYPE);
.EE
.in
-.PP
+.P
.I fd
refers to a
.IR /proc/ pid /ns/*
file.
-.PP
+.P
The return value is one of the
.B CLONE_NEW*
values that can be specified to
@@ -132,23 +132,23 @@ operation (available since Linux 4.11) can be used to discover
the owner user ID of a user namespace (i.e., the effective user ID
of the process that created the user namespace).
The form of the call is:
-.PP
+.P
.in +4n
.EX
uid_t uid;
ioctl(fd, NS_GET_OWNER_UID, &uid);
.EE
.in
-.PP
+.P
.I fd
refers to a
.IR /proc/ pid /ns/user
file.
-.PP
+.P
The owner user ID is returned in the
.I uid_t
pointed to by the third argument.
-.PP
+.P
This operation can fail with the following error:
.TP
.B EINVAL
@@ -173,22 +173,22 @@ operations described above to perform simple
discovery of namespace relationships.
The following shell sessions show various examples of the use
of this program.
-.PP
+.P
Trying to get the parent of the initial user namespace fails,
since it has no parent:
-.PP
+.P
.in +4n
.EX
$ \fB./ns_show /proc/self/ns/user p\fP
The parent namespace is outside your namespace scope
.EE
.in
-.PP
+.P
Create a process running
.BR sleep (1)
that resides in new user and UTS namespaces,
and show that the new UTS namespace is associated with the new user namespace:
-.PP
+.P
.in +4n
.EX
$ \fBunshare \-Uu sleep 1000 &\fP
@@ -199,10 +199,10 @@ $ \fBreadlink /proc/23235/ns/user\fP
user:[4026532448]
.EE
.in
-.PP
+.P
Then show that the parent of the new user namespace in the preceding
example is the initial user namespace:
-.PP
+.P
.in +4n
.EX
$ \fBreadlink /proc/self/ns/user\fP
@@ -211,13 +211,13 @@ $ \fB./ns_show /proc/23235/ns/user p\fP
Device/Inode of parent namespace is: [0,3] / 4026531837
.EE
.in
-.PP
+.P
Start a shell in a new user namespace, and show that from within
this shell, the parent user namespace can't be discovered.
Similarly, the UTS namespace
(which is associated with the initial user namespace)
can't be discovered.
-.PP
+.P
.in +4n
.EX
$ \fBPS1="sh2$ " unshare \-U bash\fP
diff --git a/man2/ioctl_pagemap_scan.2 b/man2/ioctl_pagemap_scan.2
new file mode 100644
index 0000000..fcd9bdc
--- /dev/null
+++ b/man2/ioctl_pagemap_scan.2
@@ -0,0 +1,206 @@
+.\" This manpage is Copyright (C) 2023 Collabora;
+.\" Written by Muhammad Usama Anjum <usama.anjum@collabora.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH ioctl_pagemap_scan 2 2024-01-28 "Linux man-pages 6.7"
+.SH NAME
+ioctl_pagemap_scan \- get and/or clear page flags
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <linux/fs.h>" " /* Definition of " "struct pm_scan_arg" ,
+.BR " struct page_region" ", and " PAGE_IS_* " constants */"
+.B #include <sys/ioctl.h>
+.P
+.BI "int ioctl(int " pagemap_fd ", PAGEMAP_SCAN, struct pm_scan_arg *" arg );
+.fi
+.SH DESCRIPTION
+This
+.BR ioctl (2)
+is used to get and optionally clear some specific flags from page table entries.
+The information is returned with
+.B PAGE_SIZE
+granularity.
+.P
+To start tracking the written state (flag) of a page or range of memory,
+the
+.B UFFD_FEATURE_WP_ASYNC
+must be enabled by
+.B UFFDIO_API
+.BR ioctl (2)
+on
+.B userfaultfd
+and memory range must be registered with
+.B UFFDIO_REGISTER
+.BR ioctl (2)
+in
+.B UFFDIO_REGISTER_MODE_WP
+mode.
+.SS Supported page flags
+The following page table entry flags are supported:
+.TP
+.B PAGE_IS_WPALLOWED
+The page has asynchronous write-protection enabled.
+.TP
+.B PAGE_IS_WRITTEN
+The page has been written to from the time it was write protected.
+.TP
+.B PAGE_IS_FILE
+The page is file backed.
+.TP
+.B PAGE_IS_PRESENT
+The page is present in the memory.
+.TP
+.B PAGE_IS_SWAPPED
+The page is swapped.
+.TP
+.B PAGE_IS_PFNZERO
+The page has zero PFN.
+.TP
+.B PAGE_IS_HUGE
+The page is THP or Hugetlb backed.
+.SS Supported operations
+The get operation is always performed
+if the output buffer is specified.
+The other operations are as following:
+.TP
+.B PM_SCAN_WP_MATCHING
+Write protect the matched pages.
+.TP
+.B PM_SCAN_CHECK_WPASYNC
+Abort the scan
+when a page is found
+which doesn't have the Userfaultfd Asynchronous Write protection enabled.
+.SS The \f[I]struct pm_scan_arg\f[] argument
+.EX
+struct pm_scan_arg {
+ __u64 size;
+ __u64 flags;
+ __u64 start;
+ __u64 end;
+ __u64 walk_end;
+ __u64 vec;
+ __u64 vec_len;
+ __u64 max_pages
+ __u64 category_inverted;
+ __u64 category_mask;
+ __u64 category_anyof_mask
+ __u64 return_mask;
+};
+.EE
+.TP
+.B size
+This field should be set to the size of the structure in bytes,
+as in
+.IR sizeof(struct\~pm_scan_arg) .
+.TP
+.B flags
+The operations to be performed are specified in it.
+.TP
+.B start
+The starting address of the scan is specified in it.
+.TP
+.B end
+The ending address of the scan is specified in it.
+.TP
+.B walk_end
+The kernel returns the scan's ending address in it.
+The
+.I walk_end
+equal to
+.I end
+means that scan has completed on the entire range.
+.TP
+.B vec
+The address of
+.I page_region
+array for output.
+.IP
+.in +4n
+.EX
+struct page_region {
+ __u64 start;
+ __u64 end;
+ __u64 categories;
+};
+.EE
+.in
+.TP
+.B vec_len
+The length of the
+.I page_region
+struct array.
+.TP
+.B max_pages
+It is the optional limit for the number of output pages required.
+.TP
+.B category_inverted
+.BI PAGE_IS_ *
+categories which values match if 0 instead of 1.
+.TP
+.B category_mask
+Skip pages for which any
+.BI PAGE_IS_ *
+category doesn't match.
+.TP
+.B category_anyof_mask
+Skip pages for which no
+.BI PAGE_IS_ *
+category matches.
+.TP
+.B return_mask
+.BI PAGE_IS_ *
+categories that are to be reported in
+.IR page_region .
+.SH RETURN VALUE
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+Error codes can be one of, but are not limited to, the following:
+.TP
+.B EINVAL
+Invalid arguments i.e.,
+invalid
+.I size
+of the argument,
+invalid
+.IR flags ,
+invalid
+.IR categories ,
+the
+.I start
+address isn't aligned with
+.BR PAGE_SIZE ,
+or
+.I vec_len
+is specified when
+.I vec
+is NULL.
+.TP
+.B EFAULT
+Invalid
+.I arg
+pointer,
+invalid
+.I vec
+pointer,
+or invalid address range specified by
+.I start
+and
+.IR end .
+.TP
+.B ENOMEM
+No memory is available.
+.TP
+.B EINTR
+Fetal signal is pending.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 6.7.
+.SH SEE ALSO
+.BR ioctl (2)
diff --git a/man2/ioctl_pipe.2 b/man2/ioctl_pipe.2
index 31e02bb..d08efa1 100644
--- a/man2/ioctl_pipe.2
+++ b/man2/ioctl_pipe.2
@@ -2,14 +2,14 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH ioctl_pipe 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_pipe 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioctl_pipe \- ioctl() operations for General notification mechanism
.SH SYNOPSIS
.nf
.BR "#include <linux/watch_queue.h>" " /* Definition of " IOC_WATCH_QUEUE_ "* */"
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " pipefd "[1], IOC_WATCH_QUEUE_SET_SIZE, int " size );
.BI "int ioctl(int " pipefd "[1], IOC_WATCH_QUEUE_SET_FILTER,"
.BI " struct watch_notification_filter *" filter );
diff --git a/man2/ioctl_tty.2 b/man2/ioctl_tty.2
index dfbd9a8..9d247ed 100644
--- a/man2/ioctl_tty.2
+++ b/man2/ioctl_tty.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH ioctl_tty 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_tty 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl_tty \- ioctls for terminals and serial lines
.SH LIBRARY
@@ -17,25 +17,25 @@ Standard C library
.BR " struct termios2" ", and"
.BR " Bnnn" ", " BOTHER ", " CBAUD ", " CLOCAL ,
.BR " TC*" { FLUSH , ON , OFF "} and other constants */"
-.PP
-.BI "int ioctl(int " fd ", int " cmd ", ...);"
+.P
+.BI "int ioctl(int " fd ", int " op ", ...);"
.fi
.SH DESCRIPTION
The
.BR ioctl (2)
-call for terminals and serial ports accepts many possible command arguments.
+call for terminals and serial ports accepts many possible operation arguments.
Most require a third argument, of varying type, here called
.I argp
or
.IR arg .
-.PP
+.P
Use of
.BR ioctl ()
makes for nonportable programs.
Use the POSIX interface described in
.BR termios (3)
whenever possible.
-.PP
+.P
Please note that
.B struct termios
from
@@ -87,7 +87,7 @@ Equivalent to
.IP
Allow the output buffer to drain, discard pending input, and
set the current serial port settings.
-.PP
+.P
The following four ioctls, added in Linux 2.6.20,
.\" commit 64bb6c5e1ddcd47c951740485026ef08975ee2e6
.\" commit 592ee3a5e5e2a981ef2829a0380093006d045661
@@ -119,7 +119,7 @@ TCSETSW2 \fBconst struct termios2 *\fPargp
TCSETSF2 \fBconst struct termios2 *\fPargp
.TE
.RE
-.PP
+.P
The following four ioctls are just like
.BR TCGETS ,
.BR TCSETS ,
@@ -182,9 +182,9 @@ Argument:
.BI "const struct winsize\~*" argp
.IP
Set window size.
-.PP
+.P
The struct used by these ioctls is defined as
-.PP
+.P
.in +4n
.EX
struct winsize {
@@ -195,7 +195,7 @@ struct winsize {
};
.EE
.in
-.PP
+.P
When the window size changes, a
.B SIGWINCH
signal is sent to the
@@ -334,6 +334,15 @@ Argument:
.BI "const char\~*" argp
.IP
Insert the given byte in the input queue.
+.IP
+Since Linux 6.2,
+.\" commit 690c8b804ad2eafbd35da5d3c95ad325ca7d5061
+.\" commit 83efeeeb3d04b22aaed1df99bc70a48fe9d22c4d
+this operation may require the
+.B CAP_SYS_ADMIN
+capability (if the
+.I dev.tty.legacy_tiocsti
+sysctl variable is set to false).
.SS Redirecting console output
.TP
.B TIOCCONS
@@ -594,7 +603,7 @@ and similar library functions that have insecure APIs.
.BR ptsname (3)
with a pathname where a devpts filesystem
has been mounted in a different mount namespace.)
-.PP
+.P
The BSD ioctls
.BR TIOCSTOP ,
.BR TIOCSTART ,
@@ -627,9 +636,9 @@ Argument:
.BI "const int\~*" argp
.IP
Set the indicated modem bits.
-.PP
+.P
The following bits are used by the above ioctls:
-.PP
+.P
.TS
lb l.
TIOCM_LE DSR (data set ready/line enable)
@@ -695,7 +704,7 @@ Set the CLOCAL flag in the
structure when
.RI * argp
is nonzero, and clear it otherwise.
-.PP
+.P
If the
.B CLOCAL
flag for a line is off, the hardware carrier detect (DCD)
@@ -726,7 +735,7 @@ Get the
.I tty_struct
corresponding to
.IR fd .
-This command was removed in Linux 2.5.67.
+This operation was removed in Linux 2.5.67.
.\" commit b3506a09d15dc5aee6d4bb88d759b157016e1864
.\" Author: Andries E. Brouwer <andries.brouwer@cwi.nl>
.\" Date: Tue Apr 1 04:42:46 2003 -0800
@@ -738,7 +747,7 @@ This command was removed in Linux 2.5.67.
.\"
.\" .SS Serial info
.\" .BR "#include <linux/serial.h>"
-.\" .PP
+.\" .P
.\" .TP
.\" .BI "TIOCGSERIAL struct serial_struct *" argp
.\" Get serial info.
@@ -755,10 +764,10 @@ to indicate the error.
.SH ERRORS
.TP
.B EINVAL
-Invalid command parameter.
+Invalid operation parameter.
.TP
.B ENOIOCTLCMD
-Unknown command.
+Unknown operation.
.TP
.B ENOTTY
Inappropriate
@@ -768,7 +777,7 @@ Inappropriate
Insufficient permission.
.SH EXAMPLES
Check the condition of DTR on the serial port.
-.PP
+.P
.\" SRC BEGIN (tiocmget.c)
.EX
#include <fcntl.h>
@@ -791,9 +800,9 @@ main(void)
}
.EE
.\" SRC END
-.PP
+.P
Get or set arbitrary baudrate on the serial port.
-.PP
+.P
.\" SRC BEGIN (tcgets.c)
.EX
/* SPDX-License-Identifier: GPL-2.0-or-later */
diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2
index 6ab9c11..08e52e6 100644
--- a/man2/ioctl_userfaultfd.2
+++ b/man2/ioctl_userfaultfd.2
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ioctl_userfaultfd 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH ioctl_userfaultfd 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ioctl_userfaultfd \- create a file descriptor for handling page faults in user
space
@@ -16,8 +16,8 @@ Standard C library
.nf
.BR "#include <linux/userfaultfd.h>" " /* Definition of " UFFD* " constants */"
.B #include <sys/ioctl.h>
-.PP
-.BI "int ioctl(int " fd ", int " cmd ", ...);"
+.P
+.BI "int ioctl(int " fd ", int " op ", ...);"
.fi
.SH DESCRIPTION
Various
@@ -25,21 +25,22 @@ Various
operations can be performed on a userfaultfd object (created by a call to
.BR userfaultfd (2))
using calls of the form:
-.PP
+.P
.in +4n
.EX
-ioctl(fd, cmd, argp);
+ioctl(fd, op, argp);
.EE
.in
+.P
In the above,
.I fd
is a file descriptor referring to a userfaultfd object,
-.I cmd
-is one of the commands listed below, and
+.I op
+is one of the operations listed below, and
.I argp
is a pointer to a data structure that is specific to
-.IR cmd .
-.PP
+.IR op .
+.P
The various
.BR ioctl (2)
operations are described below.
@@ -62,13 +63,13 @@ events.
.SS UFFDIO_API
(Since Linux 4.3.)
Enable operation of the userfaultfd and perform API handshake.
-.PP
+.P
The
.I argp
argument is a pointer to a
.I uffdio_api
structure, defined as:
-.PP
+.P
.in +4n
.EX
struct uffdio_api {
@@ -78,11 +79,10 @@ struct uffdio_api {
};
.EE
.in
-.PP
+.P
The
.I api
field denotes the API version requested by the application.
-.PP
The kernel verifies that it can support the requested API version,
and sets the
.I features
@@ -91,7 +91,26 @@ and
fields to bit masks representing all the available features and the generic
.BR ioctl (2)
operations available.
-.PP
+.P
+Since Linux 4.11,
+applications should use the
+.I features
+field to perform a two-step handshake.
+First,
+.B UFFDIO_API
+is called with the
+.I features
+field set to zero.
+The kernel responds by setting all supported feature bits.
+.P
+Applications which do not require any specific features
+can begin using the userfaultfd immediately.
+Applications which do need specific features
+should call
+.B UFFDIO_API
+again with a subset of the reported feature bits set
+to enable those features.
+.P
Before Linux 4.11, the
.I features
field must be initialized to zero before the call to
@@ -100,26 +119,13 @@ and zero (i.e., no feature bits) is placed in the
.I features
field by the kernel upon return from
.BR ioctl (2).
-.PP
-Starting from Linux 4.11, the
-.I features
-field can be used to ask whether particular features are supported
-and explicitly enable userfaultfd features that are disabled by default.
-The kernel always reports all the available features in the
-.I features
-field.
-.PP
-To enable userfaultfd features the application should set
-a bit corresponding to each feature it wants to enable in the
-.I features
-field.
-If the kernel supports all the requested features it will enable them.
-Otherwise it will zero out the returned
+.P
+If the application sets unsupported feature bits,
+the kernel will zero out the returned
.I uffdio_api
structure and return
.BR EINVAL .
-.\" FIXME add more details about feature negotiation and enablement
-.PP
+.P
The following feature bits may be set:
.TP
.BR UFFD_FEATURE_EVENT_FORK " (since Linux 4.11)"
@@ -198,6 +204,13 @@ If this feature bit is set,
.I uffd_msg.pagefault.feat.ptid
will be set to the faulted thread ID for each page-fault message.
.TP
+.BR UFFD_FEATURE_PAGEFAULT_FLAG_WP " (since Linux 5.10)"
+If this feature bit is set,
+userfaultfd supports write-protect faults
+for anonymous memory.
+(Note that shmem / hugetlbfs support
+is indicated by a separate feature.)
+.TP
.BR UFFD_FEATURE_MINOR_HUGETLBFS " (since Linux 5.13)"
If this feature bit is set,
the kernel supports registering userfaultfd ranges
@@ -215,7 +228,28 @@ will be set to the exact page-fault address that was reported by the hardware,
and will not mask the offset within the page.
Note that old Linux versions might indicate the exact address as well,
even though the feature bit is not set.
-.PP
+.TP
+.BR UFFD_FEATURE_WP_HUGETLBFS_SHMEM " (since Linux 5.19)"
+If this feature bit is set,
+userfaultfd supports write-protect faults
+for hugetlbfs and shmem / tmpfs memory.
+.TP
+.BR UFFD_FEATURE_WP_UNPOPULATED " (since Linux 6.4)"
+If this feature bit is set,
+the kernel will handle anonymous memory the same way as file memory,
+by allowing the user to write-protect unpopulated page table entries.
+.TP
+.BR UFFD_FEATURE_POISON " (since Linux 6.6)"
+If this feature bit is set,
+the kernel supports resolving faults with the
+.B UFFDIO_POISON
+ioctl.
+.TP
+.BR UFFD_FEATURE_WP_ASYNC " (since Linux 6.7)"
+If this feature bit is set,
+the write protection faults would be asynchronously resolved
+by the kernel.
+.P
The returned
.I ioctls
field can contain the following bits:
@@ -236,13 +270,21 @@ operation is supported.
The
.B UFFDIO_UNREGISTER
operation is supported.
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
On error, \-1 is returned and
.I errno
is set to indicate the error.
+If an error occurs,
+the kernel may zero the provided
+.I uffdio_api
+structure.
+The caller should treat its contents as unspecified,
+and reinitialize it before re-attempting another
+.B UFFDIO_API
+call.
Possible errors include:
.TP
.B EFAULT
@@ -251,38 +293,44 @@ refers to an address that is outside the calling process's
accessible address space.
.TP
.B EINVAL
-The userfaultfd has already been enabled by a previous
-.B UFFDIO_API
-operation.
-.TP
-.B EINVAL
The API version requested in the
.I api
field is not supported by this kernel, or the
.I features
field passed to the kernel includes feature bits that are not supported
by the current kernel version.
-.\" FIXME In the above error case, the returned 'uffdio_api' structure is
-.\" zeroed out. Why is this done? This should be explained in the manual page.
-.\"
-.\" Mike Rapoport:
-.\" In my understanding the uffdio_api
-.\" structure is zeroed to allow the caller
-.\" to distinguish the reasons for -EINVAL.
-.\"
+.TP
+.B EINVAL
+A previous
+.B UFFDIO_API
+call already enabled one or more features for this userfaultfd.
+Calling
+.B UFFDIO_API
+twice,
+the first time with no features set,
+is explicitly allowed
+as per the two-step feature detection handshake.
+.TP
+.B EPERM
+The
+.B UFFD_FEATURE_EVENT_FORK
+feature was enabled,
+but the calling process doesn't have the
+.B CAP_SYS_PTRACE
+capability.
.SS UFFDIO_REGISTER
(Since Linux 4.3.)
Register a memory address range with the userfaultfd object.
-The pages in the range must be "compatible".
+The pages in the range must be \[lq]compatible\[rq].
Please refer to the list of register modes below
for the compatible memory backends for each mode.
-.PP
+.P
The
.I argp
argument is a pointer to a
.I uffdio_register
structure, defined as:
-.PP
+.P
.in +4n
.EX
struct uffdio_range {
@@ -297,7 +345,7 @@ struct uffdio_register {
};
.EE
.in
-.PP
+.P
The
.I range
field defines a memory range starting at
@@ -305,7 +353,7 @@ field defines a memory range starting at
and continuing for
.I len
bytes that should be handled by the userfaultfd.
-.PP
+.P
The
.I mode
field defines the mode of operation desired for this memory region.
@@ -330,7 +378,7 @@ Since Linux 5.13,
only hugetlbfs ranges are compatible.
Since Linux 5.14,
compatibility with shmem ranges was added.
-.PP
+.P
If the operation is successful, the kernel modifies the
.I ioctls
bit-mask field to indicate which
@@ -351,6 +399,7 @@ operation is supported.
.B 1 << _UFFDIO_WRITEPROTECT
The
.B UFFDIO_WRITEPROTECT
+operation is supported.
.TP
.B 1 << _UFFDIO_ZEROPAGE
The
@@ -361,7 +410,12 @@ operation is supported.
The
.B UFFDIO_CONTINUE
operation is supported.
-.PP
+.TP
+.B 1 << _UFFDIO_POISON
+The
+.B UFFDIO_POISON
+operation is supported.
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -407,14 +461,15 @@ There as an incompatible mapping in the specified address range.
.SS UFFDIO_UNREGISTER
(Since Linux 4.3.)
Unregister a memory address range from userfaultfd.
-The pages in the range must be "compatible" (see the description of
-.BR UFFDIO_REGISTER .)
-.PP
+The pages in the range must be \[lq]compatible\[rq]
+(see the description of
+.BR UFFDIO_REGISTER .)
+.P
The address range to unregister is specified in the
.I uffdio_range
structure pointed to by
.IR argp .
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -446,12 +501,15 @@ Atomically copy a continuous memory chunk into the userfault registered
range and optionally wake up the blocked thread.
The source and destination addresses and the number of bytes to copy are
specified by the
-.IR src ", " dst ", and " len
+.IR src ,
+.IR dst ,
+and
+.I len
fields of the
.I uffdio_copy
structure pointed to by
.IR argp :
-.PP
+.P
.in +4n
.EX
struct uffdio_copy {
@@ -463,7 +521,7 @@ struct uffdio_copy {
};
.EE
.in
-.PP
+.P
The following value may be bitwise ORed in
.I mode
to change the behavior of the
@@ -482,7 +540,7 @@ This is used only when both
and
.B UFFDIO_REGISTER_MODE_WP
modes are enabled for the registered range.
-.PP
+.P
The
.I copy
field is used by the kernel to return the number of bytes
@@ -503,7 +561,7 @@ field is output-only;
it is not read by the
.B UFFDIO_COPY
operation.
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -560,14 +618,14 @@ operation.
.SS UFFDIO_ZEROPAGE
(Since Linux 4.3.)
Zero out a memory range registered with userfaultfd.
-.PP
+.P
The requested range is specified by the
.I range
field of the
.I uffdio_zeropage
structure pointed to by
.IR argp :
-.PP
+.P
.in +4n
.EX
struct uffdio_zeropage {
@@ -577,7 +635,7 @@ struct uffdio_zeropage {
};
.EE
.in
-.PP
+.P
The following value may be bitwise ORed in
.I mode
to change the behavior of the
@@ -586,7 +644,7 @@ operation:
.TP
.B UFFDIO_ZEROPAGE_MODE_DONTWAKE
Do not wake up the thread that waits for page-fault resolution.
-.PP
+.P
The
.I zeropage
field is used by the kernel to return the number of bytes
@@ -607,7 +665,7 @@ field is output-only;
it is not read by the
.B UFFDIO_ZEROPAGE
operation.
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -648,7 +706,7 @@ operation.
(Since Linux 4.3.)
Wake up the thread waiting for page-fault resolution on
a specified memory address range.
-.PP
+.P
The
.B UFFDIO_WAKE
operation is used in conjunction with
@@ -668,13 +726,13 @@ and
.B UFFDIO_ZEROPAGE
operations in a batch and then explicitly wake up the faulting thread using
.BR UFFDIO_WAKE .
-.PP
+.P
The
.I argp
argument is a pointer to a
.I uffdio_range
structure (shown above) that specifies the address range.
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -693,17 +751,18 @@ field of the
structure was not a multiple of the system page size; or
.I len
was zero; or the specified range was otherwise invalid.
-.SS UFFDIO_WRITEPROTECT (Since Linux 5.7)
+.SS UFFDIO_WRITEPROTECT
+(Since Linux 5.7.)
Write-protect or write-unprotect a userfaultfd-registered memory range
registered with mode
.BR UFFDIO_REGISTER_MODE_WP .
-.PP
+.P
The
.I argp
argument is a pointer to a
.I uffdio_range
structure as shown below:
-.PP
+.P
.in +4n
.EX
struct uffdio_writeprotect {
@@ -712,7 +771,7 @@ struct uffdio_writeprotect {
};
.EE
.in
-.PP
+.P
There are two mode bits that are supported in this structure:
.TP
.B UFFDIO_WRITEPROTECT_MODE_WP
@@ -729,7 +788,7 @@ page-fault resolution after the operation.
This can be specified only if
.B UFFDIO_WRITEPROTECT_MODE_WP
is not specified.
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -767,13 +826,13 @@ Encountered a generic fault during processing.
Resolve a minor page fault
by installing page table entries
for existing pages in the page cache.
-.PP
+.P
The
.I argp
argument is a pointer to a
.I uffdio_continue
structure as shown below:
-.PP
+.P
.in +4n
.EX
struct uffdio_continue {
@@ -784,7 +843,7 @@ struct uffdio_continue {
};
.EE
.in
-.PP
+.P
The following value may be bitwise ORed in
.I mode
to change the behavior of the
@@ -793,7 +852,7 @@ operation:
.TP
.B UFFDIO_CONTINUE_MODE_DONTWAKE
Do not wake up the thread that waits for page-fault resolution.
-.PP
+.P
The
.I mapped
field is used by the kernel
@@ -812,7 +871,7 @@ field is output-only;
it is not read by the
.B UFFDIO_CONTINUE
operation.
-.PP
+.P
This
.BR ioctl (2)
operation returns 0 on success.
@@ -832,6 +891,12 @@ does not equal the value that was specified in the
.I range.len
field.
.TP
+.B EEXIST
+One or more pages were already mapped in the given range.
+.TP
+.B EFAULT
+No existing page could be found in the page cache for the given range.
+.TP
.B EINVAL
Either
.I range.start
@@ -846,9 +911,6 @@ An invalid bit was specified in the
.I mode
field.
.TP
-.B EEXIST
-One or more pages were already mapped in the given range.
-.TP
.B ENOENT
The faulting process has changed its virtual memory layout simultaneously with
an outstanding
@@ -858,14 +920,118 @@ operation.
.B ENOMEM
Allocating memory needed to setup the page table mappings failed.
.TP
-.B EFAULT
-No existing page could be found in the page cache for the given range.
-.TP
.B ESRCH
The faulting process has exited at the time of a
.B UFFDIO_CONTINUE
operation.
.\"
+.SS UFFDIO_POISON
+(Since Linux 6.6.)
+Mark an address range as "poisoned".
+Future accesses to these addresses will raise a
+.B SIGBUS
+signal.
+Unlike
+.B MADV_HWPOISON
+this works by installing page table entries,
+rather than "really" poisoning the underlying physical pages.
+This means it only affects this particular address space.
+.P
+The
+.I argp
+argument is a pointer to a
+.I uffdio_poison
+structure as shown below:
+.P
+.in +4n
+.EX
+struct uffdio_poison {
+ struct uffdio_range range;
+ /* Range to install poison PTE markers in */
+ __u64 mode; /* Flags controlling the behavior of poison */
+ __s64 updated; /* Number of bytes poisoned, or negated error */
+};
+.EE
+.in
+.P
+The following value may be bitwise ORed in
+.I mode
+to change the behavior of the
+.B UFFDIO_POISON
+operation:
+.TP
+.B UFFDIO_POISON_MODE_DONTWAKE
+Do not wake up the thread that waits for page-fault resolution.
+.P
+The
+.I updated
+field is used by the kernel
+to return the number of bytes that were actually poisoned,
+or an error in the same manner as
+.BR UFFDIO_COPY .
+If the value returned in the
+.I updated
+field doesn't match the value that was specified in
+.IR range.len ,
+the operation fails with the error
+.BR EAGAIN .
+The
+.I updated
+field is output-only;
+it is not read by the
+.B UFFDIO_POISON
+operation.
+.P
+This
+.BR ioctl (2)
+operation returns 0 on success.
+In this case,
+the entire area was poisoned.
+On error, \-1 is returned and
+.I errno
+is set to indicate the error.
+Possible errors include:
+.TP
+.B EAGAIN
+The number of bytes mapped
+(i.e., the value returned in the
+.I updated
+field)
+does not equal the value that was specified in the
+.I range.len
+field.
+.TP
+.B EINVAL
+Either
+.I range.start
+or
+.I range.len
+was not a multiple of the system page size; or
+.I range.len
+was zero; or the range specified was invalid.
+.TP
+.B EINVAL
+An invalid bit was specified in the
+.I mode
+field.
+.TP
+.B EEXIST
+One or more pages were already mapped in the given range.
+.TP
+.B ENOENT
+The faulting process has changed its virtual memory layout simultaneously with
+an outstanding
+.B UFFDIO_POISON
+operation.
+.TP
+.B ENOMEM
+Allocating memory for page table entries failed.
+.TP
+.B ESRCH
+The faulting process has exited at the time of a
+.B UFFDIO_POISON
+operation.
+.\"
.SH RETURN VALUE
See descriptions of the individual operations, above.
.SH ERRORS
@@ -901,6 +1067,6 @@ See
.BR ioctl (2),
.BR mmap (2),
.BR userfaultfd (2)
-.PP
+.P
.I Documentation/admin\-guide/mm/userfaultfd.rst
in the Linux kernel source tree
diff --git a/man2/ioperm.2 b/man2/ioperm.2
index dcbad6c..dd62ce5 100644
--- a/man2/ioperm.2
+++ b/man2/ioperm.2
@@ -12,7 +12,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH ioperm 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ioperm 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioperm \- set port input/output permissions
.SH LIBRARY
@@ -21,7 +21,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/io.h>
-.PP
+.P
.BI "int ioperm(unsigned long " from ", unsigned long " num ", int " turn_on );
.fi
.SH DESCRIPTION
@@ -38,7 +38,7 @@ If
.I turn_on
is nonzero, the calling thread must be privileged
.RB ( CAP_SYS_RAWIO ).
-.PP
+.P
Before Linux 2.6.8,
only the first 0x3ff I/O ports could be specified in this manner.
For more ports, the
@@ -47,7 +47,7 @@ system call had to be used (with a
.I level
argument of 3).
Since Linux 2.6.8, 65,536 I/O ports can be specified.
-.PP
+.P
Permissions are inherited by the child created by
.BR fork (2)
(but see NOTES).
@@ -55,7 +55,7 @@ Permissions are preserved across
.BR execve (2);
this is useful for giving port access permissions to unprivileged
programs.
-.PP
+.P
This call is mostly for the i386 architecture.
On many other architectures it does not exist or will always
return an error.
diff --git a/man2/iopl.2 b/man2/iopl.2
index 239d206..b2211e2 100644
--- a/man2/iopl.2
+++ b/man2/iopl.2
@@ -10,7 +10,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH iopl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH iopl 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
iopl \- change I/O privilege level
.SH LIBRARY
@@ -19,7 +19,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/io.h>
-.PP
+.P
.BI "[[deprecated]] int iopl(int " level );
.fi
.SH DESCRIPTION
@@ -27,10 +27,10 @@ Standard C library
changes the I/O privilege level of the calling thread,
as specified by the two least significant bits in
.IR level .
-.PP
+.P
The I/O privilege level for a normal thread is 0.
Permissions are inherited from parents to children.
-.PP
+.P
This call is deprecated, is significantly slower than
.BR ioperm (2),
and is only provided for older X servers which require
@@ -76,7 +76,7 @@ Prior to Linux 5.5
allowed the thread to disable interrupts while running
at a higher I/O privilege level.
This will probably crash the system, and is not recommended.
-.PP
+.P
Prior to Linux 3.7,
on some architectures (such as i386), permissions
.I were
diff --git a/man2/ioprio_set.2 b/man2/ioprio_set.2
index 7770cbc..629d2df 100644
--- a/man2/ioprio_set.2
+++ b/man2/ioprio_set.2
@@ -7,7 +7,7 @@
.\" with various additions by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\"
-.TH ioprio_set 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH ioprio_set 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ioprio_get, ioprio_set \- get/set I/O scheduling class and priority
.SH LIBRARY
@@ -18,11 +18,11 @@ Standard C library
.BR "#include <linux/ioprio.h> " "/* Definition of " IOPRIO_* " constants */"
.BR "#include <sys/syscall.h> " "/* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_ioprio_get, int " which ", int " who );
.BI "int syscall(SYS_ioprio_set, int " which ", int " who ", int " ioprio );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -34,7 +34,7 @@ and
.BR ioprio_set ()
system calls get and set the I/O scheduling class and
priority of one or more threads.
-.PP
+.P
The
.I which
and
@@ -67,7 +67,7 @@ is a user ID identifying all of the processes that
have a matching real UID.
.\" FIXME . Need to document the behavior when 'who" is specified as 0
.\" See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652443
-.PP
+.P
If
.I which
is specified as
@@ -90,7 +90,7 @@ is the lowest)
or if it belongs to the same priority class as the other process but
has a higher priority level (a lower priority number means a
higher priority level).
-.PP
+.P
The
.I ioprio
argument given to
@@ -130,13 +130,13 @@ Given
value), this macro returns its priority
.RI ( data )
component.
-.PP
+.P
See the NOTES section for more
information on scheduling classes and priorities,
as well as the meaning of specifying
.I ioprio
as 0.
-.PP
+.P
I/O priorities are supported for reads and for synchronous
.RB ( O_DIRECT ,
.BR O_SYNC )
@@ -157,7 +157,7 @@ and
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
On success,
.BR ioprio_set ()
returns 0.
@@ -211,12 +211,12 @@ is the one that is returned by
.BR gettid (2)
or
.BR clone (2).
-.PP
+.P
These system calls have an effect only when used
in conjunction with an I/O scheduler that supports I/O priorities.
As at kernel 2.6.17 the only such scheduler is the Completely Fair Queuing
(CFQ) I/O scheduler.
-.PP
+.P
If no I/O scheduler has been set for a thread,
then by default the I/O priority will follow the CPU nice value
.RB ( setpriority (2)).
@@ -233,20 +233,20 @@ as 0 can be used to reset to the default I/O scheduling behavior.
I/O schedulers are selected on a per-device basis via the special
file
.IR /sys/block/ device /queue/scheduler .
-.PP
+.P
One can view the current I/O scheduler via the
.I /sys
filesystem.
For example, the following command
displays a list of all schedulers currently loaded in the kernel:
-.PP
+.P
.in +4n
.EX
.RB "$" " cat /sys/block/sda/queue/scheduler"
noop anticipatory deadline [cfq]
.EE
.in
-.PP
+.P
The scheduler surrounded by brackets is the one actually
in use for the device
.RI ( sda
@@ -258,7 +258,7 @@ scheduler for the
.I sda
device to
.IR cfq :
-.PP
+.P
.in +4n
.EX
.RB "$" " su"
@@ -310,7 +310,7 @@ The idle class has no class data.
Attention is required when assigning this priority class to a process,
since it may become starved if higher priority processes are
constantly accessing the disk.
-.PP
+.P
Refer to the kernel source file
.I Documentation/block/ioprio.txt
for more information on the CFQ I/O Scheduler and an example program.
@@ -337,7 +337,7 @@ Up to Linux 2.6.24 also required
to set a very low priority
.RB ( IOPRIO_CLASS_IDLE ),
but since Linux 2.6.25, this is no longer required.
-.PP
+.P
A call to
.BR ioprio_set ()
must follow both rules, or the call will fail with the error
@@ -357,6 +357,6 @@ Suitable definitions can be found in
.BR open (2),
.BR capabilities (7),
.BR cgroups (7)
-.PP
+.P
.I Documentation/block/ioprio.txt
in the Linux kernel source tree
diff --git a/man2/ipc.2 b/man2/ipc.2
index 0b8a911..e1b6c20 100644
--- a/man2/ipc.2
+++ b/man2/ipc.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH ipc 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ipc 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ipc \- System V IPC system calls
.SH LIBRARY
@@ -14,13 +14,13 @@ Standard C library
.BR "#include <linux/ipc.h>" " /* Definition of needed constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_ipc, unsigned int " call ", int " first ,
.BI " unsigned long " second ", unsigned long " third \
", void *" ptr ,
.BI " long " fifth );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR ipc (),
@@ -33,7 +33,7 @@ for messages, semaphores, and shared memory.
.I call
determines which IPC function to invoke;
the other arguments are passed through to the appropriate call.
-.PP
+.P
User-space programs should call the appropriate functions by their usual names.
Only standard library implementors and kernel hackers need to know about
.BR ipc ().
diff --git a/man2/kcmp.2 b/man2/kcmp.2
index 98a29f1..cfd65df 100644
--- a/man2/kcmp.2
+++ b/man2/kcmp.2
@@ -5,7 +5,7 @@
.\"
.\" Kernel commit d97b46a64674a267bc41c9e16132ee2a98c3347d
.\"
-.TH kcmp 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH kcmp 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
kcmp \- compare two processes to determine if they share a kernel resource
.SH LIBRARY
@@ -16,11 +16,11 @@ Standard C library
.BR "#include <linux/kcmp.h>" " /* Definition of " KCMP_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_kcmp, pid_t " pid1 ", pid_t " pid2 ", int " type ,
.BI " unsigned long " idx1 ", unsigned long " idx2 );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR kcmp (),
@@ -35,7 +35,7 @@ and
.I pid2
share a kernel resource such as virtual memory, file descriptors,
and so on.
-.PP
+.P
Permission to employ
.BR kcmp ()
is governed by ptrace access mode
@@ -46,7 +46,7 @@ and
.IR pid2 ;
see
.BR ptrace (2).
-.PP
+.P
The
.I type
argument specifies which resource is to be compared in the two processes.
@@ -161,7 +161,7 @@ The argument
.I idx2
is a pointer to a structure where the target file is described.
This structure has the form:
-.PP
+.P
.in +4n
.EX
struct kcmp_epoll_slot {
@@ -171,7 +171,7 @@ struct kcmp_epoll_slot {
};
.EE
.in
-.PP
+.P
Within this structure,
.I efd
is an epoll file descriptor returned from
@@ -183,7 +183,7 @@ is a target file offset counted from zero.
Several different targets may be registered with
the same file descriptor number and setting a specific
offset helps to investigate each of them.
-.PP
+.P
Note the
.BR kcmp ()
is not protected against false positives which may occur if
@@ -199,7 +199,7 @@ The return value of a successful call to
is simply the result of arithmetic comparison
of kernel pointers (when the kernel compares resources, it uses their
memory addresses).
-.PP
+.P
The easiest way to explain is to consider an example.
Suppose that
.I v1
@@ -231,11 +231,11 @@ is not equal to
.IR v2 ,
but ordering information is unavailable.
.RE
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
.BR kcmp ()
was designed to return values suitable for sorting.
This is particularly handy if one needs to compare
@@ -291,7 +291,7 @@ does not exist.
Linux.
.SH HISTORY
Linux 3.5.
-.PP
+.P
Before Linux 5.12,
this system call is available only if the kernel is configured with
.BR CONFIG_CHECKPOINT_RESTORE ,
@@ -317,7 +317,7 @@ the same open file description.
The program tests different cases for the file descriptor pairs,
as described in the program output.
An example run of the program is as follows:
-.PP
+.P
.in +4n
.EX
$ \fB./a.out\fP
diff --git a/man2/kexec_load.2 b/man2/kexec_load.2
index 604fa1c..499f6ca 100644
--- a/man2/kexec_load.2
+++ b/man2/kexec_load.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH kexec_load 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH kexec_load 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
kexec_load, kexec_file_load \- load a new kernel for later execution
.SH LIBRARY
@@ -15,7 +15,7 @@ Standard C library
.BR "#include <linux/kexec.h>" " /* Definition of " KEXEC_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_kexec_load, unsigned long " entry ,
.BI " unsigned long " nr_segments \
", struct kexec_segment *" segments ,
@@ -24,7 +24,7 @@ Standard C library
.BI " unsigned long " cmdline_len ", const char *" cmdline ,
.BI " unsigned long " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -34,7 +34,7 @@ The
.BR kexec_load ()
system call loads a new kernel that can be executed later by
.BR reboot (2).
-.PP
+.P
The
.I flags
argument is a bit mask that controls the operation of the call.
@@ -66,7 +66,7 @@ This flag is available only if the kernel was configured with
and is effective only if
.I nr_segments
is greater than 0.
-.PP
+.P
The high-order bits (corresponding to the mask 0xffff0000) of
.I flags
contain the architecture of the to-be-executed kernel.
@@ -87,7 +87,7 @@ or one of the following architecture constants
and
.BR KEXEC_ARCH_MIPS_LE .
The architecture must be executable on the CPU of the system.
-.PP
+.P
The
.I entry
argument is the physical entry address in the kernel image.
@@ -102,7 +102,7 @@ The
argument is an array of
.I kexec_segment
structures which define the kernel layout:
-.PP
+.P
.in +4n
.EX
struct kexec_segment {
@@ -113,7 +113,7 @@ struct kexec_segment {
};
.EE
.in
-.PP
+.P
The kernel image defined by
.I segments
is copied from the calling process into
@@ -154,7 +154,7 @@ If
is less than
.IR memsz ,
then the excess bytes in the kernel buffer are zeroed out.
-.PP
+.P
In case of a normal kexec (i.e., the
.B KEXEC_ON_CRASH
flag is not set), the segment data is loaded in any available memory
@@ -163,13 +163,13 @@ and is moved to the final destination at kexec reboot time (e.g., when the
command is executed with the
.I \-e
option).
-.PP
+.P
In case of kexec on panic (i.e., the
.B KEXEC_ON_CRASH
flag is set), the segment data is
loaded to reserved memory at the time of the call, and, after a crash,
the kexec mechanism simply passes control to that kernel.
-.PP
+.P
The
.BR kexec_load ()
system call is available only if the kernel was configured with
@@ -194,7 +194,7 @@ The
.I cmdline_len
argument specifies size of the buffer.
The last byte in the buffer must be a null byte (\[aq]\e0\[aq]).
-.PP
+.P
The
.I flags
argument is a bit mask which modifies the behavior of the call.
@@ -216,7 +216,7 @@ Specify this flag if no initramfs is being loaded.
If this flag is set, the value passed in
.I initrd_fd
is ignored.
-.PP
+.P
The
.BR kexec_file_load ()
.\" See also http://lwn.net/Articles/603116/
@@ -324,7 +324,7 @@ Linux 3.17.
.BR reboot (2),
.BR syscall (2),
.BR kexec (8)
-.PP
+.P
The kernel source files
.I Documentation/kdump/kdump.txt
and
diff --git a/man2/keyctl.2 b/man2/keyctl.2
index d7bd83d..8f8ec19 100644
--- a/man2/keyctl.2
+++ b/man2/keyctl.2
@@ -5,13 +5,13 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH keyctl 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH keyctl 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
keyctl \- manipulate the kernel's key management facility
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
-.PP
+.P
Alternatively, Linux Key Management Utilities
.RI ( libkeyutils ", " \-lkeyutils );
see VERSIONS.
@@ -20,12 +20,12 @@ see VERSIONS.
.BR "#include <linux/keyctl.h>" " /* Definition of " KEY* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_keyctl, int " operation ", unsigned long " arg2 ,
.BI " unsigned long " arg3 ", unsigned long " arg4 ,
.BI " unsigned long " arg5 );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR keyctl (),
@@ -34,7 +34,7 @@ necessitating the use of
.SH DESCRIPTION
.BR keyctl ()
allows user-space programs to perform key manipulation.
-.PP
+.P
The operation performed by
.BR keyctl ()
is determined by the value of the
@@ -46,7 +46,7 @@ library (provided by the
.I keyutils
package) into individual functions (noted below)
to permit the compiler to check types.
-.PP
+.P
The permitted values for
.I operation
are:
@@ -847,7 +847,7 @@ the size of that buffer is specified in
(cast to
.IR size_t ).
.IP
-The payload may be a NULL pointer and the buffer size may be 0
+The payload may be a null pointer and the buffer size may be 0
if this is supported by the key type (e.g., it is a keyring).
.IP
The operation may be fail if the payload data is in the wrong format
@@ -1415,7 +1415,7 @@ The
.I arg2
argument is a pointer to a set of parameters containing
serial numbers for three
-.I """user"""
+.I \[dq]user\[dq]
keys used in the Diffie-Hellman calculation,
packaged in a structure of the following form:
.IP
@@ -1653,7 +1653,7 @@ is 0, the required buffer size.
.TP
All other operations
Zero.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -1897,7 +1897,7 @@ was
.B KEYCTL_READ
and the key type does not support reading
(e.g., the type is
-.IR """login""" ).
+.IR \[dq]login\[dq] ).
.TP
.B EOPNOTSUPP
.I operation
@@ -1968,7 +1968,7 @@ program provided by the
package.
For informational purposes,
the program records various information in a log file.
-.PP
+.P
As described in
.BR request_key (2),
the
@@ -1978,7 +1978,7 @@ describe a key that is to be instantiated.
The example program fetches and logs these arguments.
The program assumes authority to instantiate the requested key,
and then instantiates that key.
-.PP
+.P
The following shell session demonstrates the use of this program.
In the session,
we compile the program and then use it to temporarily replace the standard
@@ -1991,7 +1991,7 @@ While our example program is installed,
we use the example program shown in
.BR request_key (2)
to request a key.
-.PP
+.P
.in +4n
.EX
$ \fBcc \-o key_instantiate key_instantiate.c \-lkeyutils\fP
@@ -2002,10 +2002,10 @@ Key ID is 20d035bf
$ \fBsudo mv /sbin/request\-key.backup /sbin/request\-key\fP
.EE
.in
-.PP
+.P
Looking at the log file created by this program,
we can see the command-line arguments supplied to our example program:
-.PP
+.P
.in +4n
.EX
$ \fBcat /tmp/key_instantiate.log\fP
@@ -2027,7 +2027,7 @@ Destination keyring: 256e6a6
Auth key description: .request_key_auth;1000;1000;0b010000;20d035bf
.EE
.in
-.PP
+.P
The last few lines of the above output show that the example program
was able to fetch:
.IP \[bu] 3
@@ -2048,7 +2048,7 @@ the description of the authorization key,
where we can see that the name of the authorization key matches
the ID of the key that is to be instantiated
.RI ( 20d035bf ).
-.PP
+.P
The example program in
.BR request_key (2)
specified the destination keyring as
@@ -2062,7 +2062,7 @@ we can also see the newly created key with the name
.I mykey
and ID
.IR 20d035bf .
-.PP
+.P
.in +4n
.EX
$ \fBcat /proc/keys | egrep \[aq]mykey|256e6a6\[aq]\fP
@@ -2290,7 +2290,7 @@ main(int argc, char *argv[])
.BR user_namespaces (7),
.BR user\-session\-keyring (7),
.BR request\-key (8)
-.PP
+.P
The kernel source files under
.I Documentation/security/keys/
(or, before Linux 4.13, in the file
diff --git a/man2/kill.2 b/man2/kill.2
index d0a2e6f..1260ee0 100644
--- a/man2/kill.2
+++ b/man2/kill.2
@@ -21,7 +21,7 @@
.\" Modified 2004-06-24 by aeb
.\" Modified, 2004-11-30, after idea from emmanuel.colbus@ensimag.imag.fr
.\"
-.TH kill 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH kill 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
kill \- send signal to a process
.SH LIBRARY
@@ -30,15 +30,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.BI "int kill(pid_t " pid ", int " sig );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR kill ():
.nf
_POSIX_C_SOURCE
@@ -48,25 +48,25 @@ The
.BR kill ()
system call
can be used to send any signal to any process group or process.
-.PP
+.P
If \fIpid\fP is positive, then signal \fIsig\fP is sent to the
process with the ID specified by \fIpid\fP.
-.PP
+.P
If \fIpid\fP equals 0, then \fIsig\fP is sent to every process in the
process group of the calling process.
-.PP
+.P
If \fIpid\fP equals \-1, then \fIsig\fP is sent to every process
for which the calling process has permission to send signals,
except for process 1 (\fIinit\fP), but see below.
-.PP
+.P
If \fIpid\fP is less than \-1, then \fIsig\fP is sent to every process
in the process group whose ID is \fI\-pid\fP.
-.PP
+.P
If \fIsig\fP is 0, then no signal is sent,
but existence and permission checks are still performed;
this can be used to check for the existence of a process ID or
process group ID that the caller is permitted to signal.
-.PP
+.P
For a process to have permission to send a signal,
it must either be privileged (under Linux: have the
.B CAP_KILL
@@ -125,13 +125,13 @@ process, are those for which
has explicitly installed signal handlers.
This is done to assure the
system is not brought down accidentally.
-.PP
+.P
POSIX.1 requires that \fIkill(\-1,sig)\fP send \fIsig\fP
to all processes that the calling process may send signals to,
except possibly for some implementation-defined system processes.
Linux allows a process to signal itself, but on Linux the call
\fIkill(\-1,sig)\fP does not signal the calling process.
-.PP
+.P
POSIX.1 requires that if a process sends a signal to itself,
and the sending thread does not have the signal blocked,
and no other thread
diff --git a/man2/landlock_add_rule.2 b/man2/landlock_add_rule.2
index 28d5417..2858fa3 100644
--- a/man2/landlock_add_rule.2
+++ b/man2/landlock_add_rule.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH landlock_add_rule 2 2023-07-08 "Linux man-pages 6.05.01"
+.TH landlock_add_rule 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
landlock_add_rule \- add a new Landlock rule to a ruleset
.SH LIBRARY
@@ -14,7 +14,7 @@ Standard C library
.nf
.BR "#include <linux/landlock.h>" " /* Definition of " LANDLOCK_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
-.PP
+.P
.BI "int syscall(SYS_landlock_add_rule, int " ruleset_fd ,
.BI " enum landlock_rule_type " rule_type ,
.BI " const void *" rule_attr ", uint32_t " flags );
@@ -32,11 +32,11 @@ created with
See
.BR landlock (7)
for a global overview.
-.PP
+.P
.I ruleset_fd
is a Landlock ruleset file descriptor obtained with
.BR landlock_create_ruleset (2).
-.PP
+.P
.I rule_type
identifies the structure type pointed to by
.IR rule_attr .
@@ -72,7 +72,7 @@ is an opened file descriptor, preferably with the
flag,
which identifies the parent directory of the file hierarchy or
just a file.
-.PP
+.P
.I flags
must be 0.
.SH RETURN VALUE
diff --git a/man2/landlock_create_ruleset.2 b/man2/landlock_create_ruleset.2
index faadb57..0c69027 100644
--- a/man2/landlock_create_ruleset.2
+++ b/man2/landlock_create_ruleset.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH landlock_create_ruleset 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH landlock_create_ruleset 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
landlock_create_ruleset \- create a new Landlock ruleset
.SH LIBRARY
@@ -14,7 +14,7 @@ Standard C library
.nf
.BR "#include <linux/landlock.h>" " /* Definition of " LANDLOCK_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
-.PP
+.P
.B int syscall(SYS_landlock_create_ruleset,
.BI " const struct landlock_ruleset_attr *" attr ,
.BI " size_t " size " , uint32_t " flags );
@@ -31,7 +31,7 @@ and
See
.BR landlock (7)
for a global overview.
-.PP
+.P
.I attr
specifies the properties of the new ruleset.
It points to the following structure:
@@ -53,12 +53,12 @@ in
.BR landlock (7)).
This enables simply restricting ambient rights
(e.g., global filesystem access) and is needed for compatibility reasons.
-.PP
+.P
.I size
must be specified as
.I sizeof(struct landlock_ruleset_attr)
for compatibility reasons.
-.PP
+.P
.I flags
must be 0 if
.I attr
diff --git a/man2/landlock_restrict_self.2 b/man2/landlock_restrict_self.2
index f02c3a1..c82181b 100644
--- a/man2/landlock_restrict_self.2
+++ b/man2/landlock_restrict_self.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH landlock_restrict_self 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH landlock_restrict_self 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
landlock_restrict_self \- enforce a Landlock ruleset
.SH LIBRARY
@@ -14,7 +14,7 @@ Standard C library
.nf
.BR "#include <linux/landlock.h>" " /* Definition of " LANDLOCK_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
-.PP
+.P
.BI "int syscall(SYS_landlock_restrict_self, int " ruleset_fd ,
.BI " uint32_t " flags );
.SH DESCRIPTION
@@ -24,7 +24,7 @@ system call enables enforcing this ruleset on the calling thread.
See
.BR landlock (7)
for a global overview.
-.PP
+.P
A thread can be restricted with multiple rulesets that are then
composed together to form the thread's Landlock domain.
This can be seen as a stack of rulesets but
@@ -43,7 +43,7 @@ composed rulesets limit.
Instead, developers are encouraged to build a tailored ruleset thanks to
multiple calls to
.BR landlock_add_rule (2).
-.PP
+.P
In order to enforce a ruleset, either the caller must have the
.B CAP_SYS_ADMIN
capability in its user namespace, or the thread must already have the
@@ -59,13 +59,13 @@ the thread must make the following call:
.EX
prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
.EE
-.PP
+.P
.I ruleset_fd
is a Landlock ruleset file descriptor obtained with
.BR landlock_create_ruleset (2)
and fully populated with a set of calls to
.BR landlock_add_rule (2).
-.PP
+.P
.I flags
must be 0.
.SH RETURN VALUE
diff --git a/man2/link.2 b/man2/link.2
index 1533409..74437a0 100644
--- a/man2/link.2
+++ b/man2/link.2
@@ -9,7 +9,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
.\"
-.TH link 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH link 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
link, linkat \- make a new name for a file
.SH LIBRARY
@@ -18,21 +18,21 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int link(const char *" oldpath ", const char *" newpath );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int linkat(int " olddirfd ", const char *" oldpath ,
.BI " int " newdirfd ", const char *" newpath ", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR linkat ():
.nf
Since glibc 2.10:
@@ -43,13 +43,13 @@ Feature Test Macro Requirements for glibc (see
.SH DESCRIPTION
.BR link ()
creates a new link (also known as a hard link) to an existing file.
-.PP
+.P
If
.I newpath
exists, it will
.I not
be overwritten.
-.PP
+.P
This new name may be used exactly as the old one for any operation;
both names refer to the same file (and so have the same permissions
and ownership) and it is impossible to tell which name was the
@@ -60,7 +60,7 @@ The
system call operates in exactly the same way as
.BR link (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I oldpath
is relative, then it is interpreted relative to the directory
@@ -70,7 +70,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR link ()
for a relative pathname).
-.PP
+.P
If
.I oldpath
is relative and
@@ -82,13 +82,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR link ()).
-.PP
+.P
If
.I oldpath
is absolute, then
.I olddirfd
is ignored.
-.PP
+.P
The interpretation of
.I newpath
is as for
@@ -96,7 +96,7 @@ is as for
except that a relative pathname is interpreted relative
to the directory referred to by the file descriptor
.IR newdirfd .
-.PP
+.P
The following values can be bitwise ORed in
.IR flags :
.TP
@@ -152,11 +152,11 @@ linkat(AT_FDCWD, "/proc/self/fd/<fd>", newdirfd,
newname, AT_SYMLINK_FOLLOW);
.EE
.in
-.PP
+.P
Before Linux 2.6.18, the
.I flags
argument was unused, and had to be specified as 0.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -260,7 +260,7 @@ are not on the same mounted filesystem.
.BR link ()
does not work across different mounts,
even if the same filesystem is mounted on both.)
-.PP
+.P
The following additional errors can occur for
.BR linkat ():
.TP
diff --git a/man2/listen.2 b/man2/listen.2
index 9512366..94f0b2c 100644
--- a/man2/listen.2
+++ b/man2/listen.2
@@ -14,7 +14,7 @@
.\" Modified 11 May 2001 by Sam Varshavchik <mrsam@courier-mta.com>
.\"
.\"
-.TH listen 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH listen 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
listen \- listen for connections on a socket
.SH LIBRARY
@@ -23,7 +23,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int listen(int " sockfd ", int " backlog );
.fi
.SH DESCRIPTION
@@ -33,14 +33,14 @@ marks the socket referred to by
as a passive socket, that is, as a socket that will
be used to accept incoming connection requests using
.BR accept (2).
-.PP
+.P
The
.I sockfd
argument is a file descriptor that refers to a socket of type
.B SOCK_STREAM
or
.BR SOCK_SEQPACKET .
-.PP
+.P
The
.I backlog
argument defines the maximum length
@@ -114,7 +114,7 @@ connections are specified with
Connections are accepted with
.BR accept (2).
.RE
-.PP
+.P
The behavior of the
.I backlog
argument on TCP sockets changed with Linux 2.2.
@@ -130,7 +130,7 @@ length and this setting is ignored.
See
.BR tcp (7)
for more information.
-.PP
+.P
If the
.I backlog
argument is greater than the value in
diff --git a/man2/listxattr.2 b/man2/listxattr.2
index 58f5ce0..71a8e53 100644
--- a/man2/listxattr.2
+++ b/man2/listxattr.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH listxattr 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH listxattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
listxattr, llistxattr, flistxattr \- list extended attribute names
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/xattr.h>
-.PP
+.P
.BI "ssize_t listxattr(const char *" path ", char *_Nullable " list \
", size_t " size );
.BI "ssize_t llistxattr(const char *" path ", char *_Nullable " list \
@@ -30,7 +30,7 @@ with all inodes in the system (i.e., the
data).
A complete overview of extended attributes concepts can be found in
.BR xattr (7).
-.PP
+.P
.BR listxattr ()
retrieves the list
of extended attribute names associated with the given
@@ -46,14 +46,14 @@ have access may be omitted from the list.
The length of the attribute name
.I list
is returned.
-.PP
+.P
.BR llistxattr ()
is identical to
.BR listxattr (),
except in the case of a symbolic link, where the list of names of
extended attributes associated with the link itself is retrieved,
not the file that it refers to.
-.PP
+.P
.BR flistxattr ()
is identical to
.BR listxattr (),
@@ -63,13 +63,13 @@ only the open file referred to by
.BR open (2))
is interrogated in place of
.IR path .
-.PP
+.P
A single extended attribute
.I name
is a null-terminated string.
The name includes a namespace prefix; there may be several, disjoint
namespaces associated with an individual inode.
-.PP
+.P
If
.I size
is specified as zero, these calls return the current size of the
@@ -88,18 +88,18 @@ The
of names is returned as an unordered array of null-terminated character strings
(attribute names are separated by null bytes (\[aq]\e0\[aq])),
like this:
-.PP
+.P
.in +4n
.EX
user.name1\e0system.name1\e0user.name2\e0
.EE
.in
-.PP
+.P
Filesystems that implement POSIX ACLs using
extended attributes might return a
.I list
like this:
-.PP
+.P
.in +4n
.EX
system.posix_acl_access\e0system.posix_acl_default\e0
@@ -129,7 +129,7 @@ The
of the
.I list
buffer is too small to hold the result.
-.PP
+.P
In addition, the errors documented in
.BR stat (2)
can also occur.
@@ -160,7 +160,7 @@ and
.BR getxattr (2).
For the file whose pathname is provided as a command-line argument,
it lists all extended file attributes and their values.
-.PP
+.P
To keep the code simple, the program assumes that attribute keys and
values are constant during the execution of the program.
A production program should expect and handle changes during
@@ -177,7 +177,7 @@ with a larger buffer each time it fails with the error
Calls to
.BR getxattr (2)
could be handled similarly.
-.PP
+.P
The following output was recorded by first creating a file, setting
some extended file attributes,
and then listing the attributes with the example program.
diff --git a/man2/llseek.2 b/man2/llseek.2
index 64de504..3ac742f 100644
--- a/man2/llseek.2
+++ b/man2/llseek.2
@@ -6,7 +6,7 @@
.\"
.\" Modified Thu Oct 31 15:16:23 1996 by Eric S. Raymond <esr@thyrsus.com>
.\"
-.TH _llseek 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH _llseek 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
_llseek \- reposition read/write file offset
.SH LIBRARY
@@ -16,12 +16,12 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS__llseek, unsigned int " fd ", unsigned long " offset_high ,
.BI " unsigned long " offset_low ", loff_t *" result ,
.BI " unsigned int " whence );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR _llseek (),
@@ -32,7 +32,7 @@ Note: for information about the
.BR llseek (3)
library function, see
.BR lseek64 (3).
-.PP
+.P
The
.BR _llseek ()
system call repositions the offset of the open file description associated
@@ -41,7 +41,7 @@ with the file descriptor
to the value
.IP
(offset_high << 32) | offset_low
-.PP
+.P
This new offset is a byte offset
relative to the beginning of the file, the current file offset,
or the end of the file, depending on whether
@@ -52,13 +52,13 @@ is
or
.BR SEEK_END ,
respectively.
-.PP
+.P
The new file offset is returned in the argument
.IR result .
The type
.I loff_t
is a 64-bit signed type.
-.PP
+.P
This system call exists on various 32-bit platforms to support
seeking to large file offsets.
.SH RETURN VALUE
diff --git a/man2/lookup_dcookie.2 b/man2/lookup_dcookie.2
index 4543e45..006afe2 100644
--- a/man2/lookup_dcookie.2
+++ b/man2/lookup_dcookie.2
@@ -4,7 +4,7 @@
.\"
.\" Modified 2004-06-17 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH lookup_dcookie 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH lookup_dcookie 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
lookup_dcookie \- return a directory entry's path
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_lookup_dcookie, uint64_t " cookie ", char *" buffer ,
.BI " size_t " len );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR lookup_dcookie (),
@@ -30,7 +30,7 @@ Look up the full path of the directory entry specified by the value
The cookie is an opaque identifier uniquely identifying a particular
directory entry.
The buffer given is filled in with the full path of the directory entry.
-.PP
+.P
For
.BR lookup_dcookie ()
to return successfully,
@@ -69,7 +69,7 @@ The buffer was not large enough to hold the path of the directory entry.
Linux.
.SH HISTORY
Linux 2.5.43.
-.PP
+.P
The
.B ENAMETOOLONG
error was added in Linux 2.5.70.
@@ -79,7 +79,7 @@ is a special-purpose system call, currently used only by the
.BR oprofile (1)
profiler.
It relies on a kernel driver to register cookies for directory entries.
-.PP
+.P
The path returned may be suffixed by the string " (deleted)" if the directory
entry has been removed.
.SH SEE ALSO
diff --git a/man2/lseek.2 b/man2/lseek.2
index 7ef7930..93b3f6d 100644
--- a/man2/lseek.2
+++ b/man2/lseek.2
@@ -15,7 +15,7 @@
.\" Modified 2003-08-21 by Andries Brouwer <aeb@cwi.nl>
.\" 2011-09-18, mtk, Added SEEK_DATA + SEEK_HOLE
.\"
-.TH lseek 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH lseek 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
lseek \- reposition read/write file offset
.SH LIBRARY
@@ -24,7 +24,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "off_t lseek(int " fd ", off_t " offset ", int " whence );
.fi
.SH DESCRIPTION
@@ -52,7 +52,7 @@ bytes.
The file offset is set to the size of the file plus
.I offset
bytes.
-.PP
+.P
.BR lseek ()
allows the file offset to be set beyond the end
of the file (but this does not change the size of the file).
@@ -87,19 +87,19 @@ If there is no hole past
.IR offset ,
then the file offset is adjusted to the end of the file
(i.e., there is an implicit hole at the end of any file).
-.PP
+.P
In both of the above cases,
.BR lseek ()
fails if
.I offset
points past the end of the file.
-.PP
+.P
These operations allow applications to map holes in a sparsely
allocated file.
This can be useful for applications such as file backup tools,
which can save space when creating backups and preserve holes,
if they have a mechanism for discovering holes.
-.PP
+.P
For the purposes of these operations, a hole is a sequence of zeros that
(normally) has not been allocated in the underlying file storage.
However, a filesystem is not obliged to report holes,
@@ -122,7 +122,7 @@ it can be considered to consist of data that is a sequence of zeros).
.\" https://lkml.org/lkml/2011/4/22/79
.\" http://lwn.net/Articles/440255/
.\" http://blogs.oracle.com/bonwick/entry/seek_hole_and_seek_data
-.PP
+.P
The
.B _GNU_SOURCE
feature test macro must be defined in order to obtain the definitions of
@@ -131,7 +131,7 @@ and
.B SEEK_HOLE
from
.IR <unistd.h> .
-.PP
+.P
The
.B SEEK_HOLE
and
@@ -216,7 +216,7 @@ on a terminal device fails with the error
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4, 4.3BSD.
-.PP
+.P
.B SEEK_DATA
and
.B SEEK_HOLE
@@ -229,7 +229,7 @@ See
.BR open (2)
for a discussion of the relationship between file descriptors,
open file descriptions, and files.
-.PP
+.P
If the
.B O_APPEND
file status flag is set on the open file description,
@@ -238,7 +238,7 @@ then a
.I always
moves the file offset to the end of the file, regardless of the use of
.BR lseek ().
-.PP
+.P
Some devices are incapable of seeking and POSIX does not specify which
devices must support
.BR lseek ().
diff --git a/man2/madvise.2 b/man2/madvise.2
index 5782574..c30ec4c 100644
--- a/man2/madvise.2
+++ b/man2/madvise.2
@@ -12,7 +12,7 @@
.\" 2011-09-18, Doug Goldstein <cardoe@cardoe.com>
.\" Document MADV_HUGEPAGE and MADV_NOHUGEPAGE
.\"
-.TH madvise 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH madvise 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
madvise \- give advice about use of memory
.SH LIBRARY
@@ -21,15 +21,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/mman.h>
-.PP
+.P
.BI "int madvise(void " addr [. length "], size_t " length ", int " advice );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR madvise ():
.nf
Since glibc 2.19:
@@ -54,7 +54,7 @@ The value of
is rounded up to a multiple of page size.
In most cases,
the goal of such advice is to improve system or application performance.
-.PP
+.P
Initially, the system call supported a set of "conventional"
.I advice
values, which are also available on several other implementations.
@@ -86,7 +86,7 @@ values listed here have analogs in the POSIX-specified
.BR posix_madvise (3)
function, and the values have the same meanings, with the exception of
.BR MADV_DONTNEED .
-.PP
+.P
The advice is indicated in the
.I advice
argument, which is one of the following:
@@ -845,7 +845,7 @@ Other implementations typically implement at least the flags listed
above under
.IR "Conventional advice flags" ,
albeit with some variation in semantics.
-.PP
+.P
POSIX.1-2001 describes
.BR posix_madvise (3)
with constants
@@ -868,7 +868,7 @@ that are not mapped, the Linux version of
ignores them and applies the call to the rest (but returns
.B ENOMEM
from the system call, as it should).
-.PP
+.P
.I madvise(0,\ 0,\ advice)
will return zero iff
.I advice
@@ -877,7 +877,7 @@ is supported by the kernel and can be relied on to probe for support.
None.
.SH HISTORY
First appeared in 4.4BSD.
-.PP
+.P
Since Linux 3.18,
.\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb
support for this system call is optional,
diff --git a/man2/mbind.2 b/man2/mbind.2
index 064b8a1..4b43aca 100644
--- a/man2/mbind.2
+++ b/man2/mbind.2
@@ -15,7 +15,7 @@
.\" Author: Lee Schermerhorn <lee.schermerhorn@hp.com>
.\" Date: Thu Oct 25 14:16:32 2012 +0200
.\"
-.TH mbind 2 2023-07-16 "Linux man-pages 6.05.01"
+.TH mbind 2 2023-12-09 "Linux man-pages 6.7"
.SH NAME
mbind \- set memory policy for a memory range
.SH LIBRARY
@@ -24,7 +24,7 @@ NUMA (Non-Uniform Memory Access) policy library
.SH SYNOPSIS
.nf
.B "#include <numaif.h>"
-.PP
+.P
.BI "long mbind(void " addr [. len "], unsigned long " len ", int " mode ,
.BI " const unsigned long " nodemask [(. maxnode " + ULONG_WIDTH - 1)"
.B " / ULONG_WIDTH],"
@@ -40,7 +40,7 @@ and continuing for
.I len
bytes.
The memory policy defines from which node memory is allocated.
-.PP
+.P
If the memory range specified by the
.IR addr " and " len
arguments includes an "anonymous" region of memory\[em]that is
@@ -62,7 +62,7 @@ an initial read access will allocate pages according to the
memory policy of the thread that causes the page to be allocated.
This may not be the thread that called
.BR mbind ().
-.PP
+.P
The specified policy will be ignored for any
.B MAP_SHARED
mappings in the specified memory range.
@@ -70,7 +70,7 @@ Rather the pages will be allocated according to the memory policy
of the thread that caused the page to be allocated.
Again, this may not be the thread that called
.BR mbind ().
-.PP
+.P
If the specified memory range includes a shared memory region
created using the
.BR shmget (2)
@@ -87,7 +87,7 @@ the huge pages will be allocated according to the policy specified
only if the page allocation is caused by the process that calls
.BR mbind ()
for that region.
-.PP
+.P
By default,
.BR mbind ()
has an effect only for new allocations; if the pages inside
@@ -98,7 +98,7 @@ This default behavior may be overridden by the
and
.B MPOL_MF_MOVE_ALL
flags described below.
-.PP
+.P
The
.I mode
argument must specify one of
@@ -115,7 +115,7 @@ require the caller to specify the node or nodes to which the mode applies,
via the
.I nodemask
argument.
-.PP
+.P
The
.I mode
argument may also include an optional
@@ -124,6 +124,23 @@ The supported
.I "mode flags"
are:
.TP
+.BR MPOL_F_NUMA_BALANCING " (since Linux 5.15)"
+.\" commit bda420b985054a3badafef23807c4b4fa38a3dff
+.\" commit 6d2aec9e123bb9c49cb5c7fc654f25f81e688e8c
+When
+.I mode
+is
+.BR MPOL_BIND ,
+enable the kernel NUMA balancing for the task if it is supported by the kernel.
+If the flag isn't supported by the kernel, or is used with
+.I mode
+other than
+.BR MPOL_BIND ,
+\-1 is returned and
+.I errno
+is set to
+.BR EINVAL .
+.TP
.BR MPOL_F_STATIC_NODES " (since Linux-2.6.26)"
A nonempty
.I nodemask
@@ -139,7 +156,7 @@ A nonempty
.I nodemask
specifies node IDs that are relative to the set of
node IDs allowed by the thread's current cpuset.
-.PP
+.P
.I nodemask
points to a bit mask of nodes containing up to
.I maxnode
@@ -167,7 +184,7 @@ allowed by the thread's current cpuset context
.B MPOL_F_STATIC_NODES
mode flag is specified),
and contains memory.
-.PP
+.P
The
.I mode
argument must include one of the following values:
@@ -265,7 +282,7 @@ By contrast,
reverts to the memory policy of the thread (which may be set via
.BR set_mempolicy (2));
that policy may be something other than "local allocation".
-.PP
+.P
If
.B MPOL_MF_STRICT
is passed in
@@ -281,7 +298,7 @@ if the existing pages in the memory range don't follow the policy.
.\" --Lee Schermerhorn
.\" In Linux 2.6.16 or later the kernel will also try to move pages
.\" to the requested node with this flag.
-.PP
+.P
If
.B MPOL_MF_MOVE
is specified in
@@ -299,7 +316,7 @@ If the
policy was specified,
pages already residing on the specified nodes
will not be moved such that they are interleaved.
-.PP
+.P
If
.B MPOL_MF_MOVE_ALL
is passed in
@@ -417,16 +434,16 @@ privilege.
Linux.
.SH HISTORY
Linux 2.6.7.
-.PP
+.P
Support for huge page policy was added with Linux 2.6.16.
For interleave policy to be effective on huge page mappings the
policied memory needs to be tens of megabytes or larger.
-.PP
+.P
Before Linux 5.7.
.\" commit dcf1763546d76c372f3136c8d6b2b6e77f140cf0
.B MPOL_MF_STRICT
was ignored on huge page mappings.
-.PP
+.P
.B MPOL_MF_MOVE
and
.B MPOL_MF_MOVE_ALL
@@ -434,12 +451,12 @@ are available only on Linux 2.6.16 and later.
.SH NOTES
For information on library support, see
.BR numa (7).
-.PP
+.P
NUMA policy is not supported on a memory-mapped file range
that was mapped with the
.B MAP_SHARED
flag.
-.PP
+.P
The
.B MPOL_DEFAULT
mode can have different effects for
diff --git a/man2/membarrier.2 b/man2/membarrier.2
index f118fd0..ce5a9de 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH membarrier 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH membarrier 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
membarrier \- issue memory barriers on a set of threads
.SH LIBRARY
@@ -11,16 +11,16 @@ Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
-.PP
+.P
.BR "#include <linux/membarrier.h>" \
" /* Definition of " MEMBARRIER_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_membarrier, int " cmd ", unsigned int " flags \
", int " cpu_id );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR membarrier (),
@@ -36,12 +36,12 @@ effectively is
.I not
as simple as replacing memory barriers with this
system call, but requires understanding of the details below.
-.PP
+.P
Use of memory barriers needs to be done taking into account that a
memory barrier always needs to be either matched with its memory barrier
counterparts, or that the architecture's memory model doesn't require the
matching barriers.
-.PP
+.P
There are cases where one side of the matching barriers (which we will
refer to as "fast side") is executed much more often than the other
(which we will refer to as "slow side").
@@ -50,22 +50,22 @@ This is a prime target for the use of
The key idea is to replace, for these matching
barriers, the fast-side memory barriers by simple compiler barriers,
for example:
-.PP
+.P
.in +4n
.EX
asm volatile ("" : : : "memory")
.EE
.in
-.PP
+.P
and replace the slow-side memory barriers by calls to
.BR membarrier ().
-.PP
+.P
This will add overhead to the slow side, and remove overhead from the
fast side, thus resulting in an overall performance increase as long as
the slow side is infrequent enough that the overhead of the
.BR membarrier ()
calls does not outweigh the performance gain on the fast side.
-.PP
+.P
The
.I cmd
argument is one of the following:
@@ -183,7 +183,7 @@ Register the process's intent to use
This is an alias for
.B MEMBARRIER_CMD_GLOBAL
that exists for header backward compatibility.
-.PP
+.P
The
.I flags
argument must be specified as 0 unless the command is
@@ -192,7 +192,7 @@ in which case
.I flags
can be either 0 or
.BR MEMBARRIER_CMD_FLAG_CPU .
-.PP
+.P
The
.I cpu_id
argument is ignored unless
@@ -201,11 +201,11 @@ is
.BR MEMBARRIER_CMD_FLAG_CPU ,
in which case it must specify the CPU targeted by this membarrier
command.
-.PP
+.P
All memory accesses performed in program order from each targeted thread
are guaranteed to be ordered with respect to
.BR membarrier ().
-.PP
+.P
If we use the semantic
.I barrier()
to represent a compiler barrier forcing memory
@@ -219,7 +219,7 @@ each pairing of
and
.IR smp_mb() .
The pair ordering is detailed as (O: ordered, X: not ordered):
-.PP
+.P
.RS
.TS
l c c c.
@@ -246,7 +246,7 @@ On error, \-1 is returned,
and
.I errno
is set to indicate the error.
-.PP
+.P
For a given command, with
.I flags
set to 0, this system call is
@@ -284,9 +284,9 @@ commands.
Linux.
.SH HISTORY
Linux 4.3.
-.PP
+.P
Before Linux 5.10, the prototype was:
-.PP
+.P
.in +4n
.EX
.BI "int membarrier(int " cmd ", int " flags );
@@ -301,10 +301,10 @@ matching barriers on other cores.
For instance, a load fence can order
loads prior to and following that fence with respect to stores ordered
by store fences.
-.PP
+.P
Program order is the order in which instructions are ordered in the
program assembly code.
-.PP
+.P
Examples where
.BR membarrier ()
can be useful include implementations
@@ -314,7 +314,7 @@ Assuming a multithreaded application where "fast_path()" is executed
very frequently, and where "slow_path()" is executed infrequently, the
following code (x86) can be transformed using
.BR membarrier ():
-.PP
+.P
.in +4n
.\" SRC BEGIN (membarrier.c)
.EX
@@ -365,11 +365,11 @@ main(void)
.EE
.\" SRC END
.in
-.PP
+.P
The code above transformed to use
.BR membarrier ()
becomes:
-.PP
+.P
.in +4n
.EX
#define _GNU_SOURCE
diff --git a/man2/memfd_create.2 b/man2/memfd_create.2
index fb18abc..c7cf859 100644
--- a/man2/memfd_create.2
+++ b/man2/memfd_create.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH memfd_create 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH memfd_create 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
memfd_create \- create an anonymous file
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/mman.h>
-.PP
+.P
.BI "int memfd_create(const char *" name ", unsigned int " flags ");"
.fi
.SH DESCRIPTION
@@ -39,14 +39,14 @@ memory allocations such as those allocated using
with the
.B MAP_ANONYMOUS
flag.
-.PP
+.P
The initial size of the file is set to 0.
Following the call, the file size should be set using
.BR ftruncate (2).
(Alternatively, the file may be populated by calls to
.BR write (2)
or similar.)
-.PP
+.P
The name supplied in
.I name
is used as a filename and will be displayed
@@ -57,7 +57,7 @@ The displayed name is always prefixed with
and serves only for debugging purposes.
Names do not affect the behavior of the file descriptor,
and as such multiple files can have the same name without any side effects.
-.PP
+.P
The following values may be bitwise ORed in
.I flags
to change the behavior of
@@ -105,7 +105,11 @@ in
.I flags
is supported since Linux 4.16.
.TP
-.BR MFD_HUGE_2MB ", " MFD_HUGE_1GB ", " "..."
+.B MFD_HUGE_2MB
+.TQ
+.B MFD_HUGE_1GB
+.TQ
+\&.\|.\|.
Used in conjunction with
.B MFD_HUGETLB
to select alternative hugetlb page sizes (respectively, 2\ MB, 1\ GB, ...)
@@ -117,11 +121,11 @@ huge page sizes are included in the header file
For details on encoding huge page sizes not included in the header file,
see the discussion of the similarly named constants in
.BR mmap (2).
-.PP
+.P
Unused bits in
.I flags
must be 0.
-.PP
+.P
As its return value,
.BR memfd_create ()
returns a new file descriptor that can be used to refer to the file.
@@ -130,7 +134,7 @@ This file descriptor is opened for both reading and writing
and
.B O_LARGEFILE
is set for the file descriptor.
-.PP
+.P
With respect to
.BR fork (2)
and
@@ -215,7 +219,7 @@ The primary purpose of
is to create files and associated file descriptors that are
used with the file-sealing APIs provided by
.BR fcntl (2).
-.PP
+.P
The
.BR memfd_create ()
system call also has uses without file sealing
@@ -247,13 +251,13 @@ location in the shared memory region.
(Dealing with this possibility necessitates the use of a handler for the
.B SIGBUS
signal.)
-.PP
+.P
Dealing with untrusted peers imposes extra complexity on
code that employs shared memory.
Memory sealing enables that extra complexity to be eliminated,
by allowing a process to operate secure in the knowledge that
its peer can't modify the shared memory in an undesired fashion.
-.PP
+.P
An example of the usage of the sealing mechanism is as follows:
.IP (1) 5
The first process creates a
@@ -342,7 +346,7 @@ seal has not yet been applied).
Below are shown two example programs that demonstrate the use of
.BR memfd_create ()
and the file sealing API.
-.PP
+.P
The first program,
.IR t_memfd_create.c ,
creates a
@@ -357,18 +361,18 @@ The first argument is the name to associate with the file,
the second argument is the size to be set for the file,
and the optional third argument is a string of characters that specify
seals to be set on the file.
-.PP
+.P
The second program,
.IR t_get_seals.c ,
can be used to open an existing file that was created via
.BR memfd_create ()
and inspect the set of seals that have been applied to that file.
-.PP
+.P
The following shell session demonstrates the use of these programs.
First we create a
.BR tmpfs (5)
file and set some seals on it:
-.PP
+.P
.in +4n
.EX
$ \fB./t_memfd_create my_memfd_file 4096 sw &\fP
@@ -376,7 +380,7 @@ $ \fB./t_memfd_create my_memfd_file 4096 sw &\fP
PID: 11775; fd: 3; /proc/11775/fd/3
.EE
.in
-.PP
+.P
At this point, the
.I t_memfd_create
program continues to run in the background.
@@ -392,7 +396,7 @@ Using that pathname, we inspect the content of the
symbolic link, and use our
.I t_get_seals
program to view the seals that have been placed on the file:
-.PP
+.P
.in +4n
.EX
$ \fBreadlink /proc/11775/fd/3\fP
diff --git a/man2/memfd_secret.2 b/man2/memfd_secret.2
index fcc39f6..8b4fb48 100644
--- a/man2/memfd_secret.2
+++ b/man2/memfd_secret.2
@@ -7,7 +7,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH memfd_secret 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH memfd_secret 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
memfd_secret \- create an anonymous RAM-based file
to access secret memory regions
@@ -16,13 +16,13 @@ Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
-.PP
+.P
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_memfd_secret, unsigned int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR memfd_secret (),
@@ -40,7 +40,7 @@ it is automatically released.
The initial size of the file is set to 0.
Following the call, the file size should be set using
.BR ftruncate (2).
-.PP
+.P
The memory areas backing the file created with
.BR memfd_secret (2)
are visible only to the processes that have access to the file descriptor.
@@ -50,7 +50,7 @@ map the corresponding physical memory.
(Thus, the pages in the region can't be accessed by the kernel itself,
so that, for example, pointers to the region can't be passed to
system calls.)
-.PP
+.P
The following values may be bitwise ORed in
.I flags
to control the behavior of
@@ -64,7 +64,7 @@ See the description of the
.B O_CLOEXEC
flag in
.BR open (2)
-.PP
+.P
As its return value,
.BR memfd_secret ()
returns a new file descriptor that refers to an anonymous file.
@@ -73,7 +73,7 @@ This file descriptor is opened for both reading and writing
and
.B O_LARGEFILE
is set for the file descriptor.
-.PP
+.P
With respect to
.BR fork (2)
and
@@ -86,7 +86,7 @@ and refers to the same file.
The file descriptor is preserved across
.BR execve (2),
unless the close-on-exec flag has been set.
-.PP
+.P
The memory region is locked into memory in the same way as with
.BR mlock (2),
so that it will never be written into swap,
@@ -147,7 +147,7 @@ memory ranges backed by
.BR memfd_secret ()
in any circumstances, but nevertheless,
it is much harder to exfiltrate data from these regions.
-.PP
+.P
.BR memfd_secret ()
provides the following protections:
.IP \[bu] 3
@@ -181,14 +181,14 @@ either walk the page tables and create new ones,
or spawn a new privileged user-space process to perform
secrets exfiltration using
.BR ptrace (2).
-.PP
+.P
The way
.BR memfd_secret ()
allocates and locks the memory may impact overall system performance,
therefore the system call is disabled by default and only available
if the system administrator turned it on using
"secretmem.enable=y" kernel parameter.
-.PP
+.P
To prevent potential data leaks of memory regions backed by
.BR memfd_secret ()
from a hybernation image,
diff --git a/man2/migrate_pages.2 b/man2/migrate_pages.2
index 177f463..8f2ee8e 100644
--- a/man2/migrate_pages.2
+++ b/man2/migrate_pages.2
@@ -6,7 +6,7 @@
.\" This manpage is Copyright (C) 2006 Silicon Graphics, Inc.
.\" Christoph Lameter
.\"
-.TH migrate_pages 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH migrate_pages 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
migrate_pages \- move all pages in a process to another set of nodes
.SH LIBRARY
@@ -15,7 +15,7 @@ NUMA (Non-Uniform Memory Access) policy library
.SH SYNOPSIS
.nf
.B #include <numaif.h>
-.PP
+.P
.BI "long migrate_pages(int " pid ", unsigned long " maxnode,
.BI " const unsigned long *" old_nodes,
.BI " const unsigned long *" new_nodes );
@@ -36,7 +36,7 @@ the kernel maintains the relative topology relationship inside
.I old_nodes
during the migration to
.IR new_nodes .
-.PP
+.P
The
.I old_nodes
and
@@ -58,7 +58,7 @@ as in
.BR mbind (2),
but different from
.BR select (2)).
-.PP
+.P
The
.I pid
argument is the ID of the process whose pages are to be moved.
@@ -72,7 +72,7 @@ If
is 0, then
.BR migrate_pages ()
moves pages of the calling process.
-.PP
+.P
Pages shared with another process will be moved only if the initiating
process has the
.B CAP_SYS_NICE
@@ -132,7 +132,7 @@ Linux 2.6.16.
.SH NOTES
For information on library support, see
.BR numa (7).
-.PP
+.P
Use
.BR get_mempolicy (2)
with the
@@ -141,7 +141,7 @@ flag to obtain the set of nodes that are allowed by
the calling process's cpuset.
Note that this information is subject to change at any
time by manual or automatic reconfiguration of the cpuset.
-.PP
+.P
Use of
.BR migrate_pages ()
may result in pages whose location
@@ -153,7 +153,7 @@ and/or the specified process (see
That is, memory policy does not constrain the destination
nodes used by
.BR migrate_pages ().
-.PP
+.P
The
.I <numaif.h>
header is not included with glibc, but requires installing
@@ -169,6 +169,6 @@ or a similar package.
.BR numa (7),
.BR migratepages (8),
.BR numastat (8)
-.PP
+.P
.I Documentation/vm/page_migration.rst
in the Linux kernel source tree
diff --git a/man2/mincore.2 b/man2/mincore.2
index 9ffca56..efba7fc 100644
--- a/man2/mincore.2
+++ b/man2/mincore.2
@@ -11,7 +11,7 @@
.\" after message from <gordon.jin@intel.com>
.\" 2007-01-08 mtk, rewrote various parts
.\"
-.TH mincore 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH mincore 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mincore \- determine whether pages are resident in memory
.SH LIBRARY
@@ -20,15 +20,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/mman.h>
-.PP
+.P
.BI "int mincore(void " addr [. length "], size_t " length ", unsigned char *" vec );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR mincore ():
.nf
Since glibc 2.19:
@@ -47,7 +47,7 @@ starting at the address
and continuing for
.I length
bytes.
-.PP
+.P
The
.I addr
argument must be a multiple of the system page size.
@@ -61,7 +61,7 @@ One may obtain the page size
.RB ( PAGE_SIZE )
using
.IR sysconf(_SC_PAGESIZE) .
-.PP
+.P
The
.I vec
argument must point to an array containing at least
@@ -122,9 +122,9 @@ None.
.SH HISTORY
Linux 2.3.99pre1,
glibc 2.2.
-.PP
+.P
First appeared in 4.4BSD.
-.PP
+.P
NetBSD, FreeBSD, OpenBSD, Solaris 8,
AIX 5.1, SunOS 4.1.
.SH BUGS
diff --git a/man2/mkdir.2 b/man2/mkdir.2
index c3342bd..d63059f 100644
--- a/man2/mkdir.2
+++ b/man2/mkdir.2
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH mkdir 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH mkdir 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mkdir, mkdirat \- create a directory
.SH LIBRARY
@@ -15,20 +15,20 @@ Standard C library
.nf
.B #include <sys/stat.h>
.\" .B #include <unistd.h>
-.PP
+.P
.BI "int mkdir(const char *" pathname ", mode_t " mode );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of AT_* constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int mkdirat(int " dirfd ", const char *" pathname ", mode_t " mode );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR mkdirat ():
.nf
Since glibc 2.10:
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
.BR mkdir ()
attempts to create a directory named
.IR pathname .
-.PP
+.P
The argument
.I mode
specifies the mode for the new directory (see
@@ -54,7 +54,7 @@ Whether other
.I mode
bits are honored for the created directory depends on the operating system.
For Linux, see NOTES below.
-.PP
+.P
The newly created directory will be owned by the effective user ID of the
process.
If the directory containing the file has the set-group-ID
@@ -64,7 +64,7 @@ or, synonymously
.IR "mount \-o grpid" ),
the new directory will inherit the group ownership from its parent;
otherwise it will be owned by the effective group ID of the process.
-.PP
+.P
If the parent directory has the set-group-ID bit set, then so will the
newly created directory.
.\"
@@ -75,7 +75,7 @@ The
system call operates in exactly the same way as
.BR mkdir (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -85,7 +85,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR mkdir ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -97,13 +97,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR mkdir ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
diff --git a/man2/mknod.2 b/man2/mknod.2
index 0925aea..dd7905c 100644
--- a/man2/mknod.2
+++ b/man2/mknod.2
@@ -9,7 +9,7 @@
.\" Modified 2003-04-23 by Michael Kerrisk
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH mknod 2 2023-03-31 "Linux man-pages 6.05.01"
+.TH mknod 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mknod, mknodat \- create a special or ordinary file
.SH LIBRARY
@@ -18,21 +18,21 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/stat.h>
-.PP
+.P
.BI "int mknod(const char *" pathname ", mode_t " mode ", dev_t " dev );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of AT_* constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int mknodat(int " dirfd ", const char *" pathname ", mode_t " mode \
", dev_t " dev );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR mknod ():
.nf
_XOPEN_SOURCE >= 500
@@ -50,7 +50,7 @@ with attributes specified by
.I mode
and
.IR dev .
-.PP
+.P
The
.I mode
argument specifies both the file mode to use and the type of node
@@ -58,13 +58,13 @@ to be created.
It should be a combination (using bitwise OR) of one of the file types
listed below and zero or more of the file mode bits listed in
.BR inode (7).
-.PP
+.P
The file mode is modified by the process's
.I umask
in the usual way: in the absence of a default ACL, the permissions of the
created node are
.RI ( mode " & \[ti]" umask ).
-.PP
+.P
The file type must be one of
.BR S_IFREG ,
.BR S_IFCHR ,
@@ -78,7 +78,7 @@ special file, block special file, FIFO (named pipe), or UNIX domain socket,
respectively.
(Zero file type is equivalent to type
.BR S_IFREG .)
-.PP
+.P
If the file type is
.B S_IFCHR
or
@@ -91,13 +91,13 @@ special file
may be useful to build the value for
.IR dev );
otherwise it is ignored.
-.PP
+.P
If
.I pathname
already exists, or is a symbolic link, this call fails with an
.B EEXIST
error.
-.PP
+.P
The newly created node will be owned by the effective user ID of the
process.
If the directory containing the node has the set-group-ID
@@ -112,7 +112,7 @@ The
system call operates in exactly the same way as
.BR mknod (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -122,7 +122,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR mknod ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -134,13 +134,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR mknod ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -258,7 +258,7 @@ However, nowadays one should never use
for this purpose; one should use
.BR mkfifo (3),
a function especially defined for this purpose.
-.PP
+.P
Under Linux,
.BR mknod ()
cannot be used to create directories.
diff --git a/man2/mlock.2 b/man2/mlock.2
index 1efe3dd..965e018 100644
--- a/man2/mlock.2
+++ b/man2/mlock.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH mlock 2 2023-04-08 "Linux man-pages 6.05.01"
+.TH mlock 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mlock, mlock2, munlock, mlockall, munlockall \- lock and unlock memory
.SH LIBRARY
@@ -13,12 +13,12 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/mman.h>
-.PP
+.P
.BI "int mlock(const void " addr [. len "], size_t " len );
.BI "int mlock2(const void " addr [. len "], size_t " len ", \
unsigned int " flags );
.BI "int munlock(const void " addr [. len "], size_t " len );
-.PP
+.P
.BI "int mlockall(int " flags );
.B int munlockall(void);
.fi
@@ -30,7 +30,7 @@ and
lock part or all of the calling process's virtual address
space into RAM, preventing that memory from being paged to the
swap area.
-.PP
+.P
.BR munlock ()
and
.BR munlockall ()
@@ -38,7 +38,7 @@ perform the converse operation,
unlocking part or all of the calling process's virtual address space,
so that pages in the specified virtual address range
can be swapped out again if required by the kernel memory manager.
-.PP
+.P
Memory locking and unlocking are performed in units of whole pages.
.SS mlock(), mlock2(), and munlock()
.BR mlock ()
@@ -50,7 +50,7 @@ bytes.
All pages that contain a part of the specified address range are
guaranteed to be resident in RAM when the call returns successfully;
the pages are guaranteed to stay in RAM until later unlocked.
-.PP
+.P
.BR mlock2 ()
.\" commit a8ca5d0ecbdde5cc3d7accacbd69968b0c98764e
.\" commit de60f5f10c58d4f34b68622442c0e04180367f3f
@@ -64,7 +64,7 @@ However, the state of the pages contained in that range after the call
returns successfully will depend on the value in the
.I flags
argument.
-.PP
+.P
The
.I flags
argument can be either 0 or the following constant:
@@ -73,14 +73,14 @@ argument can be either 0 or the following constant:
Lock pages that are currently resident and mark the entire range so
that the remaining nonresident pages are locked when they are populated
by a page fault.
-.PP
+.P
If
.I flags
is 0,
.BR mlock2 ()
behaves exactly the same as
.BR mlock ().
-.PP
+.P
.BR munlock ()
unlocks pages in the address range starting at
.I addr
@@ -99,7 +99,7 @@ memory, and memory-mapped files.
All mapped pages are guaranteed
to be resident in RAM when the call returns successfully;
the pages are guaranteed to stay in RAM until later unlocked.
-.PP
+.P
The
.I flags
argument is constructed as the bitwise OR of one or more of the
@@ -142,7 +142,7 @@ must be used with either
or
.B MCL_FUTURE
or both.
-.PP
+.P
If
.B MCL_FUTURE
has been specified, then a later system call (e.g.,
@@ -155,7 +155,7 @@ In the same circumstances, stack growth may likewise fail:
the kernel will deny stack expansion and deliver a
.B SIGSEGV
signal to the process.
-.PP
+.P
.BR munlockall ()
unlocks all pages mapped into the address space of the
calling process.
@@ -272,7 +272,7 @@ and
allows an implementation to require that
.I addr
is page aligned, so portable applications should ensure this.
-.PP
+.P
The
.I VmLck
field of the Linux-specific
@@ -299,7 +299,7 @@ POSIX.1-2008.
.TP
.BR mlock2 ()
Linux.
-.PP
+.P
On POSIX systems on which
.BR mlock ()
and
@@ -311,7 +311,7 @@ can be determined from the constant
.B PAGESIZE
(if defined) in \fI<limits.h>\fP or by calling
.IR sysconf(_SC_PAGESIZE) .
-.PP
+.P
On POSIX systems on which
.BR mlockall ()
and
@@ -356,7 +356,7 @@ software has erased the secrets in RAM and terminated.
(But be aware that the suspend mode on laptops and some desktop
computers will save a copy of the system's RAM to disk, regardless
of memory locks.)
-.PP
+.P
Real-time processes that are using
.BR mlockall ()
to prevent delays on page faults should reserve enough
@@ -369,7 +369,7 @@ This way, enough pages will be mapped for the stack and can be
locked into RAM.
The dummy writes ensure that not even copy-on-write
page faults can occur in the critical section.
-.PP
+.P
Memory locks are not inherited by a child created via
.BR fork (2)
and are automatically removed (unlocked) during an
@@ -384,7 +384,7 @@ settings are not inherited by a child created via
.BR fork (2)
and are cleared during an
.BR execve (2).
-.PP
+.P
Note that
.BR fork (2)
will prepare the address space for a copy-on-write operation.
@@ -398,11 +398,11 @@ or
.BR mlock ()
operation\[em]not even from a thread which runs at a low priority within
a process which also has a thread running at elevated priority.
-.PP
+.P
The memory lock on an address range is automatically removed
if the address range is unmapped via
.BR munmap (2).
-.PP
+.P
Memory locks do not stack, that is, pages which have been locked several times
by calls to
.BR mlock (),
@@ -416,7 +416,7 @@ for the corresponding range or by
Pages which are mapped to several locations or by several processes stay
locked into RAM as long as they are locked at least at one location or by
at least one process.
-.PP
+.P
If a call to
.BR mlockall ()
which uses the
@@ -425,7 +425,7 @@ flag is followed by another call that does not specify this flag, the
changes made by the
.B MCL_FUTURE
call will be lost.
-.PP
+.P
The
.BR mlock2 ()
.B MLOCK_ONFAULT
@@ -443,7 +443,7 @@ a process must be privileged
in order to lock memory and the
.B RLIMIT_MEMLOCK
soft resource limit defines a limit on how much memory the process may lock.
-.PP
+.P
Since Linux 2.6.9, no limits are placed on the amount of memory
that a privileged process can lock and the
.B RLIMIT_MEMLOCK
@@ -472,7 +472,7 @@ would fail on requests that should have succeeded.
This bug was fixed
.\" commit 0cf2f6f6dc605e587d2c1120f295934c77e810e8
in Linux 4.9.
-.PP
+.P
In Linux 2.4 series of kernels up to and including Linux 2.4.17,
a bug caused the
.BR mlockall ()
@@ -480,7 +480,7 @@ a bug caused the
flag to be inherited across a
.BR fork (2).
This was rectified in Linux 2.4.18.
-.PP
+.P
Since Linux 2.6.9, if a privileged process calls
.I mlockall(MCL_FUTURE)
and later drops privileges (loses the
diff --git a/man2/mmap.2 b/man2/mmap.2
index 3d9a887..300eb2b 100644
--- a/man2/mmap.2
+++ b/man2/mmap.2
@@ -18,7 +18,7 @@
.\" 2007-07-10, mtk, Added an example program.
.\" 2008-11-18, mtk, document MAP_STACK
.\"
-.TH mmap 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH mmap 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mmap, munmap \- map or unmap files or devices into memory
.SH LIBRARY
@@ -27,13 +27,13 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/mman.h>
-.PP
+.P
.BI "void *mmap(void " addr [. length "], size_t " length \
", int " prot ", int " flags ,
.BI " int " fd ", off_t " offset );
.BI "int munmap(void " addr [. length "], size_t " length );
.fi
-.PP
+.P
See NOTES for information on feature test macro requirements.
.SH DESCRIPTION
.BR mmap ()
@@ -44,7 +44,7 @@ The starting address for the new mapping is specified in
The
.I length
argument specifies the length of the mapping (which must be greater than 0).
-.PP
+.P
If
.I addr
is NULL,
@@ -64,7 +64,7 @@ may or may not depend on the hint.
.\" Before Linux 2.6.24, the address was rounded up to the next page
.\" boundary; since Linux 2.6.24, it is rounded down!
The address of the new mapping is returned as the result of the call.
-.PP
+.P
The contents of a file mapping (as opposed to an anonymous mapping; see
.B MAP_ANONYMOUS
below), are initialized using
@@ -76,13 +76,13 @@ in the file (or other object) referred to by the file descriptor
.I offset
must be a multiple of the page size as returned by
.IR sysconf(_SC_PAGE_SIZE) .
-.PP
+.P
After the
.BR mmap ()
call has returned, the file descriptor,
.IR fd ,
can be closed immediately without invalidating the mapping.
-.PP
+.P
The
.I prot
argument describes the desired memory protection of the mapping
@@ -147,7 +147,7 @@ the underlying file.
It is unspecified whether changes made to the file after the
.BR mmap ()
call are visible in the mapped region.
-.PP
+.P
Both
.B MAP_SHARED
and
@@ -155,7 +155,7 @@ and
are described in POSIX.1-2001 and POSIX.1-2008.
.B MAP_SHARED_VALIDATE
is a Linux extension.
-.PP
+.P
In addition, zero or more of the following values can be ORed in
.IR flags :
.TP
@@ -299,7 +299,9 @@ See the Linux kernel source file
.I Documentation/admin\-guide/mm/hugetlbpage.rst
for further information, as well as NOTES, below.
.TP
-.BR MAP_HUGE_2MB ", " MAP_HUGE_1GB " (since Linux 3.8)"
+.B MAP_HUGE_2MB
+.TQ
+.BR MAP_HUGE_1GB " (since Linux 3.8)"
.\" See https://lwn.net/Articles/533499/
Used in conjunction with
.B MAP_HUGETLB
@@ -443,7 +445,7 @@ option.
Because of the security implications,
that option is normally enabled only on embedded devices
(i.e., devices where one has complete control of the contents of user memory).
-.PP
+.P
Of the above flags, only
.B MAP_FIXED
is specified in POSIX.1-2001 and POSIX.1-2008.
@@ -465,7 +467,7 @@ The region is also automatically unmapped
when the process is terminated.
On the other hand, closing the file
descriptor does not unmap the region.
-.PP
+.P
The address
.I addr
must be a multiple of the page size (but
@@ -488,7 +490,7 @@ On error, the value
is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
On success,
.BR munmap ()
returns 0.
@@ -629,13 +631,14 @@ and is not a member of the
group; see the description of
.I /proc/sys/vm/sysctl_hugetlb_shm_group
in
+.BR proc_sys (5).
.TP
.B ETXTBSY
.B MAP_DENYWRITE
was set but the object specified by
.I fd
is open for writing.
-.PP
+.P
Use of a mapped region can result in these signals:
.TP
.B SIGSEGV
@@ -662,7 +665,6 @@ T{
.BR munmap ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH VERSIONS
On some hardware architectures (e.g., i386),
.B PROT_WRITE
@@ -676,7 +678,7 @@ or not.
Portable programs should always set
.B PROT_EXEC
if they intend to execute code in the new mapping.
-.PP
+.P
The portable way to create a mapping is to specify
.I addr
as 0 (NULL), and omit
@@ -691,7 +693,7 @@ If the
flag is specified, and
.I addr
is 0 (NULL), then the mapped address will be 0 (NULL).
-.PP
+.P
Certain
.I flags
constants are defined only if suitable feature test macros are defined
@@ -745,7 +747,7 @@ POSIX.1-2008.
POSIX.1-2001, SVr4, 4.4BSD.
.\" SVr4 documents additional error codes ENXIO and ENODEV.
.\" SUSv2 documents additional error codes EMFILE and EOVERFLOW.
-.PP
+.P
On POSIX systems on which
.BR mmap (),
.BR msync (2),
@@ -765,7 +767,7 @@ Memory mapped by
is preserved across
.BR fork (2),
with the same attributes.
-.PP
+.P
A file is mapped in multiples of the page size.
For a file that is not
a multiple of the page size,
@@ -775,7 +777,7 @@ and modifications to that region are not written out to the file.
The effect of
changing the size of the underlying file of a mapping on the pages that
correspond to added or removed regions of the file is unspecified.
-.PP
+.P
An application can determine which pages of a mapping are
currently resident in the buffer/page cache using
.BR mincore (2).
@@ -792,7 +794,7 @@ otherwise, the use of
.B MAP_FIXED
is hazardous because it forcibly removes preexisting mappings,
making it easy for a multithreaded process to corrupt its own address space.
-.PP
+.P
For example, suppose that thread A looks through
.IR /proc/ pid /maps
in order to locate an unused address range that it can map using
@@ -820,7 +822,7 @@ Examples include
and the PAM libraries
.UR http://www.linux-pam.org
.UE .
-.PP
+.P
Since Linux 4.17, a multithreaded program can use the
.B MAP_FIXED_NOREPLACE
flag to avoid the hazard described above
@@ -834,7 +836,7 @@ field for the mapped file may be updated at any time between the
.BR mmap ()
and the corresponding unmapping; the first reference to a mapped
page will update the field if it has not been already.
-.PP
+.P
The
.I st_ctime
and
@@ -859,7 +861,7 @@ and
.BR munmap ()
differ somewhat from the requirements for mappings
that use the native system page size.
-.PP
+.P
For
.BR mmap (),
.I offset
@@ -867,7 +869,7 @@ must be a multiple of the underlying huge page size.
The system automatically aligns
.I length
to be a multiple of the underlying huge page size.
-.PP
+.P
For
.BR munmap (),
.IR addr ,
@@ -880,14 +882,14 @@ On Linux, there are no guarantees like those suggested above under
.BR MAP_NORESERVE .
By default, any process can be killed
at any moment when the system runs out of memory.
-.PP
+.P
Before Linux 2.6.7, the
.B MAP_POPULATE
flag has effect only if
.I prot
is specified as
.BR PROT_NONE .
-.PP
+.P
SUSv3 specifies that
.BR mmap ()
should fail if
@@ -902,7 +904,7 @@ Since Linux 2.6.12,
fails with the error
.B EINVAL
for this case.
-.PP
+.P
POSIX specifies that the system shall always
zero fill any partial page at the end
of the object and that system will never write any modification of the
@@ -1021,14 +1023,14 @@ main(int argc, char *argv[])
.BR userfaultfd (2),
.BR shm_open (3),
.BR shm_overview (7)
-.PP
+.P
The descriptions of the following files in
.BR proc (5):
.IR /proc/ pid /maps ,
.IR /proc/ pid /map_files ,
and
.IR /proc/ pid /smaps .
-.PP
+.P
B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\[en]129 and 389\[en]391.
.\"
.\" Repeat after me: private read-only mappings are 100% equivalent to
diff --git a/man2/mmap2.2 b/man2/mmap2.2
index e1704e3..e406c20 100644
--- a/man2/mmap2.2
+++ b/man2/mmap2.2
@@ -6,7 +6,7 @@
.\" Added description of mmap2
.\" Modified, 2004-11-25, mtk -- removed stray #endif in prototype
.\"
-.TH mmap2 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH mmap2 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mmap2 \- map files or devices into memory
.SH LIBRARY
@@ -17,7 +17,7 @@ Standard C library
.BR "#include <sys/mman.h>" " /* Definition of " MAP_* " and " PROT_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "void *syscall(SYS_mmap2, unsigned long " addr ", unsigned long " length ,
.BI " unsigned long " prot ", unsigned long " flags ,
.BI " unsigned long " fd ", unsigned long " pgoffset );
@@ -26,7 +26,7 @@ Standard C library
This is probably not the system call that you are interested in; instead, see
.BR mmap (2),
which describes the glibc wrapper function that invokes this system call.
-.PP
+.P
The
.BR mmap2 ()
system call provides the same interface as
@@ -53,7 +53,7 @@ Problem with getting the data from user space.
(Various platforms where the page size is not 4096 bytes.)
.I "offset\ *\ 4096"
is not a multiple of the system page size.
-.PP
+.P
.BR mmap2 ()
can also return any of the errors described in
.BR mmap (2).
@@ -64,9 +64,9 @@ the glibc
wrapper function invokes this system call rather than the
.BR mmap (2)
system call.
-.PP
+.P
This system call does not exist on x86-64.
-.PP
+.P
On ia64, the unit for
.I offset
is actually the system page size, rather than 4096 bytes.
diff --git a/man2/modify_ldt.2 b/man2/modify_ldt.2
index 0364289..7ef2722 100644
--- a/man2/modify_ldt.2
+++ b/man2/modify_ldt.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH modify_ldt 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH modify_ldt 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
modify_ldt \- get or set a per-process LDT entry
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.BR "#include <asm/ldt.h>" " /* Definition of " "struct user_desc" " */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_modify_ldt, int " func ", void " ptr [. bytecount ],
.BI " unsigned long " bytecount );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR modify_ldt (),
@@ -32,7 +32,7 @@ is an array of segment descriptors that can be referenced by user code.
Linux allows processes to configure a per-process (actually per-mm) LDT.
For more information about the LDT, see the Intel Software Developer's
Manual or the AMD Architecture Programming Manual.
-.PP
+.P
When
.I func
is 0,
@@ -46,7 +46,7 @@ the LDT is padded with additional trailing zero bytes.
On success,
.BR modify_ldt ()
will return the number of bytes read.
-.PP
+.P
When
.I func
is 1 or 0x11,
@@ -60,11 +60,11 @@ structure
and
.I bytecount
must equal the size of this structure.
-.PP
+.P
The
.I user_desc
structure is defined in \fI<asm/ldt.h>\fP as:
-.PP
+.P
.in +4n
.EX
struct user_desc {
@@ -80,10 +80,10 @@ struct user_desc {
};
.EE
.in
-.PP
+.P
In Linux 2.4 and earlier, this structure was named
.IR modify_ldt_ldt_s .
-.PP
+.P
The
.I contents
field is the segment type (data, expand-down data, non-conforming code, or
@@ -91,7 +91,7 @@ conforming code).
The other fields match their descriptions in the CPU manual, although
.BR modify_ldt ()
cannot set the hardware-defined "accessed" bit described in the CPU manual.
-.PP
+.P
A
.I user_desc
is considered "empty" if
@@ -108,7 +108,7 @@ is 1, by setting both
and
.I limit
to 0.
-.PP
+.P
A conforming code segment (i.e., one with
.IR contents==3 )
will be rejected if
@@ -117,7 +117,7 @@ func
is 1 or if
.I seg_not_present
is 0.
-.PP
+.P
When
.I func
is 2,
@@ -168,12 +168,12 @@ or
.BR arch_prctl (2)
instead, except on extremely old kernels that do not support those system
calls.
-.PP
+.P
The normal use for
.BR modify_ldt ()
is to run legacy 16-bit or segmented 32-bit code.
Not all kernels allow 16-bit segments to be installed, however.
-.PP
+.P
Even on 64-bit kernels,
.BR modify_ldt ()
cannot be used to create a long mode (i.e., 64-bit) code segment.
diff --git a/man2/mount.2 b/man2/mount.2
index 916b68c..f2511c4 100644
--- a/man2/mount.2
+++ b/man2/mount.2
@@ -17,7 +17,7 @@
.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
.\" 2008-10-06, mtk: Add discussion of namespaces.
.\"
-.TH mount 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH mount 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mount \- mount filesystem
.SH LIBRARY
@@ -26,7 +26,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B "#include <sys/mount.h>"
-.PP
+.P
.BI "int mount(const char *" source ", const char *" target ,
.BI " const char *" filesystemtype ", unsigned long " mountflags ,
.BI " const void *_Nullable " data );
@@ -40,11 +40,11 @@ but can also be the pathname of a directory or file,
or a dummy string) to the location (a directory or file)
specified by the pathname in
.IR target .
-.PP
+.P
Appropriate privilege (Linux: the
.B CAP_SYS_ADMIN
capability) is required to mount filesystems.
-.PP
+.P
Values for the
.I filesystemtype
argument supported by the kernel are listed in
@@ -53,7 +53,7 @@ argument supported by the kernel are listed in
"tmpfs", "cgroup", "proc", "mqueue", "nfs", "cifs", "iso9660").
Further types may become available when the appropriate modules
are loaded.
-.PP
+.P
The
.I data
argument is interpreted by the different filesystems.
@@ -63,7 +63,7 @@ See
.BR mount (8)
for details of the options available for each filesystem type.
This argument may be specified as NULL, if there are no options.
-.PP
+.P
A call to
.BR mount ()
performs one of a number of general types of operation,
@@ -101,7 +101,7 @@ includes
Create a new mount:
.I mountflags
includes none of the above flags.
-.PP
+.P
Each of these operations is detailed later in this page.
Further flags may be specified in
.I mountflags
@@ -284,13 +284,13 @@ and
and
.BR realpath (3)
all still work properly.
-.PP
+.P
From Linux 2.4 onward, some of the above flags are
settable on a per-mount basis,
while others apply to the superblock of the mounted filesystem,
meaning that all mounts of the same filesystem share those flags.
(Previously, all of the flags were per-superblock.)
-.PP
+.P
The per-mount-point flags are as follows:
.IP \[bu] 3
Since Linux 2.4:
@@ -304,7 +304,7 @@ and
.IP \[bu]
Additionally, since Linux 2.6.20:
.BR MS_RELATIME .
-.PP
+.P
The following flags are per-superblock:
.BR MS_DIRSYNC ,
.BR MS_LAZYTIME ,
@@ -320,7 +320,7 @@ Subsequently, the settings of the flags can be changed
via a remount operation (see below).
Such changes will be visible via all mounts associated
with the filesystem.
-.PP
+.P
Since Linux 2.6.16,
.B MS_RDONLY
can be set or cleared on a per-mount-point basis as well as on
@@ -342,13 +342,13 @@ of an existing mount without having to unmount and remount the filesystem.
should be the same value specified in the initial
.BR mount ()
call.
-.PP
+.P
The
.I source
and
.I filesystemtype
arguments are ignored.
-.PP
+.P
The
.I mountflags
and
@@ -356,7 +356,7 @@ and
arguments should match the values used in the original
.BR mount ()
call, except for those parameters that are being deliberately changed.
-.PP
+.P
The following
.I mountflags
can be changed:
@@ -398,7 +398,7 @@ flags during a remount are silently ignored.
Note that changes to per-superblock flags are visible via
all mounts of the associated filesystem
(because the per-superblock flags are shared by all mounts).
-.PP
+.P
Since Linux 3.17,
.\" commit ffbc6f0ead47fa5a1dc9642b0331cb75c20a640e
if none of
@@ -412,7 +412,7 @@ is specified in
then the remount operation preserves the existing values of these flags
(rather than defaulting to
.BR MS_RELATIME ).
-.PP
+.P
Since Linux 2.6.26, the
.B MS_REMOUNT
flag can be used with
@@ -424,13 +424,13 @@ flag on a mount without changing the underlying filesystem.
Specifying
.I mountflags
as:
-.PP
+.P
.in +4n
.EX
MS_REMOUNT | MS_BIND | MS_RDONLY
.EE
.in
-.PP
+.P
will make access through this mountpoint read-only, without affecting
other mounts.
.\"
@@ -447,13 +447,13 @@ another point within the single directory hierarchy.
Bind mounts may cross filesystem boundaries and span
.BR chroot (2)
jails.
-.PP
+.P
The
.I filesystemtype
and
.I data
arguments are ignored.
-.PP
+.P
The remaining bits (other than
.BR MS_REC ,
described below) in the
@@ -463,7 +463,7 @@ argument are also ignored.
the underlying mount.)
However, see the discussion of remounting above,
for a method of making an existing bind mount read-only.
-.PP
+.P
By default, when a directory is bind mounted,
only that directory is mounted;
if there are any submounts under the directory tree,
@@ -490,21 +490,21 @@ or
(all available since Linux 2.6.15),
then the propagation type of an existing mount is changed.
If more than one of these flags is specified, an error results.
-.PP
+.P
The only other flags that can be specified while changing
the propagation type are
.B MS_REC
(described below) and
.B MS_SILENT
(which is ignored).
-.PP
+.P
The
.IR source ,
.IR filesystemtype ,
and
.I data
arguments are ignored.
-.PP
+.P
The meanings of the propagation type flags are as follows:
.TP
.B MS_SHARED
@@ -550,7 +550,7 @@ flags) is performed on a directory subtree,
any unbindable mounts within the subtree are automatically pruned
(i.e., not replicated)
when replicating that subtree to produce the target subtree.
-.PP
+.P
By default, changing the propagation type affects only the
.I target
mount.
@@ -561,7 +561,7 @@ flag is also specified in
then the propagation type of all mounts under
.I target
is also changed.
-.PP
+.P
For further details regarding mount propagation types
(including the default propagation type assigned to new mounts), see
.BR mount_namespaces (7).
@@ -578,7 +578,7 @@ specifies an existing mount and
.I target
specifies the new location to which that mount is to be relocated.
The move is atomic: at no point is the subtree unmounted.
-.PP
+.P
The remaining bits in the
.I mountflags
argument are ignored, as are the
@@ -606,7 +606,7 @@ performs its default action: creating a new mount.
specifies the source for the new mount, and
.I target
specifies the directory at which to create the mount point.
-.PP
+.P
The
.I filesystemtype
and
@@ -847,12 +847,12 @@ The definitions of
and
.B MS_UNBINDABLE
were added to glibc headers in glibc 2.12.
-.PP
+.P
Since Linux 2.4 a single filesystem can be mounted at
multiple mount points, and multiple mounts can be stacked
on the same mount point.
.\" Multiple mounts on same mount point: since Linux 2.3.99pre7.
-.PP
+.P
The
.I mountflags
argument may have the magic number 0xC0ED (\fBMS_MGC_VAL\fP)
@@ -864,7 +864,7 @@ Specifying
.B MS_MGC_VAL
was required before Linux 2.4,
but since Linux 2.4 is no longer required and is ignored if specified.
-.PP
+.P
The original
.B MS_SYNC
flag was renamed
@@ -873,7 +873,7 @@ in 1.1.69
when a different
.B MS_SYNC
was added to \fI<mman.h>\fP.
-.PP
+.P
Before Linux 2.4 an attempt to execute a set-user-ID or set-group-ID program
on a filesystem mounted with
.B MS_NOSUID
@@ -894,13 +894,13 @@ and changes to the namespace (i.e., mounts and unmounts) by one process
are visible to all other processes sharing the same namespace.
(The pre-2.4.19 Linux situation can be considered as one in which
a single namespace was shared by every process on the system.)
-.PP
+.P
A child process created by
.BR fork (2)
shares its parent's mount namespace;
the mount namespace is preserved across an
.BR execve (2).
-.PP
+.P
A process can obtain a private mount namespace if:
it was created using the
.BR clone (2)
@@ -920,7 +920,7 @@ of the namespace that it was previously sharing with other processes,
so that future mounts and unmounts by the caller are invisible
to other processes (except child processes that the caller
subsequently creates) and vice versa.
-.PP
+.P
For further details on mount namespaces, see
.BR mount_namespaces (7).
.\"
@@ -928,7 +928,7 @@ For further details on mount namespaces, see
Each mount has a parent mount.
The overall parental relationship of all mounts defines
the single directory hierarchy seen by the processes within a mount namespace.
-.PP
+.P
The parent of a new mount is defined when the mount is created.
In the usual case,
the parent of a new mount is the mount of the filesystem
@@ -936,7 +936,7 @@ containing the directory or file at which the new mount is attached.
In the case where a new mount is stacked on top of an existing mount,
the parent of the new mount is the previous mount that was stacked
at that location.
-.PP
+.P
The parental relationship between mounts can be discovered via the
.IR /proc/ pid /mountinfo
file (see below).
diff --git a/man2/mount_setattr.2 b/man2/mount_setattr.2
index fafaba2..d59994b 100644
--- a/man2/mount_setattr.2
+++ b/man2/mount_setattr.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mount_setattr 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH mount_setattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mount_setattr \- change properties of a mount or mount tree
.SH LIBRARY
@@ -14,12 +14,12 @@ Standard C library
.BR "#include <linux/mount.h>" " /* Definition of " MOUNT_ATTR_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_mount_setattr, int " dirfd ", const char *" pathname ,
.BI " unsigned int " flags ", struct mount_attr *" attr \
", size_t " size );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR mount_setattr (),
@@ -57,7 +57,7 @@ are changed.
for an explanation of why the
.I dirfd
argument is useful.)
-.PP
+.P
The
.BR mount_setattr ()
system call uses an extensible structure
@@ -75,7 +75,7 @@ zero-fill this structure on initialization.
See the "Extensibility" subsection under
.B NOTES
for more details.
-.PP
+.P
The
.I size
argument should usually be specified as
@@ -96,7 +96,7 @@ For example, the macro for the size of the initial version of
.I struct mount_attr
is
.BR MOUNT_ATTR_SIZE_VER0 .
-.PP
+.P
The
.I flags
argument can be used to alter the pathname resolution behavior.
@@ -118,13 +118,13 @@ Don't follow trailing symbolic links.
.TP
.B AT_NO_AUTOMOUNT
Don't trigger automounts.
-.PP
+.P
The
.I attr
argument of
.BR mount_setattr ()
is a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct mount_attr {
@@ -135,7 +135,7 @@ struct mount_attr {
};
.EE
.in
-.PP
+.P
The
.I attr_set
and
@@ -148,7 +148,7 @@ enable a property on a mount or mount tree,
and flags set in
.I attr_clr
remove a property from a mount or mount tree.
-.PP
+.P
When changing mount properties,
the kernel will first clear the flags specified
in the
@@ -158,7 +158,7 @@ and then set the flags specified in the
.I attr_set
field.
For example, these settings:
-.PP
+.P
.in +4n
.EX
struct mount_attr attr = {
@@ -167,9 +167,9 @@ struct mount_attr attr = {
};
.EE
.in
-.PP
+.P
are equivalent to the following steps:
-.PP
+.P
.in +4n
.EX
unsigned int current_mnt_flags = mnt\->mnt_flags;
@@ -189,18 +189,18 @@ current_mnt_flags |= attr\->attr_set;
mnt\->mnt_flags = current_mnt_flags;
.EE
.in
-.PP
+.P
As a result of this change, the mount or mount tree (a) is read-only;
(b) blocks the execution of set-user-ID and set-group-ID programs;
(c) allows execution of programs; and (d) allows access to devices.
-.PP
+.P
Multiple changes with the same set of flags requested
in
.I attr_clr
and
.I attr_set
are guaranteed to be idempotent after the changes have been applied.
-.PP
+.P
The following mount attributes can be specified in the
.I attr_set
or
@@ -361,7 +361,7 @@ in
.IR attr_clr .
.IP
For further details, see the subsection "ID-mapped mounts" under NOTES.
-.PP
+.P
The
.I propagation
field is used to specify the propagation type of the mount or mount tree.
@@ -380,7 +380,7 @@ Turn all mounts into dependent mounts.
.TP
.B MS_UNBINDABLE
Turn all mounts into unbindable mounts.
-.PP
+.P
For further details on the above propagation types, see
.BR mount_namespaces (7).
.SH RETURN VALUE
@@ -597,7 +597,7 @@ visible only via a specific mount.
All other users and locations where the filesystem is exposed are unaffected.
It is a temporary change because
the ownership changes are tied to the lifetime of the mount.
-.PP
+.P
Whenever callers interact with the filesystem through an ID-mapped mount,
the ID mapping of the mount will be applied to
user and group IDs associated with filesystem objects.
@@ -623,7 +623,7 @@ whenever user IDs or group IDs are stored in
or
.B ACL_GROUP
entries.
-.PP
+.P
The following conditions must be met in order to create an ID-mapped mount:
.IP \[bu] 3
The caller must have the
@@ -687,7 +687,7 @@ flag and it must not already have been visible in a mount namespace.
the mount must not have been attached to the filesystem hierarchy
with a system call such as
.BR move_mount (2).)
-.PP
+.P
ID mappings can be created for user IDs, group IDs, and project IDs.
An ID mapping is essentially a mapping of a range of user or group IDs into
another or the same range of user or group IDs.
@@ -702,15 +702,15 @@ user ID 1000 in the caller's user namespace is mapped to
user ID 1001 in its ancestor user namespace.
Since the map range is 1,
only user ID 1000 is mapped.
-.PP
+.P
It is possible to specify up to 340 ID mappings for each ID mapping type.
If any user IDs or group IDs are not mapped,
all files owned by that unmapped user or group ID will appear as
being owned by the overflow user ID or overflow group ID respectively.
-.PP
+.P
Further details on setting up ID mappings can be found in
.BR user_namespaces (7).
-.PP
+.P
In the common case, the user namespace passed in
.I userns_fd
(together with
@@ -723,7 +723,7 @@ a user's login session as is the case for portable home directories in
.BR systemd-homed.service (8)).
It is also perfectly fine to create a dedicated user namespace
for the sake of ID mapping a mount.
-.PP
+.P
ID-mapped mounts can be useful in the following
and a variety of other scenarios:
.IP \[bu] 3
@@ -808,7 +808,7 @@ This extensibility design is very similar to other system calls such as
.BR clone3 (2)
and
.BR openat2 (2).
-.PP
+.P
Let
.I usize
be the size of the structure as specified by the user-space application,
@@ -852,7 +852,7 @@ then \-1 is returned and
is set to
.BR E2BIG .
This provides forwards-compatibility.
-.PP
+.P
Because the definition of
.I struct mount_attr
may change in the future
@@ -862,7 +862,7 @@ user-space applications should zero-fill
to ensure that recompiling the program with new headers will not result in
spurious errors at run time.
The simplest way is to use a designated initializer:
-.PP
+.P
.in +4n
.EX
struct mount_attr attr = {
@@ -871,11 +871,11 @@ struct mount_attr attr = {
};
.EE
.in
-.PP
+.P
Alternatively, the structure can be zero-filled using
.BR memset (3)
or similar functions:
-.PP
+.P
.in +4n
.EX
struct mount_attr attr;
@@ -884,7 +884,7 @@ attr.attr_set = MOUNT_ATTR_RDONLY;
attr.attr_clr = MOUNT_ATTR_NODEV;
.EE
.in
-.PP
+.P
A user-space application that wishes to determine which extensions the running
kernel supports can do so by conducting a binary search on
.I size
diff --git a/man2/move_pages.2 b/man2/move_pages.2
index c2be4bb..e9627d1 100644
--- a/man2/move_pages.2
+++ b/man2/move_pages.2
@@ -1,4 +1,4 @@
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft-2-para
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" This manpage is Copyright (C) 2006 Silicon Graphics, Inc.
.\" Christoph Lameter
@@ -8,7 +8,7 @@
.\" (e.g., compare with recommendation in mbind(2)).
.\" Does this page need to give advice on this topic?
.\"
-.TH move_pages 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH move_pages 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
move_pages \- move individual pages of a process to another node
.SH LIBRARY
@@ -17,7 +17,7 @@ NUMA (Non-Uniform Memory Access) policy library
.SH SYNOPSIS
.nf
.B #include <numaif.h>
-.PP
+.P
.BI "long move_pages(int " pid ", unsigned long " count ", \
void *" pages [. count ],
.BI " const int " nodes [. count "], int " status [. count "], \
@@ -36,7 +36,7 @@ The result of the move is reflected in
The
.I flags
indicate constraints on the pages to be moved.
-.PP
+.P
.I pid
is the ID of the process in which pages are to be moved.
If
@@ -44,7 +44,7 @@ If
is 0, then
.BR move_pages ()
moves pages of the calling process.
-.PP
+.P
To move pages in another process requires the following privileges:
.IP \[bu] 3
Up to and including Linux 4.12:
@@ -64,7 +64,7 @@ permission is governed by a ptrace access mode
.B PTRACE_MODE_READ_REALCREDS
check with respect to the target process; see
.BR ptrace (2).
-.PP
+.P
.I count
is the number of pages to move.
It defines the size of the three arrays
@@ -72,7 +72,7 @@ It defines the size of the three arrays
.IR nodes ,
and
.IR status .
-.PP
+.P
.I pages
is an array of pointers to the pages that should be moved.
These are pointers that should be aligned to page boundaries.
@@ -80,7 +80,7 @@ These are pointers that should be aligned to page boundaries.
.\" not aligned to page boundaries
Addresses are specified as seen by the process specified by
.IR pid .
-.PP
+.P
.I nodes
is an array of integers that specify the desired location for each page.
Each element in the array is a node number.
@@ -93,7 +93,7 @@ where each page currently resides, in the
array.
Obtaining the status of each page may be necessary to determine
pages that need to be moved.
-.PP
+.P
.I status
is an array of integers that return the status of each page.
The array contains valid values only if
@@ -102,7 +102,7 @@ did not return an error.
Preinitialization of the array to a value
which cannot represent a real numa node or valid error of status array
could help to identify pages that have been migrated.
-.PP
+.P
.I flags
specify what types of pages to move.
.B MPOL_MF_MOVE
@@ -214,7 +214,7 @@ Linux 2.6.18.
.SH NOTES
For information on library support, see
.BR numa (7).
-.PP
+.P
Use
.BR get_mempolicy (2)
with the
@@ -225,7 +225,7 @@ flag to obtain the set of nodes that are allowed by
the current cpuset.
Note that this information is subject to change at any
time by manual or automatic reconfiguration of the cpuset.
-.PP
+.P
Use of this function may result in pages whose location
(node) violates the memory policy established for the
specified addresses (See
@@ -235,7 +235,7 @@ and/or the specified process (See
That is, memory policy does not constrain the destination
nodes used by
.BR move_pages ().
-.PP
+.P
The
.I <numaif.h>
header is not included with glibc, but requires installing
diff --git a/man2/mprotect.2 b/man2/mprotect.2
index 22aa42b..91812f5 100644
--- a/man2/mprotect.2
+++ b/man2/mprotect.2
@@ -10,7 +10,7 @@
.\" 2007-06-02, mtk: Fairly substantial rewrites and additions, and
.\" a much improved example program.
.\"
-.TH mprotect 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH mprotect 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mprotect, pkey_mprotect \- set protection on a region of memory
.SH LIBRARY
@@ -19,12 +19,12 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/mman.h>
-.PP
+.P
.BI "int mprotect(void " addr [. len "], size_t " len ", int " prot );
-.PP
+.P
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/mman.h>
-.PP
+.P
.BI "int pkey_mprotect(void " addr [. len "], size_t " len ", int " prot ", int " pkey ");"
.fi
.SH DESCRIPTION
@@ -34,12 +34,12 @@ containing any part of the address range in the
interval [\fIaddr\fP,\ \fIaddr\fP+\fIlen\fP\-1].
.I addr
must be aligned to a page boundary.
-.PP
+.P
If the calling process tries to access memory in a manner
that violates the protections, then the kernel generates a
.B SIGSEGV
signal for the process.
-.PP
+.P
.I prot
is a combination of the following access flags:
.B PROT_NONE
@@ -74,7 +74,7 @@ This feature is specific to
the PowerPC architecture
(version 2.06 of the architecture specification adds the SAO CPU feature,
and it is available on POWER 7 or PowerPC A2, for example).
-.PP
+.P
Additionally (since Linux 2.6.0),
.I prot
can have one of the following flags set:
@@ -100,7 +100,7 @@ that grows downward
(which should be a stack segment or a segment mapped with the
.B MAP_GROWSDOWN
flag set).
-.PP
+.P
Like
.BR mprotect (),
.BR pkey_mprotect ()
@@ -199,14 +199,14 @@ POSIX says that the behavior of
is unspecified if it is applied to a region of memory that
was not obtained via
.BR mmap (2).
-.PP
+.P
On Linux, it is always permissible to call
.BR mprotect ()
on any address in a process's address space (except for the
kernel vsyscall area).
In particular, it can be used
to change existing code mappings to be writable.
-.PP
+.P
Whether
.B PROT_EXEC
has any effect different from
@@ -220,12 +220,12 @@ specifying
.B PROT_READ
will implicitly add
.BR PROT_EXEC .
-.PP
+.P
On some hardware architectures (e.g., i386),
.B PROT_WRITE
implies
.BR PROT_READ .
-.PP
+.P
POSIX.1 says that an implementation may permit access
other than that specified in
.IR prot ,
@@ -234,7 +234,7 @@ but at a minimum can allow write access only if
has been set, and must not allow any access if
.B PROT_NONE
has been set.
-.PP
+.P
Applications should be careful when mixing use of
.BR mprotect ()
and
@@ -247,7 +247,7 @@ set to
.B PROT_EXEC
a pkey may be allocated and set on the memory implicitly
by the kernel, but only when the pkey was 0 previously.
-.PP
+.P
On systems that do not support protection keys in hardware,
.BR pkey_mprotect ()
may still be used, but
@@ -280,10 +280,10 @@ The program below demonstrates the use of
The program allocates four pages of memory, makes the third
of these pages read-only, and then executes a loop that walks upward
through the allocated region modifying bytes.
-.PP
+.P
An example of what we might see when running the program is the
following:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./a.out"
diff --git a/man2/mq_getsetattr.2 b/man2/mq_getsetattr.2
index b47e264..0fca73b 100644
--- a/man2/mq_getsetattr.2
+++ b/man2/mq_getsetattr.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_getsetattr 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH mq_getsetattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
mq_getsetattr \- get/set message queue attributes
.SH SYNOPSIS
@@ -10,13 +10,13 @@ mq_getsetattr \- get/set message queue attributes
.BR "#include <mqueue.h>" " /* Definition of " "struct mq_attr" " */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_mq_getsetattr, mqd_t " mqdes ,
.BI " const struct mq_attr *" newattr ", struct mq_attr *" oldattr );
.fi
.SH DESCRIPTION
Do not use this system call.
-.PP
+.P
This is the low-level system call used to implement
.BR mq_getattr (3)
and
diff --git a/man2/mremap.2 b/man2/mremap.2
index f2b2b98..aa635dd 100644
--- a/man2/mremap.2
+++ b/man2/mremap.2
@@ -8,7 +8,7 @@
.\" Update for Linux 1.3.87 and later
.\" 2005-10-11 mtk: Added NOTES for MREMAP_FIXED; revised EINVAL text.
.\"
-.TH mremap 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH mremap 2 2024-01-16 "Linux man-pages 6.7"
.SH NAME
mremap \- remap a virtual memory address
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/mman.h>
-.PP
+.P
.BI "void *mremap(void " old_address [. old_size "], size_t " old_size ,
.BI " size_t " new_size ", int " flags ", ... /* void *" new_address " */);"
.fi
@@ -27,7 +27,7 @@ Standard C library
expands (or shrinks) an existing memory mapping, potentially
moving it at the same time (controlled by the \fIflags\fP argument and
the available virtual address space).
-.PP
+.P
\fIold_address\fP is the old address of the virtual memory block that you
want to expand (or shrink).
Note that \fIold_address\fP has to be page
@@ -41,11 +41,13 @@ An optional fifth argument,
may be provided; see the description of
.B MREMAP_FIXED
below.
-.PP
+.P
If the value of \fIold_size\fP is zero, and \fIold_address\fP refers to
-a shareable mapping (see
-.BR mmap (2)
-.BR MAP_SHARED ),
+a shareable mapping
+(see the description of
+.B MAP_SHARED
+in
+.BR mmap (2)),
then
.BR mremap ()
will create a new mapping of the same pages.
@@ -57,7 +59,7 @@ below.
If a new mapping is requested via this method, then the
.B MREMAP_MAYMOVE
flag must also be specified.
-.PP
+.P
The \fIflags\fP bit-mask argument may be 0, or include the following flags:
.TP
.B MREMAP_MAYMOVE
@@ -131,7 +133,7 @@ flag may be used to atomically move a mapping while leaving the source
mapped.
See NOTES for some possible applications of
.BR MREMAP_DONTUNMAP .
-.PP
+.P
If the memory segment specified by
.I old_address
and
@@ -248,7 +250,7 @@ Linux.
.\" 4.2BSD had a (never actually implemented)
.\" .BR mremap (2)
.\" call with completely different semantics.
-.\" .PP
+.\" .P
Prior to glibc 2.4, glibc did not expose the definition of
.BR MREMAP_FIXED ,
and the prototype for
@@ -262,7 +264,7 @@ changes the
mapping between virtual addresses and memory pages.
This can be used to implement a very efficient
.BR realloc (3).
-.PP
+.P
In Linux, memory is divided into pages.
A process has (one or)
several linear virtual memory segments.
@@ -276,7 +278,7 @@ if the memory is accessed incorrectly (e.g.,
writing to a read-only segment).
Accessing virtual memory outside of the
segments will also cause a segmentation violation.
-.PP
+.P
If
.BR mremap ()
is used to move or expand an area locked with
@@ -321,7 +323,10 @@ if
was zero and the mapping referred to by
.I old_address
was a private mapping
-.RB ( mmap "(2) " MAP_PRIVATE ),
+(see the description of
+.B MAP_PRIVATE
+in
+.BR mmap (2)),
.BR mremap ()
created a new private mapping unrelated to the original mapping.
This behavior was unintended
@@ -344,7 +349,7 @@ in this scenario.
.BR sbrk (2),
.BR malloc (3),
.BR realloc (3)
-.PP
+.P
Your favorite text book on operating systems
for more information on paged memory
(e.g., \fIModern Operating Systems\fP by Andrew S.\& Tanenbaum,
diff --git a/man2/msgctl.2 b/man2/msgctl.2
index b905b0f..27aca82 100644
--- a/man2/msgctl.2
+++ b/man2/msgctl.2
@@ -16,7 +16,7 @@
.\" 2005-08-02, mtk: Added IPC_INFO, MSG_INFO, MSG_STAT descriptions
.\" 2018-03-20, dbueso: Added MSG_STAT_ANY description.
.\"
-.TH msgctl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH msgctl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
msgctl \- System V message control operations
.SH LIBRARY
@@ -25,20 +25,20 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/msg.h>
-.PP
-.BI "int msgctl(int " msqid ", int " cmd ", struct msqid_ds *" buf );
+.P
+.BI "int msgctl(int " msqid ", int " op ", struct msqid_ds *" buf );
.fi
.SH DESCRIPTION
.BR msgctl ()
performs the control operation specified by
-.I cmd
+.I op
on the System\ V message queue with identifier
.IR msqid .
-.PP
+.P
The
.I msqid_ds
data structure is defined in \fI<sys/msg.h>\fP as follows:
-.PP
+.P
.in +4n
.EX
struct msqid_ds {
@@ -55,7 +55,7 @@ struct msqid_ds {
};
.EE
.in
-.PP
+.P
The fields of the
.I msqid_ds
structure are as follows:
@@ -102,13 +102,13 @@ system call.
ID of the process that performed the last
.BR msgrcv (2)
system call.
-.PP
+.P
The
.I ipc_perm
structure is defined as follows
(the highlighted fields are settable using
.BR IPC_SET ):
-.PP
+.P
.in +4n
.EX
struct ipc_perm {
@@ -122,7 +122,7 @@ struct ipc_perm {
};
.EE
.in
-.PP
+.P
The least significant 9 bits of the
.I mode
field of the
@@ -138,11 +138,11 @@ l l.
0004 Read by others
0002 Write by others
.TE
-.PP
+.P
Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.
-.PP
+.P
Valid values for
-.I cmd
+.I op
are:
.TP
.B IPC_STAT
@@ -312,7 +312,7 @@ or
.B MSG_STAT_ANY
operation returns the identifier of the queue whose index was given in
.IR msqid .
-.PP
+.P
On failure, \-1 is returned and
.I errno
is set to indicate the error.
@@ -320,7 +320,7 @@ is set to indicate the error.
.TP
.B EACCES
The argument
-.I cmd
+.I op
is equal to
.B IPC_STAT
or
@@ -333,7 +333,7 @@ capability in the user namespace that governs its IPC namespace.
.TP
.B EFAULT
The argument
-.I cmd
+.I op
has the value
.B IPC_SET
or
@@ -347,7 +347,7 @@ The message queue was removed.
.TP
.B EINVAL
Invalid value for
-.I cmd
+.I op
or
.IR msqid .
Or: for a
@@ -358,7 +358,7 @@ referred to an array slot that is currently unused.
.TP
.B EPERM
The argument
-.I cmd
+.I op
has the value
.B IPC_SET
or
@@ -389,7 +389,7 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4.
.\" SVID does not document the EIDRM error condition.
-.PP
+.P
Various fields in the \fIstruct msqid_ds\fP were
typed as
.I short
@@ -402,7 +402,7 @@ a recompilation under glibc-2.1.91 or later should suffice.
(The kernel distinguishes old and new calls by an
.B IPC_64
flag in
-.IR cmd .)
+.IR op .)
.SH NOTES
The
.BR IPC_INFO ,
diff --git a/man2/msgget.2 b/man2/msgget.2
index 0774f49..4a871d8 100644
--- a/man2/msgget.2
+++ b/man2/msgget.2
@@ -12,7 +12,7 @@
.\" Language and formatting clean-ups
.\" Added notes on /proc files
.\"
-.TH msgget 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH msgget 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
msgget \- get a System V message queue identifier
.SH LIBRARY
@@ -21,7 +21,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/msg.h>
-.PP
+.P
.BI "int msgget(key_t " key ", int " msgflg );
.fi
.SH DESCRIPTION
@@ -39,7 +39,7 @@ is zero and
does not have the value
.BR IPC_PRIVATE ),
or to create a new set.
-.PP
+.P
A new message queue is created if
.I key
has the value
@@ -54,7 +54,7 @@ exists, and
.B IPC_CREAT
is specified in
.IR msgflg .
-.PP
+.P
If
.I msgflg
specifies both
@@ -73,7 +73,7 @@ set to
.B O_CREAT | O_EXCL
for
.BR open (2).)
-.PP
+.P
Upon creation, the least significant bits of the argument
.I msgflg
define the permissions of the message queue.
@@ -83,7 +83,7 @@ as the permissions specified for the
argument of
.BR open (2).
(The execute permissions are not used.)
-.PP
+.P
If a new message queue is created,
then its associated data structure
.I msqid_ds
@@ -120,7 +120,7 @@ is set to the current time.
.I msg_qbytes
is set to the system limit
.BR MSGMNB .
-.PP
+.P
If the message queue already exists the permissions are
verified, and a check is made to see if it is marked for
destruction.
@@ -187,7 +187,7 @@ If this special value is used for
the system call ignores everything but the least significant 9 bits of
.I msgflg
and creates a new message queue (on success).
-.PP
+.P
The following is a system limit on message queue resources affecting a
.BR msgget ()
call:
diff --git a/man2/msgop.2 b/man2/msgop.2
index 381875e..e09c632 100644
--- a/man2/msgop.2
+++ b/man2/msgop.2
@@ -17,7 +17,7 @@
.\" Language and formatting clean-ups
.\" Added notes on /proc files
.\"
-.TH MSGOP 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH MSGOP 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
msgrcv, msgsnd \- System V message queue operations
.SH LIBRARY
@@ -26,10 +26,10 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/msg.h>
-.PP
+.P
.BI "int msgsnd(int " msqid ", const void " msgp [. msgsz "], size_t " msgsz ,
.BI " int " msgflg );
-.PP
+.P
.BI "ssize_t msgrcv(int " msqid ", void " msgp [. msgsz "], size_t " msgsz \
", long " msgtyp ,
.BI " int " msgflg );
@@ -43,12 +43,12 @@ system calls are used to send messages to,
and receive messages from, a System\ V message queue.
The calling process must have write permission on the message queue
in order to send a message, and read permission to receive a message.
-.PP
+.P
The
.I msgp
argument is a pointer to a caller-defined structure
of the following general form:
-.PP
+.P
.in +4n
.EX
struct msgbuf {
@@ -57,7 +57,7 @@ struct msgbuf {
};
.EE
.in
-.PP
+.P
The
.I mtext
field is an array (or other structure) whose size is specified by
@@ -82,7 +82,7 @@ system call appends a copy of the message pointed to by
to the message queue whose identifier is specified
by
.IR msqid .
-.PP
+.P
If sufficient space is available in the queue,
.BR msgsnd ()
succeeds immediately.
@@ -109,7 +109,7 @@ This check is necessary to prevent an unlimited number of zero-length
messages being placed on the queue.
Although such messages contain no data,
they nevertheless consume (locked) kernel memory.
-.PP
+.P
If insufficient space is available in the queue, then the default
behavior of
.BR msgsnd ()
@@ -120,7 +120,7 @@ is specified in
.IR msgflg ,
then the call instead fails with the error
.BR EAGAIN .
-.PP
+.P
A blocked
.BR msgsnd ()
call may also fail if:
@@ -143,7 +143,7 @@ is never automatically restarted after being interrupted by a
signal handler, regardless of the setting of the
.B SA_RESTART
flag when establishing a signal handler.)
-.PP
+.P
Upon successful completion the message queue data structure is updated
as follows:
.IP \[bu] 3
@@ -163,7 +163,7 @@ system call removes a message from the queue specified by
and places it in the buffer
pointed to by
.IR msgp .
-.PP
+.P
The argument
.I msgsz
specifies the maximum size in bytes for the member
@@ -189,7 +189,7 @@ the system call fails returning \-1 with
.I errno
set to
.BR E2BIG .
-.PP
+.P
Unless
.B MSG_COPY
is specified in
@@ -225,7 +225,7 @@ then the first message in the queue with the lowest type less than or
equal to the absolute value of
.I msgtyp
will be read.
-.PP
+.P
The
.I msgflg
argument is a bit mask constructed by ORing together zero or more
@@ -279,7 +279,7 @@ from
To truncate the message text if longer than
.I msgsz
bytes.
-.PP
+.P
If no message of the requested type is available and
.B IPC_NOWAIT
isn't specified in
@@ -304,7 +304,7 @@ is never automatically restarted after being interrupted by a
signal handler, regardless of the setting of the
.B SA_RESTART
flag when establishing a signal handler.)
-.PP
+.P
Upon successful completion the message queue data structure is updated
as follows:
.IP
@@ -372,7 +372,7 @@ value (less than 0 or greater than the system value
The system does not have enough memory to make a copy of the
message pointed to by
.IR msgp .
-.PP
+.P
.BR msgrcv ()
can fail with the following errors:
.TP
@@ -451,7 +451,7 @@ and this kernel was configured without
.BR CONFIG_CHECKPOINT_RESTORE .
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
The
.B MSG_EXCEPT
and
@@ -463,7 +463,7 @@ their definitions can be obtained by defining the
feature test macro.
.SH HISTORY
POSIX.1-2001, SVr4.
-.PP
+.P
The
.I msgp
argument is declared as \fIstruct msgbuf\ *\fP in
@@ -495,7 +495,7 @@ using the
.BR msgctl (2)
.B IPC_SET
operation.
-.PP
+.P
The implementation has no intrinsic system-wide limits on the
number of message headers
.RB ( MSGTQL )
@@ -521,7 +521,7 @@ of whether that message was at the ordinal position
This bug is fixed
.\" commit 4f87dac386cc43d5525da7a939d4b4e7edbea22c
in Linux 3.14.
-.PP
+.P
Specifying both
.B MSG_COPY
and
@@ -542,18 +542,18 @@ The program below demonstrates the use of
.BR msgsnd ()
and
.BR msgrcv ().
-.PP
+.P
The example program is first run with the \fB\-s\fP option to send a
message and then run again with the \fB\-r\fP option to receive a
message.
-.PP
+.P
The following shell session shows a sample run of the program:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./a.out \-s"
sent: a message at Wed Mar 4 16:25:45 2015
-.PP
+.P
.RB "$" " ./a.out \-r"
message received: a message at Wed Mar 4 16:25:45 2015
.EE
diff --git a/man2/msync.2 b/man2/msync.2
index baa328d..64dffbd 100644
--- a/man2/msync.2
+++ b/man2/msync.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH msync 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH msync 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
msync \- synchronize a file with a memory map
.SH LIBRARY
@@ -11,7 +11,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/mman.h>
-.PP
+.P
.BI "int msync(void " addr [. length "], size_t " length ", int " flags );
.fi
.SH DESCRIPTION
@@ -30,7 +30,7 @@ corresponds to the memory area starting at
and having length
.I length
is updated.
-.PP
+.P
The
.I flags
argument should specify exactly one of
@@ -112,14 +112,14 @@ in
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
-.PP
+.P
This call was introduced in Linux 1.3.21, and then used
.B EFAULT
instead of
.BR ENOMEM .
In Linux 2.4.19, this was changed to the POSIX value
.BR ENOMEM .
-.PP
+.P
On POSIX systems on which
.BR msync ()
is available, both
@@ -136,5 +136,5 @@ to a value greater than 0.
.\" glibc defines them to 1.
.SH SEE ALSO
.BR mmap (2)
-.PP
+.P
B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\[en]129 and 389\[en]391.
diff --git a/man2/nanosleep.2 b/man2/nanosleep.2
index 4693dc8..61242ea 100644
--- a/man2/nanosleep.2
+++ b/man2/nanosleep.2
@@ -12,7 +12,7 @@
.\" NOTES: describe case where clock_nanosleep() can be preferable.
.\" NOTES: describe CLOCK_REALTIME versus CLOCK_NANOSLEEP
.\" Replace crufty discussion of HZ with a pointer to time(7).
-.TH nanosleep 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH nanosleep 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
nanosleep \- high-resolution sleep
.SH LIBRARY
@@ -21,16 +21,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
-.BI "int nanosleep(const struct timespec *" req ,
+.P
+.BI "int nanosleep(const struct timespec *" duration ,
.BI " struct timespec *_Nullable " rem );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR nanosleep ():
.nf
_POSIX_C_SOURCE >= 199309L
@@ -39,11 +39,11 @@ Feature Test Macro Requirements for glibc (see
.BR nanosleep ()
suspends the execution of the calling thread
until either at least the time specified in
-.I *req
+.I *duration
has elapsed, or the delivery of a signal
that triggers the invocation of a handler in the calling thread or
that terminates the process.
-.PP
+.P
If the call is interrupted by a signal handler,
.BR nanosleep ()
returns \-1, sets
@@ -60,14 +60,14 @@ The value of
can then be used to call
.BR nanosleep ()
again and complete the specified pause (but see NOTES).
-.PP
+.P
The
.BR timespec (3)
structure
is used to specify intervals of time with nanosecond precision.
-.PP
+.P
The value of the nanoseconds field must be in the range [0, 999999999].
-.PP
+.P
Compared to
.BR sleep (3)
and
@@ -80,7 +80,7 @@ does not interact with signals;
and it makes the task of resuming a sleep that has been
interrupted by a signal handler easier.
.SH RETURN VALUE
-On successfully sleeping for the requested interval,
+On successfully sleeping for the requested duration,
.BR nanosleep ()
returns 0.
If the call is interrupted by a signal handler or encounters an error,
@@ -128,7 +128,7 @@ says that discontinuous changes in
should not affect
.BR nanosleep ():
.RS
-.PP
+.P
Setting the value of the
.B CLOCK_REALTIME
clock via
@@ -138,14 +138,15 @@ have no effect on threads that are blocked waiting for a relative time
service based upon this clock, including the
.BR nanosleep ()
function; ...
-Consequently, these time services shall expire when the requested relative
-interval elapses, independently of the new or old value of the clock.
+Consequently,
+these time services shall expire when the requested duration elapses,
+independently of the new or old value of the clock.
.RE
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
-.PP
+.P
In order to support applications requiring much more precise pauses
(e.g., in order to control some time-critical hardware),
.BR nanosleep ()
@@ -158,14 +159,14 @@ or
This special extension was removed in Linux 2.5.39,
and is thus not available in Linux 2.6.0 and later kernels.
.SH NOTES
-If the interval specified in
-.I req
+If the
+.I duration
is not an exact multiple of the granularity underlying clock (see
.BR time (7)),
then the interval will be rounded up to the next multiple.
Furthermore, after the sleep completes, there may still be a delay before
the CPU becomes free to once again execute the calling thread.
-.PP
+.P
The fact that
.BR nanosleep ()
sleeps for a relative interval can be problematic if the call
@@ -194,7 +195,7 @@ To avoid such problems, use
with the
.B TIMER_ABSTIME
flag to sleep to an absolute deadline.
-.PP
+.P
In Linux 2.4, if
.BR nanosleep ()
is stopped by a signal (e.g.,
diff --git a/man2/nfsservctl.2 b/man2/nfsservctl.2
index 5267f81..c0d4965 100644
--- a/man2/nfsservctl.2
+++ b/man2/nfsservctl.2
@@ -2,7 +2,7 @@
.\" This text is in the public domain.
.\" %%%LICENSE_END
.\"
-.TH nfsservctl 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH nfsservctl 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
nfsservctl \- syscall interface to kernel nfs daemon
.SH LIBRARY
@@ -11,7 +11,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <linux/nfsd/syscall.h>
-.PP
+.P
.BI "long nfsservctl(int " cmd ", struct nfsctl_arg *" argp ,
.BI " union nfsctl_res *" resp );
.fi
@@ -22,7 +22,7 @@ It has been replaced by a set of files in the
.I nfsd
filesystem; see
.BR nfsd (7).
-.PP
+.P
.in +4n
.EX
/*
diff --git a/man2/nice.2 b/man2/nice.2
index d26a1be..3e5854b 100644
--- a/man2/nice.2
+++ b/man2/nice.2
@@ -8,7 +8,7 @@
.\" Modified 2001-06-04 by aeb
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH nice 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH nice 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
nice \- change process priority
.SH LIBRARY
@@ -17,15 +17,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int nice(int " inc );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR nice ():
.nf
_XOPEN_SOURCE
@@ -38,10 +38,10 @@ adds
.I inc
to the nice value for the calling thread.
(A higher nice value means a lower priority.)
-.PP
+.P
The range of the nice value is +19 (low priority) to \-20 (high priority).
Attempts to set a nice value outside the range are clamped to the range.
-.PP
+.P
Traditionally, only a privileged process could lower the nice value
(i.e., set a higher priority).
However, since Linux 2.6.12, an unprivileged process can decrease
@@ -55,7 +55,7 @@ On success, the new nice value is returned (but see NOTES below).
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
A successful call can legitimately return \-1.
To detect an error, set
.I errno
@@ -85,7 +85,7 @@ However, the raw Linux system call returns 0 on success.
Likewise, the
.BR nice ()
wrapper function provided in glibc 2.2.3 and earlier returns 0 on success.
-.PP
+.P
Since glibc 2.2.4, the
.BR nice ()
wrapper function provided by glibc provides conformance to POSIX.1 by calling
@@ -101,7 +101,7 @@ POSIX.1-2001, SVr4, 4.3BSD.
.SH NOTES
For further details on the nice value, see
.BR sched (7).
-.PP
+.P
.IR Note :
the addition of the "autogroup" feature in Linux 2.6.38 means that
the nice value no longer has its traditional effect in many circumstances.
diff --git a/man2/open.2 b/man2/open.2
index 52286f6..a6982fa 100644
--- a/man2/open.2
+++ b/man2/open.2
@@ -28,7 +28,7 @@
.\" FIXME . Apr 08: The next POSIX revision has O_EXEC, O_SEARCH, and
.\" O_TTYINIT. Eventually these may need to be documented. --mtk
.\"
-.TH open 2 2023-05-20 "Linux man-pages 6.05.01"
+.TH open 2 2024-01-16 "Linux man-pages 6.7"
.SH NAME
open, openat, creat \- open and possibly create a file
.SH LIBRARY
@@ -37,25 +37,27 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <fcntl.h>
-.PP
+.P
.BI "int open(const char *" pathname ", int " flags ", ..."
.BI " \fR/*\fP mode_t " mode " \fR*/\fP );"
-.PP
+.P
.BI "int creat(const char *" pathname ", mode_t " mode );
-.PP
+.P
.BI "int openat(int " dirfd ", const char *" pathname ", int " flags ", ..."
.BI " \fR/*\fP mode_t " mode " \fR*/\fP );"
-.PP
-/* Documented separately, in \fBopenat2\fP(2): */
+.P
+/* Documented separately, in \c
+.BR openat2 (2):\c
+\& */
.BI "int openat2(int " dirfd ", const char *" pathname ,
.BI " const struct open_how *" how ", size_t " size );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR openat ():
.nf
Since glibc 2.10:
@@ -75,18 +77,23 @@ is specified in
.IR flags )
be created by
.BR open ().
-.PP
+.P
The return value of
.BR open ()
is a file descriptor, a small, nonnegative integer that is an index
to an entry in the process's table of open file descriptors.
The file descriptor is used
in subsequent system calls
-.RB ( read "(2), " write "(2), " lseek "(2), " fcntl (2),
-etc.) to refer to the open file.
+(\c
+.BR read (2),
+.BR write (2),
+.BR lseek (2),
+.BR fcntl (2),
+etc.)
+to refer to the open file.
The file descriptor returned by a successful call will be
the lowest-numbered file descriptor not currently open for the process.
-.PP
+.P
By default, the new file descriptor is set to remain open across an
.BR execve (2)
(i.e., the
@@ -98,7 +105,7 @@ is initially disabled); the
flag, described below, can be used to change this default.
The file offset is set to the beginning of the file (see
.BR lseek (2)).
-.PP
+.P
A call to
.BR open ()
creates a new
@@ -111,7 +118,7 @@ this reference is unaffected if
.I pathname
is subsequently removed or modified to refer to a different file.
For further details on open file descriptions, see NOTES.
-.PP
+.P
The argument
.I flags
must include one of the following
@@ -119,7 +126,7 @@ must include one of the following
.BR O_RDONLY ", " O_WRONLY ", or " O_RDWR .
These request opening the file read-only, write-only, or read/write,
respectively.
-.PP
+.P
In addition, zero or more file creation flags and file status flags
can be
bitwise ORed
@@ -159,7 +166,7 @@ The file status flags can be retrieved and (in some cases)
modified; see
.BR fcntl (2)
for details.
-.PP
+.P
The full list of file creation flags and file status flags is as follows:
.TP
.B O_APPEND
@@ -907,7 +914,7 @@ The
system call operates in exactly the same way as
.BR open (),
except for the differences described here.
-.PP
+.P
The
.I dirfd
argument is used in conjunction with the
@@ -948,7 +955,7 @@ must be a directory that was opened for reading
or using the
.B O_PATH
flag.
-.PP
+.P
If the pathname given in
.I pathname
is relative, and
@@ -1309,7 +1316,7 @@ Regardless of whether an implementation supports this option,
it must at least support the use of
.B O_SYNC
for regular files.
-.PP
+.P
Linux implements
.B O_SYNC
and
@@ -1324,7 +1331,7 @@ to have the same value as
is defined in the Linux header file
.I <asm/fcntl.h>
on HP PA-RISC, but it is not used.)
-.PP
+.P
.B O_SYNC
provides synchronized I/O
.I file
@@ -1342,7 +1349,7 @@ to allow a subsequent read operation to complete successfully.
Data integrity completion can reduce the number of disk operations
that are required for applications that don't need the guarantees
of file integrity completion.
-.PP
+.P
To understand the difference between the two types of completion,
consider two pieces of file metadata:
the file last modification timestamp
@@ -1359,7 +1366,7 @@ would only guarantee to flush updates to the file length metadata
(whereas
.B O_SYNC
would also always flush the last modification timestamp metadata).
-.PP
+.P
Before Linux 2.6.33, Linux implemented only the
.B O_SYNC
flag for
@@ -1371,7 +1378,7 @@ integrity completion (i.e.,
.B O_SYNC
was actually implemented as the equivalent of
.BR O_DSYNC ).
-.PP
+.P
Since Linux 2.6.33, proper
.B O_SYNC
support is provided.
@@ -1408,10 +1415,10 @@ For certain architectures, this is also true before glibc 2.26.
.TQ
.BR openat ()
POSIX.1-2008.
-.PP
+.P
.BR openat2 (2)
Linux.
-.PP
+.P
The
.BR O_DIRECT ,
.BR O_NOATIME ,
@@ -1422,7 +1429,7 @@ flags are Linux-specific.
One must define
.B _GNU_SOURCE
to obtain their definitions.
-.PP
+.P
The
.BR O_CLOEXEC ,
.BR O_DIRECTORY ,
@@ -1457,7 +1464,7 @@ For example,
this may be used to open a device in order to get a file descriptor
for use with
.BR ioctl (2).
-.PP
+.P
Note that
.BR open ()
can open device special files, but
@@ -1465,7 +1472,7 @@ can open device special files, but
cannot create them; use
.BR mknod (2)
instead.
-.PP
+.P
If the file is newly created, its
.IR st_atime ,
.IR st_ctime ,
@@ -1488,7 +1495,7 @@ flag, its
and
.I st_mtime
fields are set to the current time.
-.PP
+.P
The files in the
.IR /proc/ pid /fd
directory show the open file descriptors of the process with the PID
@@ -1499,7 +1506,7 @@ directory show even more information about these file descriptors.
See
.BR proc (5)
for further details of both of these directories.
-.PP
+.P
The Linux header file
.B <asm/fcntl.h>
doesn't define
@@ -1517,7 +1524,7 @@ variously also called an "open file object",
a "file handle", an "open file table entry",
or\[em]in kernel-developer parlance\[em]a
.IR "struct file" .
-.PP
+.P
When a file descriptor is duplicated (using
.BR dup (2)
or similar),
@@ -1530,13 +1537,13 @@ a child process created via
.BR fork (2)
inherits duplicates of its parent's file descriptors,
and those duplicates refer to the same open file descriptions.
-.PP
+.P
Each
.BR open ()
of a file creates a new open file description;
thus, there may be multiple open file descriptions
corresponding to a file inode.
-.PP
+.P
On Linux, one can use the
.BR kcmp (2)
.B KCMP_FILE
@@ -1548,7 +1555,7 @@ refer to the same open file description.
There are many infelicities in the protocol underlying NFS, affecting
amongst others
.BR O_SYNC " and " O_NDELAY .
-.PP
+.P
On NFS filesystems with UID mapping enabled,
.BR open ()
may
@@ -1587,7 +1594,7 @@ In other words, the combination
.B "O_RDONLY | O_WRONLY"
is a logical error, and certainly does not have the same meaning as
.BR O_RDWR .
-.PP
+.P
Linux reserves the special, nonstandard access mode 3 (binary 11) in
.I flags
to mean:
@@ -1639,7 +1646,7 @@ address two problems with the older interfaces that preceded them.
Here, the explanation is in terms of the
.BR openat ()
call, but the rationale is analogous for the other interfaces.
-.PP
+.P
First,
.BR openat ()
allows an application to avoid race conditions that could
@@ -1680,7 +1687,7 @@ even if the directory is renamed; and
the open file descriptor prevents the underlying filesystem from
being dismounted,
just as when a process has a current working directory on a filesystem.
-.PP
+.P
Second,
.BR openat ()
allows the implementation of a per-thread "current working
@@ -1689,7 +1696,7 @@ directory", via file descriptor(s) maintained by the application.
on the use of
.IR /proc/self/fd/ dirfd,
but less efficiently.)
-.PP
+.P
The
.I dirfd
argument for these APIs can be obtained by using
@@ -1705,7 +1712,7 @@ Alternatively, such a file descriptor can be obtained by applying
.BR dirfd (3)
to a directory stream created using
.BR opendir (3).
-.PP
+.P
When these APIs are given a
.I dirfd
argument of
@@ -1733,7 +1740,7 @@ I/Os also varies;
they can either fail with
.B EINVAL
or fall back to buffered I/O.
-.PP
+.P
Since Linux 6.1,
.B O_DIRECT
support and alignment restrictions for a file can be queried using
@@ -1746,7 +1753,7 @@ Support for
varies by filesystem;
see
.BR statx (2).
-.PP
+.P
Some filesystems provide their own interfaces for querying
.B O_DIRECT
alignment restrictions,
@@ -1756,7 +1763,7 @@ operation in
.BR xfsctl (3).
.B STATX_DIOALIGN
should be used instead when it is available.
-.PP
+.P
If none of the above is available,
then direct I/O support and alignment restrictions
can only be assumed from known characteristics of the filesystem,
@@ -1775,13 +1782,13 @@ A block device's logical block size can be determined using the
.BR ioctl (2)
.B BLKSSZGET
operation or from the shell using the command:
-.PP
+.P
.in +4n
.EX
blockdev \-\-getss
.EE
.in
-.PP
+.P
.B O_DIRECT
I/Os should never be run concurrently with the
.BR fork (2)
@@ -1815,7 +1822,7 @@ with
ensuring that it will not be available
to the child after
.BR fork (2).
-.PP
+.P
The
.B O_DIRECT
flag was introduced in SGI IRIX, where it has alignment
@@ -1825,7 +1832,7 @@ IRIX has also a
call to query appropriate alignments, and sizes.
FreeBSD 4.x introduced
a flag of the same name, but without alignment restrictions.
-.PP
+.P
.B O_DIRECT
support was added in Linux 2.4.10.
Older Linux kernels simply ignore this flag.
@@ -1834,7 +1841,7 @@ Some filesystems may not implement the flag, in which case
fails with the error
.B EINVAL
if it is used.
-.PP
+.P
Applications should avoid mixing
.B O_DIRECT
and normal I/O to the same file,
@@ -1845,7 +1852,7 @@ using either mode alone.
Likewise, applications should avoid mixing
.BR mmap (2)
of files with direct I/O to the same files.
-.PP
+.P
The behavior of
.B O_DIRECT
with NFS will differ from local filesystems.
@@ -1867,7 +1874,7 @@ in the event of server power failure.
The Linux NFS client places no alignment restrictions on
.B O_DIRECT
I/O.
-.PP
+.P
In summary,
.B O_DIRECT
is a potentially powerful tool that should be used with caution.
@@ -1885,7 +1892,7 @@ use
to enable this flag.
.\" FIXME . Check bugzilla report on open(O_ASYNC)
.\" See http://bugzilla.kernel.org/show_bug.cgi?id=5993
-.PP
+.P
One must check for two different error codes,
.B EISDIR
and
@@ -1893,7 +1900,7 @@ and
when trying to determine whether the kernel supports
.B O_TMPFILE
functionality.
-.PP
+.P
When both
.B O_CREAT
and
diff --git a/man2/open_by_handle_at.2 b/man2/open_by_handle_at.2
index b5e3d75..26bb9c2 100644
--- a/man2/open_by_handle_at.2
+++ b/man2/open_by_handle_at.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH open_by_handle_at 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH open_by_handle_at 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
name_to_handle_at, open_by_handle_at \- obtain handle
for a pathname and open file via a handle
@@ -13,7 +13,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <fcntl.h>
-.PP
+.P
.BI "int name_to_handle_at(int " dirfd ", const char *" pathname ,
.BI " struct file_handle *" handle ,
.BI " int *" mount_id ", int " flags );
@@ -48,7 +48,7 @@ arguments.
The file handle is returned via the argument
.IR handle ,
which is a pointer to a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct file_handle {
@@ -59,7 +59,7 @@ struct file_handle {
};
.EE
.in
-.PP
+.P
It is the caller's responsibility to allocate the structure
with a size large enough to hold the handle returned in
.IR f_handle .
@@ -78,7 +78,7 @@ Upon successful return, the
.I handle_bytes
field is updated to contain the number of bytes actually written to
.IR f_handle .
-.PP
+.P
The caller can discover the required size for the
.I file_handle
structure by making a call in which
@@ -100,7 +100,7 @@ This case can be detected when the
error is returned without
.I handle_bytes
being increased.
-.PP
+.P
Other than the use of the
.I handle_bytes
field, the caller should treat the
@@ -109,17 +109,44 @@ structure as an opaque data type: the
.I handle_type
and
.I f_handle
-fields are needed only by a subsequent call to
+fields can be used in a subsequent call to
.BR open_by_handle_at ().
-.PP
+The caller can also use the opaque
+.I file_handle
+to compare the identity of filesystem objects
+that were queried at different times and possibly
+at different paths.
+The
+.BR fanotify (7)
+subsystem can report events
+with an information record containing a
+.I file_handle
+to identify the filesystem object.
+.P
The
.I flags
argument is a bit mask constructed by ORing together zero or more of
-.B AT_EMPTY_PATH
+.BR AT_HANDLE_FID ,
+.BR AT_EMPTY_PATH ,
and
.BR AT_SYMLINK_FOLLOW ,
described below.
-.PP
+.P
+When
+.I flags
+contain the
+.BR AT_HANDLE_FID " (since Linux 6.5)"
+.\" commit 96b2b072ee62be8ae68c8ecf14854c4d0505a8f8
+flag, the caller indicates that the returned
+.I file_handle
+is needed to identify the filesystem object,
+and not for opening the file later,
+so it should be expected that a subsequent call to
+.BR open_by_handle_at ()
+with the returned
+.I file_handle
+may fail.
+.P
Together, the
.I pathname
and
@@ -172,7 +199,7 @@ or
.BR AT_FDCWD ,
meaning the current working directory,
and a handle is returned for the file to which it refers.
-.PP
+.P
The
.I mount_id
argument returns an identifier for the filesystem
@@ -188,7 +215,7 @@ that file descriptor can be used in a subsequent call to
is returned both for a successful call and for a call that results
in the error
.BR EOVERFLOW .
-.PP
+.P
By default,
.BR name_to_handle_at ()
does not dereference
@@ -201,7 +228,7 @@ is specified in
.I pathname
is dereferenced if it is a symbolic link
(so that the call returns a handle for the file referred to by the link).
-.PP
+.P
.BR name_to_handle_at ()
does not trigger a mount when the final component of the pathname is an
automount point.
@@ -225,7 +252,7 @@ system call opens the file referred to by
.IR handle ,
a file handle returned by a previous call to
.BR name_to_handle_at ().
-.PP
+.P
The
.I mount_fd
argument is a file descriptor for any object (file, directory, etc.)
@@ -235,7 +262,7 @@ should be interpreted.
The special value
.B AT_FDCWD
can be specified, meaning the current working directory of the caller.
-.PP
+.P
The
.I flags
argument
@@ -248,7 +275,7 @@ refers to a symbolic link, the caller must specify the
flag, and the symbolic link is not dereferenced; the
.B O_NOFOLLOW
flag, if specified, is ignored.
-.PP
+.P
The caller must have the
.B CAP_DAC_READ_SEARCH
capability to invoke
@@ -260,7 +287,7 @@ returns 0,
and
.BR open_by_handle_at ()
returns a file descriptor (a nonnegative integer).
-.PP
+.P
In the event of an error, both system calls return \-1 and set
.I errno
to indicate the error.
@@ -271,7 +298,7 @@ and
can fail for the same errors as
.BR openat (2).
In addition, they can fail with the errors noted below.
-.PP
+.P
.BR name_to_handle_at ()
can fail with the following errors:
.TP
@@ -322,7 +349,7 @@ When this error occurs,
is updated to indicate the required size for the handle.
.\"
.\"
-.PP
+.P
.BR open_by_handle_at ()
can fail with the following errors:
.TP
@@ -363,8 +390,14 @@ capability.
.B ESTALE
The specified
.I handle
-is not valid.
+is not valid for opening a file.
This error will occur if, for example, the file has been deleted.
+This error can also occur if the
+.I handle
+was acquired using the
+.B AT_HANDLE_FID
+flag and the filesystem does not support
+.BR open_by_handle_at ().
.SH VERSIONS
FreeBSD has a broadly similar pair of system calls in the form of
.BR getfh ()
@@ -380,20 +413,23 @@ A file handle can be generated in one process using
.BR name_to_handle_at ()
and later used in a different process that calls
.BR open_by_handle_at ().
-.PP
+.P
Some filesystem don't support the translation of pathnames to
file handles, for example,
.IR /proc ,
.IR /sys ,
and various network filesystems.
-.PP
+Some filesystems support the translation of pathnames to
+file handles, but do not support using those file handles in
+.BR open_by_handle_at ().
+.P
A file handle may become invalid ("stale") if a file is deleted,
or for other filesystem-specific reasons.
Invalid handles are notified by an
.B ESTALE
error from
.BR open_by_handle_at ().
-.PP
+.P
These system calls are designed for use by user-space file servers.
For example, a user-space NFS server might generate a file handle
and pass it to an NFS client.
@@ -403,7 +439,7 @@ it could pass the handle back to the server.
.\" "Open by handle" - Jonathan Corbet, 2010-02-23
This sort of functionality allows a user-space file server to operate in
a stateless fashion with respect to the files it serves.
-.PP
+.P
If
.I pathname
refers to a symbolic link and
@@ -439,7 +475,7 @@ However, an application can use the information in the
.I mountinfo
record that corresponds to the mount ID
to derive a persistent identifier.
-.PP
+.P
For example, one can use the device name in the fifth field of the
.I mountinfo
record to search for the corresponding device UUID via the symbolic links in
@@ -467,7 +503,7 @@ uses
to obtain the file handle and mount ID
for the file specified in its command-line argument;
the handle and mount ID are written to standard output.
-.PP
+.P
The second program
.RI ( t_open_by_handle_at.c )
reads a mount ID and file handle from standard input.
@@ -487,9 +523,9 @@ to find a record whose mount ID matches the mount ID
read from standard input,
and the mount directory specified in that record is opened.
(These programs do not deal with the fact that mount IDs are not persistent.)
-.PP
+.P
The following shell session demonstrates the use of these two programs:
-.PP
+.P
.in +4n
.EX
$ \fBecho \[aq]Can you please think about it?\[aq] > cecilia.txt\fP
@@ -501,7 +537,7 @@ Read 31 bytes
$ \fBrm cecilia.txt\fP
.EE
.in
-.PP
+.P
Now we delete and (quickly) re-create the file so that
it has the same content and (by chance) the same inode.
Nevertheless,
@@ -510,7 +546,7 @@ Nevertheless,
.\" counter that gets incremented in this case.
recognizes that the original file referred to by the file handle
no longer exists.
-.PP
+.P
.in +4n
.EX
$ \fBstat \-\-printf="%i\en" cecilia.txt\fP # Display inode number
@@ -739,7 +775,7 @@ main(int argc, char *argv[])
.BR blkid (8),
.BR findfs (8),
.BR mount (8)
-.PP
+.P
The
.I libblkid
and
diff --git a/man2/openat2.2 b/man2/openat2.2
index b98bbaf..4a19439 100644
--- a/man2/openat2.2
+++ b/man2/openat2.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2019 Aleksa Sarai <cyphar@cyphar.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH openat2 2 2023-04-23 "Linux man-pages 6.05.01"
+.TH openat2 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
openat2 \- open and possibly create a file (extended)
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.BR "#include <linux/openat2.h>" " /* Definition of " RESOLVE_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(SYS_openat2, int " dirfd ", const char *" pathname ,
.BI " struct open_how *" how ", size_t " size );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR openat2 (),
@@ -30,7 +30,7 @@ The
system call is an extension of
.BR openat (2)
and provides a superset of its functionality.
-.PP
+.P
The
.BR openat2 ()
system call opens the file specified by
@@ -40,7 +40,7 @@ If the specified file does not exist, it may optionally (if
is specified in
.IR how.flags )
be created.
-.PP
+.P
As with
.BR openat (2),
if
@@ -64,7 +64,7 @@ in which case
.I pathname
is resolved relative to
.IR dirfd ).
-.PP
+.P
Rather than taking a single
.I flags
argument, an extensible structure (\fIhow\fP) is passed to allow for
@@ -90,7 +90,7 @@ This argument is a pointer to an
structure,
described in
.BR open_how (2type).
-.PP
+.P
Any future extensions to
.BR openat2 ()
will be implemented as new fields appended to the
@@ -105,7 +105,7 @@ initialization.
(See the "Extensibility" section of the
.B NOTES
for more detail on why this is necessary.)
-.PP
+.P
The fields of the
.I open_how
structure are as follows:
@@ -374,7 +374,7 @@ in the kernel's lookup cache.
If any kind of revalidation or I/O is needed to satisfy the lookup,
.BR openat2 ()
fails with the error
-.B EAGAIN .
+.BR EAGAIN .
This is useful in providing a fast-path open that can be performed without
resorting to thread offload, or other mechanisms that an application might
use to offload slower operations.
@@ -421,7 +421,7 @@ information.
The caller should retry without
.B RESOLVE_CACHED
set in
-.I how.resolve .
+.IR how.resolve .
.TP
.B EINVAL
An unknown flag or invalid value was specified in
@@ -471,7 +471,7 @@ Linux.
.SH HISTORY
Linux 5.6.
.\" commit fddb5d430ad9fa91b49b1d34d0202ffe2fa0e179
-.PP
+.P
The semantics of
.B RESOLVE_BENEATH
were modeled after FreeBSD's
@@ -495,7 +495,7 @@ This extensibility design is very similar to other system calls such as
.BR perf_event_open (2),
and
.BR clone3 (2).
-.PP
+.P
If we let
.I usize
be the size of the structure as specified by the user-space application, and
@@ -538,7 +538,7 @@ If any unsupported extension fields are nonzero, then \-1 is returned and
is set to
.BR E2BIG .
This provides forwards-compatibility.
-.PP
+.P
Because the definition of
.I struct open_how
may change in the future (with new fields being added when system headers are
@@ -548,18 +548,18 @@ to ensure that recompiling the program with new headers will not result in
spurious errors at run time.
The simplest way is to use a designated
initializer:
-.PP
+.P
.in +4n
.EX
struct open_how how = { .flags = O_RDWR,
.resolve = RESOLVE_IN_ROOT };
.EE
.in
-.PP
+.P
or explicitly using
.BR memset (3)
or similar:
-.PP
+.P
.in +4n
.EX
struct open_how how;
@@ -568,7 +568,7 @@ how.flags = O_RDWR;
how.resolve = RESOLVE_IN_ROOT;
.EE
.in
-.PP
+.P
A user-space application that wishes to determine which extensions
the running kernel supports can do so by conducting a binary search on
.I size
diff --git a/man2/outb.2 b/man2/outb.2
index 4a3f877..ce39f5a 100644
--- a/man2/outb.2
+++ b/man2/outb.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH outb 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH outb 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
outb, outw, outl, outsb, outsw, outsl,
inb, inw, inl, insb, insw, insl,
@@ -15,21 +15,21 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/io.h>
-.PP
+.P
.BI "unsigned char inb(unsigned short " port );
.BI "unsigned char inb_p(unsigned short " port );
.BI "unsigned short inw(unsigned short " port );
.BI "unsigned short inw_p(unsigned short " port );
.BI "unsigned int inl(unsigned short " port );
.BI "unsigned int inl_p(unsigned short " port );
-.PP
+.P
.BI "void outb(unsigned char " value ", unsigned short " port );
.BI "void outb_p(unsigned char " value ", unsigned short " port );
.BI "void outw(unsigned short " value ", unsigned short " port );
.BI "void outw_p(unsigned short " value ", unsigned short " port );
.BI "void outl(unsigned int " value ", unsigned short " port );
.BI "void outl_p(unsigned int " value ", unsigned short " port );
-.PP
+.P
.BI "void insb(unsigned short " port ", void " addr [. count ],
.BI " unsigned long " count );
.BI "void insw(unsigned short " port ", void " addr [. count ],
@@ -48,18 +48,18 @@ This family of functions is used to do low-level port input and output.
The out* functions do port output, the in* functions do port input;
the b-suffix functions are byte-width and the w-suffix functions
word-width; the _p-suffix functions pause until the I/O completes.
-.PP
+.P
They are primarily designed for internal kernel use,
but can be used from user space.
.\" , given the following information
.\" in addition to that given in
.\" .BR outb (9).
-.PP
+.P
You must compile with \fB\-O\fP or \fB\-O2\fP or similar.
The functions
are defined as inline macros, and will not be substituted in without
optimization enabled, causing unresolved references at link time.
-.PP
+.P
You use
.BR ioperm (2)
or alternatively
diff --git a/man2/pause.2 b/man2/pause.2
index 0e7bbcd..59e9345 100644
--- a/man2/pause.2
+++ b/man2/pause.2
@@ -7,7 +7,7 @@
.\" Modified 1995 by Mike Battersby (mib@deakin.edu.au)
.\" Modified 2000 by aeb, following Michael Kerrisk
.\"
-.TH pause 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH pause 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pause \- wait for signal
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B int pause(void);
.fi
.SH DESCRIPTION
diff --git a/man2/pciconfig_read.2 b/man2/pciconfig_read.2
index 7913ba0..4c894aa 100644
--- a/man2/pciconfig_read.2
+++ b/man2/pciconfig_read.2
@@ -5,7 +5,7 @@
.\" May be freely distributed and modified.
.\" %%%LICENSE_END
.\"
-.TH pciconfig_read 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH pciconfig_read 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pciconfig_read, pciconfig_write, pciconfig_iobase \-
pci device information handling
@@ -15,7 +15,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <pci.h>
-.PP
+.P
.BI "int pciconfig_read(unsigned long " bus ", unsigned long " dfn ,
.BI " unsigned long " off ", unsigned long " len ,
.BI " unsigned char *" buf );
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index d9e7877..7af8e35 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -5,7 +5,7 @@
.\" This document is based on the perf_event.h header file, the
.\" tools/perf/design.txt file, and a lot of bitter experience.
.\"
-.TH perf_event_open 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH perf_event_open 2 2023-11-19 "Linux man-pages 6.7"
.SH NAME
perf_event_open \- set up performance monitoring
.SH LIBRARY
@@ -17,12 +17,12 @@ Standard C library
.BR "#include <linux/hw_breakpoint.h>" " /* Definition of " HW_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_perf_event_open, struct perf_event_attr *" attr ,
.BI " pid_t " pid ", int " cpu ", int " group_fd \
", unsigned long " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR perf_event_open (),
@@ -32,7 +32,12 @@ necessitating the use of
Given a list of parameters,
.BR perf_event_open ()
returns a file descriptor, for use in subsequent system calls
-.RB ( read "(2), " mmap "(2), " prctl "(2), " fcntl "(2), etc.)."
+(\c
+.BR read (2),
+.BR mmap (2),
+.BR prctl (2),
+.BR fcntl (2),
+etc.).
.PP
A call to
.BR perf_event_open ()
@@ -41,14 +46,14 @@ information.
Each file descriptor corresponds to one
event that is measured; these can be grouped together
to measure multiple events simultaneously.
-.PP
+.P
Events can be enabled and disabled in two ways: via
.BR ioctl (2)
and via
.BR prctl (2).
When an event is disabled it does not count or generate overflows but does
continue to exist and maintain its count value.
-.PP
+.P
Events come in two flavors: counting and sampled.
A
.I counting
@@ -95,7 +100,7 @@ value of less than 1.
.TP
.BR "pid == \-1" " and " "cpu == \-1"
This setting is invalid and will return an error.
-.PP
+.P
When
.I pid
is greater than zero, permission to perform this system call
@@ -105,7 +110,7 @@ is governed by
.B PTRACE_MODE_READ_REALCREDS
check on older Linux versions; see
.BR ptrace (2).
-.PP
+.P
The
.I group_fd
argument allows event groups to be created.
@@ -127,7 +132,7 @@ This means that the values of the member events can be meaningfully compared
\[em]added, divided (to get ratios), and so on\[em]
with each other,
since they have counted events for the same set of executed instructions.
-.PP
+.P
The
.I flags
argument is formed by ORing together zero or more of the following values:
@@ -186,12 +191,12 @@ must be passed as the
parameter.
cgroup monitoring is available only
for system-wide events and may therefore require extra permissions.
-.PP
+.P
The
.I perf_event_attr
structure provides detailed configuration information
for the event being created.
-.PP
+.P
.in +4n
.EX
struct perf_event_attr {
@@ -291,7 +296,7 @@ struct perf_event_attr {
};
.EE
.in
-.PP
+.P
The fields of the
.I perf_event_attr
structure are described in more detail below:
@@ -562,7 +567,7 @@ This counts context switches to a task in a different cgroup.
In other words, if the next task is in the same cgroup,
it won't count the switch.
.RE
-.PP
+.P
.RS
If
.I type
@@ -575,7 +580,7 @@ can be obtained from under debugfs
.I tracing/events/*/*/id
if ftrace is enabled in the kernel.
.RE
-.PP
+.P
.RS
If
.I type
@@ -586,7 +591,7 @@ To calculate the appropriate
.I config
value, use the following equation:
.RS 4
-.PP
+.P
.in +4n
.EX
config = (perf_hw_cache_id) |
@@ -594,7 +599,7 @@ config = (perf_hw_cache_id) |
(perf_hw_cache_op_result_id << 16);
.EE
.in
-.PP
+.P
where
.I perf_hw_cache_id
is one of:
@@ -622,7 +627,7 @@ for measuring the branch prediction unit
.\" commit 89d6c0b5bdbb1927775584dcf532d98b3efe1477
for measuring local memory accesses
.RE
-.PP
+.P
and
.I perf_hw_cache_op_id
is one of:
@@ -637,7 +642,7 @@ for write accesses
.B PERF_COUNT_HW_CACHE_OP_PREFETCH
for prefetch accesses
.RE
-.PP
+.P
and
.I perf_hw_cache_op_result_id
is one of:
@@ -650,7 +655,7 @@ to measure accesses
to measure misses
.RE
.RE
-.PP
+.P
If
.I type
is
@@ -666,7 +671,7 @@ The libpfm4 library can be used to translate from the name in the
architectural manuals to the raw hex value
.BR perf_event_open ()
expects in this field.
-.PP
+.P
If
.I type
is
@@ -675,7 +680,7 @@ then leave
.I config
set to zero.
Its parameters are set in other places.
-.PP
+.P
If
.I type
is
@@ -698,7 +703,13 @@ and
for more details.
.RE
.TP
-.IR kprobe_func ", " uprobe_path ", " kprobe_addr ", and " probe_offset
+.I kprobe_func
+.TQ
+.I uprobe_path
+.TQ
+.I kprobe_addr
+.TQ
+.I probe_offset
These fields describe the kprobe/uprobe for dynamic PMUs
.B kprobe
and
@@ -721,7 +732,9 @@ use
and
.IR probe_offset .
.TP
-.IR sample_period ", " sample_freq
+.I sample_period
+.TQ
+.I sample_freq
A "sampling" event is one that generates an overflow notification
every N events, where N is given by
.IR sample_period .
@@ -925,7 +938,7 @@ not both.
It has the following format and
the meaning of each field is
dependent on the hardware implementation.
-.PP
+.P
.in +4n
.EX
union perf_sample_weight {
@@ -1354,7 +1367,9 @@ This enables synchronous signal delivery of
.B SIGTRAP
on event overflow.
.TP
-.IR wakeup_events ", " wakeup_watermark
+.I wakeup_events
+.TQ
+.I wakeup_watermark
This union sets how many samples
.RI ( wakeup_events )
or bytes
@@ -1400,7 +1415,7 @@ Count when we read or write the memory location.
.TP
.B HW_BREAKPOINT_X
Count when we execute code at the memory location.
-.PP
+.P
The values can be combined via a bitwise or, but the
combination of
.B HW_BREAKPOINT_R
@@ -1474,7 +1489,7 @@ Branch target is in hypervisor.
.TP
.B PERF_SAMPLE_BRANCH_PLM_ALL
A convenience value that is the three preceding values ORed together.
-.PP
+.P
In addition to the privilege value, at least one or more of the
following bits must be set.
.TP
@@ -1591,12 +1606,12 @@ The values that are there are specified by the
field in the
.I attr
structure at open time.
-.PP
+.P
If you attempt to read into a buffer that is not big enough to hold the
data, the error
.B ENOSPC
results.
-.PP
+.P
Here is the layout of the data returned by a read:
.IP \[bu] 3
If
@@ -1635,7 +1650,7 @@ struct read_format {
};
.EE
.in
-.PP
+.P
The values read are as follows:
.TP
.I nr
@@ -1644,7 +1659,9 @@ Available only if
.B PERF_FORMAT_GROUP
was specified.
.TP
-.IR time_enabled ", " time_running
+.I time_enabled
+.TQ
+.I time_running
Total time the event was enabled and running.
Normally these values are the same.
Multiplexing happens if the number of events is more than the
@@ -1680,18 +1697,18 @@ mmap tracking)
are logged into a ring-buffer.
This ring-buffer is created and accessed through
.BR mmap (2).
-.PP
+.P
The mmap size should be 1+2\[ha]n pages, where the first page is a
metadata page
.RI ( "struct perf_event_mmap_page" )
that contains various
bits of information such as where the ring-buffer head is.
-.PP
+.P
Before Linux 2.6.39, there is a bug that means you must allocate an mmap
ring buffer when sampling even if you do not plan to access it.
-.PP
+.P
The structure of the first metadata mmap page is as follows:
-.PP
+.P
.in +4n
.EX
struct perf_event_mmap_page {
@@ -1729,7 +1746,7 @@ struct perf_event_mmap_page {
}
.EE
.in
-.PP
+.P
The following list describes the fields in the
.I perf_event_mmap_page
structure in more detail:
@@ -1861,7 +1878,11 @@ count += pmc;
.EE
.in
.TP
-.IR time_shift ", " time_mult ", " time_offset
+.I time_shift
+.TQ
+.I time_mult
+.TQ
+.I time_offset
.IP
If
.IR cap_usr_time ,
@@ -1966,7 +1987,13 @@ where perf sample data begins.
Contains the size of the perf sample region within
the mmap buffer.
.TP
-.IR aux_head ", " aux_tail ", " aux_offset ", " aux_size " (since Linux 4.1)"
+.I aux_head
+.TQ
+.I aux_tail
+.TQ
+.I aux_offset
+.TQ
+.I aux_size " (since Linux 4.1)"
.\" commit 45bfb2e50471abbbfd83d40d28c986078b0d24ff
The AUX region allows
.BR mmap (2)-ing
@@ -2011,9 +2038,9 @@ rules as the previous described
.I data_head
and
.IR data_tail .
-.PP
+.P
The following 2^n ring-buffer pages have the layout described below.
-.PP
+.P
If
.I perf_event_attr.sample_id_all
is set, then all event types will
@@ -2027,9 +2054,9 @@ fields, that is, at the end of the payload.
This allows a newer perf.data
file to be supported by older perf tools, with the new optional
fields being ignored.
-.PP
+.P
The mmap values start with a header:
-.PP
+.P
.in +4n
.EX
struct perf_event_header {
@@ -2039,7 +2066,7 @@ struct perf_event_header {
};
.EE
.in
-.PP
+.P
Below, we describe the
.I perf_event_header
fields in more detail.
@@ -2080,7 +2107,7 @@ Sample happened in the guest kernel.
.\" commit 39447b386c846bbf1c56f6403c5282837486200f
Sample happened in guest user code.
.RE
-.PP
+.P
.RS
Since the following three statuses are generated by
different record types, they alias to the same bit:
@@ -2109,7 +2136,7 @@ record is generated, this bit indicates that the
context switch is away from the current process
(instead of into the current process).
.RE
-.PP
+.P
.RS
In addition, the following bits can be set:
.TP
@@ -2260,7 +2287,9 @@ struct {
.EE
.in
.TP
-.BR PERF_RECORD_THROTTLE ", " PERF_RECORD_UNTHROTTLE
+.B PERF_RECORD_THROTTLE
+.TQ
+.B PERF_RECORD_UNTHROTTLE
This record indicates a throttle/unthrottle event.
.IP
.in +4n
@@ -2373,7 +2402,9 @@ If
is enabled, then a 64-bit instruction
pointer value is included.
.TP
-.IR pid ", " tid
+.I pid
+.TQ
+.I tid
If
.B PERF_SAMPLE_TID
is enabled, then a 32-bit process ID
@@ -2412,7 +2443,9 @@ the actual ID is returned, not the group leader.
This ID is the same as the one returned by
.BR PERF_FORMAT_ID .
.TP
-.IR cpu ", " res
+.I cpu
+.TQ
+.I res
If
.B PERF_SAMPLE_CPU
is enabled, this is a 32-bit value indicating
@@ -2436,7 +2469,9 @@ value used at
.BR perf_event_open ()
time.
.TP
-.IR nr ", " ips[nr]
+.I nr
+.TQ
+.I ips[nr]
If
.B PERF_SAMPLE_CALLCHAIN
is enabled, then a 64-bit number is included
@@ -2444,7 +2479,9 @@ which indicates how many following 64-bit instruction pointers will
follow.
This is the current callchain.
.TP
-.IR size ", " data[size]
+.I size
+.TQ
+.I data[size]
If
.B PERF_SAMPLE_RAW
is enabled, then a 32-bit value indicating size
@@ -2456,7 +2493,9 @@ The ABI doesn't make any promises with respect to the stability
of its content, it may vary depending
on event, hardware, and kernel version.
.TP
-.IR bnr ", " lbr[bnr]
+.I bnr
+.TQ
+.I lbr[bnr]
If
.B PERF_SAMPLE_BRANCH_STACK
is enabled, then a 64-bit value indicating
@@ -2490,10 +2529,10 @@ The branch was in an aborted transactional memory transaction.
.\" commit 71ef3c6b9d4665ee7afbbe4c208a98917dcfc32f
This reports the number of cycles elapsed since the
previous branch stack update.
-.PP
+.P
The entries are from most to least recent, so the first entry
has the most recent branch.
-.PP
+.P
Support for
.IR mispred ,
.IR predicted ,
@@ -2501,13 +2540,15 @@ and
.I cycles
is optional; if not supported, those
values will be 0.
-.PP
+.P
The type of branches recorded is specified by the
.I branch_sample_type
field.
.RE
.TP
-.IR abi ", " regs[weight(mask)]
+.I abi
+.TQ
+.I regs[weight(mask)]
If
.B PERF_SAMPLE_REGS_USER
is enabled, then the user CPU registers are recorded.
@@ -2530,7 +2571,11 @@ The number of values is the number of bits set in the
.I sample_regs_user
bit mask.
.TP
-.IR size ", " data[size] ", " dyn_size
+.I size
+.TQ
+.I data[size]
+.TQ
+.I dyn_size
If
.B PERF_SAMPLE_STACK_USER
is enabled, then the user stack is recorded.
@@ -2754,7 +2799,9 @@ the high 32 bits of the field by shifting right by
and masking with the value
.BR PERF_TXN_ABORT_MASK .
.TP
-.IR abi ", " regs[weight(mask)]
+.I abi
+.TQ
+.I regs[weight(mask)]
If
.B PERF_SAMPLE_REGS_INTR
is enabled, then the user CPU registers are recorded.
@@ -3254,13 +3301,13 @@ and
.B F_SETSIG
operations in
.BR fcntl (2).
-.PP
+.P
Overflows are generated only by sampling events
.RI ( sample_period
must have a nonzero value).
-.PP
+.P
There are two ways to generate overflow notifications.
-.PP
+.P
The first is to set a
.I wakeup_events
or
@@ -3270,7 +3317,7 @@ or bytes have been written to the mmap ring buffer.
In this case,
.B POLL_IN
is indicated.
-.PP
+.P
The other way is by use of the
.B PERF_EVENT_IOC_REFRESH
ioctl.
@@ -3282,13 +3329,13 @@ once the counter reaches 0
.B POLL_HUP
is indicated and
the underlying event is disabled.
-.PP
+.P
Refreshing an event group leader refreshes all siblings and
refreshing with a parameter of 0 currently enables infinite
refreshes;
these behaviors are unsupported and should not be relied on.
.\" See https://lkml.org/lkml/2011/5/24/337
-.PP
+.P
Starting with Linux 3.18,
.\" commit 179033b3e064d2cd3f5f9945e76b0a0f0fbf4883
.B POLL_HUP
@@ -3302,12 +3349,12 @@ instruction to get low-latency reads without having to enter the kernel.
Note that using
.I rdpmc
is not necessarily faster than other methods for reading event values.
-.PP
+.P
Support for this can be detected with the
.I cap_usr_rdpmc
field in the mmap page; documentation on how
to calculate event values can be found in that section.
-.PP
+.P
Originally, when rdpmc support was enabled, any process (not just ones
with an active perf event) could use the rdpmc instruction to access
the counters.
@@ -3567,10 +3614,10 @@ Maximum number of pages an unprivileged user can
.BR mlock (2).
The default is 516 (kB).
.RE
-.PP
+.P
Files in
.I /sys/bus/event_source/devices/
-.PP
+.P
.RS 4
Since Linux 2.6.34, the kernel supports having multiple PMUs
available for monitoring.
@@ -3831,7 +3878,7 @@ The official way of knowing if
support is enabled is checking
for the existence of the file
.IR /proc/sys/kernel/perf_event_paranoid .
-.PP
+.P
.B CAP_PERFMON
capability (since Linux 5.8) provides secure approach to
performance monitoring and observability operations in a system
@@ -3855,7 +3902,7 @@ option to
is needed to properly get overflow signals in threads.
This was introduced in Linux 2.6.32.
.\" commit ba0a6c9f6fceed11c6a99e8326f0477fe383e6b5
-.PP
+.P
Prior to Linux 2.6.33 (at least for x86),
.\" commit b690081d4d3f6a23541493f1682835c3cd5c54a1
the kernel did not check
@@ -3865,40 +3912,40 @@ This means to see if a given set of events works you have to
.BR perf_event_open (),
start, then read before you know for sure you
can get valid measurements.
-.PP
+.P
Prior to Linux 2.6.34,
.\" FIXME . cannot find a kernel commit for this one
event constraints were not enforced by the kernel.
In that case, some events would silently return "0" if the kernel
scheduled them in an improper counter slot.
-.PP
+.P
Prior to Linux 2.6.34, there was a bug when multiplexing where the
wrong results could be returned.
.\" commit 45e16a6834b6af098702e5ea6c9a40de42ff77d8
-.PP
+.P
Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if
"inherit" is enabled and many threads are started.
.\" commit 38b435b16c36b0d863efcf3f07b34a6fac9873fd
-.PP
+.P
Prior to Linux 2.6.35,
.\" commit 050735b08ca8a016bbace4445fa025b88fee770b
.B PERF_FORMAT_GROUP
did not work with attached processes.
-.PP
+.P
There is a bug in the kernel code between
Linux 2.6.36 and Linux 3.0 that ignores the
"watermark" field and acts as if a wakeup_event
was chosen if the union has a
nonzero value in it.
.\" commit 4ec8363dfc1451f8c8f86825731fe712798ada02
-.PP
+.P
From Linux 2.6.31 to Linux 3.4, the
.B PERF_IOC_FLAG_GROUP
ioctl argument was broken and would repeatedly operate
on the event specified rather than iterating across
all sibling events in a group.
.\" commit 724b6daa13e100067c30cfc4d1ad06629609dc4e
-.PP
+.P
From Linux 3.4 to Linux 3.11, the mmap
.\" commit fa7315871046b9a4c48627905691dbde57e51033
.I cap_usr_rdpmc
@@ -3910,7 +3957,7 @@ Code should migrate to the new
and
.I cap_user_time
fields instead.
-.PP
+.P
Always double-check your results!
Various generalized events have had wrong values.
For example, retired branches measured
@@ -3920,7 +3967,7 @@ the wrong thing on AMD machines until Linux 2.6.35.
The following is a short example that measures the total
instruction count of a call to
.BR printf (3).
-.PP
+.P
.\" SRC BEGIN (perf_event_open.c)
.EX
#include <linux/perf_event.h>
@@ -3984,6 +4031,6 @@ main(void)
.BR open (2),
.BR prctl (2),
.BR read (2)
-.PP
+.P
.I Documentation/admin\-guide/perf\-security.rst
in the kernel source tree
diff --git a/man2/perfmonctl.2 b/man2/perfmonctl.2
index 2155bb4..fac1aa1 100644
--- a/man2/perfmonctl.2
+++ b/man2/perfmonctl.2
@@ -4,17 +4,17 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH perfmonctl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH perfmonctl 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
perfmonctl \- interface to IA-64 performance monitoring unit
.SH SYNOPSIS
.nf
.B #include <syscall.h>
.B #include <perfmon.h>
-.PP
+.P
.BI "long perfmonctl(int " fd ", int " cmd ", void " arg [. narg "], int " narg ");"
.fi
-.PP
+.P
.IR Note :
There is no glibc wrapper for this system call; see HISTORY.
.SH DESCRIPTION
@@ -25,7 +25,7 @@ PMU (performance monitoring unit).
The PMU consists of PMD (performance monitoring data) registers and
PMC (performance monitoring control) registers,
which gather hardware statistics.
-.PP
+.P
.BR perfmonctl ()
applies the operation
.I cmd
@@ -35,7 +35,7 @@ The number of arguments is defined by \fInarg\fR.
The
.I fd
argument specifies the perfmon context to operate on.
-.PP
+.P
Supported values for
.I cmd
are:
@@ -180,14 +180,14 @@ Linux on IA-64.
Added in Linux 2.4;
.\" commit ecf5b72d5f66af843f189dfe9ce31598c3e48ad7
removed in Linux 5.10.
-.PP
+.P
This system call was broken for many years,
and ultimately removed in Linux 5.10.
-.PP
+.P
glibc does not provide a wrapper for this system call;
on kernels where it exists, call it using
.BR syscall (2).
.SH SEE ALSO
.BR gprof (1)
-.PP
+.P
The perfmon2 interface specification
diff --git a/man2/personality.2 b/man2/personality.2
index e76af79..ae8db10 100644
--- a/man2/personality.2
+++ b/man2/personality.2
@@ -10,7 +10,7 @@
.\" changed prototype, documented 0xffffffff, aeb, 030101
.\" Modified 2004-11-03 patch from Martin Schulze <joey@infodrom.org>
.\"
-.TH personality 2 2023-04-29 "Linux man-pages 6.05.01"
+.TH personality 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
personality \- set the process execution domain
.SH LIBRARY
@@ -19,7 +19,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/personality.h>
-.PP
+.P
.BI "int personality(unsigned long " persona );
.fi
.SH DESCRIPTION
@@ -30,7 +30,7 @@ signal numbers into signal actions.
The execution domain system allows
Linux to provide limited support for binaries compiled under other
UNIX-like operating systems.
-.PP
+.P
If
.I persona
is not
@@ -42,7 +42,7 @@ Specifying
.I persona
as 0xffffffff provides a way of retrieving
the current persona without changing it.
-.PP
+.P
A list of the available execution domains can be found in
.IR <sys/personality.h> .
The execution domain is a 32-bit value in which the top three
@@ -108,7 +108,7 @@ kernel version-numbering switch from Linux 2.6.x to Linux 3.x.
.TP
.BR WHOLE_SECONDS " (since Linux 1.2.0)"
No effect.
-.PP
+.P
The available execution domains are:
.TP
.BR PER_BSD " (since Linux 1.2.0)"
diff --git a/man2/pidfd_getfd.2 b/man2/pidfd_getfd.2
index 9e3af2a..918f1d2 100644
--- a/man2/pidfd_getfd.2
+++ b/man2/pidfd_getfd.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pidfd_getfd 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH pidfd_getfd 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pidfd_getfd \- obtain a duplicate of another process's file descriptor
.SH LIBRARY
@@ -12,11 +12,11 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_pidfd_getfd, int " pidfd ", int " targetfd ,
.BI " unsigned int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR pidfd_getfd (),
@@ -30,7 +30,7 @@ This new file descriptor is a duplicate of an existing file descriptor,
.IR targetfd ,
in the process referred to by the PID file descriptor
.IR pidfd .
-.PP
+.P
The duplicate file descriptor refers to the same open file description (see
.BR open (2))
as the original file descriptor in the process referred to by
@@ -40,19 +40,19 @@ Furthermore, operations on the underlying file object
(for example, assigning an address to a socket object using
.BR bind (2))
can equally be performed via the duplicate file descriptor.
-.PP
+.P
The close-on-exec flag
.RB ( FD_CLOEXEC ;
see
.BR fcntl (2))
is set on the file descriptor returned by
.BR pidfd_getfd ().
-.PP
+.P
The
.I flags
argument is reserved for future use.
Currently, it must be specified as 0.
-.PP
+.P
Permission to duplicate another process's file descriptor
is governed by a ptrace access mode
.B PTRACE_MODE_ATTACH_REALCREDS
@@ -111,7 +111,7 @@ Linux 5.6.
.SH NOTES
For a description of PID file descriptors, see
.BR pidfd_open (2).
-.PP
+.P
The effect of
.BR pidfd_getfd ()
is similar to the use of
diff --git a/man2/pidfd_open.2 b/man2/pidfd_open.2
index 8321e82..32e92c0 100644
--- a/man2/pidfd_open.2
+++ b/man2/pidfd_open.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pidfd_open 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH pidfd_open 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pidfd_open \- obtain a file descriptor that refers to a process
.SH LIBRARY
@@ -12,10 +12,10 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_pidfd_open, pid_t " pid ", unsigned int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR pidfd_open (),
@@ -29,7 +29,7 @@ the process whose PID is specified in
.IR pid .
The file descriptor is returned as the function result;
the close-on-exec flag is set on the file descriptor.
-.PP
+.P
The
.I flags
argument either has the value 0, or contains the following flag:
@@ -88,7 +88,7 @@ Linux 5.3.
The following code sequence can be used to obtain a file descriptor
for the child of
.BR fork (2):
-.PP
+.P
.in +4n
.EX
pid = fork();
@@ -98,7 +98,7 @@ if (pid > 0) { /* If parent */
}
.EE
.in
-.PP
+.P
Even if the child has already terminated by the time of the
.BR pidfd_open ()
call, its PID will not have been recycled and the returned
@@ -127,7 +127,7 @@ the zombie process was not reaped elsewhere in the program
(e.g., either by an asynchronously executed signal handler or by
.BR wait (2)
or similar in another thread).
-.PP
+.P
If any of these conditions does not hold,
then the child process (along with a PID file descriptor that refers to it)
should instead be created using
@@ -181,7 +181,7 @@ A PID file descriptor can be used as the argument of
.BR process_madvise (2)
in order to provide advice on the memory usage patterns of the process
referred to by the file descriptor.
-.PP
+.P
The
.BR pidfd_open ()
system call is the preferred way of obtaining a PID file descriptor
diff --git a/man2/pidfd_send_signal.2 b/man2/pidfd_send_signal.2
index 670ea71..ae884b8 100644
--- a/man2/pidfd_send_signal.2
+++ b/man2/pidfd_send_signal.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pidfd_send_signal 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH pidfd_send_signal 2 2023-11-01 "Linux man-pages 6.7"
.SH NAME
pidfd_send_signal \- send a signal to a process specified by a file descriptor
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.BR "#include <signal.h>" " /* Definition of " SI_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_pidfd_send_signal, int " pidfd ", int " sig ,
.BI " siginfo_t *_Nullable " info ", unsigned int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR pidfd_send_signal (),
@@ -34,23 +34,23 @@ to the target process referred to by
a PID file descriptor that refers to a process.
.\" See the very detailed commit message for kernel commit
.\" 3eb39f47934f9d5a3027fe00d906a45fe3a15fad
-.PP
+.P
If the
.I info
argument points to a
.I siginfo_t
buffer, that buffer should be populated as described in
.BR rt_sigqueueinfo (2).
-.PP
+.P
If the
.I info
-argument is a NULL pointer,
+argument is a null pointer,
this is equivalent to specifying a pointer to a
.I siginfo_t
buffer whose fields match the values that are
implicitly supplied when a signal is sent using
.BR kill (2):
-.PP
+.P
.PD 0
.IP \[bu] 3
.I si_signo
@@ -69,12 +69,12 @@ is set to the caller's PID; and
.I si_uid
is set to the caller's real user ID.
.PD
-.PP
+.P
The calling process must either be in the same PID namespace as the
process referred to by
.IR pidfd ,
or be in an ancestor of that namespace.
-.PP
+.P
The
.I flags
argument is reserved for future use;
@@ -145,7 +145,7 @@ or
that specifies the
.B CLONE_PIDFD
flag.
-.PP
+.P
The
.BR pidfd_send_signal ()
system call allows the avoidance of race conditions that occur
diff --git a/man2/pipe.2 b/man2/pipe.2
index d8142f9..55e631d 100644
--- a/man2/pipe.2
+++ b/man2/pipe.2
@@ -13,7 +13,7 @@
.\" to EXAMPLE text.
.\" 2008-10-10, mtk: add description of pipe2()
.\"
-.TH pipe 2 2023-07-30 "Linux man-pages 6.05.01"
+.TH pipe 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pipe, pipe2 \- create pipe
.SH LIBRARY
@@ -22,20 +22,20 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int pipe(int " pipefd [2]);
-.PP
+.P
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.BR "#include <fcntl.h>" " /* Definition of " O_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int pipe2(int " pipefd "[2], int " flags );
-.PP
+.P
/* On Alpha, IA-64, MIPS, SuperH, and SPARC/SPARC64, pipe() has the
following prototype; see VERSIONS */
-.PP
+.P
.B #include <unistd.h>
-.PP
+.P
.B struct fd_pair {
.B " long fd[2];"
.B "};"
@@ -56,7 +56,7 @@ Data written to the write end of the pipe is buffered by the kernel
until it is read from the read end of the pipe.
For further details, see
.BR pipe (7).
-.PP
+.P
If
.I flags
is 0, then
@@ -148,7 +148,7 @@ On error, \-1 is returned,
is set to indicate the error, and
.I pipefd
is left unchanged.
-.PP
+.P
On Linux (and other systems),
.BR pipe ()
does not modify
diff --git a/man2/pivot_root.2 b/man2/pivot_root.2
index a4077ef..3e0e55e 100644
--- a/man2/pivot_root.2
+++ b/man2/pivot_root.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pivot_root 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH pivot_root 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
pivot_root \- change the root mount
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_pivot_root, const char *" new_root \
", const char *" put_old );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR pivot_root (),
@@ -32,7 +32,7 @@ directory \fIput_old\fP and makes \fInew_root\fP the new root mount.
The calling process must have the
.B CAP_SYS_ADMIN
capability in the user namespace that owns the caller's mount namespace.
-.PP
+.P
.BR pivot_root ()
changes the root directory and the current working directory
of each process or thread in the same mount namespace to
@@ -45,7 +45,7 @@ does not change the caller's current working directory
(unless it is on the old root directory),
and thus it should be followed by a
\fBchdir("/")\fP call.
-.PP
+.P
The following restrictions apply:
.IP \[bu] 3
.I new_root
@@ -66,7 +66,7 @@ must yield the same directory as \fInew_root\fP.
.IP \[bu]
.I new_root
must be a path to a mount point, but can't be
-.IR """/""" .
+.IR \[dq]/\[dq] .
A path that is not already a mount point can be converted into one by
bind mounting the path onto itself.
.IP \[bu]
@@ -115,7 +115,7 @@ is on the current root mount.
(This error covers the pathological case where
.I new_root
is
-.IR """/""" .)
+.IR \[dq]/\[dq] .)
.TP
.B EINVAL
.I new_root
@@ -158,7 +158,7 @@ Linux 2.3.41.
.SH NOTES
A command-line interface for this system call is provided by
.BR pivot_root (8).
-.PP
+.P
.BR pivot_root ()
allows the caller to switch to a new root filesystem while at the same time
placing the old root mount at a location under
@@ -168,7 +168,7 @@ from where it can subsequently be unmounted.
or current working directory on the old root directory to the
new root frees the old root directory of users,
allowing the old root mount to be unmounted more easily.)
-.PP
+.P
One use of
.BR pivot_root ()
is during system startup, when the
@@ -178,7 +178,7 @@ then mounts the real root filesystem, and eventually turns the latter into
the root directory of all relevant processes and threads.
A modern use is to set up a root filesystem during
the creation of a container.
-.PP
+.P
The fact that
.BR pivot_root ()
modifies process root and current working directories in the
@@ -187,7 +187,7 @@ is necessary in order to prevent kernel threads from keeping the old
root mount busy with their root and current working directories,
even if they never access
the filesystem in any way.
-.PP
+.P
The rootfs (initial ramfs) cannot be
.BR pivot_root ()ed.
The recommended method of changing the root filesystem in this case is
@@ -207,7 +207,7 @@ and
may be the same directory.
In particular, the following sequence allows a pivot-root operation
without needing to create and remove a temporary directory:
-.PP
+.P
.in +4n
.EX
chdir(new_root);
@@ -215,7 +215,7 @@ pivot_root(".", ".");
umount2(".", MNT_DETACH);
.EE
.in
-.PP
+.P
This sequence succeeds because the
.BR pivot_root ()
call stacks the old root mount point
@@ -227,7 +227,7 @@ working directory refer to the new root mount point
During the subsequent
.BR umount ()
call, resolution of
-.I """."""
+.I \[dq].\[dq]
starts with
.I new_root
and then moves up the list of mounts stacked at
@@ -237,7 +237,7 @@ with the result that old root mount point is unmounted.
.SS Historical notes
For many years, this manual page carried the following text:
.RS
-.PP
+.P
.BR pivot_root ()
may or may not change the current root and the current
working directory of any processes or threads which use the old
@@ -250,7 +250,7 @@ An easy way to ensure this is to change their
root and current working directory to \fInew_root\fP before invoking
.BR pivot_root ().
.RE
-.PP
+.P
This text, written before the system call implementation was
even finalized in the kernel, was probably intended to warn users
at that time that the implementation might change before final release.
@@ -269,12 +269,12 @@ After pivoting to the root directory named in the program's
first command-line argument, the child created by
.BR clone (2)
then executes the program named in the remaining command-line arguments.
-.PP
+.P
We demonstrate the program by creating a directory that will serve as
the new root filesystem and placing a copy of the (statically linked)
.BR busybox (1)
executable in that directory.
-.PP
+.P
.in +4n
.EX
$ \fBmkdir /tmp/rootfs\fP
@@ -296,7 +296,7 @@ hello world
.in
.SS Program source
\&
-.PP
+.P
.\" SRC BEGIN (pivot_root.c)
.EX
/* pivot_root_demo.c */
diff --git a/man2/pkey_alloc.2 b/man2/pkey_alloc.2
index 53d8f2a..5d72fb9 100644
--- a/man2/pkey_alloc.2
+++ b/man2/pkey_alloc.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pkey_alloc 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH pkey_alloc 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pkey_alloc, pkey_free \- allocate or free a protection key
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/mman.h>
-.PP
+.P
.BI "int pkey_alloc(unsigned int " flags ", unsigned int " access_rights ");"
.BI "int pkey_free(int " pkey ");"
.fi
@@ -20,12 +20,12 @@ Standard C library
.BR pkey_alloc ()
allocates a protection key (pkey) and allows it to be passed to
.BR pkey_mprotect (2).
-.PP
+.P
The
.BR pkey_alloc ()
.I flags
is reserved for future use and currently must always be specified as 0.
-.PP
+.P
The
.BR pkey_alloc ()
.I access_rights
@@ -36,13 +36,13 @@ Disable all data access to memory covered by the returned protection key.
.TP
.B PKEY_DISABLE_WRITE
Disable write access to memory covered by the returned protection key.
-.PP
+.P
.BR pkey_free ()
frees a protection key and makes it available for later
allocations.
After a protection key has been freed, it may no longer be used
in any protection-key-related operations.
-.PP
+.P
An application should not call
.BR pkey_free ()
on any protection key which has been assigned to an address
@@ -96,7 +96,7 @@ It can be used in lieu of any other mechanism for detecting pkey support
and will simply fail with the error
.B ENOSPC
if the operating system has no pkey support.
-.PP
+.P
The kernel guarantees that the contents of the hardware rights
register (PKRU) will be preserved only for allocated protection
keys.
diff --git a/man2/poll.2 b/man2/poll.2
index 2b024d3..36e89f8 100644
--- a/man2/poll.2
+++ b/man2/poll.2
@@ -7,7 +7,7 @@
.\" 2006-07-01, mtk, Added POLLRDHUP + various other wording and
.\" formatting changes.
.\"
-.TH poll 2 2023-07-08 "Linux man-pages 6.05.01"
+.TH poll 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
poll, ppoll \- wait for some event on a file descriptor
.SH LIBRARY
@@ -16,12 +16,12 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <poll.h>
-.PP
+.P
.BI "int poll(struct pollfd *" fds ", nfds_t " nfds ", int " timeout );
-.PP
+.P
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <poll.h>
-.PP
+.P
.BI "int ppoll(struct pollfd *" fds ", nfds_t " nfds ,
.BI " const struct timespec *_Nullable " tmo_p ,
.BI " const sigset_t *_Nullable " sigmask );
@@ -36,11 +36,11 @@ The Linux-specific
.BR epoll (7)
API performs a similar task, but offers features beyond those found in
.BR poll ().
-.PP
+.P
The set of file descriptors to be monitored is specified in the
.I fds
argument, which is an array of structures of the following form:
-.PP
+.P
.in +4n
.EX
struct pollfd {
@@ -50,12 +50,12 @@ struct pollfd {
};
.EE
.in
-.PP
+.P
The caller should specify the number of items in the
.I fds
array in
.IR nfds .
-.PP
+.P
The field
.I fd
contains a file descriptor for an open file.
@@ -70,7 +70,7 @@ file descriptor for a single
call: simply set the
.I fd
field to its bitwise complement.)
-.PP
+.P
The field
.I events
is an input parameter, a bit mask specifying the events the application
@@ -85,7 +85,7 @@ are
and
.B POLLNVAL
(see below).
-.PP
+.P
The field
.I revents
is an output parameter, filled by the kernel with the events that
@@ -104,12 +104,12 @@ or
field, and will be set in the
.I revents
field whenever the corresponding condition is true.)
-.PP
+.P
If none of the events requested (and no error) has occurred for any
of the file descriptors, then
.BR poll ()
blocks until one of the events occurs.
-.PP
+.P
The
.I timeout
argument specifies the number of milliseconds that
@@ -122,7 +122,7 @@ a file descriptor becomes ready;
the call is interrupted by a signal handler; or
.IP \[bu]
the timeout expires.
-.PP
+.P
Being "ready" means that the requested operation will not block; thus,
.BR poll ()ing
regular files,
@@ -130,7 +130,7 @@ block devices,
and other files with no reasonable polling semantic
.I always
returns instantly as ready to read and write.
-.PP
+.P
Note that the
.I timeout
interval will be rounded up to the system clock granularity,
@@ -144,7 +144,7 @@ Specifying a
of zero causes
.BR poll ()
to return immediately, even if no file descriptors are ready.
-.PP
+.P
The bits that may be set/returned in
.I events
and
@@ -214,7 +214,7 @@ not open (only returned in
.IR revents ;
ignored in
.IR events ).
-.PP
+.P
When compiling with
.B _XOPEN_SOURCE
defined, one also has the following,
@@ -234,7 +234,7 @@ Equivalent to
.TP
.B POLLWRBAND
Priority data may be written.
-.PP
+.P
Linux also knows about, but does not use
.BR POLLMSG .
.SS ppoll()
@@ -251,23 +251,23 @@ like
.BR ppoll ()
allows an application to safely wait until either a file descriptor
becomes ready or until a signal is caught.
-.PP
+.P
Other than the difference in the precision of the
.I timeout
argument, the following
.BR ppoll ()
call:
-.PP
+.P
.in +4n
.EX
ready = ppoll(&fds, nfds, tmo_p, &sigmask);
.EE
.in
-.PP
+.P
is nearly equivalent to
.I atomically
executing the following calls:
-.PP
+.P
.in +4n
.EX
sigset_t origmask;
@@ -280,7 +280,7 @@ ready = poll(&fds, nfds, timeout);
pthread_sigmask(SIG_SETMASK, &origmask, NULL);
.EE
.in
-.PP
+.P
The above code segment is described as
.I nearly
equivalent because whereas a negative
@@ -291,13 +291,13 @@ is interpreted as an infinite timeout, a negative value expressed in
.I *tmo_p
results in an error from
.BR ppoll ().
-.PP
+.P
See the description of
.BR pselect (2)
for an explanation of why
.BR ppoll ()
is necessary.
-.PP
+.P
If the
.I sigmask
argument is specified as NULL, then
@@ -309,7 +309,7 @@ differs from
only in the precision of the
.I timeout
argument).
-.PP
+.P
The
.I tmo_p
argument specifies an upper limit on the amount of time that
@@ -318,7 +318,7 @@ will block.
This argument is a pointer to a
.BR timespec (3)
structure.
-.PP
+.P
If
.I tmo_p
is specified as NULL, then
@@ -334,7 +334,7 @@ whose
fields have been set to a nonzero value (indicating an event or an error).
A return value of zero indicates that the system call timed out
before any file descriptors became ready.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -379,7 +379,7 @@ Portable programs may wish to check for
.B EAGAIN
and loop, just as with
.BR EINTR .
-.PP
+.P
Some implementations define the nonstandard constant
.B INFTIM
with the value \-1 for use as a
@@ -401,7 +401,7 @@ Thus, the glibc
function does not modify its
.I tmo_p
argument.
-.PP
+.P
The raw
.BR ppoll ()
system call has a fifth argument,
@@ -452,7 +452,7 @@ and
is not affected by the
.B O_NONBLOCK
flag.
-.PP
+.P
For a discussion of what may happen if a file descriptor being monitored by
.BR poll ()
is closed in another thread, see
@@ -482,27 +482,27 @@ if the file descriptor was not readable,
but some other event occurred (presumably
.BR POLLHUP ),
closes the file descriptor.
-.PP
+.P
Suppose we run the program in one terminal, asking it to open a FIFO:
-.PP
+.P
.in +4n
.EX
$ \fBmkfifo myfifo\fP
$ \fB./poll_input myfifo\fP
.EE
.in
-.PP
+.P
In a second terminal window, we then open the FIFO for writing,
write some data to it, and close the FIFO:
-.PP
+.P
.in +4n
.EX
$ \fBecho aaaaabbbbbccccc > myfifo\fP
.EE
.in
-.PP
+.P
In the terminal where we are running the program, we would then see:
-.PP
+.P
.in +4n
.EX
Opened "myfifo" on fd 3
@@ -522,7 +522,7 @@ Ready: 1
All file descriptors closed; bye
.EE
.in
-.PP
+.P
In the above output, we see that
.BR poll ()
returned three times:
diff --git a/man2/posix_fadvise.2 b/man2/posix_fadvise.2
index 38e9745..96c06a7 100644
--- a/man2/posix_fadvise.2
+++ b/man2/posix_fadvise.2
@@ -6,7 +6,7 @@
.\" 2005-04-08 mtk, noted kernel version and added BUGS
.\" 2010-10-09, mtk, document arm_fadvise64_64()
.\"
-.TH posix_fadvise 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH posix_fadvise 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
posix_fadvise \- predeclare an access pattern for file data
.SH LIBRARY
@@ -15,17 +15,17 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <fcntl.h>
-.PP
+.P
.BI "int posix_fadvise(int " fd ", off_t " offset ", off_t " len \
", int " advice ");"
.fi
-.PP
+.P
.ad l
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR posix_fadvise ():
.nf
_POSIX_C_SOURCE >= 200112L
@@ -36,14 +36,14 @@ Programs can use
to announce an intention to access
file data in a specific pattern in the future, thus allowing the kernel
to perform appropriate optimizations.
-.PP
+.P
The \fIadvice\fP applies to a (not necessarily existent) region starting
at \fIoffset\fP and extending for \fIlen\fP bytes (or until the end of
the file if \fIlen\fP is 0) within the file referred to by \fIfd\fP.
The \fIadvice\fP is not binding;
it merely constitutes an expectation on behalf of
the application.
-.PP
+.P
Permissible values for \fIadvice\fP include:
.TP
.B POSIX_FADV_NORMAL
@@ -159,16 +159,16 @@ Therefore, these architectures define a version of the
system call that orders the arguments suitably,
but is otherwise exactly the same as
.BR posix_fadvise ().
-.PP
+.P
For example, since Linux 2.6.14, ARM has the following system call:
-.PP
+.P
.in +4n
.EX
.BI "long arm_fadvise64_64(int " fd ", int " advice ,
.BI " loff_t " offset ", loff_t " len );
.EE
.in
-.PP
+.P
These architecture-specific details are generally
hidden from applications by the glibc
.BR posix_fadvise ()
@@ -178,7 +178,7 @@ which invokes the appropriate architecture-specific system call.
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
-.PP
+.P
Kernel support first appeared in Linux 2.5.60;
the underlying system call is called
.BR fadvise64 ().
@@ -186,14 +186,14 @@ the underlying system call is called
Library support has been provided since glibc 2.2,
via the wrapper function
.BR posix_fadvise ().
-.PP
+.P
Since Linux 3.18,
.\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb
support for the underlying system call is optional,
depending on the setting of the
.B CONFIG_ADVISE_SYSCALLS
configuration option.
-.PP
+.P
The type of the
.I len
argument was changed from
@@ -206,7 +206,7 @@ The contents of the kernel buffer cache can be cleared via the
.I /proc/sys/vm/drop_caches
interface described in
.BR proc (5).
-.PP
+.P
One can obtain a snapshot of which pages of a file are resident
in the buffer cache by opening a file, mapping it with
.BR mmap (2),
diff --git a/man2/prctl.2 b/man2/prctl.2
index a592bba..c6dae6d 100644
--- a/man2/prctl.2
+++ b/man2/prctl.2
@@ -36,7 +36,7 @@
.\" 2014-11-10 Dave Hansen, document PR_MPX_{EN,DIS}ABLE_MANAGEMENT
.\"
.\"
-.TH prctl 2 2023-07-28 "Linux man-pages 6.05.01"
+.TH prctl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
prctl \- operations on a process or thread
.SH LIBRARY
@@ -45,8 +45,8 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/prctl.h>
-.PP
-.BI "int prctl(int " option ", ..."
+.P
+.BI "int prctl(int " op ", ..."
.BI " \fR/*\fP unsigned long " arg2 ", unsigned long " arg3 ,
.BI " unsigned long " arg4 ", unsigned long " arg5 " \fR*/\fP );"
.fi
@@ -54,12 +54,12 @@ Standard C library
.BR prctl ()
manipulates various aspects of the behavior
of the calling thread or process.
-.PP
+.P
Note that careless use of some
.BR prctl ()
operations can confuse the user-space run-time environment,
so these operations should be used with care.
-.PP
+.P
.BR prctl ()
is called with a first argument describing what to do
(with values defined in \fI<linux/prctl.h>\fP), and further
@@ -379,7 +379,7 @@ can operate only when this bit is
Applications that use the O32 FPXX ABI can operate with either
.B FR=0
or
-.B FR=1 .
+.BR FR=1 .
.TP
.B PR_FP_MODE_FRE
Enable emulation of 32-bit floating-point mode.
@@ -414,7 +414,7 @@ so FPU emulation is not required and the FPU always operates in
.B FR=1
mode.
.IP
-This option is mainly intended for use by the dynamic linker
+This operation is mainly intended for use by the dynamic linker
.RB ( ld.so (8)).
.IP
The arguments
@@ -674,7 +674,7 @@ value.
The requirements for the address are the same as for the
.B PR_SET_MM_START_BRK
option.
-.PP
+.P
The following options are available since Linux 3.5.
.\" commit fe8c7f5cbf91124987106faa3bdf0c8b955c4cf7
.TP
@@ -741,7 +741,7 @@ This restriction was enforced for security reasons that were subsequently
deemed specious,
and the restriction was removed in Linux 4.10 because some
user-space applications needed to perform this operation more than once.
-.PP
+.P
The following options are available since Linux 3.18.
.\" commit f606b77f1a9e362451aca8f81d8f36a3a112139e
.TP
@@ -806,7 +806,9 @@ except \[aq][\[aq], \[aq]]\[aq], \[aq]\e\[aq], \[aq]$\[aq], and \[aq]\[ga]\[aq].
.RE
.\" prctl PR_MPX_ENABLE_MANAGEMENT
.TP
-.BR PR_MPX_ENABLE_MANAGEMENT ", " PR_MPX_DISABLE_MANAGEMENT " (since Linux 3.19, removed in Linux 5.4; only on x86)"
+.B PR_MPX_ENABLE_MANAGEMENT
+.TQ
+.BR PR_MPX_DISABLE_MANAGEMENT " (since Linux 3.19, removed in Linux 5.4; only on x86)"
.\" commit fe3d197f84319d3bce379a9c0dc17b1f48ad358c
.\" See also http://lwn.net/Articles/582712/
.\" See also https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
@@ -2041,6 +2043,36 @@ the copy will be truncated.
Return (as the function result)
the full length of the auxiliary vector.
\fIarg4\fP and \fIarg5\fP must be 0.
+.TP
+.BR PR_SET_MDWE " (since Linux 6.3)"
+.\" commit b507808ebce23561d4ff8c2aa1fb949fe402bc61
+Set the calling process' Memory-Deny-Write-Execute protection mask.
+Once protection bits are set,
+they can not be changed.
+.I arg2
+must be a bit mask of:
+.RS
+.TP
+.B PR_MDWE_REFUSE_EXEC_GAIN
+New memory mapping protections can't be writable and executable.
+Non-executable mappings can't become executable.
+.TP
+.B PR_MDWE_NO_INHERIT " (since Linux 6.6)"
+.\" commit 2a87e5520554034e8c423479740f95bea4a086a0
+Do not propagate MDWE protection to child processes on
+.BR fork (2).
+Setting this bit requires setting
+.B PR_MDWE_REFUSE_EXEC_GAIN
+too.
+.RE
+.TP
+.BR PR_GET_MDWE " (since Linux 6.3)"
+.\" commit b507808ebce23561d4ff8c2aa1fb949fe402bc61
+Return (as the function result) the Memory-Deny-Write-Execute protection mask
+of the calling process.
+(See
+.B PR_SET_MDWE
+for information on the protection mask bits.)
.SH RETURN VALUE
On success,
.BR PR_CAP_AMBIENT + PR_CAP_AMBIENT_IS_SET ,
@@ -2064,7 +2096,7 @@ and (if it returns)
.B PR_GET_SECCOMP
return the nonnegative values described above.
All other
-.I option
+.I op
values return 0 on success.
On error, \-1 is returned, and
.I errno
@@ -2072,7 +2104,7 @@ is set to indicate the error.
.SH ERRORS
.TP
.B EACCES
-.I option
+.I op
is
.B PR_SET_SECCOMP
and
@@ -2088,7 +2120,7 @@ attribute (see the discussion of
above).
.TP
.B EACCES
-.I option
+.I op
is
.BR PR_SET_MM ,
and
@@ -2098,7 +2130,7 @@ is
the file is not executable.
.TP
.B EBADF
-.I option
+.I op
is
.BR PR_SET_MM ,
.I arg3
@@ -2109,7 +2141,7 @@ and the file descriptor passed in
is not valid.
.TP
.B EBUSY
-.I option
+.I op
is
.BR PR_SET_MM ,
.I arg3
@@ -2124,7 +2156,7 @@ symbolic link, which is prohibited.
is an invalid address.
.TP
.B EFAULT
-.I option
+.I op
is
.BR PR_SET_SECCOMP ,
.I arg2
@@ -2137,7 +2169,7 @@ and
is an invalid address.
.TP
.B EFAULT
-.I option
+.I op
is
.B PR_SET_SYSCALL_USER_DISPATCH
and
@@ -2146,12 +2178,12 @@ has an invalid address.
.TP
.B EINVAL
The value of
-.I option
+.I op
is not recognized,
or not supported on this system.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_MCE_KILL
or
@@ -2165,10 +2197,10 @@ arguments were not specified as zero.
.B EINVAL
.I arg2
is not valid value for this
-.IR option .
+.IR op .
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_SECCOMP
or
@@ -2177,7 +2209,7 @@ and the kernel was not configured with
.BR CONFIG_SECCOMP .
.TP
.B EINVAL
-.I option
+.I op
is
.BR PR_SET_SECCOMP ,
.I arg2
@@ -2187,7 +2219,7 @@ and the kernel was not configured with
.BR CONFIG_SECCOMP_FILTER .
.TP
.B EINVAL
-.I option
+.I op
is
.BR PR_SET_MM ,
and one of the following is true
@@ -2227,7 +2259,7 @@ resource limit to be exceeded.
.RE
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_PTRACER
and
@@ -2237,7 +2269,7 @@ is not 0,
or the PID of an existing process.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_PDEATHSIG
and
@@ -2245,7 +2277,7 @@ and
is not a valid signal number.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_DUMPABLE
and
@@ -2256,7 +2288,7 @@ nor
.BR SUID_DUMP_USER .
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_TIMING
and
@@ -2265,7 +2297,7 @@ is not
.BR PR_TIMING_STATISTICAL .
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_NO_NEW_PRIVS
and
@@ -2279,7 +2311,7 @@ or
is nonzero.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_GET_NO_NEW_PRIVS
and
@@ -2291,7 +2323,7 @@ or
is nonzero.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_THP_DISABLE
and
@@ -2302,7 +2334,7 @@ or
is nonzero.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_GET_THP_DISABLE
and
@@ -2314,7 +2346,7 @@ or
is nonzero.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_CAP_AMBIENT
and an unused argument
@@ -2339,7 +2371,7 @@ and
does not specify a valid capability.
.TP
.B EINVAL
-.I option
+.I op
was
.B PR_GET_SPECULATION_CTRL
or
@@ -2347,8 +2379,9 @@ or
and unused arguments to
.BR prctl ()
are not 0.
+.TP
.B EINVAL
-.I option
+.I op
is
.B PR_PAC_RESET_KEYS
and the arguments are invalid or unsupported.
@@ -2357,7 +2390,7 @@ See the description of
above for details.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SVE_SET_VL
and the arguments are invalid or unsupported,
@@ -2367,13 +2400,13 @@ See the description of
above for details.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SVE_GET_VL
and SVE is not available on this platform.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_SYSCALL_USER_DISPATCH
and one of the following is true:
@@ -2395,7 +2428,7 @@ is invalid.
.RE
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_SET_TAGGED_ADDR_CTRL
and the arguments are invalid or unsupported.
@@ -2404,7 +2437,7 @@ See the description of
above for details.
.TP
.B EINVAL
-.I option
+.I op
is
.B PR_GET_TAGGED_ADDR_CTRL
and the arguments are invalid or unsupported.
@@ -2413,13 +2446,13 @@ See the description of
above for details.
.TP
.B ENODEV
-.I option
+.I op
was
.B PR_SET_SPECULATION_CTRL
the kernel or CPU does not support the requested speculation misfeature.
.TP
.B ENXIO
-.I option
+.I op
was
.B PR_MPX_ENABLE_MANAGEMENT
or
@@ -2428,7 +2461,7 @@ and the kernel or the CPU does not support MPX management.
Check that the kernel and processor have MPX support.
.TP
.B ENXIO
-.I option
+.I op
was
.B PR_SET_SPECULATION_CTRL
implies that the control of the selected speculation misfeature is not possible.
@@ -2437,7 +2470,7 @@ See
for the bit fields to determine which option is available.
.TP
.B EOPNOTSUPP
-.I option
+.I op
is
.B PR_SET_FP_MODE
and
@@ -2445,7 +2478,7 @@ and
has an invalid or unsupported value.
.TP
.B EPERM
-.I option
+.I op
is
.BR PR_SET_SECUREBITS ,
and the caller does not have the
@@ -2457,7 +2490,7 @@ or tried to set a flag whose corresponding locked flag was set
.BR capabilities (7)).
.TP
.B EPERM
-.I option
+.I op
is
.B PR_SET_SPECULATION_CTRL
wherein the speculation was disabled with
@@ -2465,7 +2498,7 @@ wherein the speculation was disabled with
and caller tried to enable it again.
.TP
.B EPERM
-.I option
+.I op
is
.BR PR_SET_KEEPCAPS ,
and the caller's
@@ -2475,7 +2508,7 @@ flag is set
.BR capabilities (7)).
.TP
.B EPERM
-.I option
+.I op
is
.BR PR_CAPBSET_DROP ,
and the caller does not have the
@@ -2483,7 +2516,7 @@ and the caller does not have the
capability.
.TP
.B EPERM
-.I option
+.I op
is
.BR PR_SET_MM ,
and the caller does not have the
@@ -2491,7 +2524,7 @@ and the caller does not have the
capability.
.TP
.B EPERM
-.I option
+.I op
is
.B PR_CAP_AMBIENT
and
@@ -2506,7 +2539,7 @@ or the
securebit has been set.
.TP
.B ERANGE
-.I option
+.I op
was
.B PR_SET_SPECULATION_CTRL
and
@@ -2523,14 +2556,14 @@ IRIX has a
system call (also introduced in Linux 2.1.44
as irix_prctl on the MIPS architecture),
with prototype
-.PP
+.P
.in +4n
.EX
-.BI "ptrdiff_t prctl(int " option ", int " arg2 ", int " arg3 );
+.BI "ptrdiff_t prctl(int " op ", int " arg2 ", int " arg3 );
.EE
.in
-.PP
-and options to get the maximum number of processes per user,
+.P
+and operations to get the maximum number of processes per user,
get the maximum number of processors the calling process can use,
find out whether a specified process is currently blocked,
get or set the maximum stack size, and so on.
diff --git a/man2/pread.2 b/man2/pread.2
index 9764e53..4ff94c0 100644
--- a/man2/pread.2
+++ b/man2/pread.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pread 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH pread 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
pread, pwrite \- read from or write to a file descriptor at a given offset
.SH LIBRARY
@@ -11,18 +11,18 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "ssize_t pread(int " fd ", void " buf [. count "], size_t " count ,
.BI " off_t " offset );
.BI "ssize_t pwrite(int " fd ", const void " buf [. count "], size_t " count ,
.BI " off_t " offset );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR pread (),
.BR pwrite ():
.nf
@@ -40,7 +40,7 @@ at offset
(from the start of the file) into the buffer starting at
.IR buf .
The file offset is not changed.
-.PP
+.P
.BR pwrite ()
writes up to
.I count
@@ -51,7 +51,7 @@ to the file descriptor
at offset
.IR offset .
The file offset is not changed.
-.PP
+.P
The file referenced by
.I fd
must be capable of seeking.
@@ -63,13 +63,13 @@ returns the number of bytes read
and
.BR pwrite ()
returns the number of bytes written.
-.PP
+.P
Note that it is not an error for a successful call to transfer fewer bytes
than requested (see
.BR read (2)
and
.BR write (2)).
-.PP
+.P
On error, \-1 is returned and
.I errno
is set to indicate the error.
@@ -92,7 +92,7 @@ or
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
-.PP
+.P
Added in Linux 2.1.60;
the entries in the i386 system call table were added in Linux 2.1.69.
C library support (including emulation using
@@ -114,7 +114,7 @@ The glibc
and
.BR pwrite ()
wrapper functions transparently deal with the change.
-.PP
+.P
On some 32-bit architectures,
the calling signature for these system calls differ,
for the reasons described in
diff --git a/man2/process_madvise.2 b/man2/process_madvise.2
index b95f4e3..37ec5fd 100644
--- a/man2/process_madvise.2
+++ b/man2/process_madvise.2
@@ -5,7 +5,7 @@
.\"
.\" Commit ecb8ac8b1f146915aa6b96449b66dd48984caacc
.\"
-.TH process_madvise 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH process_madvise 2 2024-02-28 "Linux man-pages 6.7"
.SH NAME
process_madvise \- give advice about use of memory to a process
.SH LIBRARY
@@ -13,23 +13,12 @@ Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
-.BR "#include <sys/mman.h>" " /* Definition of " MADV_* " constants */"
-.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
-.BR "#include <sys/uio.h>" " /* Definition of " "struct iovec" " type */"
-.B #include <unistd.h>
-.PP
-.BI "ssize_t syscall(SYS_process_madvise, int " pidfd ,
-.BI " const struct iovec *" iovec ", size_t " vlen \
-", int " advice ,
-.BI " unsigned int " flags ");"
+.B #include <sys/mman.h>
+.P
+.BI "ssize_t process_madvise(int " pidfd ", const struct iovec " iovec [. n ],
+.BI " size_t " n ", int " advice \
+", unsigned int " flags );
.fi
-.PP
-.IR Note :
-glibc provides no wrapper for
-.BR process_madvise (),
-necessitating the use of
-.BR syscall (2).
-.\" FIXME: See <https://sourceware.org/bugzilla/show_bug.cgi?id=27380>
.SH DESCRIPTION
The
.BR process_madvise ()
@@ -38,23 +27,23 @@ address ranges of another process or of the calling process.
It provides the advice for the address ranges described by
.I iovec
and
-.IR vlen .
+.IR n .
The goal of such advice is to improve system or application performance.
-.PP
+.P
The
.I pidfd
argument is a PID file descriptor (see
.BR pidfd_open (2))
that specifies the process to which the advice is to be applied.
-.PP
+.P
The pointer
.I iovec
points to an array of
.I iovec
structures, described in
.BR iovec (3type).
-.PP
-.I vlen
+.P
+.I n
specifies the number of elements in the array of
.I iovec
structures.
@@ -64,7 +53,7 @@ This value must be less than or equal to
.I <limits.h>
or accessible via the call
.IR sysconf(_SC_IOV_MAX) ).
-.PP
+.P
The
.I advice
argument is one of the following values:
@@ -84,31 +73,31 @@ See
.B MADV_WILLNEED
See
.BR madvise (2).
-.PP
+.P
The
.I flags
argument is reserved for future use; currently, this argument must be
specified as 0.
-.PP
+.P
The
-.I vlen
+.I n
and
.I iovec
arguments are checked before applying any advice.
If
-.I vlen
+.I n
is too big, or
.I iovec
is invalid,
then an error will be returned immediately and no advice will be applied.
-.PP
+.P
The advice might be applied to only a part of
.I iovec
if one of its elements points to an invalid memory region in the
remote process.
No further elements will be processed beyond that point.
(See the discussion regarding partial advice in RETURN VALUE.)
-.PP
+.P
.\" commit 96cfe2c0fd23ea7c2368d14f769d287e7ae1082e
Starting in Linux 5.12,
permission to apply advice to another process is governed by
@@ -133,7 +122,7 @@ if an error occurred after some
elements were already processed.
The caller should check the return value to determine whether a partial
advice occurred.
-.PP
+.P
On error, \-1 is returned and
.I errno
is set to indicate the error.
@@ -163,7 +152,7 @@ overflows a
value.
.TP
.B EINVAL
-.I vlen
+.I n
is too large.
.TP
.B ENOMEM
@@ -177,7 +166,7 @@ The caller does not have permission to access the address space of the process
.TP
.B ESRCH
The target process does not exist (i.e., it has terminated and been waited on).
-.PP
+.P
See
.BR madvise (2)
for
@@ -187,13 +176,15 @@ errors.
Linux.
.SH HISTORY
Linux 5.10.
-.\" commit ecb8ac8b1f146915aa6b96449b66dd48984caacc
-.PP
+.\" Linux commit ecb8ac8b1f146915aa6b96449b66dd48984caacc
+glibc 2.36.
+.\" glibc commit d19ee3473d68ca0e794f3a8b7677a0983ae1342e
+.P
Support for this system call is optional,
depending on the setting of the
.B CONFIG_ADVISE_SYSCALLS
configuration option.
-.PP
+.P
When this system call first appeared in Linux 5.10,
permission to apply advice to another process was entirely governed by
ptrace access mode
diff --git a/man2/process_vm_readv.2 b/man2/process_vm_readv.2
index 86da35c..23c9111 100644
--- a/man2/process_vm_readv.2
+++ b/man2/process_vm_readv.2
@@ -6,7 +6,7 @@
.\"
.\" Commit fcf634098c00dd9cd247447368495f0b79be12d1
.\"
-.TH process_vm_readv 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH process_vm_readv 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
process_vm_readv, process_vm_writev \-
transfer data between process address spaces
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/uio.h>
-.PP
+.P
.BI "ssize_t process_vm_readv(pid_t " pid ,
.BI " const struct iovec *" local_iov ,
.BI " unsigned long " liovcnt ,
@@ -30,12 +30,12 @@ Standard C library
.BI " unsigned long " riovcnt ,
.BI " unsigned long " flags ");"
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR process_vm_readv (),
.BR process_vm_writev ():
.nf
@@ -48,7 +48,7 @@ of the calling process ("the local process") and the process identified by
("the remote process").
The data moves directly between the address spaces of the two processes,
without passing through kernel space.
-.PP
+.P
The
.BR process_vm_readv ()
system call transfers data from the remote process to the local process.
@@ -73,7 +73,7 @@ and
.I liovcnt
specifies the number of elements in
.IR local_iov .
-.PP
+.P
The
.BR process_vm_writev ()
system call is the converse of
@@ -87,7 +87,7 @@ and
.I remote_iov
have the same meaning as for
.BR process_vm_readv ().
-.PP
+.P
The
.I local_iov
and
@@ -96,7 +96,7 @@ arguments point to an array of
.I iovec
structures, described in
.BR iovec (3type).
-.PP
+.P
Buffers are processed in array order.
This means that
.BR process_vm_readv ()
@@ -110,7 +110,7 @@ Likewise,
is completely read before proceeding to
.IR remote_iov[1] ,
and so on.
-.PP
+.P
Similarly,
.BR process_vm_writev ()
writes out the entire contents of
@@ -121,7 +121,7 @@ and it completely fills
.I remote_iov[0]
before proceeding to
.IR remote_iov[1] .
-.PP
+.P
The lengths of
.I remote_iov[i].iov_len
and
@@ -129,11 +129,11 @@ and
do not have to be the same.
Thus, it is possible to split a single local buffer
into multiple remote buffers, or vice versa.
-.PP
+.P
The
.I flags
argument is currently unused and must be set to 0.
-.PP
+.P
The values specified in the
.I liovcnt
and
@@ -146,7 +146,7 @@ or accessible via the call
.IR sysconf(_SC_IOV_MAX) ).
.\" In time, glibc might provide a wrapper that works around this limit,
.\" as is done for readv()/writev()
-.PP
+.P
The count arguments and
.I local_iov
are checked before doing any transfers.
@@ -156,7 +156,7 @@ is invalid,
or the addresses refer to regions that are inaccessible to the local process,
none of the vectors will be processed
and an error will be returned immediately.
-.PP
+.P
Note, however, that these system calls do not check the memory regions
in the remote process until just before doing the read/write.
Consequently, a partial read/write (see RETURN VALUE)
@@ -176,7 +176,7 @@ elements and have them merge back into a single write
entry.
The first read entry goes up to the page boundary,
while the second starts on the next page boundary.)
-.PP
+.P
Permission to read from or write to another process
is governed by a ptrace access mode
.B PTRACE_MODE_ATTACH_REALCREDS
@@ -198,7 +198,7 @@ These system calls won't perform a partial transfer that splits a single
element.)
The caller should check the return value to determine whether
a partial read/write occurred.
-.PP
+.P
On error, \-1 is returned and
.I errno
is set to indicate the error.
@@ -260,7 +260,7 @@ The data transfers performed by
and
.BR process_vm_writev ()
are not guaranteed to be atomic in any way.
-.PP
+.P
These system calls were designed to permit fast message passing
by allowing messages to be exchanged with a single copy operation
(rather than the double copy that would be required
@@ -276,7 +276,7 @@ and writes the first 10 bytes into
.I buf1
and the second 10 bytes into
.IR buf2 .
-.PP
+.P
.\" SRC BEGIN (process_vm_readv.c)
.EX
#define _GNU_SOURCE
diff --git a/man2/ptrace.2 b/man2/ptrace.2
index 4149a32..1cd9966 100644
--- a/man2/ptrace.2
+++ b/man2/ptrace.2
@@ -83,7 +83,7 @@
.\"
.\" and others that can be found in the arch/*/include/uapi/asm/ptrace files
.\"
-.TH ptrace 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ptrace 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
ptrace \- process trace
.SH LIBRARY
@@ -92,8 +92,8 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/ptrace.h>
-.PP
-.BI "long ptrace(enum __ptrace_request " request ", pid_t " pid ,
+.P
+.BI "long ptrace(enum __ptrace_request " op ", pid_t " pid ,
.BI " void *" addr ", void *" data );
.fi
.SH DESCRIPTION
@@ -104,7 +104,7 @@ may observe and control the execution of another process (the "tracee"),
and examine and change the tracee's memory and registers.
It is primarily used to implement breakpoint debugging and system
call tracing.
-.PP
+.P
A tracee first needs to be attached to the tracer.
Attachment and subsequent commands are per thread:
in a multithreaded process,
@@ -115,23 +115,23 @@ Therefore, "tracee" always means "(one) thread",
never "a (possibly multithreaded) process".
Ptrace commands are always sent to
a specific tracee using a call of the form
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_foo, pid, ...)
.EE
.in
-.PP
+.P
where
.I pid
is the thread ID of the corresponding Linux thread.
-.PP
+.P
(Note that in this page, a "multithreaded process"
means a thread group consisting of threads created using the
.BR clone (2)
.B CLONE_THREAD
flag.)
-.PP
+.P
A process can initiate a trace by calling
.BR fork (2)
and having the resulting child do a
@@ -142,7 +142,7 @@ Alternatively, one process may commence tracing another process using
.B PTRACE_ATTACH
or
.BR PTRACE_SEIZE .
-.PP
+.P
While being traced, the tracee will stop each time a signal is delivered,
even if the signal is being ignored.
(An exception is
@@ -155,11 +155,11 @@ The tracer will be notified at its next call to
value containing information that indicates
the cause of the stop in the tracee.
While the tracee is stopped,
-the tracer can use various ptrace requests to inspect and modify the tracee.
+the tracer can use various ptrace operations to inspect and modify the tracee.
The tracer then causes the tracee to continue,
optionally ignoring the delivered signal
(or even delivering a different signal instead).
-.PP
+.P
If the
.B PTRACE_O_TRACEEXEC
option is not in effect, all successful calls to
@@ -169,18 +169,18 @@ by the traced process will cause it to be sent a
signal,
giving the parent a chance to gain control before the new program
begins execution.
-.PP
+.P
When the tracer is finished tracing, it can cause the tracee to continue
executing in a normal, untraced mode via
.BR PTRACE_DETACH .
-.PP
+.P
The value of
-.I request
-determines the action to be performed:
+.I op
+determines the operation to be performed:
.TP
.B PTRACE_TRACEME
Indicate that this process is to be traced by its parent.
-A process probably shouldn't make this request if its parent
+A process probably shouldn't make this operation if its parent
isn't expecting to trace it.
.RI ( pid ,
.IR addr ,
@@ -190,12 +190,12 @@ are ignored.)
.IP
The
.B PTRACE_TRACEME
-request is used only by the tracee;
-the remaining requests are used only by the tracer.
-In the following requests,
+operation is used only by the tracee;
+the remaining operations are used only by the tracer.
+In the following operations,
.I pid
specifies the thread ID of the tracee to be acted on.
-For requests other than
+For operations other than
.BR PTRACE_ATTACH ,
.BR PTRACE_SEIZE ,
.BR PTRACE_INTERRUPT ,
@@ -203,14 +203,16 @@ and
.BR PTRACE_KILL ,
the tracee must be stopped.
.TP
-.BR PTRACE_PEEKTEXT ", " PTRACE_PEEKDATA
+.B PTRACE_PEEKTEXT
+.TQ
+.B PTRACE_PEEKDATA
Read a word at the address
.I addr
in the tracee's memory, returning the word as the result of the
.BR ptrace ()
call.
Linux does not have separate text and data address spaces,
-so these two requests are currently equivalent.
+so these two operations are currently equivalent.
.RI ( data
is ignored; but see NOTES.)
.TP
@@ -232,7 +234,9 @@ See NOTES.
.RI ( data
is ignored; but see NOTES.)
.TP
-.BR PTRACE_POKETEXT ", " PTRACE_POKEDATA
+.B PTRACE_POKETEXT
+.TQ
+.B PTRACE_POKEDATA
Copy the word
.I data
to the address
@@ -242,7 +246,7 @@ As for
.B PTRACE_PEEKTEXT
and
.BR PTRACE_PEEKDATA ,
-these two requests are currently equivalent.
+these two operations are currently equivalent.
.TP
.B PTRACE_POKEUSER
.\" PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
@@ -260,7 +264,9 @@ some modifications to the USER area are disallowed.
.\" FIXME In the preceding sentence, which modifications are disallowed,
.\" and when they are disallowed, how does user space discover that fact?
.TP
-.BR PTRACE_GETREGS ", " PTRACE_GETFPREGS
+.B PTRACE_GETREGS
+.TQ
+.B PTRACE_GETFPREGS
Copy the tracee's general-purpose or floating-point registers,
respectively, to the address
.I data
@@ -304,7 +310,9 @@ On return, the kernel modifies
.B iov.len
to indicate the actual number of bytes returned.
.TP
-.BR PTRACE_SETREGS ", " PTRACE_SETFPREGS
+.B PTRACE_SETREGS
+.TQ
+.B PTRACE_SETFPREGS
Modify the tracee's general-purpose or floating-point registers,
respectively, from the address
.I data
@@ -391,7 +399,7 @@ field includes information
.RB ( __SI_CHLD ,
.BR __SI_FAULT ,
etc.) that are not otherwise exposed to user space.
-.PP
+.P
.in +4n
.EX
struct ptrace_peeksiginfo_args {
@@ -696,7 +704,9 @@ whether a signal sent to the tracee is delivered or not.
.RI ( addr
is ignored.)
.TP
-.BR PTRACE_SYSCALL ", " PTRACE_SINGLESTEP
+.B PTRACE_SYSCALL
+.TQ
+.B PTRACE_SINGLESTEP
Restart the stopped tracee as for
.BR PTRACE_CONT ,
but arrange for the tracee to be stopped at
@@ -730,7 +740,7 @@ argument.
The
.I addr
argument is ignored.
-This request is currently
+This operation is currently
.\" As of 4.19-rc2
supported only on arm (and arm64, though only for backwards compatibility),
.\" commit 27aa55c5e5123fa8b8ad0156559d34d7edff58ca
@@ -740,7 +750,9 @@ system call number in).
.\" see change_syscall in tools/testing/selftests/seccomp/seccomp_bpf.c
.\" and also strace's linux/*/set_scno.c files.
.TP
-.BR PTRACE_SYSEMU ", " PTRACE_SYSEMU_SINGLESTEP " (since Linux 2.6.14)"
+.B PTRACE_SYSEMU
+.TQ
+.BR PTRACE_SYSEMU_SINGLESTEP " (since Linux 2.6.14)"
For
.BR PTRACE_SYSEMU ,
continue and stop on entry to the next system call,
@@ -758,7 +770,7 @@ argument is treated as for
The
.I addr
argument is ignored.
-These requests are currently
+These operations are currently
.\" As at 3.7
supported only on x86.
.TP
@@ -1130,7 +1142,7 @@ all threads exit.
Tracees report their death to their tracer(s).
Notification of this event is delivered via
.BR waitpid (2).
-.PP
+.P
Note that the killing signal will first cause signal-delivery-stop
(on one tracee only),
and only after it is injected by the tracer
@@ -1139,7 +1151,7 @@ will death from the signal happen on
.I all
tracees within a multithreaded process.
(The term "signal-delivery-stop" is explained below.)
-.PP
+.P
.B SIGKILL
does not generate signal-delivery-stop and
therefore the tracer can't suppress it.
@@ -1151,16 +1163,16 @@ The net effect is that
.B SIGKILL
always kills the process (all its threads),
even if some threads of the process are ptraced.
-.PP
+.P
When the tracee calls
.BR _exit (2),
it reports its death to its tracer.
Other threads are not affected.
-.PP
+.P
When any thread executes
.BR exit_group (2),
every tracee in its thread group reports its death to its tracer.
-.PP
+.P
If the
.B PTRACE_O_TRACEEXIT
option is on,
@@ -1175,7 +1187,7 @@ depending on the kernel version; see BUGS below),
and when threads are torn down on
.BR execve (2)
in a multithreaded process.
-.PP
+.P
The tracer cannot assume that the ptrace-stopped tracee exists.
There are many scenarios when the tracee may die while stopped (such as
.BR SIGKILL ).
@@ -1199,8 +1211,8 @@ ptrace operation returned
.I waitpid(WNOHANG)
may return 0 instead.
In other words, the tracee may be "not yet fully dead",
-but already refusing ptrace requests.
-.PP
+but already refusing ptrace operations.
+.P
The tracer can't assume that the tracee
.I always
ends its life by reporting
@@ -1236,11 +1248,11 @@ in group-stop before
it will not respond to signals until
.B SIGCONT
is received.
-.PP
+.P
There are many kinds of states when the tracee is stopped, and in ptrace
discussions they are often conflated.
Therefore, it is important to use precise terms.
-.PP
+.P
In this manual page, any stopped state in which the tracee is ready
to accept ptrace commands from the tracer is called
.IR ptrace-stop .
@@ -1252,18 +1264,18 @@ be further subdivided into
.IR "PTRACE_EVENT stops" ,
and so on.
These stopped states are described in detail below.
-.PP
+.P
When the running tracee enters ptrace-stop, it notifies its tracer using
.BR waitpid (2)
(or one of the other "wait" system calls).
Most of this manual page assumes that the tracer waits with:
-.PP
+.P
.in +4n
.EX
pid = waitpid(pid_or_minus_1, &status, __WALL);
.EE
.in
-.PP
+.P
Ptrace-stopped tracees are reported as returns with
.I pid
greater than 0 and
@@ -1275,7 +1287,7 @@ true.
.\" rules different if user wants to use waitid? Will waitid require
.\" WEXITED?
.\"
-.PP
+.P
The
.B __WALL
flag does not include the
@@ -1283,14 +1295,14 @@ flag does not include the
and
.B WEXITED
flags, but implies their functionality.
-.PP
+.P
Setting the
.B WCONTINUED
flag when calling
.BR waitpid (2)
is not recommended: the "continued" state is per-process and
consuming it can confuse the real parent of the tracee.
-.PP
+.P
Use of the
.B WNOHANG
flag may cause
@@ -1298,7 +1310,7 @@ flag may cause
to return 0 ("no wait results available yet")
even if the tracer knows there should be a notification.
Example:
-.PP
+.P
.in +4n
.EX
errno = 0;
@@ -1313,7 +1325,7 @@ if (errno == ESRCH) {
.\" FIXME .
.\" waitid usage? WNOWAIT?
.\" describe how wait notifications queue (or not queue)
-.PP
+.P
The following kinds of ptrace-stops exist: signal-delivery-stops,
group-stops,
.B PTRACE_EVENT
@@ -1343,7 +1355,7 @@ If the selected thread is traced, it enters signal-delivery-stop.
At this point, the signal is not yet delivered to the process,
and can be suppressed by the tracer.
If the tracer doesn't suppress the signal,
-it passes the signal to the tracee in the next ptrace restart request.
+it passes the signal to the tracee in the next ptrace restart operation.
This second step of signal delivery is called
.I "signal injection"
in this manual page.
@@ -1352,7 +1364,7 @@ signal-delivery-stop doesn't happen until the signal is unblocked,
with the usual exception that
.B SIGSTOP
can't be blocked.
-.PP
+.P
Signal-delivery-stop is observed by the tracer as
.BR waitpid (2)
returning with
@@ -1369,16 +1381,16 @@ returns a stopping signal, this may be a group-stop; see below.
.SS Signal injection and suppression
After signal-delivery-stop is observed by the tracer,
the tracer should restart the tracee with the call
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_restart, pid, 0, sig)
.EE
.in
-.PP
+.P
where
.B PTRACE_restart
-is one of the restarting ptrace requests.
+is one of the restarting ptrace operations.
If
.I sig
is 0, then a signal is not delivered.
@@ -1388,13 +1400,13 @@ is delivered.
This operation is called
.I "signal injection"
in this manual page, to distinguish it from signal-delivery-stop.
-.PP
+.P
The
.I sig
value may be different from the
.I WSTOPSIG(status)
value: the tracer can cause a different signal to be injected.
-.PP
+.P
Note that a suppressed signal still causes system calls to return
prematurely.
In this case, system calls will be restarted: the tracer will
@@ -1410,7 +1422,7 @@ signal is suppressed;
however, kernel bugs exist which cause some system calls to fail with
.B EINTR
even though no observable signal is injected to the tracee.
-.PP
+.P
Restarting ptrace commands issued in ptrace-stops other than
signal-delivery-stop are not guaranteed to inject a signal, even if
.I sig
@@ -1421,26 +1433,26 @@ may simply be ignored.
Ptrace users should not try to "create a new signal" this way: use
.BR tgkill (2)
instead.
-.PP
-The fact that signal injection requests may be ignored
+.P
+The fact that signal injection operations may be ignored
when restarting the tracee after
ptrace stops that are not signal-delivery-stops
is a cause of confusion among ptrace users.
One typical scenario is that the tracer observes group-stop,
mistakes it for signal-delivery-stop, restarts the tracee with
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_restart, pid, 0, stopsig)
.EE
.in
-.PP
+.P
with the intention of injecting
.IR stopsig ,
but
.I stopsig
gets ignored and the tracee continues to run.
-.PP
+.P
The
.B SIGCONT
signal has a side effect of waking up (all threads of)
@@ -1460,11 +1472,11 @@ was delivered.
In other words,
.B SIGCONT
may be not the first signal observed by the tracee after it was sent.
-.PP
+.P
Stopping signals cause (all threads of) a process to enter group-stop.
This side effect happens after signal injection, and therefore can be
suppressed by the tracer.
-.PP
+.P
In Linux 2.4 and earlier, the
.B SIGSTOP
signal can't be injected.
@@ -1474,7 +1486,7 @@ signal can't be injected.
.\" /* The debugger continued. Ignore SIGSTOP. */
.\" if (signr == SIGSTOP)
.\" continue;
-.PP
+.P
.B PTRACE_GETSIGINFO
can be used to retrieve a
.I siginfo_t
@@ -1503,7 +1515,7 @@ will group-stop be initiated on
tracees within the multithreaded process.
As usual, every tracee reports its group-stop separately
to the corresponding tracer.
-.PP
+.P
Group-stop is observed by the tracer as
.BR waitpid (2)
returning with
@@ -1512,13 +1524,13 @@ true, with the stopping signal available via
.IR WSTOPSIG(status) .
The same result is returned by some other classes of ptrace-stops,
therefore the recommended practice is to perform the call
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)
.EE
.in
-.PP
+.P
The call can be avoided if the signal is not
.BR SIGSTOP ,
.BR SIGTSTP ,
@@ -1539,7 +1551,7 @@ then it is definitely a group-stop.
("no such process") if a
.B SIGKILL
killed the tracee.)
-.PP
+.P
If tracee was attached using
.BR PTRACE_SEIZE ,
group-stop is indicated by
@@ -1549,7 +1561,7 @@ This allows detection of group-stops
without requiring an extra
.B PTRACE_GETSIGINFO
call.
-.PP
+.P
As of Linux 2.6.38,
after the tracer sees the tracee ptrace-stop and until it
restarts or kills it, the tracee will not run,
@@ -1558,7 +1570,7 @@ and will not send notifications (except
death) to the tracer, even if the tracer enters into another
.BR waitpid (2)
call.
-.PP
+.P
The kernel behavior described in the previous paragraph
causes a problem with transparent handling of stopping signals.
If the tracer restarts the tracee after group-stop,
@@ -1572,7 +1584,7 @@ signals will not be reported to the tracer;
this would cause the
.B SIGCONT
signals to have no effect on the tracee.
-.PP
+.P
Since Linux 3.4, there is a method to overcome this problem: instead of
.BR PTRACE_CONT ,
a
@@ -1589,7 +1601,7 @@ If the tracer sets
options, the tracee will enter ptrace-stops called
.B PTRACE_EVENT
stops.
-.PP
+.P
.B PTRACE_EVENT
stops are observed by the tracer as
.BR waitpid (2)
@@ -1606,13 +1618,13 @@ An additional bit is set in the higher byte of the status word:
the value
.I status>>8
will be
-.PP
+.P
.in +4n
.EX
((PTRACE_EVENT_foo<<8) | SIGTRAP).
.EE
.in
-.PP
+.P
The following events exist:
.TP
.B PTRACE_EVENT_VFORK
@@ -1649,7 +1661,7 @@ with the
.B CLONE_VFORK
flag,
but after the child unblocked this tracee by exiting or execing.
-.PP
+.P
For all four stops described above,
the stop occurs in the parent (i.e., the tracee),
not in the newly created thread.
@@ -1698,7 +1710,7 @@ portion of the seccomp filter rule) can be retrieved with
.BR PTRACE_GETEVENTMSG .
The semantics of this stop are described in
detail in a separate section below.
-.PP
+.P
.B PTRACE_GETSIGINFO
on
.B PTRACE_EVENT
@@ -1737,7 +1749,7 @@ Note that all mentions
.B PTRACE_SYSEMU
apply equally to
.BR PTRACE_SYSEMU_SINGLESTEP .
-.PP
+.P
However, even if the tracee was continued using
.BR PTRACE_SYSCALL ,
it is not guaranteed that the next stop will be a syscall-exit-stop.
@@ -1754,7 +1766,7 @@ or die silently (if it is a thread group leader, the
happened in another thread,
and that thread is not traced by the same tracer;
this situation is discussed later).
-.PP
+.P
Syscall-enter-stop and syscall-exit-stop are observed by the tracer as
.BR waitpid (2)
returning with
@@ -1769,7 +1781,7 @@ option was set by the tracer, then
.I WSTOPSIG(status)
will give the value
.IR "(SIGTRAP\ |\ 0x80)" .
-.PP
+.P
Syscall-stops can be distinguished from signal-delivery-stop with
.B SIGTRAP
by querying
@@ -1786,7 +1798,7 @@ for example, a system call
etc.),
expiration of a POSIX timer,
change of state on a POSIX message queue,
-or completion of an asynchronous I/O request.
+or completion of an asynchronous I/O operation.
.TP
.IR si_code " == SI_KERNEL (0x80)"
.B SIGTRAP
@@ -1794,12 +1806,12 @@ was sent by the kernel.
.TP
.IR si_code " == SIGTRAP or " si_code " == (SIGTRAP|0x80)"
This is a syscall-stop.
-.PP
+.P
However, syscall-stops happen very often (twice per system call),
and performing
.B PTRACE_GETSIGINFO
for every syscall-stop may be somewhat expensive.
-.PP
+.P
Some architectures allow the cases to be distinguished
by examining registers.
For example, on x86,
@@ -1822,13 +1834,13 @@ looks like "syscall-stop which is not syscall-enter-stop";
in other words, it looks like a
"stray syscall-exit-stop" and can be detected this way.
But such detection is fragile and is best avoided.
-.PP
+.P
Using the
.B PTRACE_O_TRACESYSGOOD
option is the recommended method to distinguish syscall-stops
from other kinds of ptrace-stops,
since it is reliable and does not incur a performance penalty.
-.PP
+.P
Syscall-enter-stop and syscall-exit-stop are
indistinguishable from each other by the tracer.
The tracer needs to keep track of the sequence of
@@ -1843,12 +1855,12 @@ However, note that seccomp stops (see below) can cause syscall-exit-stops,
without preceding syscall-entry-stops.
If seccomp is in use, care needs
to be taken not to misinterpret such stops as syscall-entry-stops.
-.PP
+.P
If after syscall-enter-stop,
the tracer uses a restarting command other than
.BR PTRACE_SYSCALL ,
syscall-exit-stop is not generated.
-.PP
+.P
.B PTRACE_GETSIGINFO
on syscall-stops returns
.B SIGTRAP
@@ -1869,7 +1881,7 @@ of ptrace stops has changed between kernel versions.
This documents the behavior
from their introduction until Linux 4.7 (inclusive).
The behavior in later kernel versions is documented in the next section.
-.PP
+.P
A
.B PTRACE_EVENT_SECCOMP
stop occurs whenever a
@@ -1879,7 +1891,7 @@ This is independent of which methods was used to restart the system call.
Notably, seccomp still runs even if the tracee was restarted using
.B PTRACE_SYSEMU
and this system call is unconditionally skipped.
-.PP
+.P
Restarts from this stop will behave as if the stop had occurred right
before the system call in question.
In particular, both
@@ -1909,7 +1921,7 @@ Note that seccomp no longer runs (and no
.B PTRACE_EVENT_SECCOMP
will be reported) if the system call is skipped due to
.BR PTRACE_SYSEMU .
-.PP
+.P
Functionally, a
.B PTRACE_EVENT_SECCOMP
stop functions comparably
@@ -1920,7 +1932,7 @@ the system call number may be changed and any other modified registers
are visible to the to-be-executed system call as well).
Note that there may be,
but need not have been a preceding syscall-entry-stop.
-.PP
+.P
After a
.B PTRACE_EVENT_SECCOMP
stop, seccomp will be rerun, with a
@@ -1947,12 +1959,12 @@ and
.BR PTRACE_KILL )
require the tracee to be in a ptrace-stop, otherwise they fail with
.BR ESRCH .
-.PP
+.P
When the tracee is in ptrace-stop,
the tracer can read and write data to
the tracee using informational commands.
These commands leave the tracee in ptrace-stopped state:
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);
@@ -1967,7 +1979,7 @@ ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);
ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);
.EE
.in
-.PP
+.P
Note that some errors are not reported.
For example, setting signal information
.RI ( siginfo )
@@ -1978,15 +1990,15 @@ querying
.B PTRACE_GETEVENTMSG
may succeed and return some random value if current ptrace-stop
is not documented as returning a meaningful event message.
-.PP
+.P
The call
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);
.EE
.in
-.PP
+.P
affects one tracee.
The tracee's current flags are replaced.
Flags are inherited by new tracees created and "auto-attached" via active
@@ -1995,16 +2007,16 @@ Flags are inherited by new tracees created and "auto-attached" via active
or
.B PTRACE_O_TRACECLONE
options.
-.PP
+.P
Another group of commands makes the ptrace-stopped tracee run.
They have the form:
-.PP
+.P
.in +4n
.EX
ptrace(cmd, pid, 0, sig);
.EE
.in
-.PP
+.P
where
.I cmd
is
@@ -2027,21 +2039,21 @@ recommended practice is to always pass 0 in
.IR sig .)
.SS Attaching and detaching
A thread can be attached to the tracer using the call
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_ATTACH, pid, 0, 0);
.EE
.in
-.PP
+.P
or
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);
.EE
.in
-.PP
+.P
.B PTRACE_ATTACH
sends
.B SIGSTOP
@@ -2065,14 +2077,14 @@ may race and the concurrent
may be lost.
.\"
.\" FIXME Describe how to attach to a thread which is already group-stopped.
-.PP
+.P
Since attaching sends
.B SIGSTOP
and the tracer usually suppresses it, this may cause a stray
.B EINTR
return from the currently executing system call in the tracee,
as described in the "Signal injection and suppression" section.
-.PP
+.P
Since Linux 3.4,
.B PTRACE_SEIZE
can be used instead of
@@ -2084,30 +2096,30 @@ it after attach (or at any other time) without sending it any signals,
use
.B PTRACE_INTERRUPT
command.
-.PP
-The request
-.PP
+.P
+The operation
+.P
.in +4n
.EX
ptrace(PTRACE_TRACEME, 0, 0, 0);
.EE
.in
-.PP
+.P
turns the calling thread into a tracee.
The thread continues to run (doesn't enter ptrace-stop).
A common practice is to follow the
.B PTRACE_TRACEME
with
-.PP
+.P
.in +4n
.EX
raise(SIGSTOP);
.EE
.in
-.PP
+.P
and allow the parent (which is our tracer now) to observe our
signal-delivery-stop.
-.PP
+.P
If the
.BR PTRACE_O_TRACEFORK ,
.BR PTRACE_O_TRACEVFORK ,
@@ -2131,15 +2143,15 @@ are automatically attached to the same tracer which traced their parent.
.B SIGSTOP
is delivered to the children, causing them to enter
signal-delivery-stop after they exit the system call which created them.
-.PP
+.P
Detaching of the tracee is performed by:
-.PP
+.P
.in +4n
.EX
ptrace(PTRACE_DETACH, pid, 0, sig);
.EE
.in
-.PP
+.P
.B PTRACE_DETACH
is a restarting operation;
therefore it requires the tracee to be in ptrace-stop.
@@ -2147,7 +2159,7 @@ If the tracee is in signal-delivery-stop, a signal can be injected.
Otherwise, the
.I sig
parameter may be silently ignored.
-.PP
+.P
If the tracee is running when the tracer wants to detach it,
the usual solution is to send
.B SIGSTOP
@@ -2171,7 +2183,7 @@ because no signal delivery happens while it is\[em]not even
.BR SIGSTOP .
.\" FIXME Describe how to detach from a group-stopped tracee so that it
.\" doesn't run, but continues to wait for SIGCONT.
-.PP
+.P
If the tracer dies, all tracees are automatically detached and restarted,
unless they were in group-stop.
Handling of restart from group-stop is currently buggy,
@@ -2243,10 +2255,10 @@ If the thread group leader was not traced
.BR execve (2)
it will appear as if it has become a tracee of
the tracer of the execing tracee.
-.PP
+.P
All of the above effects are the artifacts of
the thread ID change in the tracee.
-.PP
+.P
The
.B PTRACE_O_TRACEEXEC
option is the recommended tool for dealing with this situation.
@@ -2266,13 +2278,13 @@ option disables legacy
.B SIGTRAP
generation on
.BR execve (2).
-.PP
+.P
When the tracer receives
.B PTRACE_EVENT_EXEC
stop notification,
it is guaranteed that except this tracee and the thread group leader,
no other threads from the process are alive.
-.PP
+.P
On receiving the
.B PTRACE_EVENT_EXEC
stop notification,
@@ -2280,17 +2292,17 @@ the tracer should clean up all its internal
data structures describing the threads of this process,
and retain only one data structure\[em]one which
describes the single still running tracee, with
-.PP
+.P
.in +4n
.EX
thread ID == thread group ID == process ID.
.EE
.in
-.PP
+.P
Example: two threads call
.BR execve (2)
at the same time:
-.PP
+.P
.nf
*** we get syscall-enter-stop in thread 1: **
PID1 execve("/bin/foo", "foo" <unfinished ...>
@@ -2302,7 +2314,7 @@ PID2 execve("/bin/bar", "bar" <unfinished ...>
*** we get syscall-exit-stop for PID0: **
PID0 <... execve resumed> ) = 0
.fi
-.PP
+.P
If the
.B PTRACE_O_TRACEEXEC
option is
@@ -2329,7 +2341,7 @@ set to 0
.RI ( SI_USER ).
This signal may be blocked by signal mask,
and thus may be delivered (much) later.
-.PP
+.P
Usually, the tracer (for example,
.BR strace (1))
would not want to show this extra post-execve
@@ -2357,10 +2369,10 @@ This used to cause the real parent of the process to stop receiving
several kinds of
.BR waitpid (2)
notifications when the child process is traced by some other process.
-.PP
+.P
Many of these bugs have been fixed, but as of Linux 2.6.38 several still
exist; see BUGS below.
-.PP
+.P
As of Linux 2.6.38, the following is believed to work correctly:
.IP \[bu] 3
exit/death by signal is reported first to the tracer, then,
@@ -2373,21 +2385,21 @@ the report is sent only once.
.SH RETURN VALUE
On success, the
.B PTRACE_PEEK*
-requests return the requested data (but see NOTES),
+operations return the requested data (but see NOTES),
the
.B PTRACE_SECCOMP_GET_FILTER
-request returns the number of instructions in the BPF program,
+operation returns the number of instructions in the BPF program,
the
.B PTRACE_GET_SYSCALL_INFO
-request returns the number of bytes available to be written by the kernel,
-and other requests return zero.
-.PP
-On error, all requests return \-1, and
+operation returns the number of bytes available to be written by the kernel,
+and other operations return zero.
+.P
+On error, all operations return \-1, and
.I errno
is set to indicate the error.
Since the value returned by a successful
.B PTRACE_PEEK*
-request may be \-1, the caller must clear
+operation may be \-1, the caller must clear
.I errno
before the call, and then check it afterward
to determine whether or not an error occurred.
@@ -2411,11 +2423,11 @@ more or less arbitrarily.
An attempt was made to set an invalid option.
.TP
.B EIO
-.I request
+.I op
is invalid, or an attempt was made to read from or
write to an invalid area in the tracer's or the tracee's memory,
or there was a word-alignment violation,
-or an invalid signal was specified during a restart request.
+or an invalid signal was specified during a restart operation.
.TP
.B EPERM
The specified process cannot be traced.
@@ -2433,12 +2445,12 @@ or (before Linux 2.6.26) be
.B ESRCH
The specified process does not exist, or is not currently being traced
by the caller, or is not stopped
-(for requests that require a stopped tracee).
+(for operations that require a stopped tracee).
.SH STANDARDS
None.
.SH HISTORY
SVr4, 4.3BSD.
-.PP
+.P
Before Linux 2.6.26,
.\" See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
.BR init (1),
@@ -2450,7 +2462,7 @@ are interpreted according to the prototype given,
glibc currently declares
.BR ptrace ()
as a variadic function with only the
-.I request
+.I op
argument fixed.
It is recommended to always supply four arguments,
even if the requested operation does not use them,
@@ -2458,20 +2470,20 @@ setting unused/ignored arguments to
.I 0L
or
.IR "(void\ *)\ 0".
-.PP
+.P
A tracees parent continues to be the tracer even if that tracer calls
.BR execve (2).
-.PP
+.P
The layout of the contents of memory and the USER area are
quite operating-system- and architecture-specific.
The offset supplied, and the data returned,
might not entirely match with the definition of
.IR "struct user" .
.\" See http://lkml.org/lkml/2008/5/8/375
-.PP
+.P
The size of a "word" is determined by the operating-system variant
(e.g., for 32-bit Linux it is 32 bits).
-.PP
+.P
This page documents the way the
.BR ptrace ()
call works currently in Linux.
@@ -2497,7 +2509,7 @@ whether or not the "target" process is dumpable,
and the results of checks performed by any enabled Linux Security Module
(LSM)\[em]for example, SELinux, Yama, or Smack\[em]and by the commoncap LSM
(which is always invoked).
-.PP
+.P
Prior to Linux 2.6.27, all access checks were of a single type.
Since Linux 2.6.27,
.\" commit 006ebb40d3d65338bd74abb03b945f8d60e362bd
@@ -2541,7 +2553,7 @@ was effectively the default before Linux 2.6.27.)
.\" about proper handling of /proc/pid/fd. Arguably that one might belong
.\" back in the _ATTACH camp.
.\"
-.PP
+.P
Since Linux 4.5,
.\" commit caaee6234d05a58c5b4d05e7bf766131b810a657
the above access mode checks are combined (ORed) with
@@ -2555,7 +2567,7 @@ or effective capabilities for LSM checks.
.B PTRACE_MODE_REALCREDS
Use the caller's real UID and GID or permitted capabilities for LSM checks.
This was effectively the default before Linux 4.5.
-.PP
+.P
Because combining one of the credential modifiers with one of
the aforementioned access modes is typical,
some macros are defined in the kernel sources for the combinations:
@@ -2575,7 +2587,7 @@ Defined as
.B PTRACE_MODE_ATTACH_REALCREDS
Defined as
.BR "PTRACE_MODE_ATTACH | PTRACE_MODE_REALCREDS" .
-.PP
+.P
One further modifier can be ORed with the access mode:
.TP
.BR PTRACE_MODE_NOAUDIT " (since Linux 3.3)"
@@ -2591,7 +2603,7 @@ In these cases, accessing the file is not a security violation and
there is no reason to generate a security audit record.
This modifier suppresses the generation of
such an audit record for the particular access check.
-.PP
+.P
Note that all of the
.B PTRACE_MODE_*
constants described in this subsection are kernel-internal,
@@ -2602,7 +2614,7 @@ and accesses to various pseudofiles (e.g., under
.IR /proc ).
These names are used in other manual pages to provide a simple
shorthand for labeling the different kernel checks.
-.PP
+.P
The algorithm employed for ptrace access mode checking determines whether
the calling process is allowed to perform the corresponding action
on the target process.
@@ -2724,7 +2736,7 @@ a compromised process can ptrace-attach to other sensitive processes
(e.g., a GPG agent or an SSH session) owned by the user in order
to gain additional credentials that may exist in memory
and thus expand the scope of the attack.
-.PP
+.P
More precisely, the Yama LSM limits two types of operations:
.IP \[bu] 3
Any operation that performs a ptrace access mode
@@ -2736,7 +2748,7 @@ check\[em]for example,
.IP \[bu]
.BR ptrace ()
.BR PTRACE_TRACEME .
-.PP
+.P
A process that has the
.B CAP_SYS_PTRACE
capability can update the
@@ -2796,7 +2808,7 @@ operations or trace children that employ
.BR PTRACE_TRACEME .
.IP
Once this value has been written to the file, it cannot be changed.
-.PP
+.P
With respect to values 1 and 2,
note that creating a new user namespace effectively removes the
protection offered by Yama.
@@ -2817,7 +2829,7 @@ At the system call level, the
.BR PTRACE_PEEKDATA ,
and
.B PTRACE_PEEKUSER
-requests have a different API: they store the result
+operations have a different API: they store the result
at the address specified by the
.I data
parameter, and the return value is the error flag.
@@ -2834,10 +2846,10 @@ This can be worked around by redefining
to
.BR PTRACE_OLDSETOPTIONS ,
if that is defined.
-.PP
+.P
Group-stop notifications are sent to the tracer, but not to real parent.
Last confirmed on 2.6.38.6.
-.PP
+.P
If a thread group leader is traced and exits by calling
.BR _exit (2),
.\" Note from Denys Vlasenko:
@@ -2868,7 +2880,7 @@ One possible workaround is to
the thread group leader instead of restarting it in this case.
Last confirmed on 2.6.38.6.
.\" FIXME . need to test/verify this scenario
-.PP
+.P
A
.B SIGKILL
signal may still cause a
@@ -2878,7 +2890,7 @@ This may be changed in the future;
.B SIGKILL
is meant to always immediately kill tasks even under ptrace.
Last confirmed on Linux 3.13.
-.PP
+.P
Some system calls return with
.B EINTR
if a signal was sent to a tracee, but delivery was suppressed by the tracer.
@@ -2896,40 +2908,40 @@ from an
file descriptor.
The usual symptom of this bug is that when you attach to
a quiescent process with the command
-.PP
+.P
.in +4n
.EX
strace \-p <process\-ID>
.EE
.in
-.PP
+.P
then, instead of the usual
and expected one-line output such as
-.PP
+.P
.in +4n
.EX
restart_syscall(<... resuming interrupted call ...>_
.EE
.in
-.PP
+.P
or
-.PP
+.P
.in +4n
.EX
select(6, [5], NULL, [5], NULL_
.EE
.in
-.PP
+.P
('_' denotes the cursor position), you observe more than one line.
For example:
-.PP
+.P
.in +4n
.EX
clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0
epoll_wait(4,_
.EE
.in
-.PP
+.P
What is not visible here is that the process was blocked in
.BR epoll_wait (2)
before
@@ -2949,7 +2961,7 @@ again.
errors may behave in an unintended way upon an
.BR strace (1)
attach.)
-.PP
+.P
Contrary to the normal rules, the glibc wrapper for
.BR ptrace ()
can set
diff --git a/man2/query_module.2 b/man2/query_module.2
index 519650a..f2b163a 100644
--- a/man2/query_module.2
+++ b/man2/query_module.2
@@ -5,13 +5,13 @@
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH query_module 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH query_module 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
query_module \- query the kernel for various bits pertaining to modules
.SH SYNOPSIS
.nf
.B #include <linux/module.h>
-.PP
+.P
.BI "[[deprecated]] int query_module(const char *" name ", int " which ,
.BI " void " buf [. bufsize "], \
size_t " bufsize ,
@@ -20,7 +20,7 @@ size_t " bufsize ,
.SH DESCRIPTION
.IR Note :
This system call is present only before Linux 2.6.
-.PP
+.P
.BR query_module ()
requests information from the kernel about loadable modules.
The returned information is placed in the buffer pointed to by
@@ -37,7 +37,7 @@ Some operations require
to identify a currently loaded module, some allow
.I name
to be NULL, indicating the kernel proper.
-.PP
+.P
The following values can be specified for
.IR which :
.TP
@@ -167,7 +167,7 @@ Linux.
.SH VERSIONS
Removed in Linux 2.6.
.\" Removed in Linux 2.5.48
-.PP
+.P
Some of the information that was formerly available via
.BR query_module ()
can be obtained from
@@ -175,7 +175,7 @@ can be obtained from
.IR /proc/kallsyms ,
and the files under the directory
.IR /sys/module .
-.PP
+.P
The
.BR query_module ()
system call is not supported by glibc.
diff --git a/man2/quotactl.2 b/man2/quotactl.2
index 716f934..3cfaaf5 100644
--- a/man2/quotactl.2
+++ b/man2/quotactl.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH quotactl 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH quotactl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
quotactl \- manipulate disk quotas
.SH LIBRARY
@@ -16,8 +16,8 @@ Standard C library
.BR "#include <xfs/xqm.h>" " /* Definition of " Q_X* " and " XFS_QUOTA_* \
" constants"
.RB " (or " <linux/dqblk_xfs.h> "; see NOTES) */"
-.PP
-.BI "int quotactl(int " cmd ", const char *_Nullable " special ", int " id ,
+.P
+.BI "int quotactl(int " op ", const char *_Nullable " special ", int " id ,
.BI " caddr_t " addr );
.fi
.SH DESCRIPTION
@@ -30,19 +30,19 @@ The soft limit can be exceeded, but warnings will ensue.
Moreover, the user can't exceed the soft limit for more than grace period
duration (one week by default) at a time;
after this, the soft limit counts as a hard limit.
-.PP
+.P
The
.BR quotactl ()
call manipulates disk quotas.
The
-.I cmd
-argument indicates a command to be applied to the user or
+.I op
+argument indicates an operation to be applied to the user or
group ID specified in
.IR id .
To initialize the
-.I cmd
+.I op
argument, use the
-.I QCMD(subcmd, type)
+.I QCMD(subop, type)
macro.
The
.I type
@@ -55,24 +55,24 @@ for group quotas, or (since Linux 4.1)
.BR PRJQUOTA ,
for project quotas.
The
-.I subcmd
+.I subop
value is described below.
-.PP
+.P
The
.I special
argument is a pointer to a null-terminated string containing the pathname
of the (mounted) block special device for the filesystem being manipulated.
-.PP
+.P
The
.I addr
-argument is the address of an optional, command-specific, data structure
+argument is the address of an optional, operation-specific, data structure
that is copied in or out of the system.
The interpretation of
.I addr
is given with each operation below.
-.PP
+.P
The
-.I subcmd
+.I subop
value is one of the following operations:
.TP
.B Q_QUOTAON
@@ -380,7 +380,7 @@ This operation is obsolete and was removed in Linux 2.4.22.
Files in
.I /proc/sys/fs/quota/
carry the information instead.
-.PP
+.P
For XFS filesystems making use of the XFS Quota Manager (XQM),
the above operations are bypassed and the following operations are used:
.TP
@@ -649,7 +649,7 @@ structure)
which identify what types of quota
should be removed.
(Note that the quota type passed in the
-.I cmd
+.I op
argument is ignored, but should remain valid in order to pass preliminary
quotactl syscall handler checks.)
.IP
@@ -681,7 +681,7 @@ is set to indicate the error.
.SH ERRORS
.TP
.B EACCES
-.I cmd
+.I op
is
.BR Q_QUOTAON ,
and the quota file pointed to by
@@ -691,7 +691,7 @@ is not on the filesystem pointed to by
.IR special .
.TP
.B EBUSY
-.I cmd
+.I op
is
.BR Q_QUOTAON ,
but another
@@ -705,20 +705,20 @@ or
is invalid.
.TP
.B EINVAL
-.I cmd
+.I op
or
.I type
is invalid.
.TP
.B EINVAL
-.I cmd
+.I op
is
.BR Q_QUOTAON ,
but the specified quota file is corrupted.
.TP
.BR EINVAL " (since Linux 5.5)"
.\" 3dd4d40b420846dd35869ccc8f8627feef2cff32
-.I cmd
+.I op
is
.BR Q_XQUOTARM ,
but
@@ -747,7 +747,7 @@ The caller lacked the required privilege
for the specified operation.
.TP
.B ERANGE
-.I cmd
+.I op
is
.BR Q_SETQUOTA ,
but the specified limits are out of the range allowed by the quota format.
@@ -757,13 +757,13 @@ No disk quota is found for the indicated user.
Quotas have not been turned on for this filesystem.
.TP
.B ESRCH
-.I cmd
+.I op
is
.BR Q_QUOTAON ,
but the specified quota format was not found.
.TP
.B ESRCH
-.I cmd
+.I op
is
.B Q_GETNEXTQUOTA
or
diff --git a/man2/read.2 b/man2/read.2
index 955efa4..973993e 100644
--- a/man2/read.2
+++ b/man2/read.2
@@ -13,7 +13,7 @@
.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
.\" <michael@cantor.informatik.rwth-aachen.de>
.\"
-.TH read 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH read 2 2024-03-12 "Linux man-pages 6.7"
.SH NAME
read \- read from a file descriptor
.SH LIBRARY
@@ -22,7 +22,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "ssize_t read(int " fd ", void " buf [. count "], size_t " count );
.fi
.SH DESCRIPTION
@@ -33,7 +33,7 @@ bytes from file descriptor
.I fd
into the buffer starting at
.IR buf .
-.PP
+.P
On files that support seeking,
the read operation commences at the file offset,
and the file offset is incremented by the number of bytes read.
@@ -41,7 +41,7 @@ If the file offset is at or past the end of file,
no bytes are read, and
.BR read ()
returns zero.
-.PP
+.P
If
.I count
is zero,
@@ -56,7 +56,7 @@ does not check for errors, a
with a
.I count
of 0 returns zero and has no other effects.
-.PP
+.P
According to POSIX.1, if
.I count
is greater than
@@ -73,7 +73,7 @@ because we are reading from a pipe, or from a terminal), or because
.BR read ()
was interrupted by a signal.
See also NOTES.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -160,7 +160,7 @@ for further details.
.B EISDIR
.I fd
refers to a directory.
-.PP
+.P
Other errors may occur, depending on the object connected to
.IR fd .
.SH STANDARDS
@@ -175,7 +175,7 @@ On Linux,
returning the number of bytes actually transferred.
.\" commit e28cc71572da38a5a12c1cfe4d7032017adccf69
(This is true on both 32-bit and 64-bit systems.)
-.PP
+.P
On NFS filesystems, reading small amounts of data will update the
timestamp only the first time, subsequent calls may not do so.
This is caused
@@ -194,13 +194,13 @@ increase server load and decrease performance.
.SH BUGS
According to POSIX.1-2008/SUSv4 Section XSI 2.9.7
("Thread Interactions with Regular File Operations"):
-.PP
+.P
.RS 4
All of the following functions shall be atomic with respect to
each other in the effects specified in POSIX.1-2008 when they
operate on regular files or symbolic links: ...
.RE
-.PP
+.P
Among the APIs subsequently listed are
.BR read ()
and
@@ -216,7 +216,7 @@ perform a
(or
.BR readv (2))
at the same time, then the I/O operations were not atomic
-with respect updating the file offset,
+with respect to updating the file offset,
with the result that the reads in the two processes
might (incorrectly) overlap in the blocks of data that they obtained.
This problem was fixed in Linux 3.14.
diff --git a/man2/readahead.2 b/man2/readahead.2
index b97f085..701efde 100644
--- a/man2/readahead.2
+++ b/man2/readahead.2
@@ -5,7 +5,7 @@
.\" 2004-05-40 Created by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2004-10-05 aeb, minor correction
.\"
-.TH readahead 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH readahead 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
readahead \- initiate file readahead into page cache
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #define _FILE_OFFSET_BITS 64
.B #include <fcntl.h>
-.PP
+.P
.BI "ssize_t readahead(int " fd ", off_t " offset ", size_t " count );
.fi
.SH DESCRIPTION
@@ -25,7 +25,7 @@ initiates readahead on a file so that subsequent reads from that file will
be satisfied from the cache, and not block on disk I/O
(assuming the readahead was initiated early enough and that other activity
on the system did not in the meantime flush pages from the cache).
-.PP
+.P
The
.I fd
argument is a file descriptor identifying the file which is
diff --git a/man2/readdir.2 b/man2/readdir.2
index 6b06ff4..dbb91e1 100644
--- a/man2/readdir.2
+++ b/man2/readdir.2
@@ -7,7 +7,7 @@
.\" In 1.3.X, returns only one entry each time; return value is different.
.\" Modified 2004-12-01, mtk, fixed headers listed in SYNOPSIS
.\"
-.TH readdir 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH readdir 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
readdir \- read directory entry
.SH LIBRARY
@@ -17,11 +17,11 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_readdir, unsigned int " fd ,
.BI " struct old_linux_dirent *" dirp ", unsigned int " count );
.fi
-.PP
+.P
.IR Note :
There is no definition of
.BR "struct old_linux_dirent" ;
@@ -34,7 +34,7 @@ for the POSIX conforming C library interface.
This page documents the bare kernel system call interface,
which is superseded by
.BR getdents (2).
-.PP
+.P
.BR readdir ()
reads one
.I old_linux_dirent
@@ -48,13 +48,13 @@ The argument
is ignored; at most one
.I old_linux_dirent
structure is read.
-.PP
+.P
The
.I old_linux_dirent
structure is declared (privately in Linux kernel file
.BR fs/readdir.c )
as follows:
-.PP
+.P
.in +4n
.EX
struct old_linux_dirent {
@@ -65,7 +65,7 @@ struct old_linux_dirent {
}
.EE
.in
-.PP
+.P
.I d_ino
is an inode number.
.I d_offset
@@ -107,7 +107,7 @@ structure yourself.
However, probably you should use
.BR readdir (3)
instead.
-.PP
+.P
This system call does not exist on x86-64.
.SH STANDARDS
Linux.
diff --git a/man2/readlink.2 b/man2/readlink.2
index fe2369d..c476091 100644
--- a/man2/readlink.2
+++ b/man2/readlink.2
@@ -13,7 +13,7 @@
.\" 2011-09-20, Guillem Jover <guillem@hadrons.org>:
.\" Added text on dynamically allocating buffer + example program
.\"
-.TH readlink 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH readlink 2 2023-11-01 "Linux man-pages 6.7"
.SH NAME
readlink, readlinkat \- read value of a symbolic link
.SH LIBRARY
@@ -22,29 +22,29 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "ssize_t readlink(const char *restrict " pathname ", char *restrict " buf ,
.BI " size_t " bufsiz );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "ssize_t readlinkat(int " dirfd ", const char *restrict " pathname ,
.BI " char *restrict " buf ", size_t " bufsiz );
-.PP
+.P
.fi
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR readlink ():
.nf
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* glibc <= 2.19: */ _BSD_SOURCE
.fi
-.PP
+.P
.BR readlinkat ():
.nf
Since glibc 2.10:
@@ -72,7 +72,7 @@ The
system call operates in exactly the same way as
.BR readlink (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -82,7 +82,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR readlink ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -94,13 +94,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR readlink ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
Since Linux 2.6.39,
.\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d
.I pathname
@@ -114,7 +114,7 @@ with the
and
.B O_NOFOLLOW
flags).
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -199,7 +199,7 @@ POSIX.1-2001, POSIX.1-2008.
POSIX.1-2008.
Linux 2.6.16,
glibc 2.4.
-.PP
+.P
Up to and including glibc 2.4, the return type of
.BR readlink ()
was declared as
@@ -253,7 +253,7 @@ falling back to a buffer of size
in cases where
.BR lstat (2)
reports a size of zero.
-.PP
+.P
.\" SRC BEGIN (readlink.c)
.EX
#include <limits.h>
@@ -307,7 +307,7 @@ main(int argc, char *argv[])
null byte (\[aq]\e0\[aq]). */
printf("\[aq]%s\[aq] points to \[aq]%.*s\[aq]\en", argv[1], (int) nbytes, buf);
\&
- /* If the return value was equal to the buffer size, then the
+ /* If the return value was equal to the buffer size, then
the link target was larger than expected (perhaps because the
target was changed between the call to lstat() and the call to
readlink()). Warn the user that the returned target may have
diff --git a/man2/readv.2 b/man2/readv.2
index db6abbc..c1295cd 100644
--- a/man2/readv.2
+++ b/man2/readv.2
@@ -9,7 +9,7 @@
.\" add more details.
.\" 2010-11-16, mtk, Added documentation of preadv() and pwritev()
.\"
-.TH readv 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH readv 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
readv, writev, preadv, pwritev, preadv2, pwritev2 \-
read or write data into multiple buffers
@@ -19,26 +19,26 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/uio.h>
-.PP
+.P
.BI "ssize_t readv(int " fd ", const struct iovec *" iov ", int " iovcnt );
.BI "ssize_t writev(int " fd ", const struct iovec *" iov ", int " iovcnt );
-.PP
+.P
.BI "ssize_t preadv(int " fd ", const struct iovec *" iov ", int " iovcnt ,
.BI " off_t " offset );
.BI "ssize_t pwritev(int " fd ", const struct iovec *" iov ", int " iovcnt ,
.BI " off_t " offset );
-.PP
+.P
.BI "ssize_t preadv2(int " fd ", const struct iovec *" iov ", int " iovcnt ,
.BI " off_t " offset ", int " flags );
.BI "ssize_t pwritev2(int " fd ", const struct iovec *" iov ", int " iovcnt ,
.BI " off_t " offset ", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR preadv (),
.BR pwritev ():
.nf
@@ -57,7 +57,7 @@ buffers from the file associated with the file descriptor
into the buffers described by
.I iov
("scatter input").
-.PP
+.P
The
.BR writev ()
system call writes
@@ -67,7 +67,7 @@ buffers of data described by
to the file associated with the file descriptor
.I fd
("gather output").
-.PP
+.P
The pointer
.I iov
points to an array of
@@ -75,19 +75,19 @@ points to an array of
structures,
described in
.BR iovec (3type).
-.PP
+.P
The
.BR readv ()
system call works just like
.BR read (2)
except that multiple buffers are filled.
-.PP
+.P
The
.BR writev ()
system call works just like
.BR write (2)
except that multiple buffers are written out.
-.PP
+.P
Buffers are processed in array order.
This means that
.BR readv ()
@@ -106,7 +106,7 @@ writes out the entire contents of
before proceeding to
.IR iov[1] ,
and so on.
-.PP
+.P
The data transfers performed by
.BR readv ()
and
@@ -136,7 +136,7 @@ but adds a fourth argument,
.IR offset ,
which specifies the file offset at which the input operation
is to be performed.
-.PP
+.P
The
.BR pwritev ()
system call combines the functionality of
@@ -149,7 +149,7 @@ but adds a fourth argument,
.IR offset ,
which specifies the file offset at which the output operation
is to be performed.
-.PP
+.P
The file offset is not changed by these system calls.
The file referred to by
.I fd
@@ -162,7 +162,7 @@ and
calls, but add a fifth argument,
.IR flags ,
which modifies the behavior on a per-call basis.
-.PP
+.P
Unlike
.BR preadv ()
and
@@ -170,7 +170,7 @@ and
if the
.I offset
argument is \-1, then the current file offset is used and updated.
-.PP
+.P
The
.I flags
argument contains a bitwise OR of zero or more of the following flags:
@@ -249,13 +249,13 @@ return the number of bytes read;
and
.BR pwritev2 ()
return the number of bytes written.
-.PP
+.P
Note that it is not an error for a successful call to transfer fewer bytes
than requested (see
.BR read (2)
and
.BR write (2)).
-.PP
+.P
On error, \-1 is returned, and \fIerrno\fP is set to indicate the error.
.SH ERRORS
The errors are as given for
@@ -297,9 +297,9 @@ corresponding GNU C library wrapper functions shown in the SYNOPSIS.
The final argument,
.IR offset ,
is unpacked by the wrapper functions into two arguments in the system calls:
-.PP
+.P
.BI " unsigned long " pos_l ", unsigned long " pos
-.PP
+.P
These arguments contain, respectively, the low order and high order 32 bits of
.IR offset .
.SH STANDARDS
@@ -329,12 +329,12 @@ POSIX.1-2001,
.\" and \fIint\fP as the return type.
.\" The readv/writev system calls were buggy before Linux 1.3.40.
.\" (Says release.libc.)
-.PP
+.P
.BR preadv (),
.BR pwritev ():
Linux 2.6.30,
glibc 2.10.
-.PP
+.P
.BR preadv2 (),
.BR pwritev2 ():
Linux 4.6,
@@ -365,7 +365,7 @@ The wrapper function for
.BR writev ()
performed the analogous task using a temporary buffer and a call to
.BR write (2).
-.PP
+.P
The need for this extra effort in the glibc wrapper functions
went away with Linux 2.2 and later.
However, glibc continued to provide this behavior until glibc 2.10.
@@ -405,7 +405,7 @@ flag may return 0 even when not at end of file.
.SH EXAMPLES
The following code sample demonstrates the use of
.BR writev ():
-.PP
+.P
.in +4n
.EX
char *str0 = "hello ";
diff --git a/man2/reboot.2 b/man2/reboot.2
index 681087f..7ca639c 100644
--- a/man2/reboot.2
+++ b/man2/reboot.2
@@ -5,7 +5,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH reboot 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH reboot 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
reboot \- reboot or enable/disable Ctrl-Alt-Del
.SH LIBRARY
@@ -15,23 +15,23 @@ Standard C library
.nf
.RB "/* Since Linux 2.1.30 there are symbolic names " LINUX_REBOOT_*
for the constants and a fourth argument to the call: */
-.PP
+.P
.BR "#include <linux/reboot.h> " \
"/* Definition of " LINUX_REBOOT_* " constants */"
.BR "#include <sys/syscall.h> " "/* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
-.BI "int syscall(SYS_reboot, int " magic ", int " magic2 ", int " cmd ", void *" arg );
-.PP
+.P
+.BI "int syscall(SYS_reboot, int " magic ", int " magic2 ", int " op ", void *" arg );
+.P
/* Under glibc and most alternative libc's (including uclibc, dietlibc,
musl and a few others), some of the constants involved have gotten
.RB " symbolic names " RB_* ", and the library call is a 1-argument"
wrapper around the system call: */
-.PP
+.P
.BR "#include <sys/reboot.h> " "/* Definition of " RB_* " constants */"
.B #include <unistd.h>
-.PP
-.BI "int reboot(int " cmd );
+.P
+.BI "int reboot(int " op );
.fi
.SH DESCRIPTION
The
@@ -40,7 +40,7 @@ call reboots the system, or enables/disables the reboot keystroke
(abbreviated CAD, since the default is Ctrl-Alt-Delete;
it can be changed using
.BR loadkeys (1)).
-.PP
+.P
This system call fails (with the error
.BR EINVAL )
unless
@@ -64,9 +64,9 @@ and since Linux 2.5.71 also
are permitted as values for
.IR magic2 .
(The hexadecimal values of these constants are meaningful.)
-.PP
+.P
The
-.I cmd
+.I op
argument can have the following values:
.TP
.B LINUX_REBOOT_CMD_CAD_OFF
@@ -138,10 +138,10 @@ data will be lost.
The system is suspended (hibernated) to disk.
This option is available only if the kernel was configured with
.BR CONFIG_HIBERNATION .
-.PP
+.P
Only the superuser may call
.BR reboot ().
-.PP
+.P
The precise effect of the above actions depends on the architecture.
For the i386 architecture, the additional argument does not do
anything at present (2.1.122), but the type of reboot can be
@@ -157,20 +157,22 @@ if
is called
from a PID namespace other than the initial PID namespace
with one of the
-.I cmd
+.I op
values listed below,
it performs a "reboot" of that namespace:
the "init" process of the PID namespace is immediately terminated,
with the effects described in
.BR pid_namespaces (7).
-.PP
+.P
The values that can be supplied in
-.I cmd
+.I op
when calling
.BR reboot ()
in this case are as follows:
.TP
-.BR LINUX_REBOOT_CMD_RESTART ", " LINUX_REBOOT_CMD_RESTART2
+.B LINUX_REBOOT_CMD_RESTART
+.TQ
+.B LINUX_REBOOT_CMD_RESTART2
The "init" process is terminated,
and
.BR wait (2)
@@ -178,16 +180,18 @@ in the parent process reports that the child was killed with a
.B SIGHUP
signal.
.TP
-.BR LINUX_REBOOT_CMD_POWER_OFF ", " LINUX_REBOOT_CMD_HALT
+.B LINUX_REBOOT_CMD_POWER_OFF
+.TQ
+.B LINUX_REBOOT_CMD_HALT
The "init" process is terminated,
and
.BR wait (2)
in the parent process reports that the child was killed with a
.B SIGINT
signal.
-.PP
+.P
For the other
-.I cmd
+.I op
values,
.BR reboot ()
returns \-1 and
@@ -196,13 +200,13 @@ is set to
.BR EINVAL .
.SH RETURN VALUE
For the values of
-.I cmd
+.I op
that stop or restart the system,
a successful call to
.BR reboot ()
does not return.
For the other
-.I cmd
+.I op
values, zero is returned on success.
In all cases, \-1 is returned on failure, and
.I errno
@@ -214,7 +218,8 @@ Problem with getting user-space data under
.BR LINUX_REBOOT_CMD_RESTART2 .
.TP
.B EINVAL
-Bad magic numbers or \fIcmd\fP.
+Bad magic numbers or
+.IR op .
.TP
.B EPERM
The calling process has insufficient privilege to call
diff --git a/man2/recv.2 b/man2/recv.2
index 395236d..916cca3 100644
--- a/man2/recv.2
+++ b/man2/recv.2
@@ -10,7 +10,7 @@
.\" Modified 1998,1999 by Andi Kleen
.\" 2001-06-19 corrected SO_EE_OFFENDER, bug report by James Hawtin
.\"
-.TH recv 2 2023-07-18 "Linux man-pages 6.05.01"
+.TH recv 2 2024-02-18 "Linux man-pages 6.7"
.SH NAME
recv, recvfrom, recvmsg \- receive a message from a socket
.SH LIBRARY
@@ -19,7 +19,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "ssize_t recv(int " sockfd ", void " buf [. len "], size_t " len ,
.BI " int " flags );
.BI "ssize_t recvfrom(int " sockfd ", void " buf "[restrict ." len "], size_t " len ,
@@ -39,7 +39,7 @@ They may be used
to receive data on both connectionless and connection-oriented sockets.
This page first describes common features of all three system calls,
and then describes the differences between the calls.
-.PP
+.P
The only difference between
.BR recv ()
and
@@ -54,27 +54,27 @@ is generally equivalent to
.BR read (2)
(but see NOTES).
Also, the following call
-.PP
+.P
.in +4n
.EX
recv(sockfd, buf, len, flags);
.EE
.in
-.PP
+.P
is equivalent to
-.PP
+.P
.in +4n
.EX
recvfrom(sockfd, buf, len, flags, NULL, NULL);
.EE
.in
-.PP
+.P
All three calls return the length of the message on successful
completion.
If a message is too long to fit in the supplied buffer, excess
bytes may be discarded depending on the type of socket the message is
received from.
-.PP
+.P
If no messages are available at the socket, the receive calls wait for a
message to arrive, unless the socket is nonblocking (see
.BR fcntl (2)),
@@ -84,7 +84,7 @@ is set to
.BR EAGAIN " or " EWOULDBLOCK .
The receive calls normally return any data available, up to the requested
amount, rather than waiting for receipt of the full amount requested.
-.PP
+.P
An application can use
.BR select (2),
.BR poll (2),
@@ -123,7 +123,7 @@ is a per-call option, whereas
is a setting on the open file description (see
.BR open (2)),
which will affect all threads in the calling process
-and as well as other processes that hold file descriptors
+as well as other processes that hold file descriptors
referring to the same open file description.
.TP
.BR MSG_ERRQUEUE " (since Linux 2.2)"
@@ -250,7 +250,7 @@ places the received message into the buffer
.IR buf .
The caller must specify the size of the buffer in
.IR len .
-.PP
+.P
If
.I src_addr
is not NULL,
@@ -278,7 +278,7 @@ The returned address is truncated if the buffer provided is too small;
in this case,
.I addrlen
will return a value greater than was supplied to the call.
-.PP
+.P
If the caller is not interested in the source address,
.I src_addr
and
@@ -293,7 +293,7 @@ call is normally used only on a
socket (see
.BR connect (2)).
It is equivalent to the call:
-.PP
+.P
.in +4n
.EX
recvfrom(fd, buf, len, flags, NULL, 0);
@@ -308,7 +308,7 @@ call uses a
structure to minimize the number of directly supplied arguments.
This structure is defined as follows in
.IR <sys/socket.h> :
-.PP
+.P
.in +4n
.EX
struct msghdr {
@@ -322,7 +322,7 @@ struct msghdr {
};
.EE
.in
-.PP
+.P
The
.I msg_name
field points to a caller-allocated buffer that is used to
@@ -336,14 +336,14 @@ will contain the length of the returned address.
If the application does not need to know the source address,
.I msg_name
can be specified as NULL.
-.PP
+.P
The fields
.I msg_iov
and
.I msg_iovlen
describe scatter-gather locations, as discussed in
.BR readv (2).
-.PP
+.P
The field
.IR msg_control ,
which has length
@@ -358,9 +358,9 @@ should contain the length of the available buffer in
.IR msg_control ;
upon return from a successful call it will contain the length
of the control message sequence.
-.PP
+.P
The messages are of the form:
-.PP
+.P
.in +4n
.EX
struct cmsghdr {
@@ -373,10 +373,10 @@ struct cmsghdr {
};
.EE
.in
-.PP
+.P
Ancillary data should be accessed only by the macros defined in
.BR cmsg (3).
-.PP
+.P
As an example, Linux uses this ancillary data mechanism to pass extended
errors, IP options, or file descriptors over UNIX domain sockets.
For further information on the use of ancillary data in various
@@ -384,7 +384,7 @@ socket domains, see
.BR unix (7)
and
.BR ip (7).
-.PP
+.P
The
.I msg_flags
field in the
@@ -427,14 +427,14 @@ if an error occurred.
In the event of an error,
.I errno
is set to indicate the error.
-.PP
+.P
When a stream socket peer has performed an orderly shutdown,
the return value will be 0 (the traditional "end-of-file" return).
-.PP
+.P
Datagram sockets in various domains (e.g., the UNIX and Internet domains)
permit zero-length datagrams.
When such a datagram is received, the return value is 0.
-.PP
+.P
The value 0 may also be returned if the requested number of bytes
to receive from a stream socket was 0.
.SH ERRORS
@@ -515,7 +515,7 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001,
4.4BSD (first appeared in 4.2BSD).
-.PP
+.P
POSIX.1 describes only the
.BR MSG_OOB ,
.BR MSG_PEEK ,
@@ -535,7 +535,7 @@ In this circumstance,
has no effect (the datagram remains pending), while
.BR recv ()
consumes the pending datagram.
-.PP
+.P
See
.BR recvmmsg (2)
for information about a Linux-specific system call
diff --git a/man2/recvmmsg.2 b/man2/recvmmsg.2
index d5b0f5a..f732d03 100644
--- a/man2/recvmmsg.2
+++ b/man2/recvmmsg.2
@@ -8,7 +8,7 @@
.\" Author: Arnaldo Carvalho de Melo <acme@redhat.com>
.\" Date: Mon Oct 12 23:40:10 2009 -0700
.\"
-.TH recvmmsg 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH recvmmsg 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
recvmmsg \- receive multiple messages on a socket
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/socket.h>
-.PP
+.P
.BI "int recvmmsg(int " sockfd ", struct mmsghdr *" msgvec \
", unsigned int " vlen ","
.BI " int " flags ", struct timespec *" timeout ");"
@@ -34,11 +34,11 @@ using a single system call.
A further extension over
.BR recvmsg (2)
is support for a timeout on the receive operation.
-.PP
+.P
The
.I sockfd
argument is the file descriptor of the socket to receive data from.
-.PP
+.P
The
.I msgvec
argument is a pointer to an array of
@@ -46,13 +46,13 @@ argument is a pointer to an array of
structures.
The size of this array is specified in
.IR vlen .
-.PP
+.P
The
.I mmsghdr
structure is defined in
.I <sys/socket.h>
as:
-.PP
+.P
.in +4n
.EX
struct mmsghdr {
@@ -61,7 +61,7 @@ struct mmsghdr {
};
.EE
.in
-.PP
+.P
The
.I msg_hdr
field is a
@@ -74,7 +74,7 @@ field is the number of bytes returned for the message in the entry.
This field has the same value as the return value of a single
.BR recvmsg (2)
on the header.
-.PP
+.P
The
.I flags
argument contains flags ORed together.
@@ -86,7 +86,7 @@ with the following addition:
Turns on
.B MSG_DONTWAIT
after the first message has been received.
-.PP
+.P
The
.I timeout
argument points to a
@@ -101,7 +101,7 @@ may overrun by a small amount.)
If
.I timeout
is NULL, then the operation blocks indefinitely.
-.PP
+.P
A blocking
.BR recvmmsg ()
call blocks until
@@ -112,7 +112,7 @@ A nonblocking call reads as many messages as are available
(up to the limit specified by
.IR vlen )
and returns immediately.
-.PP
+.P
On return from
.BR recvmmsg (),
successive elements of
@@ -143,7 +143,7 @@ In addition, the following error can occur:
.B EINVAL
.I timeout
is invalid.
-.PP
+.P
See also BUGS.
.SH STANDARDS
Linux.
@@ -161,7 +161,7 @@ so that if up to
.I vlen\-1
datagrams are received before the timeout expires,
but then no further datagrams are received, the call will block forever.
-.PP
+.P
If an error occurs after at least one message has been received,
the call succeeds, and returns the number of messages received.
The error code is expected to be returned on a subsequent call to
@@ -176,20 +176,20 @@ to receive multiple messages on a socket and stores
them in multiple buffers.
The call returns if all buffers are filled or if the
timeout specified has expired.
-.PP
+.P
The following snippet periodically generates UDP datagrams
containing a random number:
-.PP
+.P
.in +4n
.EX
.RB "$" " while true; do echo $RANDOM > /dev/udp/127.0.0.1/1234;"
.B " sleep 0.25; done"
.EE
.in
-.PP
+.P
These datagrams are read by the example application, which
can give the following output:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./a.out"
diff --git a/man2/remap_file_pages.2 b/man2/remap_file_pages.2
index ab4ee51..f662c46 100644
--- a/man2/remap_file_pages.2
+++ b/man2/remap_file_pages.2
@@ -5,7 +5,7 @@
.\" 2003-12-10 Initial creation, Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2004-10-28 aeb, corrected prototype, prot must be 0
.\"
-.TH remap_file_pages 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH remap_file_pages 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
remap_file_pages \- create a nonlinear file mapping
.SH LIBRARY
@@ -15,7 +15,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/mman.h>
-.PP
+.P
.BI "[[deprecated]] int remap_file_pages(void " addr [. size "], size_t " size ,
.BI " int " prot ", size_t " pgoff ", \
int " flags );
@@ -34,7 +34,7 @@ This change was made because the kernel code for this system call was complex,
and it is believed to be little used or perhaps even completely unused.
While it had some use cases in database applications on 32-bit systems,
those use cases don't exist on 64-bit systems.
-.PP
+.P
The
.BR remap_file_pages ()
system call is used to create a nonlinear mapping, that is, a mapping
@@ -46,7 +46,7 @@ over using repeated calls to
.BR mmap (2)
is that the former approach does not require the kernel to create
additional VMA (Virtual Memory Area) data structures.
-.PP
+.P
To create a nonlinear mapping we perform the following steps:
.TP 3
1.
@@ -64,7 +64,7 @@ to rearrange the correspondence between the pages of the mapping
and the pages of the file.
It is possible to map the same page of a file
into multiple locations within the mapped region.
-.PP
+.P
The
.I pgoff
and
@@ -75,7 +75,7 @@ within the mapping:
is a file offset in units of the system page size;
.I size
is the length of the region in bytes.
-.PP
+.P
The
.I addr
argument serves two purposes.
@@ -93,7 +93,7 @@ identified by
and
.I size
will be placed.
-.PP
+.P
The values specified in
.I addr
and
@@ -107,11 +107,11 @@ to the nearest multiple of the page size.
.\" This rounding is weird, and not consistent with the treatment of
.\" the analogous arguments for munmap()/mprotect() and for mlock().
.\" MTK, 14 Sep 2005
-.PP
+.P
The
.I prot
argument must be specified as 0.
-.PP
+.P
The
.I flags
argument has the same meaning as for
diff --git a/man2/removexattr.2 b/man2/removexattr.2
index 1a9f53f..50a567e 100644
--- a/man2/removexattr.2
+++ b/man2/removexattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH removexattr 2 2023-04-08 "Linux man-pages 6.05.01"
+.TH removexattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
removexattr, lremovexattr, fremovexattr \- remove an extended attribute
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/xattr.h>
-.PP
+.P
.BI "int removexattr(const char *" path ", const char *" name );
.BI "int lremovexattr(const char *" path ", const char *" name );
.BI "int fremovexattr(int " fd ", const char *" name );
@@ -27,20 +27,20 @@ with all inodes in the system (i.e., the
data).
A complete overview of extended attributes concepts can be found in
.BR xattr (7).
-.PP
+.P
.BR removexattr ()
removes the extended attribute identified by
.I name
and associated with the given
.I path
in the filesystem.
-.PP
+.P
.BR lremovexattr ()
is identical to
.BR removexattr (),
except in the case of a symbolic link, where the extended attribute is
removed from the link itself, not the file that it refers to.
-.PP
+.P
.BR fremovexattr ()
is identical to
.BR removexattr (),
@@ -50,7 +50,7 @@ only the extended attribute is removed from the open file referred to by
.BR open (2))
in place of
.IR path .
-.PP
+.P
An extended attribute name is a null-terminated string.
The
.I name
@@ -73,7 +73,7 @@ The named attribute does not exist.
.TP
.B ENOTSUP
Extended attributes are not supported by the filesystem, or are disabled.
-.PP
+.P
In addition, the errors documented in
.BR stat (2)
can also occur.
diff --git a/man2/rename.2 b/man2/rename.2
index 9963af6..6b538d4 100644
--- a/man2/rename.2
+++ b/man2/rename.2
@@ -10,7 +10,7 @@
.\" Modified Thu Mar 3 09:49:35 2005 by Michael Haardt <michael@moria.de>
.\" 2007-03-25, mtk, added various text to DESCRIPTION.
.\"
-.TH rename 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH rename 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
rename, renameat, renameat2 \- change the name or location of a file
.SH LIBRARY
@@ -19,31 +19,31 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <stdio.h>
-.PP
+.P
.BI "int rename(const char *" oldpath ", const char *" newpath );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <stdio.h>
-.PP
+.P
.BI "int renameat(int " olddirfd ", const char *" oldpath ,
.BI " int " newdirfd ", const char *" newpath );
.BI "int renameat2(int " olddirfd ", const char *" oldpath ,
.BI " int " newdirfd ", const char *" newpath \
", unsigned int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.nf
.BR renameat ():
Since glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Before glibc 2.10:
_ATFILE_SOURCE
-.PP
+.P
.BR renameat2 ():
_GNU_SOURCE
.fi
@@ -56,10 +56,10 @@ are unaffected.
Open file descriptors for
.I oldpath
are also unaffected.
-.PP
+.P
Various restrictions determine whether or not the rename operation succeeds:
see ERRORS below.
-.PP
+.P
If
.I newpath
already exists, it will be atomically replaced, so that there is
@@ -71,7 +71,7 @@ However, there will probably be a window in which both
and
.I newpath
refer to the file being renamed.
-.PP
+.P
If
.I oldpath
and
@@ -79,7 +79,7 @@ and
are existing hard links referring to the same file, then
.BR rename ()
does nothing, and returns a success status.
-.PP
+.P
If
.I newpath
exists but the operation fails for some reason,
@@ -87,13 +87,13 @@ exists but the operation fails for some reason,
guarantees to leave an instance of
.I newpath
in place.
-.PP
+.P
.I oldpath
can specify a directory.
In this case,
.I newpath
must either not exist, or it must specify an empty directory.
-.PP
+.P
If
.I oldpath
refers to a symbolic link, the link is renamed; if
@@ -105,7 +105,7 @@ The
system call operates in exactly the same way as
.BR rename (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I oldpath
is relative, then it is interpreted relative to the directory
@@ -115,7 +115,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR rename ()
for a relative pathname).
-.PP
+.P
If
.I oldpath
is relative and
@@ -127,13 +127,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR rename ()).
-.PP
+.P
If
.I oldpath
is absolute, then
.I olddirfd
is ignored.
-.PP
+.P
The interpretation of
.I newpath
is as for
@@ -141,7 +141,7 @@ is as for
except that a relative pathname is interpreted relative
to the directory referred to by the file descriptor
.IR newdirfd .
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -157,7 +157,7 @@ call with a zero
.I flags
argument is equivalent to
.BR renameat ().
-.PP
+.P
The
.I flags
argument is a bit mask consisting of zero or more of the following flags:
@@ -414,7 +414,7 @@ are not on the same mounted filesystem.
.BR rename ()
does not work across different mount points,
even if the same filesystem is mounted on both.)
-.PP
+.P
The following additional errors can occur for
.BR renameat ()
and
@@ -437,7 +437,7 @@ or similar for
.I newpath
and
.I newdirfd
-.PP
+.P
The following additional errors can occur for
.BR renameat2 ():
.TP
diff --git a/man2/request_key.2 b/man2/request_key.2
index 80187d1..dd2e39d 100644
--- a/man2/request_key.2
+++ b/man2/request_key.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH request_key 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH request_key 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
request_key \- request a key from the kernel's key management facility
.SH LIBRARY
@@ -13,7 +13,7 @@ Linux Key Management Utilities
.SH SYNOPSIS
.nf
.B #include <keyutils.h>
-.PP
+.P
.BI "key_serial_t request_key(const char *" type ", const char *" description ,
.BI " const char *_Nullable " callout_info ,
.BI " key_serial_t " dest_keyring );
@@ -30,13 +30,13 @@ If the key is found or created,
attaches it to the keyring whose ID is specified in
.I dest_keyring
and returns the key's serial number.
-.PP
+.P
.BR request_key ()
first recursively searches for a matching key in all of the keyrings
attached to the calling process.
The keyrings are searched in the order: thread-specific keyring,
process-specific keyring, and then session keyring.
-.PP
+.P
If
.BR request_key ()
is called from a program invoked by
@@ -48,7 +48,7 @@ supplementary group IDs, and security context to determine access.
.\" David Howells: we can then have an arbitrarily long sequence
.\" of "recursive" request-key upcalls. There is no limit, other
.\" than number of PIDs, etc.
-.PP
+.P
The search of the keyring tree is breadth-first:
the keys in each keyring searched are checked for a match before any child
keyrings are recursed into.
@@ -57,18 +57,18 @@ Only keys for which the caller has
permission be found, and only keyrings for which the caller has
.I search
permission may be searched.
-.PP
+.P
If the key is not found and
.I callout
is NULL, then the call fails with the error
.BR ENOKEY .
-.PP
+.P
If the key is not found and
.I callout
is not NULL, then the kernel attempts to invoke a user-space
program to instantiate the key.
The details are given below.
-.PP
+.P
The
.I dest_keyring
serial number may be that of a valid keyring for which the caller has
@@ -94,13 +94,13 @@ This specifies the caller's UID-specific keyring (see
.B KEY_SPEC_USER_SESSION_KEYRING
This specifies the caller's UID-session keyring (see
.BR user\-session\-keyring (7)).
-.PP
+.P
When the
.I dest_keyring
is specified as 0
and no key construction has been performed,
then no additional linking is done.
-.PP
+.P
Otherwise, if
.I dest_keyring
is 0 and a new key is constructed, the new key will be linked
@@ -180,7 +180,7 @@ This keyring is also expected to always exist.
.\"
.\" will all create a keyring under some circumstances. Whereas the rest,
.\" such as KEYCTL_GET_SECURITY, KEYCTL_READ and KEYCTL_REVOKE, won't.
-.PP
+.P
If the
.BR keyctl (2)
.B KEYCTL_SET_REQKEY_KEYRING
@@ -227,7 +227,7 @@ The authorization key is constructed as follows:
.RS
.IP \[bu] 3
The key type is
-.IR """.request_key_auth""" .
+.IR \[dq].request_key_auth\[dq] .
.IP \[bu]
The key's UID and GID are the same as the corresponding filesystem IDs
of the requesting process.
@@ -263,10 +263,10 @@ This program is supplied with the following command-line arguments:
.RS
.IP [0] 5
The string
-.IR """/sbin/request\-key""" .
+.IR \[dq]/sbin/request\-key\[dq] .
.IP [1]
The string
-.I """create"""
+.I \[dq]create\[dq]
(indicating that a key is to be created).
.IP [2]
The ID of the key that is to be instantiated.
@@ -337,7 +337,7 @@ At this point, the
.BR request_key ()
call completes, and the requesting program can continue execution.
.RE
-.PP
+.P
If these steps are unsuccessful, then an
.B ENOKEY
error will be returned to the caller of
@@ -353,7 +353,7 @@ The purpose of this negatively instantiated key is to prevent
(that require expensive
.BR request\-key (8)
upcalls) for a key that can't (at the moment) be positively instantiated.
-.PP
+.P
Once the key has been instantiated, the authorization key
.RB ( KEY_SPEC_REQKEY_AUTH_KEY )
is revoked, and the destination keyring
@@ -361,7 +361,7 @@ is revoked, and the destination keyring
is no longer accessible from the
.BR request\-key (8)
program.
-.PP
+.P
If a key is created, then\[em]regardless of whether it is a valid key or
a negatively instantiated key\[em]it will displace any other key with
the same type and description from the keyring specified in
@@ -429,7 +429,7 @@ argument started with a period (\[aq].\[aq]).
Linux.
.SH HISTORY
Linux 2.6.10.
-.PP
+.P
The ability to instantiate keys upon request was added
.\" commit 3e30148c3d524a9c1c63ca28261bc24c457eb07a
in Linux 2.6.13.
@@ -444,11 +444,11 @@ and
arguments for the system call are taken from the values
supplied in the command-line arguments.
The call specifies the session keyring as the target keyring.
-.PP
+.P
In order to demonstrate this program,
we first create a suitable entry in the file
.IR /etc/request\-key.conf .
-.PP
+.P
.in +4n
.EX
$ sudo sh
@@ -457,7 +457,7 @@ $ sudo sh
# \fBexit\fP
.EE
.in
-.PP
+.P
This entry specifies that when a new "user" key with the prefix
"mtk:" must be instantiated, that task should be performed via the
.BR keyctl (1)
@@ -482,11 +482,11 @@ See
for details of these
.I %
specifiers.
-.PP
+.P
Then we run the program and check the contents of
.I /proc/keys
to verify that the requested key has been instantiated:
-.PP
+.P
.in +4n
.EX
$ \fB./t_request_key user mtk:key1 "Payload data"\fP
@@ -494,7 +494,7 @@ $ \fBgrep \[aq]2dddaf50\[aq] /proc/keys\fP
2dddaf50 I\-\-Q\-\-\- 1 perm 3f010000 1000 1000 user mtk:key1: 12
.EE
.in
-.PP
+.P
For another example of the use of this program, see
.BR keyctl (2).
.SS Program source
@@ -549,7 +549,7 @@ main(int argc, char *argv[])
.BR user\-keyring (7),
.BR user\-session\-keyring (7),
.BR request\-key (8)
-.PP
+.P
The kernel source files
.I Documentation/security/keys/core.rst
and
diff --git a/man2/restart_syscall.2 b/man2/restart_syscall.2
index 4b0e101..87e8705 100644
--- a/man2/restart_syscall.2
+++ b/man2/restart_syscall.2
@@ -10,14 +10,14 @@
.\"
.\" See also Section 11.3.3 of Understanding the Linux Kernel, 3rd edition
.\"
-.TH restart_syscall 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH restart_syscall 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
restart_syscall \- restart a system call after interruption by a stop signal
.SH SYNOPSIS
.nf
.B long restart_syscall(void);
.fi
-.PP
+.P
.IR Note :
There is no glibc wrapper for this system call; see NOTES.
.SH DESCRIPTION
@@ -32,7 +32,7 @@ is later resumed after receiving a
.B SIGCONT
signal.
This system call is designed only for internal use by the kernel.
-.PP
+.P
.BR restart_syscall ()
is used for restarting only those system calls that,
when restarted, should adjust their time-related parameters\[em]namely
@@ -83,7 +83,7 @@ Linux 2.6.
There is no glibc wrapper for this system call,
because it is intended for use only by the kernel and
should never be called by applications.
-.PP
+.P
The kernel uses
.BR restart_syscall ()
to ensure that when a system call is restarted
@@ -105,7 +105,7 @@ Notable examples of system calls that suffer this problem are
.BR select (2),
and
.BR pselect (2).
-.PP
+.P
From user space, the operation of
.BR restart_syscall ()
is largely invisible:
diff --git a/man2/rmdir.2 b/man2/rmdir.2
index 5bd7370..a1dc594 100644
--- a/man2/rmdir.2
+++ b/man2/rmdir.2
@@ -7,7 +7,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH rmdir 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH rmdir 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
rmdir \- delete a directory
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int rmdir(const char *" pathname );
.fi
.SH DESCRIPTION
diff --git a/man2/rt_sigqueueinfo.2 b/man2/rt_sigqueueinfo.2
index b8b0157..d2d2eec 100644
--- a/man2/rt_sigqueueinfo.2
+++ b/man2/rt_sigqueueinfo.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH rt_sigqueueinfo 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH rt_sigqueueinfo 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
rt_sigqueueinfo, rt_tgsigqueueinfo \- queue a signal and data
.SH LIBRARY
@@ -13,13 +13,13 @@ Standard C library
.BR "#include <linux/signal.h>" " /* Definition of " SI_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_rt_sigqueueinfo, pid_t " tgid ,
.BI " int " sig ", siginfo_t *" info );
.BI "int syscall(SYS_rt_tgsigqueueinfo, pid_t " tgid ", pid_t " tid ,
.BI " int " sig ", siginfo_t *" info );
.fi
-.PP
+.P
.IR Note :
There are no glibc wrappers for these system calls; see NOTES.
.SH DESCRIPTION
@@ -34,13 +34,13 @@ by establishing a signal handler with the
.BR sigaction (2)
.B SA_SIGINFO
flag.
-.PP
+.P
These system calls are not intended for direct application use;
they are provided to allow the implementation of
.BR sigqueue (3)
and
.BR pthread_sigqueue (3).
-.PP
+.P
The
.BR rt_sigqueueinfo ()
system call sends the signal
@@ -52,7 +52,7 @@ to the thread group with the ID
corresponds to the traditional UNIX process ID.)
The signal will be delivered to an arbitrary member of the thread group
(i.e., one of the threads that is not currently blocking the signal).
-.PP
+.P
The
.I info
argument specifies the data to accompany the signal.
@@ -103,14 +103,14 @@ For more information, see the description of the last
.RI ( "union sigval" )
argument of
.BR sigqueue (3).
-.PP
+.P
Internally, the kernel sets the
.I si_signo
field to the value specified in
.IR sig ,
so that the receiver of the signal can also obtain
the signal number via that field.
-.PP
+.P
The
.BR rt_tgsigqueueinfo ()
system call is like
@@ -158,7 +158,7 @@ is invalid.
No thread group matching
.I tgid
was found.
-.PP
+.P
.BR rt_tgsigqueinfo ():
No thread matching
.I tgid
@@ -179,7 +179,7 @@ Since these system calls are not intended for application use,
there are no glibc wrapper functions; use
.BR syscall (2)
in the unlikely case that you want to call them directly.
-.PP
+.P
As with
.BR kill (2),
the null signal (0) can be used to check if the specified process
diff --git a/man2/s390_guarded_storage.2 b/man2/s390_guarded_storage.2
index 63d5c83..b2038e5 100644
--- a/man2/s390_guarded_storage.2
+++ b/man2/s390_guarded_storage.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH s390_guarded_storage 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH s390_guarded_storage 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
s390_guarded_storage \- operations with z/Architecture guarded storage facility
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.BR "#include <sys/syscall.h> " \
"/* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_s390_guarded_storage, int " command ,
.BI " struct gs_cb *" gs_cb );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR s390_guarded_storage (),
@@ -29,7 +29,7 @@ The
.BR s390_guarded_storage ()
system call enables the use of the Guarded Storage Facility
(a z/Architecture-specific feature) for user-space processes.
-.PP
+.P
.\" The description is based on
.\" http://www-05.ibm.com/de/linux-on-z-ws-us/agenda/pdfs/8_-_Linux_Whats_New_-_Stefan_Raspl.pdf
.\" and "z/Architecture Principles of Operation" obtained from
@@ -40,7 +40,7 @@ reading a pointer with a newly introduced "Load Guarded" (LGG)
or "Load Logical and Shift Guarded" (LLGFSG) instructions will cause
a range check on the loaded value and invoke a (previously set up)
user-space handler if one of the guarded regions is affected.
-.PP
+.P
The
.\" The command description is copied from v4.12-rc1~139^2~56^2 commit message
.I command
@@ -88,7 +88,7 @@ The broadcast guarded storage control block is consumed; a second broadcast
without a refresh of the stored control block with
.B GS_SET_BC_CB
will not have any effect.
-.PP
+.P
The
.I gs_cb
argument specifies the address of a guarded storage control block structure
@@ -99,7 +99,7 @@ command; all other aforementioned commands ignore this argument.
On success, the return value of
.BR s390_guarded_storage ()
is 0.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -138,7 +138,7 @@ instructions and Guarded Storage Control Block and
Guarded Storage Event Parameter List structure layouts
is available in "z/Architecture Principles of Operations"
beginning from the twelfth edition.
-.PP
+.P
The
.I gs_cb
structure has a field
@@ -153,7 +153,7 @@ field), and its layout is available as a
structure type definition in the
.I asm/guarded_storage.h
header.
-.\" .PP
+.\" .P
.\" For the example of using the guarded storage facility, see
.\" .UR https://developer.ibm.com/javasdk/2017/09/25/concurrent-scavenge-using-guarded-storage-facility-works/
.\" the article with the description of its usage in the Java Garbage Collection
diff --git a/man2/s390_pci_mmio_write.2 b/man2/s390_pci_mmio_write.2
index 07788e9..f6b8c46 100644
--- a/man2/s390_pci_mmio_write.2
+++ b/man2/s390_pci_mmio_write.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH s390_pci_mmio_write 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH s390_pci_mmio_write 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
s390_pci_mmio_write, s390_pci_mmio_read \- transfer data to/from PCI
MMIO memory page
@@ -14,14 +14,14 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_s390_pci_mmio_write, unsigned long " mmio_addr ,
.BI " const void " user_buffer [. length "], \
size_t " length );
.BI "int syscall(SYS_s390_pci_mmio_read, unsigned long " mmio_addr ,
.BI " void " user_buffer [. length "], size_t " length );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -44,7 +44,7 @@ data from the PCI MMIO memory location specified by
.I mmio_addr
to the user-space buffer
.IR user_buffer .
-.PP
+.P
These system calls must be used instead of the simple assignment
or data-transfer operations that are used to access the PCI MMIO
memory areas mapped to user space on the Linux System z platform.
diff --git a/man2/s390_runtime_instr.2 b/man2/s390_runtime_instr.2
index fb1be13..a01421b 100644
--- a/man2/s390_runtime_instr.2
+++ b/man2/s390_runtime_instr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH s390_runtime_instr 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH s390_runtime_instr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
s390_runtime_instr \- enable/disable s390 CPU run-time instrumentation
.SH LIBRARY
@@ -14,10 +14,10 @@ Standard C library
.BR "#include <asm/runtime_instr.h>" " /* Definition of " S390_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_s390_runtime_instr, int " command ", int " signum );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR s390_runtime_instr (),
@@ -28,7 +28,7 @@ The
.BR s390_runtime_instr ()
system call starts or stops CPU run-time instrumentation for the
calling thread.
-.PP
+.P
The
.I command
argument controls whether run-time instrumentation is started
@@ -36,7 +36,7 @@ argument controls whether run-time instrumentation is started
1) or stopped
.RB ( S390_RUNTIME_INSTR_STOP ,
2) for the calling thread.
-.PP
+.P
The
.I signum
argument specifies the number of a real-time signal.
@@ -90,7 +90,7 @@ The
header file is available
.\" commit df2f815a7df7edb5335a3bdeee6a8f9f6f9c35c4
since Linux 4.16.
-.PP
+.P
Starting with Linux 4.4,
support for signalling was removed, as was the check whether
.I signum
diff --git a/man2/s390_sthyi.2 b/man2/s390_sthyi.2
index 9c6af82..1b0023e 100644
--- a/man2/s390_sthyi.2
+++ b/man2/s390_sthyi.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH s390_sthyi 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH s390_sthyi 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
s390_sthyi \- emulate STHYI instruction
.SH LIBRARY
@@ -14,12 +14,12 @@ Standard C library
.BR "#include <asm/sthyi.h>" " /* Definition of " STHYI_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_s390_sthyi, unsigned long " function_code ,
.BI " void *" resp_buffer ", uint64_t *" return_code ,
.BI " unsigned long " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR s390_sthyi (),
@@ -33,7 +33,7 @@ It provides hardware resource information for the machine and its
virtualization levels.
This includes CPU type and capacity, as well as the machine model and
other metrics.
-.PP
+.P
The
.I function_code
argument indicates which function to perform.
@@ -42,7 +42,7 @@ The following code(s) are supported:
.B STHYI_FC_CP_IFL_CAP
Return CP (Central Processor) and IFL (Integrated Facility for Linux)
capacity information.
-.PP
+.P
The
.I resp_buffer
argument specifies the address of a response buffer.
@@ -54,7 +54,7 @@ the buffer must be one page (4K) in size.
If the system call returns 0,
the response buffer will be filled with CPU capacity information.
Otherwise, the response buffer's content is unchanged.
-.PP
+.P
The
.I return_code
argument stores the return code of the STHYI instruction,
@@ -65,14 +65,14 @@ Success.
.TP
4
Unsupported function code.
-.PP
+.P
For further details about
.IR return_code ,
.IR function_code ,
and
.IR resp_buffer ,
see the reference given in NOTES.
-.PP
+.P
The
.I flags
argument is provided to allow for future extensions and currently
@@ -88,7 +88,7 @@ A return value of 3 indicates "unsupported function code" and the content of
.I *resp_buffer
is unchanged.
The return values 1 and 2 are reserved.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -122,11 +122,11 @@ For details of the STHYI instruction, see
.UR https://www.ibm.com\:/support\:/knowledgecenter\:/SSB27U_6.3.0\:/com.ibm.zvm.v630.hcpb4\:/hcpb4sth.htm
the documentation page
.UE .
-.PP
+.P
When the system call interface is used, the response buffer doesn't
have to fulfill alignment requirements described in the STHYI
instruction definition.
-.PP
+.P
The kernel caches the response (for up to one second, as of Linux 4.16).
Subsequent system call invocations may return the cached response.
.SH SEE ALSO
diff --git a/man2/sched_get_priority_max.2 b/man2/sched_get_priority_max.2
index 491e134..30a66fa 100644
--- a/man2/sched_get_priority_max.2
+++ b/man2/sched_get_priority_max.2
@@ -7,7 +7,7 @@
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\"
-.TH sched_get_priority_max 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sched_get_priority_max 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_get_priority_max, sched_get_priority_min \- get static priority range
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sched.h>
-.PP
+.P
.BI "int sched_get_priority_max(int " policy );
.BI "int sched_get_priority_min(int " policy );
.fi
@@ -41,7 +41,7 @@ and
.BR SCHED_DEADLINE .
Further details about these policies can be found in
.BR sched (7).
-.PP
+.P
Processes with numerically higher priority values are scheduled before
processes with numerically lower priority values.
Thus, the value
@@ -50,7 +50,7 @@ returned by
will be greater than the
value returned by
.BR sched_get_priority_min ().
-.PP
+.P
Linux allows the static priority range 1 to 99 for the
.B SCHED_FIFO
and
@@ -58,7 +58,7 @@ and
policies, and the priority 0 for the remaining policies.
Scheduling priority ranges for the various policies
are not alterable.
-.PP
+.P
The range of scheduling priorities may vary on other POSIX systems,
thus it is a good idea for portable applications to use a virtual
priority range and map it to the interval given by
@@ -71,7 +71,7 @@ a spread of at least 32 between the maximum and the minimum values for
.B SCHED_FIFO
and
.BR SCHED_RR .
-.PP
+.P
POSIX systems on which
.BR sched_get_priority_max ()
and
diff --git a/man2/sched_rr_get_interval.2 b/man2/sched_rr_get_interval.2
index cbd6247..b547cf2 100644
--- a/man2/sched_rr_get_interval.2
+++ b/man2/sched_rr_get_interval.2
@@ -7,7 +7,7 @@
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\"
-.TH sched_rr_get_interval 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sched_rr_get_interval 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_rr_get_interval \- get the SCHED_RR interval for the named process
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sched.h>
-.PP
+.P
.BI "int sched_rr_get_interval(pid_t " pid ", struct timespec *" tp );
.fi
.SH DESCRIPTION
@@ -30,7 +30,7 @@ the round-robin time quantum for the process identified by
The specified process should be running under the
.B SCHED_RR
scheduling policy.
-.PP
+.P
If
.I pid
is zero, the time quantum for the calling process is written into
diff --git a/man2/sched_setaffinity.2 b/man2/sched_setaffinity.2
index 9389e09..7512129 100644
--- a/man2/sched_setaffinity.2
+++ b/man2/sched_setaffinity.2
@@ -12,7 +12,7 @@
.\" 2008-11-12, mtk, removed CPU_*() macro descriptions to a
.\" separate CPU_SET(3) page.
.\"
-.TH sched_setaffinity 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH sched_setaffinity 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_setaffinity, sched_getaffinity \- \
set and get a thread's CPU affinity mask
@@ -23,7 +23,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sched.h>
-.PP
+.P
.BI "int sched_setaffinity(pid_t " pid ", size_t " cpusetsize ,
.BI " const cpu_set_t *" mask );
.BI "int sched_getaffinity(pid_t " pid ", size_t " cpusetsize ,
@@ -43,14 +43,14 @@ Restricting a thread to run on a single CPU also avoids
the performance cost caused by the cache invalidation that occurs
when a thread ceases to execute on one CPU and then
recommences execution on a different CPU.
-.PP
+.P
A CPU affinity mask is represented by the
.I cpu_set_t
structure, a "CPU set", pointed to by
.IR mask .
A set of macros for manipulating CPU sets is described in
.BR CPU_SET (3).
-.PP
+.P
.BR sched_setaffinity ()
sets the CPU affinity mask of the thread whose ID is
.I pid
@@ -65,14 +65,14 @@ is the length (in bytes) of the data pointed to by
.IR mask .
Normally this argument would be specified as
.IR "sizeof(cpu_set_t)" .
-.PP
+.P
If the thread specified by
.I pid
is not currently running on one of the CPUs specified in
.IR mask ,
then that thread is migrated to one of the CPUs specified in
.IR mask .
-.PP
+.P
.BR sched_getaffinity ()
writes the affinity mask of the thread whose ID is
.I pid
@@ -139,7 +139,7 @@ Linux.
.SH HISTORY
Linux 2.5.8,
glibc 2.3.
-.PP
+.P
Initially, the glibc interfaces included a
.I cpusetsize
argument, typed as
@@ -161,7 +161,7 @@ runs if the "cpuset" mechanism described in
is being used.
These restrictions on the actual set of CPUs on which the thread
will run are silently imposed by the kernel.
-.PP
+.P
There are various ways of determining the number of CPUs
available on the system, including: inspecting the contents of
.IR /proc/cpuinfo ;
@@ -173,10 +173,10 @@ and
.B _SC_NPROCESSORS_ONLN
parameters; and inspecting the list of CPU directories under
.IR /sys/devices/system/cpu/ .
-.PP
+.P
.BR sched (7)
has a description of the Linux scheduling scheme.
-.PP
+.P
The affinity mask is a per-thread attribute that can be
adjusted independently for each of the threads in a thread group.
The value returned from a call to
@@ -193,7 +193,7 @@ will set the attribute for the main thread of the thread group.
.BR pthread_setaffinity_np (3)
instead of
.BR sched_setaffinity ().)
-.PP
+.P
The
.I isolcpus
boot option can be used to isolate one or more CPUs at boot time,
@@ -211,7 +211,7 @@ As noted in that file,
is the preferred mechanism of isolating CPUs
(versus the alternative of manually setting the CPU affinity
of all processes on the system).
-.PP
+.P
A child created via
.BR fork (2)
inherits its parent's CPU affinity mask.
@@ -225,7 +225,7 @@ being typed as
.IR "unsigned long\ *" ,
reflecting the fact that the underlying implementation of CPU
sets is a simple bit mask.
-.PP
+.P
On success, the raw
.BR sched_getaffinity ()
system call returns the number of bytes placed copied into the
@@ -249,13 +249,13 @@ meaning that the maximum CPU number that can be represented is 1023.
.\" and https://sourceware.org/ml/libc-alpha/2013-07/msg00288.html
If the kernel CPU affinity mask is larger than 1024,
then calls of the form:
-.PP
+.P
.in +4n
.EX
sched_getaffinity(pid, sizeof(cpu_set_t), &mask);
.EE
.in
-.PP
+.P
fail with the error
.BR EINVAL ,
the error produced by the underlying system call for the case where the
@@ -265,7 +265,7 @@ size specified in
is smaller than the size of the affinity mask used by the kernel.
(Depending on the system CPU topology, the kernel affinity mask can
be substantially larger than the number of active CPUs in the system.)
-.PP
+.P
When working on systems with large kernel CPU affinity masks,
one must dynamically allocate the
.I mask
@@ -276,7 +276,7 @@ of the required mask using
.BR sched_getaffinity ()
calls with increasing mask sizes (until the call does not fail with the error
.BR EINVAL ).
-.PP
+.P
Be aware that
.BR CPU_ALLOC (3)
may allocate a slightly larger CPU set than requested
@@ -300,16 +300,16 @@ The program takes three command-line arguments:
the CPU number for the parent,
the CPU number for the child,
and the number of loop iterations that both processes should perform.
-.PP
+.P
As the sample runs below demonstrate, the amount of real and CPU time
consumed when running the program will depend on intra-core caching effects
and whether the processes are using the same CPU.
-.PP
+.P
We first employ
.BR lscpu (1)
to determine that this (x86)
system has two cores, each with two CPUs:
-.PP
+.P
.in +4n
.EX
$ \fBlscpu | egrep \-i \[aq]core.*:|socket\[aq]\fP
@@ -318,12 +318,12 @@ Core(s) per socket: 2
Socket(s): 1
.EE
.in
-.PP
+.P
We then time the operation of the example program for three cases:
both processes running on the same CPU;
both processes running on different CPUs on the same core;
and both processes running on different CPUs on different cores.
-.PP
+.P
.in +4n
.EX
$ \fBtime \-p ./a.out 0 0 100000000\fP
diff --git a/man2/sched_setattr.2 b/man2/sched_setattr.2
index b4975c6..546ac31 100644
--- a/man2/sched_setattr.2
+++ b/man2/sched_setattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sched_setattr 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sched_setattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_setattr, sched_getattr \-
set and get scheduling policy and attributes
@@ -15,14 +15,14 @@ Standard C library
.BR "#include <sched.h>" " /* Definition of " SCHED_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_sched_setattr, pid_t " pid ", struct sched_attr *" attr ,
.BI " unsigned int " flags );
.BI "int syscall(SYS_sched_getattr, pid_t " pid ", struct sched_attr *" attr ,
.BI " unsigned int " size ", unsigned int " flags );
.fi
.\" FIXME . Add feature test macro requirements
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -38,7 +38,7 @@ If
.I pid
equals zero,
the scheduling policy and attributes of the calling thread will be set.
-.PP
+.P
Currently, Linux supports the following "normal"
(i.e., non-real-time) scheduling policies as values that may be specified in
.IR policy :
@@ -55,7 +55,7 @@ for "batch" style execution of processes; and
for running
.I very
low priority background jobs.
-.PP
+.P
Various "real-time" policies are also supported,
for special time-critical applications that need precise control over
the way in which runnable threads are selected for execution.
@@ -70,20 +70,20 @@ a first-in, first-out policy; and
.TP
.B SCHED_RR
a round-robin policy.
-.PP
+.P
Linux also provides the following policy:
.TP 14
.B SCHED_DEADLINE
a deadline scheduling policy; see
.BR sched (7)
for details.
-.PP
+.P
The
.I attr
argument is a pointer to a structure that defines
the new scheduling policy and attributes for the specified thread.
This structure has the following form:
-.PP
+.P
.in +4n
.EX
struct sched_attr {
@@ -101,7 +101,7 @@ struct sched_attr {
};
.EE
.in
-.PP
+.P
The fields of the
.I sched_attr
structure are as follows:
@@ -228,7 +228,7 @@ The value is expressed in nanoseconds.
.I sched_period
This field specifies the "Period" parameter for deadline scheduling.
The value is expressed in nanoseconds.
-.PP
+.P
The
.I flags
argument is provided to allow for future extensions to the interface;
@@ -246,7 +246,7 @@ If
equals zero,
the scheduling policy and attributes of the calling thread
will be retrieved.
-.PP
+.P
The
.I size
argument should be set to the size of the
@@ -256,7 +256,7 @@ The value must be at least as large as the size of the initially published
.I sched_attr
structure, or the call fails with the error
.BR EINVAL .
-.PP
+.P
The retrieved scheduling attributes are placed in the fields of the
.I sched_attr
structure pointed to by
@@ -266,7 +266,7 @@ The kernel sets
to the size of its
.I sched_attr
structure.
-.PP
+.P
If the caller-provided
.I attr
buffer is larger than the kernel's
@@ -280,7 +280,7 @@ outside the provided space.
As with
.BR sched_setattr (),
these semantics allow for future extensibility of the interface.
-.PP
+.P
The
.I flags
argument is provided to allow for future extensions to the interface;
@@ -312,7 +312,7 @@ is not zero.
The thread whose ID is
.I pid
could not be found.
-.PP
+.P
In addition,
.BR sched_getattr ()
can fail for the following reasons:
@@ -329,7 +329,7 @@ is too small.
is invalid; that is, it is smaller than the initial version of the
.I sched_attr
structure (48 bytes) or larger than the system page size.
-.PP
+.P
In addition,
.BR sched_setattr ()
can fail for the following reasons:
@@ -380,7 +380,7 @@ Linux 3.14.
.SH NOTES
glibc does not provide wrappers for these system calls; call them using
.BR syscall (2).
-.PP
+.P
.BR sched_setattr ()
provides a superset of the functionality of
.BR sched_setscheduler (2),
@@ -406,7 +406,7 @@ failed with the error
instead of
.B E2BIG
for the case described in ERRORS.
-.PP
+.P
Up to Linux 5.3,
.BR sched_getattr ()
failed with the error
diff --git a/man2/sched_setparam.2 b/man2/sched_setparam.2
index f054f5d..3e69961 100644
--- a/man2/sched_setparam.2
+++ b/man2/sched_setparam.2
@@ -8,7 +8,7 @@
.\" revision
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH sched_setparam 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sched_setparam 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_setparam, sched_getparam \- set and get scheduling parameters
.SH LIBRARY
@@ -17,10 +17,10 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sched.h>
-.PP
+.P
.BI "int sched_setparam(pid_t " pid ", const struct sched_param *" param );
.BI "int sched_getparam(pid_t " pid ", struct sched_param *" param );
-.PP
+.P
\fBstruct sched_param {
...
int \fIsched_priority\fB;
@@ -40,13 +40,13 @@ policy of the thread identified by
See
.BR sched (7)
for a description of the scheduling policies supported under Linux.
-.PP
+.P
.BR sched_getparam ()
retrieves the scheduling parameters for the
thread identified by \fIpid\fP.
If \fIpid\fP is zero, then the parameters
of the calling thread are retrieved.
-.PP
+.P
.BR sched_setparam ()
checks the validity of \fIparam\fP for the scheduling policy of the
thread.
@@ -55,11 +55,11 @@ range given by
.BR sched_get_priority_min (2)
and
.BR sched_get_priority_max (2).
-.PP
+.P
For a discussion of the privileges and resource limits related to
scheduling priority and policy, see
.BR sched (7).
-.PP
+.P
POSIX systems on which
.BR sched_setparam ()
and
diff --git a/man2/sched_setscheduler.2 b/man2/sched_setscheduler.2
index 20ad5c2..ec67aef 100644
--- a/man2/sched_setscheduler.2
+++ b/man2/sched_setscheduler.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH sched_setscheduler 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sched_setscheduler 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_setscheduler, sched_getscheduler \-
set and get scheduling policy/parameters
@@ -13,7 +13,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sched.h>
-.PP
+.P
.BI "int sched_setscheduler(pid_t " pid ", int " policy ,
.BI " const struct sched_param *" param );
.BI "int sched_getscheduler(pid_t " pid );
@@ -26,11 +26,11 @@ sets both the scheduling policy and parameters for the
thread whose ID is specified in \fIpid\fP.
If \fIpid\fP equals zero, the
scheduling policy and parameters of the calling thread will be set.
-.PP
+.P
The scheduling parameters are specified in the
.I param
argument, which is a pointer to a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct sched_param {
@@ -40,13 +40,13 @@ struct sched_param {
};
.EE
.in
-.PP
+.P
In the current implementation, the structure contains only one field,
.IR sched_priority .
The interpretation of
.I param
depends on the selected policy.
-.PP
+.P
Currently, Linux supports the following "normal"
(i.e., non-real-time) scheduling policies as values that may be specified in
.IR policy :
@@ -63,11 +63,11 @@ for "batch" style execution of processes; and
for running
.I very
low priority background jobs.
-.PP
+.P
For each of the above policies,
.I param\->sched_priority
must be 0.
-.PP
+.P
Various "real-time" policies are also supported,
for special time-critical applications that need precise control over
the way in which runnable threads are selected for execution.
@@ -82,7 +82,7 @@ a first-in, first-out policy; and
.TP
.B SCHED_RR
a round-robin policy.
-.PP
+.P
For each of the above policies,
.I param\->sched_priority
specifies a scheduling priority for the thread.
@@ -93,7 +93,7 @@ and
with the specified
.IR policy .
On Linux, these system calls return, respectively, 1 and 99.
-.PP
+.P
Since Linux 2.6.32, the
.B SCHED_RESET_ON_FORK
flag can be ORed in
@@ -106,7 +106,7 @@ do not inherit privileged scheduling policies.
See
.BR sched (7)
for details.
-.PP
+.P
.BR sched_getscheduler ()
returns the current scheduling policy of the thread
identified by \fIpid\fP.
@@ -155,7 +155,7 @@ and details vary across systems.
For example, the Solaris 7 manual page says that
the real or effective user ID of the caller must
match the real user ID or the save set-user-ID of the target.
-.PP
+.P
The scheduling policy and parameters are in fact per-thread
attributes on Linux.
The value returned from a call to
@@ -178,7 +178,7 @@ instead of the
system calls.)
.SH STANDARDS
POSIX.1-2008 (but see BUGS below).
-.PP
+.P
.B SCHED_BATCH
and
.B SCHED_IDLE
@@ -194,7 +194,7 @@ That page also describes an additional policy,
.BR SCHED_DEADLINE ,
which is settable only via
.BR sched_setattr (2).
-.PP
+.P
POSIX systems on which
.BR sched_setscheduler ()
and
diff --git a/man2/sched_yield.2 b/man2/sched_yield.2
index 154fd4f..caf7792 100644
--- a/man2/sched_yield.2
+++ b/man2/sched_yield.2
@@ -7,7 +7,7 @@
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\"
-.TH sched_yield 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH sched_yield 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sched_yield \- yield the processor
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sched.h>
-.PP
+.P
.B int sched_yield(void);
.fi
.SH DESCRIPTION
@@ -40,7 +40,7 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001 (but optional).
POSIX.1-2008.
-.PP
+.P
Before POSIX.1-2008,
systems on which
.BR sched_yield ()
@@ -59,12 +59,12 @@ Use of
with nondeterministic scheduling policies such as
.B SCHED_OTHER
is unspecified and very likely means your application design is broken.
-.PP
+.P
If the calling thread is the only thread in the highest
priority list at that time,
it will continue to run after a call to
.BR sched_yield ().
-.PP
+.P
Avoid calling
.BR sched_yield ()
unnecessarily or inappropriately
diff --git a/man2/seccomp.2 b/man2/seccomp.2
index 6b32eec..b3f8026 100644
--- a/man2/seccomp.2
+++ b/man2/seccomp.2
@@ -6,7 +6,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH seccomp 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH seccomp 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
seccomp \- operate on Secure Computing state of the process
.SH LIBRARY
@@ -23,11 +23,11 @@ Standard C library
.\" need <sys/ptrace.h>
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_seccomp, unsigned int " operation ", unsigned int " flags ,
.BI " void *" args );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR seccomp (),
@@ -38,7 +38,7 @@ The
.BR seccomp ()
system call operates on the Secure Computing (seccomp) state of the
calling process.
-.PP
+.P
Currently, Linux supports the following
.I operation
values:
@@ -290,7 +290,7 @@ When adding filters via
.BR SECCOMP_SET_MODE_FILTER ,
.I args
points to a filter program:
-.PP
+.P
.in +4n
.EX
struct sock_fprog {
@@ -300,9 +300,9 @@ struct sock_fprog {
};
.EE
.in
-.PP
+.P
Each program must contain one or more BPF instructions:
-.PP
+.P
.in +4n
.EX
struct sock_filter { /* Filter block */
@@ -313,7 +313,7 @@ struct sock_filter { /* Filter block */
};
.EE
.in
-.PP
+.P
When executing the instructions, the BPF program operates on the
system call information made available (i.e., use the
.B BPF_ABS
@@ -324,7 +324,7 @@ addressing mode) as a (read-only)
.\" that would need to use ptrace to catch the call and directly
.\" modify the registers before continuing with the call.
buffer of the following form:
-.PP
+.P
.in +4n
.EX
struct seccomp_data {
@@ -336,7 +336,7 @@ struct seccomp_data {
};
.EE
.in
-.PP
+.P
Because numbering of system calls varies between architectures and
some architectures (e.g., x86-64) allow user-space code to use
the calling conventions of multiple architectures
@@ -346,7 +346,7 @@ to execute binaries that employ the different conventions),
it is usually necessary to verify the value of the
.I arch
field.
-.PP
+.P
It is strongly recommended to use an allow-list approach whenever
possible because such an approach is more robust and simple.
A deny-list will have to be updated whenever a potentially
@@ -357,7 +357,7 @@ a deny-list bypass.
See also
.I Caveats
below.
-.PP
+.P
The
.I arch
field is not unique for all calling conventions.
@@ -379,7 +379,7 @@ is used on the system call number to tell the two ABIs apart.
.\" will have a value that is not all-ones, and this will trigger
.\" an extra instruction in system_call to mask off the extra bit,
.\" so that the syscall table indexing still works.
-.PP
+.P
This means that a policy must either deny all syscalls with
.B __X32_SYSCALL_BIT
or it must recognize syscalls with and without
@@ -393,7 +393,7 @@ values with
.B __X32_SYSCALL_BIT
set can be bypassed by a malicious program that sets
.BR __X32_SYSCALL_BIT .
-.PP
+.P
Additionally, kernels prior to Linux 5.4 incorrectly permitted
.I nr
in the ranges 512-547 as well as the corresponding non-x32 syscalls ORed
@@ -415,7 +415,7 @@ On Linux 5.4 and newer,
such system calls will fail with the error
.BR ENOSYS ,
without doing anything.
-.PP
+.P
The
.I instruction_pointer
field provides the address of the machine-language instruction that
@@ -429,7 +429,7 @@ made the system call.
and
.BR mprotect (2)
system calls to prevent the program from subverting such checks.)
-.PP
+.P
When checking values from
.IR args ,
keep in mind that arguments are often
@@ -443,7 +443,7 @@ a system call that takes an argument of type
.IR int ,
the more-significant half of the argument register is ignored by
the system call, but visible in the seccomp data.
-.PP
+.P
A seccomp filter returns a 32-bit value consisting of two parts:
the most significant 16 bits
(corresponding to the mask defined by the constant
@@ -452,7 +452,7 @@ contain one of the "action" values listed below;
the least significant 16-bits (defined by the constant
.BR SECCOMP_RET_DATA )
are "data" to be associated with this return value.
-.PP
+.P
If multiple filters exist, they are \fIall\fP executed,
in reverse order of their addition to the filter tree\[em]that is,
the most recently installed filter is executed first.
@@ -476,7 +476,7 @@ avoiding a check for this uncommon case.)
The return value for the evaluation of a given system call is the first-seen
action value of highest precedence (along with its accompanying data)
returned by execution of all of the filters.
-.PP
+.P
In decreasing order of precedence,
the action values that may be returned by a seccomp filter are:
.TP
@@ -680,7 +680,7 @@ file.
.TP
.B SECCOMP_RET_ALLOW
This value results in the system call being executed.
-.PP
+.P
If an action value other than one of the above is specified,
then the filter action is treated as either
.B SECCOMP_RET_KILL_PROCESS
@@ -871,21 +871,21 @@ Rather than hand-coding seccomp filters as shown in the example below,
you may prefer to employ the
.I libseccomp
library, which provides a front-end for generating seccomp filters.
-.PP
+.P
The
.I Seccomp
field of the
.IR /proc/ pid /status
file provides a method of viewing the seccomp mode of a process; see
.BR proc (5).
-.PP
+.P
.BR seccomp ()
provides a superset of the functionality provided by the
.BR prctl (2)
.B PR_SET_SECCOMP
operation (which does not support
.IR flags ).
-.PP
+.P
Since Linux 4.4, the
.BR ptrace (2)
.B PTRACE_SECCOMP_GET_FILTER
@@ -966,14 +966,14 @@ but starting in glibc 2.26, the implementation switched to calling
.BR openat (2)
on all architectures.
.RE
-.PP
+.P
The consequence of the above points is that it may be necessary
to filter for a system call other than might be expected.
Various manual pages in Section 2 provide helpful details
about the differences between wrapper functions and
the underlying system calls in subsections entitled
.IR "C library/kernel differences" .
-.PP
+.P
Furthermore, note that the application of seccomp filters
even risks causing bugs in an application,
when the filters cause unexpected failures for legitimate operations
@@ -1019,7 +1019,7 @@ If the program attempts to execute the system call with the specified number,
the BPF filter causes the system call to fail, with
.I errno
being set to the specified error number.
-.PP
+.P
The remaining command-line arguments specify
the pathname and additional arguments of a program
that the example program should attempt to execute using
@@ -1028,11 +1028,11 @@ that the example program should attempt to execute using
.BR execve (2)
system call).
Some example runs of the program are shown below.
-.PP
+.P
First, we display the architecture that we are running on (x86-64)
and then construct a shell function that looks up system call
numbers on this architecture:
-.PP
+.P
.in +4n
.EX
$ \fBuname \-m\fP
@@ -1043,25 +1043,25 @@ $ \fBsyscall_nr() {
}\fP
.EE
.in
-.PP
+.P
When the BPF filter rejects a system call (case [2] above),
it causes the system call to fail with the error number
specified on the command line.
In the experiments shown here, we'll use error number 99:
-.PP
+.P
.in +4n
.EX
$ \fBerrno 99\fP
EADDRNOTAVAIL 99 Cannot assign requested address
.EE
.in
-.PP
+.P
In the following example, we attempt to run the command
.BR whoami (1),
but the BPF filter rejects the
.BR execve (2)
system call, so that the command is not even executed:
-.PP
+.P
.in +4n
.EX
$ \fBsyscall_nr execve\fP
@@ -1074,13 +1074,13 @@ $ \fB./a.out 59 0xC000003E 99 /bin/whoami\fP
execv: Cannot assign requested address
.EE
.in
-.PP
+.P
In the next example, the BPF filter rejects the
.BR write (2)
system call, so that, although it is successfully started, the
.BR whoami (1)
command is not able to write output:
-.PP
+.P
.in +4n
.EX
$ \fBsyscall_nr write\fP
@@ -1088,12 +1088,12 @@ $ \fBsyscall_nr write\fP
$ \fB./a.out 1 0xC000003E 99 /bin/whoami\fP
.EE
.in
-.PP
+.P
In the final example,
the BPF filter rejects a system call that is not used by the
.BR whoami (1)
command, so it is able to successfully execute and produce output:
-.PP
+.P
.in +4n
.EX
$ \fBsyscall_nr preadv\fP
@@ -1218,7 +1218,7 @@ main(int argc, char *argv[])
.BR proc (5),
.BR signal (7),
.BR socket (7)
-.PP
+.P
Various pages from the
.I libseccomp
library, including:
@@ -1228,7 +1228,7 @@ library, including:
.BR seccomp_load (3),
and
.BR seccomp_rule_add (3).
-.PP
+.P
The kernel source files
.I Documentation/networking/filter.txt
and
@@ -1237,7 +1237,7 @@ and
(or
.I Documentation/prctl/seccomp_filter.txt
before Linux 4.13).
-.PP
+.P
McCanne, S.\& and Jacobson, V.\& (1992)
.IR "The BSD Packet Filter: A New Architecture for User-level Packet Capture" ,
Proceedings of the USENIX Winter 1993 Conference
diff --git a/man2/seccomp_unotify.2 b/man2/seccomp_unotify.2
index 156fbce..7c2084b 100644
--- a/man2/seccomp_unotify.2
+++ b/man2/seccomp_unotify.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH seccomp_unotify 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH seccomp_unotify 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
seccomp_unotify \- Seccomp user-space notification mechanism
.SH LIBRARY
@@ -13,12 +13,12 @@ Standard C library
.B #include <linux/seccomp.h>
.B #include <linux/filter.h>
.B #include <linux/audit.h>
-.PP
+.P
.BI "int seccomp(unsigned int " operation ", unsigned int " flags \
", void *" args );
-.PP
+.P
.B #include <sys/ioctl.h>
-.PP
+.P
.BI "int ioctl(int " fd ", SECCOMP_IOCTL_NOTIF_RECV,"
.BI " struct seccomp_notif *" req );
.BI "int ioctl(int " fd ", SECCOMP_IOCTL_NOTIF_SEND,"
@@ -51,7 +51,7 @@ the handling of the system call to another user-space process.
Note that this mechanism is explicitly
.B not
intended as a method implementing security policy; see NOTES.
-.PP
+.P
In the discussion that follows,
the thread(s) on which the seccomp filter is installed is (are)
referred to as the
@@ -59,7 +59,7 @@ referred to as the
and the process that is notified by the user-space notification
mechanism is referred to as the
.IR supervisor .
-.PP
+.P
A suitably privileged supervisor can use the user-space notification
mechanism to perform actions on behalf of the target.
The advantage of the user-space notification mechanism is that
@@ -69,7 +69,7 @@ performed system call that the seccomp filter itself cannot.
(A seccomp filter is limited in the information it can obtain and
the actions that it can perform because it
is running on a virtual machine inside the kernel.)
-.PP
+.P
An overview of the steps performed by the target and the supervisor
is as follows:
.\"-------------------------------------
@@ -285,7 +285,7 @@ the system call in the target thread unblocks,
returning the information that was provided by the supervisor
in the notification response.
.\"-------------------------------------
-.PP
+.P
As a variation on the last two steps,
the supervisor can send a response that tells the kernel that it
should execute the target thread's system call; see the discussion of
@@ -317,7 +317,7 @@ The third
argument is a pointer to a structure of the following form
which contains information about the event.
This structure must be zeroed out before the call.
-.PP
+.P
.in +4n
.EX
struct seccomp_notif {
@@ -328,7 +328,7 @@ struct seccomp_notif {
};
.EE
.in
-.PP
+.P
The fields in this structure are as follows:
.TP
.I id
@@ -367,7 +367,7 @@ This is the same structure that is passed to the seccomp filter.
See
.BR seccomp (2)
for details of this structure.
-.PP
+.P
On success, this operation returns 0; on failure, \-1 is returned, and
.I errno
is set to indicate the cause of the error.
@@ -423,7 +423,7 @@ returned by an earlier
operation is still valid
(i.e., that the target still exists and its system call
is still blocked waiting for a response).
-.PP
+.P
The third
.BR ioctl (2)
argument is a pointer to the cookie
@@ -431,7 +431,7 @@ argument is a pointer to the cookie
returned by the
.B SECCOMP_IOCTL_NOTIF_RECV
operation.
-.PP
+.P
This operation is necessary to avoid race conditions that can occur when the
.I pid
returned by the
@@ -458,7 +458,7 @@ the
file for the TID obtained in step 1, with the intention of (say)
inspecting the memory location(s) that containing the argument(s) of
the system call that triggered the notification in step 1.
-.PP
+.P
In the above scenario, the risk is that the supervisor may try
to access the memory of a process other than the target.
This race can be avoided by following the call to
@@ -478,11 +478,11 @@ from the file descriptor may return 0, indicating end of file.)
.\" PID, or something like that. (Actually, it is associated
.\" with the "struct pid", which is not reused, instead of the
.\" numeric PID.
-.PP
+.P
See NOTES for a discussion of other cases where
.B SECCOMP_IOCTL_NOTIF_ID_VALID
checks must be performed.
-.PP
+.P
On success (i.e., the notification ID is still valid),
this operation returns 0.
On failure (i.e., the notification ID is no longer valid),
@@ -499,7 +499,7 @@ is used to send a notification response back to the kernel.
The third
.BR ioctl (2)
argument of this structure is a pointer to a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct seccomp_notif_resp {
@@ -510,7 +510,7 @@ struct seccomp_notif_resp {
};
.EE
.in
-.PP
+.P
The fields of this structure are as follows:
.TP
.I id
@@ -537,7 +537,7 @@ This is a bit mask that includes zero or more of the following flags:
Tell the kernel to execute the target's system call.
.\" commit fb3c5386b382d4097476ce9647260fc89b34afdb
.RE
-.PP
+.P
Two kinds of response are possible:
.IP \[bu] 3
A response to the kernel telling it to execute the
@@ -571,11 +571,11 @@ fields of the
structure.
The supervisor should set the fields of this structure as follows:
.RS
-.IP + 3
+.IP \[bu] 3
.I flags
does not contain
.BR SECCOMP_USER_NOTIF_FLAG_CONTINUE .
-.IP +
+.IP \[bu]
.I error
is set either to 0 for a spoofed "success" return or to a negative
error number for a spoofed "failure" return.
@@ -589,7 +589,7 @@ to return \-1, and
is assigned the negated
.I error
value.
-.IP +
+.IP \[bu]
.I val
is set to a value that will be used as the return value for a spoofed
"success" return for the target's system call.
@@ -609,7 +609,7 @@ field contains a nonzero value.
.\" verify that val and err are both 0 when CONTINUE is specified (as you
.\" pointed out correctly above).
.RE
-.PP
+.P
On success, this operation returns 0; on failure, \-1 is returned, and
.I errno
is set to indicate the cause of the error.
@@ -656,7 +656,7 @@ messages described in
this operation is semantically equivalent to duplicating
a file descriptor from the supervisor's file descriptor table
into the target's file descriptor table.
-.PP
+.P
The
.B SECCOMP_IOCTL_NOTIF_ADDFD
operation permits the supervisor to emulate a target system call (such as
@@ -670,10 +670,10 @@ and then use this operation to allocate
a file descriptor that refers to the same open file description in the target.
(For an explanation of open file descriptions, see
.BR open (2).)
-.PP
+.P
Once this operation has been performed,
the supervisor can close its copy of the file descriptor.
-.PP
+.P
In the target,
the received file descriptor is subject to the same
Linux Security Module (LSM) checks as are applied to a file descriptor
@@ -686,11 +686,11 @@ it inherits the cgroup version 1 network controller settings
and
.IR netprioidx )
of the target.
-.PP
+.P
The third
.BR ioctl (2)
argument is a pointer to a structure of the following form:
-.PP
+.P
.in +4n
.EX
struct seccomp_notif_addfd {
@@ -704,7 +704,7 @@ struct seccomp_notif_addfd {
};
.EE
.in
-.PP
+.P
The fields in this structure are as follows:
.TP
.I id
@@ -774,7 +774,7 @@ Currently, only the following flag is implemented:
.B O_CLOEXEC
Set the close-on-exec flag on the received file descriptor.
.RE
-.PP
+.P
On success, this
.BR ioctl (2)
call returns the number of the file descriptor that was allocated
@@ -787,11 +787,11 @@ this value can be used as the return value
that is supplied in the response that is subsequently sent with the
.B SECCOMP_IOCTL_NOTIF_SEND
operation.
-.PP
+.P
On error, \-1 is returned and
.I errno
is set to indicate the cause of the error.
-.PP
+.P
This operation can fail with the following errors:
.TP
.B EBADF
@@ -838,12 +838,12 @@ exceeds the limit specified in
The blocked system call in the target
has been interrupted by a signal handler
or the target has terminated.
-.PP
+.P
Here is some sample code (with error handling omitted) that uses the
.B SECCOMP_ADDFD_FLAG_SETFD
operation (here, to emulate a call to
.BR openat (2)):
-.PP
+.P
.EX
.in +4n
int fd, removeFd;
@@ -942,12 +942,12 @@ to allow system calls to be performed on behalf of the target.
The target's system call should either be handled by the supervisor or
allowed to continue normally in the kernel (where standard security
policies will be applied).
-.PP
+.P
.BR "Note well" :
this mechanism must not be used to make security policy decisions
about the system call,
which would be inherently race-prone for reasons described next.
-.PP
+.P
The
.B SECCOMP_USER_NOTIF_FLAG_CONTINUE
flag must be used with caution.
@@ -956,7 +956,7 @@ However, there is a time-of-check, time-of-use race here,
since an attacker could exploit the interval of time where the target is
blocked waiting on the "continue" response to do things such as
rewriting the system call arguments.
-.PP
+.P
Note furthermore that a user-space notifier can be bypassed if
the existing filters allow the use of
.BR seccomp (2)
@@ -966,7 +966,7 @@ to install a filter that returns an action value with a higher precedence than
.B SECCOMP_RET_USER_NOTIF
(see
.BR seccomp (2)).
-.PP
+.P
It should thus be absolutely clear that the
seccomp user-space notification mechanism
.B can not
@@ -994,7 +994,7 @@ However, the use of this
.BR ioctl (2)
operation is also necessary in other situations,
as explained in the following paragraphs.
-.PP
+.P
Consider the following scenario, where the supervisor
tries to read the pathname argument of a target's blocked
.BR mount (2)
@@ -1031,7 +1031,7 @@ contain the pathname.
The supervisor now calls
.BR mount (2)
with some arbitrary bytes obtained in the previous step.
-.PP
+.P
The conclusion from the above scenario is this:
since the target's blocked system call may be interrupted by a signal handler,
the supervisor must be written to expect that the
@@ -1040,7 +1040,7 @@ target may abandon its system call at
time;
in such an event, any information that the supervisor obtained from
the target's memory must be considered invalid.
-.PP
+.P
To prevent such scenarios,
every read from the target's memory must be separated from use of
the bytes so obtained by a
@@ -1048,7 +1048,7 @@ the bytes so obtained by a
check.
In the above example, the check would be placed between the two final steps.
An example of such a check is shown in EXAMPLES.
-.PP
+.P
Following on from the above, it should be clear that
a write by the supervisor into the target's memory can
.B never
@@ -1059,7 +1059,7 @@ Suppose that the target performs a blocking system call (e.g.,
.BR accept (2))
that the supervisor should handle.
The supervisor might then in turn execute the same blocking system call.
-.PP
+.P
In this scenario,
it is important to note that if the target's system call is now
interrupted by a signal, the supervisor is
@@ -1077,7 +1077,7 @@ holding a port number that the target
perhaps closed its listening socket) might expect to be able to reuse in a
.BR bind (2)
call.
-.PP
+.P
Therefore, when the supervisor wishes to emulate a blocking system call,
it must do so in such a way that it gets informed if the target's
system call is interrupted by a signal handler.
@@ -1095,7 +1095,7 @@ to monitor both the notification file descriptor
.BR accept (2)
call has been interrupted) and the listening file descriptor
(so as to know when a connection is available).
-.PP
+.P
If the target's system call is interrupted,
the supervisor must take care to release resources (e.g., file descriptors)
that it acquired on behalf of the target.
@@ -1121,14 +1121,14 @@ When (if) the supervisor attempts to send a notification response, the
operation will fail with the
.B ENOENT
error.
-.PP
+.P
In this scenario, the kernel will restart the target's system call.
Consequently, the supervisor will receive another user-space notification.
Thus, depending on how many times the blocked system call
is interrupted by a signal handler,
the supervisor may receive multiple notifications for
the same instance of a system call in the target.
-.PP
+.P
One oddity is that system call restarting as described in this scenario
will occur even for the blocking system calls listed in
.BR signal (7)
@@ -1156,7 +1156,7 @@ flag.
.\" calls because it's impossible for the kernel to restart the call
.\" with the right timeout value. I wonder what happens when those
.\" system calls are restarted in the scenario we're discussing.)
-.PP
+.P
Furthermore, if the supervisor response is a file descriptor
added with
.BR SECCOMP_IOCTL_NOTIF_ADDFD ,
@@ -1195,7 +1195,7 @@ The child process then calls
once for each of the supplied command-line arguments,
and reports the result returned by the call.
After processing all arguments, the child process terminates.
-.PP
+.P
The parent process acts as the supervisor, listening for the notifications
that are generated when the target process calls
.BR mkdir (2).
@@ -1232,14 +1232,14 @@ call appears to fail with the error
("Operation not supported").
Additionally, if the specified pathname is exactly "/bye",
then the supervisor terminates.
-.PP
+.P
This program can be used to demonstrate various aspects of the
behavior of the seccomp user-space notification mechanism.
To help aid such demonstrations,
the program logs various messages to show the operation
of the target process (lines prefixed "T:") and the supervisor
(indented lines prefixed "S:").
-.PP
+.P
In the following example, the target attempts to create the directory
.IR /tmp/x .
Upon receiving the notification, the supervisor creates the directory on the
@@ -1247,7 +1247,7 @@ target's behalf,
and spoofs a success return to be received by the target process's
.BR mkdir (2)
call.
-.PP
+.P
.in +4n
.EX
$ \fB./seccomp_unotify /tmp/x\fP
@@ -1264,14 +1264,14 @@ T: terminating
S: target has terminated; bye
.EE
.in
-.PP
+.P
In the above output, note that the spoofed return value seen by the target
process is 6 (the length of the pathname
.IR /tmp/x ),
whereas a normal
.BR mkdir (2)
call returns 0 on success.
-.PP
+.P
In the next example, the target attempts to create a directory using the
relative pathname
.IR ./sub .
@@ -1282,7 +1282,7 @@ response to the kernel,
and the kernel then (successfully) executes the target process's
.BR mkdir (2)
call.
-.PP
+.P
.in +4n
.EX
$ \fB./seccomp_unotify ./sub\fP
@@ -1298,7 +1298,7 @@ T: terminating
S: target has terminated; bye
.EE
.in
-.PP
+.P
If the target process attempts to create a directory with
a pathname that doesn't start with "." and doesn't begin with the prefix
"/tmp/", then the supervisor spoofs an error return
@@ -1307,7 +1307,7 @@ a pathname that doesn't start with "." and doesn't begin with the prefix
for the target's
.BR mkdir (2)
call (which is not executed):
-.PP
+.P
.in +4n
.EX
$ \fB./seccomp_unotify /xxx\fP
@@ -1323,7 +1323,7 @@ T: terminating
S: target has terminated; bye
.EE
.in
-.PP
+.P
In the next example,
the target process attempts to create a directory with the pathname
.BR /tmp/nosuchdir/b .
@@ -1337,7 +1337,7 @@ Consequently, the supervisor spoofs an error return that passes the error
that it received back to the target process's
.BR mkdir (2)
call.
-.PP
+.P
.in +4n
.EX
$ \fB./seccomp_unotify /tmp/nosuchdir/b\fP
@@ -1354,7 +1354,7 @@ T: terminating
S: target has terminated; bye
.EE
.in
-.PP
+.P
If the supervisor receives a notification and sees that the
argument of the target's
.BR mkdir (2)
@@ -1370,7 +1370,7 @@ fail with the error
.B ENOSYS
("Function not implemented").
This is demonstrated by the following example:
-.PP
+.P
.in +4n
.EX
$ \fB./seccomp_unotify /bye /tmp/y\fP
@@ -2006,6 +2006,6 @@ main(int argc, char *argv[])
.BR pidfd_getfd (2),
.BR pidfd_open (2),
.BR seccomp (2)
-.PP
+.P
A further example program can be found in the kernel source file
.IR samples/seccomp/user-trap.c .
diff --git a/man2/select.2 b/man2/select.2
index 41cb7e6..e544918 100644
--- a/man2/select.2
+++ b/man2/select.2
@@ -17,7 +17,7 @@
.\" 2005-03-11, mtk, modified pselect() text (it is now a system
.\" call in Linux 2.6.16.
.\"
-.TH select 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH select 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO, fd_set \-
synchronous I/O multiplexing
@@ -27,31 +27,31 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/select.h>
-.PP
+.P
.BR typedef " /* ... */ " fd_set;
-.PP
+.P
.BI "int select(int " nfds ", fd_set *_Nullable restrict " readfds ,
.BI " fd_set *_Nullable restrict " writefds ,
.BI " fd_set *_Nullable restrict " exceptfds ,
.BI " struct timeval *_Nullable restrict " timeout );
-.PP
+.P
.BI "void FD_CLR(int " fd ", fd_set *" set );
.BI "int FD_ISSET(int " fd ", fd_set *" set );
.BI "void FD_SET(int " fd ", fd_set *" set );
.BI "void FD_ZERO(fd_set *" set );
-.PP
+.P
.BI "int pselect(int " nfds ", fd_set *_Nullable restrict " readfds ,
.BI " fd_set *_Nullable restrict " writefds ,
.BI " fd_set *_Nullable restrict " exceptfds ,
.BI " const struct timespec *_Nullable restrict " timeout ,
.BI " const sigset_t *_Nullable restrict " sigmask );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR pselect ():
.nf
_POSIX_C_SOURCE >= 200112L
@@ -68,7 +68,7 @@ All modern applications should instead use
or
.BR epoll (7),
which do not suffer this limitation.
-.PP
+.P
.BR select ()
allows a program to monitor multiple file descriptors,
waiting until one or more of the file descriptors become "ready"
@@ -99,14 +99,14 @@ Each of the
.I fd_set
arguments may be specified as NULL if no file descriptors are
to be watched for the corresponding class of events.
-.PP
+.P
.BR "Note well" :
Upon return, each of the file descriptor sets is modified in place
to indicate which file descriptors are currently "ready".
Thus, if using
.BR select ()
within a loop, the sets \fImust be reinitialized\fP before each call.
-.PP
+.P
The contents of a file descriptor set can be manipulated
using the following macros:
.TP
@@ -237,7 +237,7 @@ The
.BR pselect ()
system call allows an application to safely wait until either
a file descriptor becomes ready or until a signal is caught.
-.PP
+.P
The operation of
.BR select ()
and
@@ -267,7 +267,7 @@ argument, and behaves as
.BR pselect ()
called with NULL
.IR sigmask .
-.PP
+.P
.I sigmask
is a pointer to a signal mask (see
.BR sigprocmask (2));
@@ -283,24 +283,24 @@ is NULL,
the signal mask is not modified during the
.BR pselect ()
call.)
-.PP
+.P
Other than the difference in the precision of the
.I timeout
argument, the following
.BR pselect ()
call:
-.PP
+.P
.in +4n
.EX
ready = pselect(nfds, &readfds, &writefds, &exceptfds,
timeout, &sigmask);
.EE
.in
-.PP
+.P
is equivalent to
.I atomically
executing the following calls:
-.PP
+.P
.in +4n
.EX
sigset_t origmask;
@@ -310,7 +310,7 @@ ready = select(nfds, &readfds, &writefds, &exceptfds, timeout);
pthread_sigmask(SIG_SETMASK, &origmask, NULL);
.EE
.in
-.PP
+.P
The reason that
.BR pselect ()
is needed is that if one wants to wait for either a signal
@@ -336,7 +336,7 @@ The
argument for
.BR select ()
is a structure of the following type:
-.PP
+.P
.in +4n
.EX
struct timeval {
@@ -345,13 +345,13 @@ struct timeval {
};
.EE
.in
-.PP
+.P
The corresponding argument for
.BR pselect ()
is a
.BR timespec (3)
structure.
-.PP
+.P
On Linux,
.BR select ()
modifies
@@ -370,7 +370,7 @@ Consider
to be undefined after
.BR select ()
returns.
-.\" .PP - it is rumored that:
+.\" .P - it is rumored that:
.\" On BSD, when a timeout occurs, the file descriptor bits are not changed.
.\" - it is certainly true that:
.\" Linux follows SUSv2 and sets the bit masks to zero upon a timeout.
@@ -386,7 +386,7 @@ descriptor sets (that is, the total number of bits that are set in
.IR exceptfds ).
The return value may be zero if the timeout expired before any
file descriptors became ready.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error;
@@ -464,7 +464,7 @@ The following header also provides the
.I fd_set
type:
.IR <sys/time.h> .
-.PP
+.P
An
.I fd_set
is a fixed size buffer.
@@ -481,7 +481,7 @@ in undefined behavior.
Moreover, POSIX requires
.I fd
to be a valid file descriptor.
-.PP
+.P
The operation of
.BR select ()
and
@@ -525,7 +525,7 @@ and the event notifications provided by
.BR poll (2)
and
.BR epoll (7):
-.PP
+.P
.in +4n
.EX
#define POLLIN_SET (EPOLLRDNORM | EPOLLRDBAND | EPOLLIN |
@@ -564,7 +564,7 @@ However, in the glibc implementation, the
.I fd_set
type is fixed in size.
See also BUGS.
-.PP
+.P
The
.BR pselect ()
interface described in this page is implemented by glibc.
@@ -572,7 +572,7 @@ The underlying Linux system call is named
.BR pselect6 ().
This system call has somewhat different behavior from the glibc
wrapper function.
-.PP
+.P
The Linux
.BR pselect6 ()
system call modifies its
@@ -587,13 +587,13 @@ function does not modify its
.I timeout
argument;
this is the behavior required by POSIX.1-2001.
-.PP
+.P
The final argument of the
.BR pselect6 ()
system call is not a
.I "sigset_t\ *"
pointer, but is instead a structure of the form:
-.PP
+.P
.in +4n
.EX
struct {
@@ -603,7 +603,7 @@ struct {
};
.EE
.in
-.PP
+.P
This allows the system call to obtain both
a pointer to the signal set and its size,
while allowing for the fact that most architectures
@@ -619,7 +619,7 @@ glibc 2.0 provided an incorrect version of
that did not take a
.I sigmask
argument.
-.PP
+.P
From glibc 2.1 to glibc 2.2.1,
one must define
.B _GNU_SOURCE
@@ -645,14 +645,14 @@ To monitor file descriptors greater than 1023, use
or
.BR epoll (7)
instead.
-.PP
+.P
The implementation of the
.I fd_set
arguments as value-result arguments is a design error that is avoided in
.BR poll (2)
and
.BR epoll (7).
-.PP
+.P
According to POSIX,
.BR select ()
should check all specified file descriptors in the three file descriptor sets,
@@ -664,7 +664,7 @@ that the process currently has open.
According to POSIX, any such file descriptor that is specified in one
of the sets should result in the error
.BR EBADF .
-.PP
+.P
Starting with glibc 2.1, glibc provided an emulation of
.BR pselect ()
that was implemented using
@@ -677,7 +677,7 @@ was designed to prevent.
Modern versions of glibc use the (race-free)
.BR pselect ()
system call on kernels where it is provided.
-.PP
+.P
On Linux,
.BR select ()
may report a socket file descriptor as "ready for reading", while
@@ -693,7 +693,7 @@ Thus it may be safer to use
.B O_NONBLOCK
on sockets that should not block.
.\" Maybe the kernel should have returned EIO in such a situation?
-.PP
+.P
On Linux,
.BR select ()
also modifies
@@ -760,6 +760,6 @@ main(void)
.BR timespec (3),
.BR epoll (7),
.BR time (7)
-.PP
+.P
For a tutorial with discussion and examples, see
.BR select_tut (2).
diff --git a/man2/select_tut.2 b/man2/select_tut.2
index e860de3..cbb6953 100644
--- a/man2/select_tut.2
+++ b/man2/select_tut.2
@@ -9,7 +9,7 @@
.\" various other changes
.\" 2008-01-26, mtk, substantial changes and rewrites
.\"
-.TH SELECT_TUT 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH SELECT_TUT 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
select, pselect \- synchronous I/O multiplexing
.SH LIBRARY
@@ -27,7 +27,7 @@ system calls are used to efficiently monitor multiple file descriptors,
to see if any of them is, or becomes, "ready";
that is, to see whether I/O becomes possible,
or an "exceptional condition" has occurred on any of the file descriptors.
-.PP
+.P
This page provides background and tutorial information
on the use of these system calls.
For details of the arguments and semantics of
@@ -54,7 +54,7 @@ This behavior is essential so that signals can be processed
in the main loop of the program, otherwise
.BR select ()
would block indefinitely.
-.PP
+.P
Now, somewhere
in the main loop will be a conditional to check the global flag.
So we must ask:
@@ -82,7 +82,7 @@ call would enable
.B SIGCHLD
by using an empty signal mask.
Our program would look like:
-.PP
+.P
.EX
static volatile sig_atomic_t got_SIGCHLD = 0;
\&
@@ -310,7 +310,7 @@ can be used to solve
many problems in a portable and efficient way that naive programmers try
to solve in a more complicated manner using
threads, forking, IPCs, signals, memory sharing, and so on.
-.PP
+.P
The
.BR poll (2)
system call has the same functionality as
@@ -319,7 +319,7 @@ and is somewhat more efficient when monitoring sparse
file descriptor sets.
It is nowadays widely available, but historically was less portable than
.BR select ().
-.PP
+.P
The Linux-specific
.BR epoll (7)
API provides an interface that is more efficient than
@@ -332,7 +332,7 @@ Here is an example that better demonstrates the true utility of
.BR select ().
The listing below is a TCP forwarding program that forwards
from one TCP port to another.
-.PP
+.P
.\" SRC BEGIN (select.c)
.EX
#include <arpa/inet.h>
@@ -604,7 +604,7 @@ main(int argc, char *argv[])
}
.EE
.\" SRC END
-.PP
+.P
The above program properly forwards most kinds of TCP connections
including OOB signal data transmitted by \fBtelnet\fP servers.
It handles the tricky problem of having data flow in both directions
@@ -617,7 +617,7 @@ Another idea is to set nonblocking I/O using
.BR fcntl (2).
This also has its problems because you end up using
inefficient timeouts.
-.PP
+.P
The program does not handle more than one simultaneous connection at a
time, although it could easily be extended to do this with a linked list
of buffers\[em]one for each connection.
diff --git a/man2/semctl.2 b/man2/semctl.2
index 6069169..c3724e4 100644
--- a/man2/semctl.2
+++ b/man2/semctl.2
@@ -20,7 +20,7 @@
.\" 2005-08-02, mtk: Added IPC_INFO, SEM_INFO, SEM_STAT descriptions.
.\" 2018-03-20, dbueso: Added SEM_STAT_ANY description.
.\"
-.TH semctl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH semctl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
semctl \- System V semaphore control operations
.SH LIBRARY
@@ -29,26 +29,26 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/sem.h>
-.PP
-.BI "int semctl(int " semid ", int " semnum ", int " cmd ", ...);"
+.P
+.BI "int semctl(int " semid ", int " semnum ", int " op ", ...);"
.fi
.SH DESCRIPTION
.BR semctl ()
performs the control operation specified by
-.I cmd
+.I op
on the System\ V semaphore set identified by
.IR semid ,
or on the
.IR semnum -th
semaphore of that set.
(The semaphores in a set are numbered starting at 0.)
-.PP
+.P
This function has three or four arguments, depending on
-.IR cmd .
+.IR op .
When there are four, the fourth has the type
.IR "union semun" .
The \fIcalling program\fP must define this union as follows:
-.PP
+.P
.in +4n
.EX
union semun {
@@ -60,11 +60,11 @@ union semun {
};
.EE
.in
-.PP
+.P
The
.I semid_ds
data structure is defined in \fI<sys/sem.h>\fP as follows:
-.PP
+.P
.in +4n
.EX
struct semid_ds {
@@ -76,7 +76,7 @@ struct semid_ds {
};
.EE
.in
-.PP
+.P
The fields of the
.I semid_ds
structure are as follows:
@@ -108,13 +108,13 @@ ranging from
.B 0
to
.IR sem_nsems\-1 .
-.PP
+.P
The
.I ipc_perm
structure is defined as follows
(the highlighted fields are settable using
.BR IPC_SET ):
-.PP
+.P
.in +4n
.EX
struct ipc_perm {
@@ -128,7 +128,7 @@ struct ipc_perm {
};
.EE
.in
-.PP
+.P
The least significant 9 bits of the
.I mode
field of the
@@ -144,12 +144,12 @@ l l.
0004 Read by others
0002 Write by others
.TE
-.PP
+.P
In effect, "write" means "alter" for a semaphore set.
Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.
-.PP
+.P
Valid values for
-.I cmd
+.I op
are:
.TP
.B IPC_STAT
@@ -380,7 +380,7 @@ The calling process must have alter permission on the semaphore set.
On success,
.BR semctl ()
returns a nonnegative value depending on
-.I cmd
+.I op
as follows:
.TP
.B GETNCNT
@@ -420,11 +420,11 @@ the identifier of the semaphore set whose index was given in
.B SEM_STAT_ANY
as for
.BR SEM_STAT .
-.PP
+.P
All other
-.I cmd
+.I op
values return 0 on success.
-.PP
+.P
On failure,
.BR semctl ()
returns \-1 and sets
@@ -434,7 +434,7 @@ to indicate the error.
.TP
.B EACCES
The argument
-.I cmd
+.I op
has one of the values
.BR GETALL ,
.BR GETPID ,
@@ -464,7 +464,7 @@ The semaphore set was removed.
.TP
.B EINVAL
Invalid value for
-.I cmd
+.I op
or
.IR semid .
Or: for a
@@ -475,7 +475,7 @@ referred to an array slot that is currently unused.
.TP
.B EPERM
The argument
-.I cmd
+.I op
has the value
.B IPC_SET
or
@@ -493,7 +493,7 @@ capability.
.TP
.B ERANGE
The argument
-.I cmd
+.I op
has the value
.B SETALL
or
@@ -525,7 +525,7 @@ and explicitly notes that this value is set by a successful
call, with the implication that no other interface affects the
.I sempid
value.
-.PP
+.P
While some implementations conform to the behavior specified in POSIX.1,
others do not.
(The fault here probably lies with POSIX.1 inasmuch as it likely failed
@@ -543,7 +543,7 @@ on process termination as a consequence of the use of the
.B SEM_UNDO
flag (see
.BR semop (2)).
-.PP
+.P
Linux also updates
.I sempid
for
@@ -563,7 +563,7 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4.
.\" SVr4 documents more error conditions EINVAL and EOVERFLOW.
-.PP
+.P
Various fields in a \fIstruct semid_ds\fP were typed as
.I short
under Linux 2.2
@@ -575,8 +575,8 @@ a recompilation under glibc-2.1.91 or later should suffice.
(The kernel distinguishes old and new calls by an
.B IPC_64
flag in
-.IR cmd .)
-.PP
+.IR op .)
+.P
In some earlier versions of glibc, the
.I semun
union was defined in \fI<sys/sem.h>\fP, but POSIX.1 requires
@@ -598,7 +598,7 @@ program to provide information on allocated resources.
In the future these may modified or moved to a
.I /proc
filesystem interface.
-.PP
+.P
The following system limit on semaphore sets affects a
.BR semctl ()
call:
@@ -607,7 +607,7 @@ call:
Maximum value for
.BR semval :
implementation dependent (32767).
-.PP
+.P
For greater portability, it is best to always call
.BR semctl ()
with four arguments.
diff --git a/man2/semget.2 b/man2/semget.2
index bd2b693..50813ba 100644
--- a/man2/semget.2
+++ b/man2/semget.2
@@ -14,7 +14,7 @@
.\" Rewrote BUGS note about semget()'s failure to initialize
.\" semaphore values
.\"
-.TH semget 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH semget 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
semget \- get a System V semaphore set identifier
.SH LIBRARY
@@ -24,7 +24,7 @@ Standard C library
.nf
.B #include <sys/sem.h>
.fi
-.PP
+.P
.BI "int semget(key_t " key ,
.BI "int " nsems ,
.BI "int " semflg );
@@ -42,7 +42,7 @@ is zero and
does not have the value
.BR IPC_PRIVATE ),
or to create a new set.
-.PP
+.P
A new set of
.I nsems
semaphores is created if
@@ -55,7 +55,7 @@ and
.B IPC_CREAT
is specified in
.IR semflg .
-.PP
+.P
If
.I semflg
specifies both
@@ -74,7 +74,7 @@ set to
.B O_CREAT | O_EXCL
for
.BR open (2).)
-.PP
+.P
Upon creation, the least significant 9 bits of the argument
.I semflg
define the permissions (for owner, group, and others)
@@ -87,7 +87,7 @@ argument of
(though the execute permissions are
not meaningful for semaphores, and write permissions mean permission
to alter semaphore values).
-.PP
+.P
When creating a new semaphore set,
.BR semget ()
initializes the set's associated data structure,
@@ -120,7 +120,7 @@ is set to 0.
.IP \[bu]
.I sem_ctime
is set to the current time.
-.PP
+.P
The argument
.I nsems
can be 0
@@ -131,7 +131,7 @@ Otherwise,
must be greater than 0
and less than or equal to the maximum number of semaphores per semaphore set
.RB ( SEMMSL ).
-.PP
+.P
If the semaphore set already exists, the permissions are
verified.
.\" and a check is made to see if it is marked for destruction.
@@ -225,7 +225,7 @@ it should explicitly initialize the semaphores to the desired values.
.\" In truth, every one of the many implementations that I've tested sets
.\" the values to zero, but I suppose there is/was some obscure
.\" implementation out there that does not.
-.PP
+.P
Initialization can be done using
.BR semctl (2)
.B SETVAL
@@ -310,12 +310,12 @@ and
flags for the call to
.BR semget ().
The usage of this program is demonstrated below.
-.PP
+.P
We first create two files that will be used to generate keys using
.BR ftok (3),
create two semaphore sets using those files, and then list the sets using
.BR ipcs (1):
-.PP
+.P
.in +4n
.EX
$ \fBtouch mykey mykey2\fP
@@ -331,7 +331,7 @@ key semid owner perms nsems
0x70041368 10 mtk 600 2
.EE
.in
-.PP
+.P
Next, we demonstrate that when
.BR semctl (2)
is given the same
@@ -339,20 +339,20 @@ is given the same
(as generated by the same arguments to
.BR ftok (3)),
it returns the ID of the already existing semaphore set:
-.PP
+.P
.in +4n
.EX
$ \fB./t_semget \-c mykey p 1\fP
ID = 9
.EE
.in
-.PP
+.P
Finally, we demonstrate the kind of collision that can occur when
.BR ftok (3)
is given different
.I pathname
arguments that have the same inode number:
-.PP
+.P
.in +4n
.EX
$ \fBln mykey link\fP
diff --git a/man2/semop.2 b/man2/semop.2
index ece7a0e..b04fe6a 100644
--- a/man2/semop.2
+++ b/man2/semop.2
@@ -12,7 +12,7 @@
.\" 2005-04-08, mtk, Noted kernel version numbers for semtimedop()
.\" 2007-07-09, mtk, Added an EXAMPLE code segment.
.\"
-.TH semop 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH semop 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
semop, semtimedop \- System V semaphore operations
.SH LIBRARY
@@ -21,17 +21,17 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/sem.h>
-.PP
+.P
.BI "int semop(int " semid ", struct sembuf *" sops ", size_t " nsops );
.BI "int semtimedop(int " semid ", struct sembuf *" sops ", size_t " nsops ,
.BI " const struct timespec *_Nullable " timeout );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR semtimedop ():
.nf
_GNU_SOURCE
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.SH DESCRIPTION
Each semaphore in a System\ V semaphore set
has the following associated values:
-.PP
+.P
.in +4n
.EX
unsigned short semval; /* semaphore value */
@@ -49,7 +49,7 @@ pid_t sempid; /* PID of process that last
modified the semaphore value */
.EE
.in
-.PP
+.P
.BR semop ()
performs operations on selected semaphores in the set indicated by
.IR semid .
@@ -62,7 +62,7 @@ specifies an operation to be performed on a single semaphore.
The elements of this structure are of type
.IR "struct sembuf" ,
containing the following members:
-.PP
+.P
.in +4n
.EX
unsigned short sem_num; /* semaphore number */
@@ -70,7 +70,7 @@ short sem_op; /* semaphore operation */
short sem_flg; /* operation flags */
.EE
.in
-.PP
+.P
Flags recognized in
.I sem_flg
are
@@ -80,7 +80,7 @@ and
If an operation specifies
.BR SEM_UNDO ,
it will be automatically undone when the process terminates.
-.PP
+.P
The set of operations contained in
.I sops
is performed in
@@ -95,14 +95,14 @@ performed immediately depends on the presence of the
flag in the individual
.I sem_flg
fields, as noted below.
-.PP
+.P
Each operation is performed on the
.IR sem_num \-th
semaphore of the semaphore set, where the first semaphore of the set
is numbered 0.
There are three types of operation, distinguished by the value of
.IR sem_op .
-.PP
+.P
If
.I sem_op
is a positive integer, the operation adds this value to
@@ -117,7 +117,7 @@ from the semaphore adjustment
value for this semaphore.
This operation can always proceed\[em]it never forces a thread to wait.
The calling process must have alter permission on the semaphore set.
-.PP
+.P
If
.I sem_op
is zero, the process must have read permission on the semaphore
@@ -165,7 +165,7 @@ fails, with
.I errno
set to
.BR EINTR .
-.PP
+.P
If
.I sem_op
is less than zero, the process must have alter permission on the
@@ -229,7 +229,7 @@ fails, with
.I errno
set to
.BR EINTR .
-.PP
+.P
On successful completion, the
.I sempid
value for each semaphore specified in the array pointed to by
@@ -270,7 +270,7 @@ then
.BR semtimedop ()
behaves exactly like
.BR semop ().
-.PP
+.P
Note that if
.BR semtimedop ()
is interrupted by a signal, causing the call to fail with the error
@@ -370,13 +370,13 @@ structures of a process aren't inherited by the child produced by
but they are inherited across an
.BR execve (2)
system call.
-.PP
+.P
.BR semop ()
is never automatically restarted after being interrupted by a signal handler,
regardless of the setting of the
.B SA_RESTART
flag when establishing a signal handler.
-.PP
+.P
A semaphore adjustment
.RI ( semadj )
value is a per-process, per-semaphore integer that is the negated sum
@@ -409,7 +409,7 @@ flag allows more than one process to share a
list; see
.BR clone (2)
for details.
-.PP
+.P
The \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, and \fIsemnct\fP values
for a semaphore can all be retrieved using appropriate
.BR semctl (2)
@@ -443,7 +443,7 @@ array.
Maximum allowable value for
.IR semval :
implementation dependent (32767).
-.PP
+.P
The implementation has no intrinsic limits for
the adjust on exit maximum value
.RB ( SEMAEM ),
@@ -471,7 +471,7 @@ is specified for a semaphore operation).
Linux adopts a third approach: decreasing the semaphore value
as far as possible (i.e., to zero) and allowing process
termination to proceed immediately.
-.PP
+.P
In Linux 2.6.x, x <= 10, there is a bug that in some circumstances
prevents a thread that is waiting for a semaphore value to become
zero from being woken up when the value does actually become zero.
@@ -485,7 +485,7 @@ The following code segment uses
.BR semop ()
to atomically wait for the value of semaphore 0 to become zero,
and then increment the semaphore value by one.
-.PP
+.P
.in +4n
.EX
struct sembuf sops[2];
@@ -507,7 +507,7 @@ if (semop(semid, sops, 2) == \-1) {
}
.EE
.in
-.PP
+.P
A further example of the use of
.BR semop ()
can be found in
diff --git a/man2/send.2 b/man2/send.2
index 16c58b5..79abcc7 100644
--- a/man2/send.2
+++ b/man2/send.2
@@ -9,7 +9,7 @@
.\" Modified Oct 2003 by aeb
.\" Modified 2004-07-01 by mtk
.\"
-.TH send 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH send 2 2024-02-18 "Linux man-pages 6.7"
.SH NAME
send, sendto, sendmsg \- send a message on a socket
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "ssize_t send(int " sockfd ", const void " buf [. len "], size_t " len \
", int " flags );
.BI "ssize_t sendto(int " sockfd ", const void " buf [. len "], size_t " len \
@@ -34,7 +34,7 @@ The system calls
and
.BR sendmsg ()
are used to transmit a message to another socket.
-.PP
+.P
The
.BR send ()
call may be used only when the socket is in a
@@ -53,25 +53,25 @@ argument,
is equivalent to
.BR write (2).
Also, the following call
-.PP
+.P
.in +4n
.EX
send(sockfd, buf, len, flags);
.EE
.in
-.PP
+.P
is equivalent to
-.PP
+.P
.in +4n
.EX
sendto(sockfd, buf, len, flags, NULL, 0);
.EE
.in
-.PP
+.P
The argument
.I sockfd
is the file descriptor of the sending socket.
-.PP
+.P
If
.BR sendto ()
is used on a connection-mode
@@ -99,7 +99,7 @@ the address of the target is given by
with
.I msg.msg_namelen
specifying its size.
-.PP
+.P
For
.BR send ()
and
@@ -115,16 +115,16 @@ the message is pointed to by the elements of the array
The
.BR sendmsg ()
call also allows sending ancillary data (also known as control information).
-.PP
+.P
If the message is too long to pass atomically through the
underlying protocol, the error
.B EMSGSIZE
is returned, and the message is not transmitted.
-.PP
+.P
No indication of failure to deliver is implicit in a
.BR send ().
Locally detected errors are indicated by a return value of \-1.
-.PP
+.P
When the message does not fit into the send buffer of the socket,
.BR send ()
normally blocks, unless the socket has been placed in nonblocking I/O
@@ -184,7 +184,7 @@ is a per-call option, whereas
is a setting on the open file description (see
.BR open (2)),
which will affect all threads in the calling process
-and as well as other processes that hold file descriptors
+as well as other processes that hold file descriptors
referring to the same open file description.
.TP
.BR MSG_EOR " (since Linux 2.2)"
@@ -273,7 +273,7 @@ The definition of the
structure employed by
.BR sendmsg ()
is as follows:
-.PP
+.P
.in +4n
.EX
struct msghdr {
@@ -287,7 +287,7 @@ struct msghdr {
};
.EE
.in
-.PP
+.P
The
.I msg_name
field is used on an unconnected socket to specify the target
@@ -297,14 +297,14 @@ It points to a buffer containing the address; the
field should be set to the size of the address.
For a connected socket, these fields should be specified as NULL and 0,
respectively.
-.PP
+.P
The
.I msg_iov
and
.I msg_iovlen
fields specify scatter-gather locations, as for
.BR writev (2).
-.PP
+.P
You may send control information (ancillary data) using the
.I msg_control
and
@@ -320,7 +320,7 @@ socket domains, see
.BR unix (7)
and
.BR ip (7).
-.PP
+.P
The
.I msg_flags
field is ignored.
@@ -458,13 +458,13 @@ but glibc currently types both as
.\" as (at least with GCC) is int.
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
.B MSG_CONFIRM
is a Linux extension.
.SH HISTORY
4.4BSD, SVr4, POSIX.1-2001.
(first appeared in 4.2BSD).
-.PP
+.P
POSIX.1-2001 describes only the
.B MSG_OOB
and
diff --git a/man2/sendfile.2 b/man2/sendfile.2
index d9c3451..e013fa6 100644
--- a/man2/sendfile.2
+++ b/man2/sendfile.2
@@ -11,7 +11,7 @@
.\"
.\" 2005-03-31 Martin Pool <mbp@sourcefrog.net> mmap() improvements
.\"
-.TH sendfile 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH sendfile 2 2023-12-21 "Linux man-pages 6.7"
.SH NAME
sendfile \- transfer data between file descriptors
.SH LIBRARY
@@ -20,7 +20,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/sendfile.h>
-.PP
+.P
.BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", \
off_t *_Nullable " offset ,
.BI " size_t" " count" );
@@ -48,12 +48,12 @@ is more efficient than the combination of
and
.BR write (2),
which would require transferring data to and from user space.
-.PP
+.P
.I in_fd
should be a file descriptor opened for reading and
.I out_fd
should be a descriptor opened for writing.
-.PP
+.P
If
.I offset
is not NULL, then it points
@@ -74,29 +74,38 @@ does not modify the file offset of
otherwise the file offset is adjusted to reflect
the number of bytes read from
.IR in_fd .
-.PP
+.P
If
.I offset
is NULL, then data will be read from
.I in_fd
starting at the file offset,
and the file offset will be updated by the call.
-.PP
+.P
.I count
is the number of bytes to copy between the file descriptors.
-.PP
+.P
The
.I in_fd
argument must correspond to a file which supports
.BR mmap (2)-like
operations
(i.e., it cannot be a socket).
-.PP
+Except since Linux 5.12
+.\" commit b964bf53e540262f2d12672b3cca10842c0172e7
+and if
+.I out_fd
+is a pipe, in which case
+.BR sendfile ()
+desugars to a
+.BR splice (2)
+and its restrictions apply.
+.P
Before Linux 2.6.33,
.I out_fd
must refer to a socket.
Since Linux 2.6.33 it can be any file.
-If it is a regular file, then
+If it's seekable, then
.BR sendfile ()
changes the file offset appropriately.
.SH RETURN VALUE
@@ -108,7 +117,7 @@ Note that a successful call to
may write fewer bytes than requested;
the caller should be prepared to retry the call if there were unsent bytes.
See also NOTES.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -169,13 +178,13 @@ None.
.SH HISTORY
Linux 2.2,
glibc 2.1.
-.PP
+.P
In Linux 2.4 and earlier,
.I out_fd
could also refer to a regular file;
this possibility went away in the Linux 2.6.x kernel series,
but was restored in Linux 2.6.33.
-.PP
+.P
The original Linux
.BR sendfile ()
system call was not designed to handle large file offsets.
@@ -193,7 +202,7 @@ will transfer at most 0x7ffff000 (2,147,479,552) bytes,
returning the number of bytes actually transferred.
.\" commit e28cc71572da38a5a12c1cfe4d7032017adccf69
(This is true on both 32-bit and 64-bit systems.)
-.PP
+.P
If you plan to use
.BR sendfile ()
for sending files to a TCP socket, but need
@@ -203,7 +212,7 @@ it useful to employ the
option, described in
.BR tcp (7),
to minimize the number of packets and to tune performance.
-.PP
+.P
Applications may wish to fall back to
.BR read (2)
and
@@ -214,7 +223,7 @@ fails with
.B EINVAL
or
.BR ENOSYS .
-.PP
+.P
If
.I out_fd
refers to a socket or pipe with zero-copy support, callers must ensure the
@@ -223,7 +232,7 @@ transferred portions of the file referred to by
remain unmodified until the reader on the other end of
.I out_fd
has consumed the transferred data.
-.PP
+.P
The Linux-specific
.BR splice (2)
call supports transferring data between arbitrary file descriptors
diff --git a/man2/sendmmsg.2 b/man2/sendmmsg.2
index 283c4a5..64a4da0 100644
--- a/man2/sendmmsg.2
+++ b/man2/sendmmsg.2
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sendmmsg 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH sendmmsg 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sendmmsg \- send multiple messages on a socket
.SH LIBRARY
@@ -15,7 +15,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sys/socket.h>
-.PP
+.P
.BI "int sendmmsg(int " sockfd ", struct mmsghdr *" msgvec \
", unsigned int " vlen ","
.BI " int " flags ");"
@@ -29,12 +29,12 @@ that allows the caller to transmit multiple messages on a socket
using a single system call.
(This has performance benefits for some applications.)
.\" See commit 228e548e602061b08ee8e8966f567c12aa079682
-.PP
+.P
The
.I sockfd
argument is the file descriptor of the socket
on which data is to be transmitted.
-.PP
+.P
The
.I msgvec
argument is a pointer to an array of
@@ -42,13 +42,13 @@ argument is a pointer to an array of
structures.
The size of this array is specified in
.IR vlen .
-.PP
+.P
The
.I mmsghdr
structure is defined in
.I <sys/socket.h>
as:
-.PP
+.P
.in +4n
.EX
struct mmsghdr {
@@ -57,7 +57,7 @@ struct mmsghdr {
};
.EE
.in
-.PP
+.P
The
.I msg_hdr
field is a
@@ -71,13 +71,13 @@ field is used to return the number of bytes sent from the message in
(i.e., the same as the return value from a single
.BR sendmsg (2)
call).
-.PP
+.P
The
.I flags
argument contains flags ORed together.
The flags are the same as for
.BR sendmsg (2).
-.PP
+.P
A blocking
.BR sendmmsg ()
call blocks until
@@ -87,7 +87,7 @@ A nonblocking call sends as many messages as possible
(up to the limit specified by
.IR vlen )
and returns immediately.
-.PP
+.P
On return from
.BR sendmmsg (),
the
@@ -109,7 +109,7 @@ if this is less than
the caller can retry with a further
.BR sendmmsg ()
call to send the remaining messages.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -163,7 +163,7 @@ and
.I three
in two distinct UDP datagrams using one system call.
The contents of the first datagram originates from a pair of buffers.
-.PP
+.P
.\" SRC BEGIN (sendmmsg.c)
.EX
#define _GNU_SOURCE
diff --git a/man2/set_mempolicy.2 b/man2/set_mempolicy.2
index a7f561d..58e3959 100644
--- a/man2/set_mempolicy.2
+++ b/man2/set_mempolicy.2
@@ -7,7 +7,7 @@
.\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
.\" more precise specification of behavior.
.\"
-.TH set_mempolicy 2 2023-07-16 "Linux man-pages 6.05.01"
+.TH set_mempolicy 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
set_mempolicy \- set default NUMA memory policy for a thread and its children
.SH LIBRARY
@@ -16,7 +16,7 @@ NUMA (Non-Uniform Memory Access) policy library
.SH SYNOPSIS
.nf
.B "#include <numaif.h>"
-.PP
+.P
.BI "long set_mempolicy(int " mode ", const unsigned long *" nodemask ,
.BI " unsigned long " maxnode );
.fi
@@ -30,12 +30,12 @@ to the values specified by the
and
.I maxnode
arguments.
-.PP
+.P
A NUMA machine has different
memory controllers with different distances to specific CPUs.
The memory policy defines from which node memory is allocated for
the thread.
-.PP
+.P
This system call defines the default policy for the thread.
The thread policy governs allocation of pages in the process's
address space outside of memory ranges
@@ -56,7 +56,7 @@ The policy is applied only when a new page is allocated
for the thread.
For anonymous memory this is when the page is first
touched by the thread.
-.PP
+.P
The
.I mode
argument must specify one of
@@ -73,7 +73,7 @@ require the caller to specify the node or nodes to which the mode applies,
via the
.I nodemask
argument.
-.PP
+.P
The
.I mode
argument may also include an optional
@@ -113,7 +113,7 @@ Linux will not remap the
when the process moves to a different cpuset context,
nor when the set of nodes allowed by the process's
current cpuset context changes.
-.PP
+.P
.I nodemask
points to a bit mask of node IDs that contains up to
.I maxnode
@@ -133,7 +133,7 @@ is zero,
the
.I nodemask
argument is ignored.
-.PP
+.P
Where a
.I nodemask
is required, it must contain at least one node that is on-line,
@@ -154,7 +154,7 @@ the memory policy reverts to
This effectively overrides the specified policy until the process's
cpuset context includes one or more of the nodes specified by
.IR nodemask .
-.PP
+.P
The
.I mode
argument must include one of the following values:
@@ -234,7 +234,7 @@ If the "local node" is not allowed by the process's current cpuset context,
the kernel will try to allocate memory from other nodes.
The kernel will allocate memory from the "local node" whenever
it becomes allowed by the process's current cpuset context.
-.PP
+.P
The thread memory policy is preserved across an
.BR execve (2),
and is inherited by child threads created using
@@ -311,7 +311,7 @@ Memory policy is not remembered if the page is swapped out.
When such a page is paged back in, it will use the policy of
the thread or memory range that is in effect at the time the
page is allocated.
-.PP
+.P
For information on library support, see
.BR numa (7).
.SH SEE ALSO
diff --git a/man2/set_thread_area.2 b/man2/set_thread_area.2
index b982112..389d65b 100644
--- a/man2/set_thread_area.2
+++ b/man2/set_thread_area.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH set_thread_area 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH set_thread_area 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
get_thread_area, set_thread_area \- manipulate thread-local storage information
.SH LIBRARY
@@ -14,25 +14,25 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.B #if defined __i386__ || defined __x86_64__
.BR "# include <asm/ldt.h>" " /* Definition of " "struct user_desc" " */"
-.PP
+.P
.BI "int syscall(SYS_get_thread_area, struct user_desc *" u_info );
.BI "int syscall(SYS_set_thread_area, struct user_desc *" u_info );
-.PP
+.P
.B #elif defined __m68k__
-.PP
+.P
.B "int syscall(SYS_get_thread_area);"
.BI "int syscall(SYS_set_thread_area, unsigned long " tp );
-.PP
-.B #elif defined __mips__
-.PP
+.P
+.B #elif defined __mips__ || defined __csky__
+.P
.BI "int syscall(SYS_set_thread_area, unsigned long " addr );
-.PP
+.P
.B #endif
.fi
-.PP
+.P
.IR Note :
glibc provides no wrappers for these system calls,
necessitating the use of
@@ -42,31 +42,31 @@ These calls provide architecture-specific support for a thread-local storage
implementation.
At the moment,
.BR set_thread_area ()
-is available on m68k, MIPS, and x86 (both 32-bit and 64-bit variants);
+is available on m68k, MIPS, C-SKY, and x86 (both 32-bit and 64-bit variants);
.BR get_thread_area ()
is available on m68k and x86.
-.PP
-On m68k and MIPS,
+.P
+On m68k, MIPS and C-SKY,
.BR set_thread_area ()
allows storing an arbitrary pointer (provided in the
.B tp
argument on m68k and in the
.B addr
-argument on MIPS)
+argument on MIPS and C-SKY)
in the kernel data structure associated with the calling thread;
this pointer can later be retrieved using
.BR get_thread_area ()
(see also NOTES
for information regarding obtaining the thread pointer on MIPS).
-.PP
+.P
On x86, Linux dedicates three global descriptor table (GDT) entries for
thread-local storage.
For more information about the GDT, see the
Intel Software Developer's Manual or the AMD Architecture Programming Manual.
-.PP
+.P
Both of these system calls take an argument that is a pointer
to a structure of the following type:
-.PP
+.P
.in +4n
.EX
struct user_desc {
@@ -85,16 +85,16 @@ struct user_desc {
};
.EE
.in
-.PP
+.P
.BR get_thread_area ()
reads the GDT entry indicated by
.I u_info\->entry_number
and fills in the rest of the fields in
.IR u_info .
-.PP
+.P
.BR set_thread_area ()
sets a TLS entry in the GDT.
-.PP
+.P
The TLS array entry set by
.BR set_thread_area ()
corresponds to the value of
@@ -105,7 +105,7 @@ If this value is in bounds,
writes the TLS descriptor pointed to by
.I u_info
into the thread's TLS array.
-.PP
+.P
When
.BR set_thread_area ()
is passed an
@@ -116,7 +116,7 @@ If
finds a free TLS entry, the value of
.I u_info\->entry_number
is set upon return to show which entry was changed.
-.PP
+.P
A
.I user_desc
is considered "empty" if
@@ -128,7 +128,7 @@ If an "empty" descriptor is passed to
.BR set_thread_area (),
the corresponding TLS entry will be cleared.
See BUGS for additional details.
-.PP
+.P
Since Linux 3.19,
.BR set_thread_area ()
cannot be used to write non-present segments, 16-bit segments, or code
@@ -138,8 +138,8 @@ On x86, these system calls
return 0 on success, and \-1 on failure, with
.I errno
set to indicate the error.
-.PP
-On MIPS and m68k,
+.P
+On C-SKY, MIPS and m68k,
.BR set_thread_area ()
always returns 0.
On m68k,
@@ -175,7 +175,7 @@ Linux 2.5.29.
Linux 2.5.32.
.SH NOTES
These system calls are generally intended for use only by threading libraries.
-.PP
+.P
.BR arch_prctl (2)
can interfere with
.BR set_thread_area ()
@@ -186,16 +186,16 @@ for more details.
This is not normally a problem, as
.BR arch_prctl (2)
is normally used only by 64-bit programs.
-.PP
+.P
On MIPS, the current value of the thread area pointer can be obtained
using the instruction:
-.PP
+.P
.in +4n
.EX
rdhwr dest, $29
.EE
.in
-.PP
+.P
This instruction traps and is handled by kernel.
.SH BUGS
On 64-bit kernels before Linux 3.19,
@@ -219,7 +219,7 @@ consisting entirely of zeros except for
.I entry_number
will also be interpreted as a request to clear a TLS entry, but this
behaved differently on older kernels.
-.PP
+.P
Prior to Linux 3.19, the DS and ES segment registers must not reference
TLS entries.
.SH SEE ALSO
diff --git a/man2/set_tid_address.2 b/man2/set_tid_address.2
index 180b909..d174105 100644
--- a/man2/set_tid_address.2
+++ b/man2/set_tid_address.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH set_tid_address 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH set_tid_address 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
set_tid_address \- set pointer to thread ID
.SH LIBRARY
@@ -12,10 +12,10 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "pid_t syscall(SYS_set_tid_address, int *" tidptr );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR set_tid_address (),
@@ -54,14 +54,14 @@ flag,
is set to the value passed in the
.I ctid
argument of that system call.
-.PP
+.P
The system call
.BR set_tid_address ()
sets the
.I clear_child_tid
value for the calling thread to
.IR tidptr .
-.PP
+.P
When a thread whose
.I clear_child_tid
is not NULL terminates, then,
@@ -69,13 +69,13 @@ if the thread is sharing memory with other threads,
then 0 is written at the address specified in
.I clear_child_tid
and the kernel performs the following operation:
-.PP
+.P
.in +4n
.EX
futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);
.EE
.in
-.PP
+.P
The effect of this operation is to wake a single thread that
is performing a futex wait on the memory location.
Errors from the futex wake operation are ignored.
@@ -89,7 +89,7 @@ always succeeds.
Linux.
.SH HISTORY
Linux 2.5.48.
-.PP
+.P
Details as given here are valid since Linux 2.5.49.
.SH SEE ALSO
.BR clone (2),
diff --git a/man2/seteuid.2 b/man2/seteuid.2
index 0c47f6a..c1cae7c 100644
--- a/man2/seteuid.2
+++ b/man2/seteuid.2
@@ -6,7 +6,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH seteuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH seteuid 2 2024-02-11 "Linux man-pages 6.7"
.SH NAME
seteuid, setegid \- set effective user or group ID
.SH LIBRARY
@@ -15,16 +15,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int seteuid(uid_t " euid );
.BI "int setegid(gid_t " egid );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR seteuid (),
.BR setegid ():
.nf
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
sets the effective user ID of the calling process.
Unprivileged processes may only set the effective user ID to the
real user ID, the effective user ID or the saved set-user-ID.
-.PP
+.P
Precisely the same holds for
.BR setegid ()
with "group" instead of "user".
@@ -50,7 +50,7 @@ On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
.IR Note :
there are cases where
.BR seteuid ()
@@ -86,7 +86,7 @@ saved set-user-ID (saved set-group-ID) is
possible since Linux 1.1.37 (1.1.38).
On an arbitrary system one should check
.BR _POSIX_SAVED_IDS .
-.PP
+.P
Under glibc 2.0,
.BI seteuid( euid )
is equivalent to
@@ -102,7 +102,7 @@ with the difference that the change in implementation from
to
.BI setresgid(\-1, " egid" ", \-1)"
occurred in glibc 2.2 or 2.3 (depending on the hardware architecture).
-.PP
+.P
According to POSIX.1,
.BR seteuid ()
.RB ( setegid ())
@@ -117,9 +117,9 @@ On Linux,
and
.BR setegid ()
are implemented as library functions that call, respectively,
-.BR setreuid (2)
+.BR setresuid (2)
and
-.BR setregid (2).
+.BR setresgid (2).
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
diff --git a/man2/setfsgid.2 b/man2/setfsgid.2
index 43b5507..8cb8403 100644
--- a/man2/setfsgid.2
+++ b/man2/setfsgid.2
@@ -9,7 +9,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH setfsgid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setfsgid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setfsgid \- set group identity used for filesystem checks
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/fsuid.h>
-.PP
+.P
.BI "[[deprecated]] int setfsgid(gid_t " fsgid );
.fi
.SH DESCRIPTION
@@ -28,7 +28,7 @@ for permissions checking when accessing filesystem objects,
while the effective group ID is used for some other kinds
of permissions checks (see
.BR credentials (7)).
-.PP
+.P
Normally, the value of the process's filesystem group ID
is the same as the value of its effective group ID.
This is so, because whenever a process's effective group ID is changed,
@@ -39,7 +39,7 @@ from its effective group ID by using
.BR setfsgid ()
to change its filesystem group ID to the value given in
.IR fsgid .
-.PP
+.P
.BR setfsgid ()
will succeed only if the caller is the superuser or if
.I fsgid
@@ -75,7 +75,7 @@ for a discussion of why the use of both
and
.BR setfsgid ()
is nowadays unneeded.
-.PP
+.P
The original Linux
.BR setfsgid ()
system call supported only 16-bit group IDs.
diff --git a/man2/setfsuid.2 b/man2/setfsuid.2
index 56964b0..cd55bc3 100644
--- a/man2/setfsuid.2
+++ b/man2/setfsuid.2
@@ -9,7 +9,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH setfsuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setfsuid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setfsuid \- set user identity used for filesystem checks
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/fsuid.h>
-.PP
+.P
.BI "[[deprecated]] int setfsuid(uid_t " fsuid );
.fi
.SH DESCRIPTION
@@ -28,7 +28,7 @@ for permissions checking when accessing filesystem objects,
while the effective user ID is used for various other kinds
of permissions checks (see
.BR credentials (7)).
-.PP
+.P
Normally, the value of the process's filesystem user ID
is the same as the value of its effective user ID.
This is so, because whenever a process's effective user ID is changed,
@@ -39,7 +39,7 @@ from its effective user ID by using
.BR setfsuid ()
to change its filesystem user ID to the value given in
.IR fsuid .
-.PP
+.P
Explicit calls to
.BR setfsuid ()
and
@@ -50,7 +50,7 @@ corresponding change in the real and effective user and group IDs.
A change in the normal user IDs for a program such as the NFS server
is (was) a security hole that can expose it to unwanted signals.
(However, this issue is historical; see below.)
-.PP
+.P
.BR setfsuid ()
will succeed only if the caller is the superuser or if
.I fsuid
@@ -65,7 +65,7 @@ Linux.
Linux 1.2.
.\" Linux 1.1.44
.\" and in libc since libc 4.7.6.
-.PP
+.P
At the time when this system call was introduced, one process
could send a signal to another process with the same effective user ID.
This meant that if a privileged process changed its effective user ID
@@ -84,7 +84,7 @@ Thus,
is nowadays unneeded and should be avoided in new applications
(likewise for
.BR setfsgid (2)).
-.PP
+.P
The original Linux
.BR setfsuid ()
system call supported only 16-bit user IDs.
diff --git a/man2/setgid.2 b/man2/setgid.2
index f618887..cb65798 100644
--- a/man2/setgid.2
+++ b/man2/setgid.2
@@ -7,7 +7,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2002-03-09 by aeb
.\"
-.TH setgid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setgid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setgid \- set group identity
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int setgid(gid_t " gid );
.fi
.SH DESCRIPTION
@@ -26,7 +26,7 @@ If the calling process is privileged (more precisely: has the
.B CAP_SETGID
capability in its user namespace),
the real GID and saved set-group-ID are also set.
-.PP
+.P
Under Linux,
.BR setgid ()
is implemented like the POSIX version with the
@@ -73,7 +73,7 @@ For details, see
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4.
-.PP
+.P
The original Linux
.BR setgid ()
system call supported only 16-bit group IDs.
diff --git a/man2/setns.2 b/man2/setns.2
index 13565de..5bd3385 100644
--- a/man2/setns.2
+++ b/man2/setns.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
.\"
-.TH setns 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH setns 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setns \- reassociate thread with a namespace
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <sched.h>
-.PP
+.P
.BI "int setns(int " fd ", int " nstype );
.fi
.SH DESCRIPTION
@@ -30,7 +30,7 @@ directory (or a bind mount to such a link);
.IP \[bu]
a PID file descriptor (see
.BR pidfd_open (2)).
-.PP
+.P
The
.I nstype
argument is interpreted differently in each case.
@@ -49,7 +49,7 @@ argument.
In this usage, each call to
.BR setns ()
changes just one of the caller's namespace memberships.
-.PP
+.P
The
.I nstype
argument specifies which type of namespace
@@ -93,7 +93,7 @@ must refer to a user namespace.
.BR CLONE_NEWUTS " (since Linux 3.0)"
.I fd
must refer to a UTS namespace.
-.PP
+.P
Specifying
.I nstype
as 0 suffices if the caller knows (or does not care)
@@ -121,7 +121,7 @@ In this usage,
atomically moves the calling thread into one or more of the same namespaces
as the thread referred to by
.IR fd .
-.PP
+.P
The
.I nstype
argument is a bit mask specified by ORing together
@@ -133,11 +133,11 @@ The caller is moved into each of the target thread's namespaces
that is specified in
.IR nstype ;
the caller's memberships in the remaining namespaces are left unchanged.
-.PP
+.P
For example, the following code would move the caller into the
same user, network, and UTS namespaces as PID 1234,
but would leave the caller's other namespace memberships unchanged:
-.PP
+.P
.in +4n
.EX
int fd = pidfd_open(1234, 0);
@@ -312,7 +312,7 @@ For further information on the
.IR /proc/ pid /ns/
magic links, see
.BR namespaces (7).
-.PP
+.P
Not all of the attributes that can be shared when
a new thread is created using
.BR clone (2)
@@ -327,7 +327,7 @@ The remaining arguments specify a command and its arguments.
The program opens the namespace file, joins that namespace using
.BR setns (),
and executes the specified command inside that namespace.
-.PP
+.P
The following shell session demonstrates the use of this program
(compiled as a binary named
.IR ns_exec )
@@ -337,7 +337,7 @@ example program in the
.BR clone (2)
man page (complied as a binary named
.IR newuts ).
-.PP
+.P
We begin by executing the example program in
.BR clone (2)
in the background.
@@ -345,7 +345,7 @@ That program creates a child in a separate UTS namespace.
The child changes the hostname in its namespace,
and then both processes display the hostnames in their UTS namespaces,
so that we can see that they are different.
-.PP
+.P
.in +4n
.EX
$ \fBsu\fP # Need privilege for namespace operations
@@ -359,12 +359,12 @@ uts.nodename in parent: antero
antero
.EE
.in
-.PP
+.P
We then run the program shown below,
using it to execute a shell.
Inside that shell, we verify that the hostname is the one
set by the child created by the first program:
-.PP
+.P
.in +4n
.EX
# \fB./ns_exec /proc/3550/ns/uts /bin/bash\fP
diff --git a/man2/setpgid.2 b/man2/setpgid.2
index 2d8bc96..b3983c4 100644
--- a/man2/setpgid.2
+++ b/man2/setpgid.2
@@ -17,7 +17,7 @@
.\" 2007-07-25, mtk, fairly substantial rewrites and rearrangements
.\" of text.
.\"
-.TH setpgid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setpgid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setpgid, getpgid, setpgrp, getpgrp \- set/get process group
.SH LIBRARY
@@ -26,29 +26,29 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int setpgid(pid_t " pid ", pid_t " pgid );
.BI "pid_t getpgid(pid_t " pid );
-.PP
+.P
.BR "pid_t getpgrp(void);" " /* POSIX.1 version */"
.BI "[[deprecated]] pid_t getpgrp(pid_t " pid ");\fR /* BSD version */"
-.PP
+.P
.BR "int setpgrp(void);" " /* System V version */"
.BI "[[deprecated]] int setpgrp(pid_t " pid ", pid_t " pgid ");\fR /* BSD version */"
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR getpgid ():
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
.fi
-.PP
+.P
.BR setpgrp "() (POSIX.1):"
.nf
_XOPEN_SOURCE >= 500
@@ -56,7 +56,7 @@ Feature Test Macro Requirements for glibc (see
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE
.fi
-.PP
+.P
.BR setpgrp "() (BSD),"
.BR getpgrp "() (BSD):"
.nf
@@ -74,7 +74,7 @@ The preferred, POSIX.1-specified ways of doing this are:
for retrieving the calling process's PGID; and
.BR setpgid (),
for setting a process's PGID.
-.PP
+.P
.BR setpgid ()
sets the PGID of the process specified by
.I pid
@@ -99,12 +99,12 @@ and
In this case,
the \fIpgid\fP specifies an existing process group to be joined and the
session ID of that group must match the session ID of the joining process.
-.PP
+.P
The POSIX.1 version of
.BR getpgrp (),
which takes no arguments,
returns the PGID of the calling process.
-.PP
+.P
.BR getpgid ()
returns the PGID of the process specified by
.IR pid .
@@ -115,12 +115,12 @@ is zero, the process ID of the calling process is used.
necessary, and the POSIX.1
.BR getpgrp ()
is preferred for that task.)
-.PP
+.P
The System\ V-style
.BR setpgrp (),
which takes no arguments, is equivalent to
.IR "setpgid(0,\ 0)" .
-.PP
+.P
The BSD-specific
.BR setpgrp ()
call, which takes arguments
@@ -128,13 +128,13 @@ call, which takes arguments
and
.IR pgid ,
is a wrapper function that calls
-.PP
+.P
.in +4n
.EX
setpgid(pid, pgid)
.EE
.in
-.PP
+.P
.\" The true BSD setpgrp() system call differs in allowing the PGID
.\" to be set to arbitrary values, rather than being restricted to
.\" PGIDs in the same session.
@@ -145,19 +145,19 @@ function is no longer exposed by
calls should be replaced with the
.BR setpgid ()
call shown above.
-.PP
+.P
The BSD-specific
.BR getpgrp ()
call, which takes a single
.I pid
argument, is a wrapper function that calls
-.PP
+.P
.in +4n
.EX
getpgid(pid)
.EE
.in
-.PP
+.P
Since glibc 2.19, the BSD-specific
.BR getpgrp ()
function is no longer exposed by
@@ -177,11 +177,11 @@ return zero.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
The POSIX.1
.BR getpgrp ()
always returns the PGID of the caller.
-.PP
+.P
.BR getpgid (),
and the BSD-specific
.BR getpgrp ()
@@ -266,12 +266,12 @@ A child created via
inherits its parent's process group ID.
The PGID is preserved across an
.BR execve (2).
-.PP
+.P
Each process group is a member of a session and each process is a
member of the session of which its process group is a member.
(See
.BR credentials (7).)
-.PP
+.P
A session can have a controlling terminal.
At any time, one (and only one) of the process groups
in the session can be the foreground process group
@@ -298,7 +298,7 @@ and
.BR tcsetpgrp (3)
functions are used to get/set the foreground
process group of the controlling terminal.
-.PP
+.P
The
.BR setpgid ()
and
@@ -306,7 +306,7 @@ and
calls are used by programs such as
.BR bash (1)
to create process groups in order to implement shell job control.
-.PP
+.P
If the termination of a process causes a process group to become orphaned,
and if any member of the newly orphaned process group is stopped, then a
.B SIGHUP
diff --git a/man2/setresuid.2 b/man2/setresuid.2
index 97f0af9..9c6499b 100644
--- a/man2/setresuid.2
+++ b/man2/setresuid.2
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
-.TH setresuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setresuid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setresuid, setresgid \- set real, effective, and saved user or group ID
.SH LIBRARY
@@ -14,7 +14,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <unistd.h>
-.PP
+.P
.BI "int setresuid(uid_t " ruid ", uid_t " euid ", uid_t " suid );
.BI "int setresgid(gid_t " rgid ", gid_t " egid ", gid_t " sgid );
.fi
@@ -22,22 +22,22 @@ Standard C library
.BR setresuid ()
sets the real user ID, the effective user ID, and the
saved set-user-ID of the calling process.
-.PP
+.P
An unprivileged process may change its real UID,
effective UID, and saved set-user-ID, each to one of:
the current real UID, the current effective UID, or the
current saved set-user-ID.
-.PP
+.P
A privileged process (on Linux, one having the \fBCAP_SETUID\fP capability)
may set its real UID, effective UID, and
saved set-user-ID to arbitrary values.
-.PP
+.P
If one of the arguments equals \-1, the corresponding value is not changed.
-.PP
+.P
Regardless of what changes are made to the real UID, effective UID,
and saved set-user-ID, the filesystem UID is always set to the same
value as the (possibly new) effective UID.
-.PP
+.P
Completely analogously,
.BR setresgid ()
sets the real GID, effective GID, and saved set-group-ID
@@ -49,7 +49,7 @@ On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
.IR Note :
there are cases where
.BR setresuid ()
@@ -119,7 +119,7 @@ None.
Linux 2.1.44,
glibc 2.3.2.
HP-UX, FreeBSD.
-.PP
+.P
The original Linux
.BR setresuid ()
and
diff --git a/man2/setreuid.2 b/man2/setreuid.2
index 121deb4..e887619 100644
--- a/man2/setreuid.2
+++ b/man2/setreuid.2
@@ -15,7 +15,7 @@
.\" 2004-07-04 by aeb
.\" 2004-05-27 by Michael Kerrisk
.\"
-.TH setreuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setreuid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setreuid, setregid \- set real and/or effective user or group ID
.SH LIBRARY
@@ -24,16 +24,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int setreuid(uid_t " ruid ", uid_t " euid );
.BI "int setregid(gid_t " rgid ", gid_t " egid );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR setreuid (),
.BR setregid ():
.nf
@@ -45,22 +45,22 @@ Feature Test Macro Requirements for glibc (see
.SH DESCRIPTION
.BR setreuid ()
sets real and effective user IDs of the calling process.
-.PP
+.P
Supplying a value of \-1 for either the real or effective user ID forces
the system to leave that ID unchanged.
-.PP
+.P
Unprivileged processes may only set the effective user ID to the real user ID,
the effective user ID, or the saved set-user-ID.
-.PP
+.P
Unprivileged users may only set the real user ID to
the real user ID or the effective user ID.
-.PP
+.P
If the real user ID is set (i.e.,
.I ruid
is not \-1) or the effective user ID is set to a value
not equal to the previous real user ID,
the saved set-user-ID will be set to the new effective user ID.
-.PP
+.P
Completely analogously,
.BR setregid ()
sets real and effective group ID's of the calling process,
@@ -70,7 +70,7 @@ On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
.IR Note :
there are cases where
.BR setreuid ()
@@ -137,18 +137,18 @@ and the effective group ID can be changed to the value of
the real group ID or the saved set-group-ID.
The precise details of what ID changes are permitted vary
across implementations.
-.PP
+.P
POSIX.1 makes no specification about the effect of these calls
on the saved set-user-ID and saved set-group-ID.
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, 4.3BSD (first appeared in 4.2BSD).
-.PP
+.P
Setting the effective user (group) ID to the
saved set-user-ID (saved set-group-ID) is
possible since Linux 1.1.37 (1.1.38).
-.PP
+.P
The original Linux
.BR setreuid ()
and
diff --git a/man2/setsid.2 b/man2/setsid.2
index ae04028..a437a1b 100644
--- a/man2/setsid.2
+++ b/man2/setsid.2
@@ -9,7 +9,7 @@
.\" tiny changes from a man page by Charles Livingston).
.\" Modified Sun Jul 21 14:45:46 1996 <aeb@cwi.nl>
.\"
-.TH setsid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setsid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setsid \- creates a session and sets the process group ID
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B pid_t setsid(void);
.fi
.SH DESCRIPTION
@@ -30,10 +30,10 @@ The calling process is the leader of the new session
The calling process also becomes
the process group leader of a new process group in the session
(i.e., its process group ID is made the same as its process ID).
-.PP
+.P
The calling process will be the only process in
the new process group and in the new session.
-.PP
+.P
Initially, the new session has no controlling terminal.
For details of how a session acquires a controlling terminal, see
.BR credentials (7).
@@ -61,7 +61,7 @@ A child created via
inherits its parent's session ID.
The session ID is preserved across an
.BR execve (2).
-.PP
+.P
A process group leader is a process whose process group ID equals its PID.
Disallowing a process group leader from calling
.BR setsid ()
@@ -78,14 +78,14 @@ and have the parent
.BR _exit (2),
while the child (which by definition can't be a process group leader) calls
.BR setsid ().
-.PP
+.P
If a session has a controlling terminal, and the
.B CLOCAL
flag for that terminal is not set,
and a terminal hangup occurs, then the session leader is sent a
.B SIGHUP
signal.
-.PP
+.P
If a process that is a session leader terminates, then a
.B SIGHUP
signal is sent to each process in the foreground
diff --git a/man2/setuid.2 b/man2/setuid.2
index 80284d6..e9a283e 100644
--- a/man2/setuid.2
+++ b/man2/setuid.2
@@ -8,7 +8,7 @@
.\" <richard@greenend.org.uk>, aeb 970616.
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
-.TH setuid 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setuid 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setuid \- set user identity
.SH LIBRARY
@@ -17,7 +17,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int setuid(uid_t " uid );
.fi
.SH DESCRIPTION
@@ -28,7 +28,7 @@ If the calling process is privileged
.B CAP_SETUID
capability in its user namespace),
the real UID and saved set-user-ID are also set.
-.PP
+.P
Under Linux,
.BR setuid ()
is implemented like the POSIX version with the
@@ -37,7 +37,7 @@ feature.
This allows a set-user-ID (other than root) program to drop all of its user
privileges, do some un-privileged work, and then reengage the original
effective user ID in a secure manner.
-.PP
+.P
If the user is root or the program is set-user-ID-root, special care must be
taken:
.BR setuid ()
@@ -46,7 +46,7 @@ the superuser, all process-related user ID's are set to
.IR uid .
After this has occurred, it is impossible for the program to regain root
privileges.
-.PP
+.P
Thus, a set-user-ID-root program wishing to temporarily drop root
privileges, assume the identity of an unprivileged user, and then regain
root privileges afterward cannot use
@@ -58,7 +58,7 @@ On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
.IR Note :
there are cases where
.BR setuid ()
@@ -119,11 +119,11 @@ For details, see
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4.
-.PP
+.P
Not quite compatible with the 4.4BSD call, which
sets all of the real, saved, and effective user IDs.
.\" SVr4 documents an additional EINVAL error condition.
-.PP
+.P
The original Linux
.BR setuid ()
system call supported only 16-bit user IDs.
@@ -141,7 +141,7 @@ The
call also sets the filesystem user ID of the calling process.
See
.BR setfsuid (2).
-.PP
+.P
If
.I uid
is different from the old effective UID, the process will
diff --git a/man2/setup.2 b/man2/setup.2
index 61a6002..c2d0b52 100644
--- a/man2/setup.2
+++ b/man2/setup.2
@@ -11,7 +11,7 @@
.\" Modified Wed Nov 6 04:05:28 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Sat Jan 29 01:08:23 2000 by aeb
.\"
-.TH setup 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH setup 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setup \- setup devices and filesystems, mount root filesystem
.SH LIBRARY
@@ -20,7 +20,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B [[deprecated]] int setup(void);
.fi
.SH DESCRIPTION
@@ -29,7 +29,7 @@ is called once from within
.IR linux/init/main.c .
It calls initialization functions for devices and filesystems
configured into the kernel and then mounts the root filesystem.
-.PP
+.P
No user process may call
.BR setup ().
Any user process, even a process with superuser permission,
@@ -46,7 +46,7 @@ Always, for a user process.
Linux.
.SH VERSIONS
Removed in Linux 2.1.121.
-.PP
+.P
The calling sequence varied: at some times
.BR setup ()
has had a single argument
diff --git a/man2/setxattr.2 b/man2/setxattr.2
index cc2a6b0..636462e 100644
--- a/man2/setxattr.2
+++ b/man2/setxattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH setxattr 2 2023-07-28 "Linux man-pages 6.05.01"
+.TH setxattr 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
setxattr, lsetxattr, fsetxattr \- set an extended attribute value
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/xattr.h>
-.PP
+.P
.BI "int setxattr(const char *" path ", const char *" name ,
.BI " const void " value [. size "], size_t " size ", int " flags );
.BI "int lsetxattr(const char *" path ", const char *" name ,
@@ -30,7 +30,7 @@ with all inodes in the system (i.e., the
data).
A complete overview of extended attributes concepts can be found in
.BR xattr (7).
-.PP
+.P
.BR setxattr ()
sets the
.I value
@@ -44,13 +44,13 @@ The
argument specifies the size (in bytes) of
.IR value ;
a zero-length value is permitted.
-.PP
+.P
.BR lsetxattr ()
is identical to
.BR setxattr (),
except in the case of a symbolic link, where the extended attribute is
set on the link itself, not the file that it refers to.
-.PP
+.P
.BR fsetxattr ()
is identical to
.BR setxattr (),
@@ -60,7 +60,7 @@ only the extended attribute is set on the open file referred to by
.BR open (2))
in place of
.IR path .
-.PP
+.P
An extended attribute name is a null-terminated string.
The
.I name
@@ -70,7 +70,7 @@ The
.I value
of an extended attribute is a chunk of arbitrary textual or
binary data of specified length.
-.PP
+.P
By default
(i.e.,
.I flags
@@ -125,7 +125,7 @@ Extended attributes are not supported by the filesystem, or are disabled,
The file is marked immutable or append-only.
(See
.BR ioctl_iflags (2).)
-.PP
+.P
In addition, the errors documented in
.BR stat (2)
can also occur.
diff --git a/man2/sgetmask.2 b/man2/sgetmask.2
index d0c99a2..e1701c2 100644
--- a/man2/sgetmask.2
+++ b/man2/sgetmask.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sgetmask 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sgetmask 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sgetmask, ssetmask \- manipulation of signal mask (obsolete)
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.B [[deprecated]] long syscall(SYS_sgetmask, void);
.BI "[[deprecated]] long syscall(SYS_ssetmask, long " newmask );
.fi
@@ -22,15 +22,15 @@ These system calls are obsolete.
use
.BR sigprocmask (2)
instead.
-.PP
+.P
.BR sgetmask ()
returns the signal mask of the calling process.
-.PP
+.P
.BR ssetmask ()
sets the signal mask of the calling process to the value given in
.IR newmask .
The previous signal mask is returned.
-.PP
+.P
The signal masks dealt with by these two system calls
are plain bit masks (unlike the
.I sigset_t
@@ -58,9 +58,9 @@ option.
.SH NOTES
These system calls are unaware of signal numbers greater than 31
(i.e., real-time signals).
-.PP
+.P
These system calls do not exist on x86-64.
-.PP
+.P
It is not possible to block
.B SIGSTOP
or
diff --git a/man2/shmctl.2 b/man2/shmctl.2
index 4bfb2c5..5d5176a 100644
--- a/man2/shmctl.2
+++ b/man2/shmctl.2
@@ -24,7 +24,7 @@
.\" 2005-08-02, mtk: Added IPC_INFO, SHM_INFO, SHM_STAT descriptions.
.\" 2018-03-20, dbueso: Added SHM_STAT_ANY description.
.\"
-.TH shmctl 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH shmctl 2 2024-03-03 "Linux man-pages 6.7"
.SH NAME
shmctl \- System V shared memory control
.SH LIBRARY
@@ -33,21 +33,21 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/shm.h>
-.PP
-.BI "int shmctl(int " shmid ", int " cmd ", struct shmid_ds *" buf );
+.P
+.BI "int shmctl(int " shmid ", int " op ", struct shmid_ds *" buf );
.fi
.SH DESCRIPTION
.BR shmctl ()
performs the control operation specified by
-.I cmd
+.I op
on the System\ V shared memory segment whose identifier is given in
.IR shmid .
-.PP
+.P
The
.I buf
argument is a pointer to a \fIshmid_ds\fP structure,
defined in \fI<sys/shm.h>\fP as follows:
-.PP
+.P
.in +4n
.EX
struct shmid_ds {
@@ -64,7 +64,7 @@ struct shmid_ds {
};
.EE
.in
-.PP
+.P
The fields of the
.I shmid_ds
structure are as follows:
@@ -106,13 +106,13 @@ system call on this segment.
.TP
.I shm_nattch
Number of processes that have this segment attached.
-.PP
+.P
The
.I ipc_perm
structure is defined as follows
(the highlighted fields are settable using
.BR IPC_SET ):
-.PP
+.P
.in +4n
.EX
struct ipc_perm {
@@ -127,7 +127,7 @@ struct ipc_perm {
};
.EE
.in
-.PP
+.P
The least significant 9 bits of the
.I mode
field of the
@@ -143,7 +143,7 @@ l l.
0004 Read by others
0002 Write by others
.TE
-.PP
+.P
Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.
(It is not necessary to have execute permission on a segment
in order to perform a
@@ -151,9 +151,9 @@ in order to perform a
call with the
.B SHM_EXEC
flag.)
-.PP
+.P
Valid values for
-.I cmd
+.I op
are:
.TP
.B IPC_STAT
@@ -307,9 +307,11 @@ is not checked for read access for
meaning that any user can employ this operation (just as any user may read
.I /proc/sysvipc/shm
to obtain the same information).
-.PP
+.P
The caller can prevent or allow swapping of a shared
-memory segment with the following \fIcmd\fP values:
+memory segment with the following
+.I op
+values:
.TP
.BR SHM_LOCK " (Linux-specific)"
Prevent swapping of the shared memory segment.
@@ -325,7 +327,7 @@ will be set.
.TP
.BR SHM_UNLOCK " (Linux-specific)"
Unlock the segment, allowing it to be swapped out.
-.PP
+.P
Before Linux 2.6.10, only a privileged process
could employ
.B SHM_LOCK
@@ -363,7 +365,7 @@ operation returns the identifier of the shared memory segment
whose index was given in
.IR shmid .
Other operations return 0 on success.
-.PP
+.P
On error, \-1 is returned, and
.I errno
is set to indicate the error.
@@ -379,7 +381,7 @@ capability in the user namespace that governs its IPC namespace.
.TP
.B EFAULT
The argument
-.I cmd
+.I op
has value
.B IPC_SET
or
@@ -392,8 +394,10 @@ isn't accessible.
\fIshmid\fP points to a removed identifier.
.TP
.B EINVAL
-\fIshmid\fP is not a valid identifier, or \fIcmd\fP
-is not a valid command.
+.I shmid
+is not a valid identifier, or
+.I op
+is not a valid operation.
Or: for a
.B SHM_STAT
or
@@ -456,7 +460,7 @@ POSIX.1-2001, SVr4.
.\" SVr4 documents additional error conditions EINVAL,
.\" ENOENT, ENOSPC, ENOMEM, EEXIST. Neither SVr4 nor SVID documents
.\" an EIDRM error condition.
-.PP
+.P
Various fields in a \fIstruct shmid_ds\fP were typed as
.I short
under Linux 2.2
@@ -468,7 +472,7 @@ a recompilation under glibc-2.1.91 or later should suffice.
(The kernel distinguishes old and new calls by an
.B IPC_64
flag in
-.IR cmd .)
+.IR op .)
.SH NOTES
The
.BR IPC_INFO ,
diff --git a/man2/shmget.2 b/man2/shmget.2
index 074e83e..685963a 100644
--- a/man2/shmget.2
+++ b/man2/shmget.2
@@ -15,7 +15,7 @@
.\" Language and formatting clean-ups
.\" Added notes on /proc files
.\"
-.TH shmget 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH shmget 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
shmget \- allocates a System V shared memory segment
.SH LIBRARY
@@ -24,7 +24,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/shm.h>
-.PP
+.P
.BI "int shmget(key_t " key ", size_t " size ", int " shmflg );
.fi
.SH DESCRIPTION
@@ -40,7 +40,7 @@ is zero and
does not have the value
.BR IPC_PRIVATE ),
or to create a new set.
-.PP
+.P
A new shared memory segment, with size equal to the value of
.I size
rounded up to a multiple of
@@ -59,7 +59,7 @@ exists, and
.B IPC_CREAT
is specified in
.IR shmflg .
-.PP
+.P
If
.I shmflg
specifies both
@@ -78,7 +78,7 @@ set to
.B O_CREAT | O_EXCL
for
.BR open (2).)
-.PP
+.P
The value
.I shmflg
is composed of:
@@ -102,7 +102,9 @@ See the Linux kernel source file
.I Documentation/admin\-guide/mm/hugetlbpage.rst
for further information.
.TP
-.BR SHM_HUGE_2MB ", " SHM_HUGE_1GB " (since Linux 3.8)"
+.B SHM_HUGE_2MB
+.TQ
+.BR SHM_HUGE_1GB " (since Linux 3.8)"
.\" See https://lwn.net/Articles/533499/
Used in conjunction with
.B SHM_HUGETLB
@@ -143,7 +145,7 @@ in
.BR proc (5).
.\" As at 2.6.17-rc2, this flag has no effect if SHM_HUGETLB was also
.\" specified.
-.PP
+.P
In addition to the above flags, the least significant 9 bits of
.I shmflg
specify the permissions granted to the owner, group, and others.
@@ -153,7 +155,7 @@ meaning, as the
argument of
.BR open (2).
Presently, execute permissions are not used by the system.
-.PP
+.P
When a new shared memory segment is created,
its contents are initialized to zero values, and
its associated data structure,
@@ -190,7 +192,7 @@ are set to 0.
.IP \[bu]
.I shm_ctime
is set to the current time.
-.PP
+.P
If the shared memory segment already exists, the permissions are
verified, and a check is made to see if it is marked for destruction.
.SH RETURN VALUE
@@ -263,7 +265,7 @@ in
.BR proc (5).
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
.B SHM_HUGETLB
and
.B SHM_NORESERVE
@@ -380,7 +382,7 @@ On Linux, this limit can be read and modified via
.\" Kernels between Linux 2.4.x and Linux 2.6.8 had an off-by-one error
.\" that meant that we could create one more segment than SHMMNI -- MTK
.\" This /proc file is not available in Linux 2.2 and earlier -- MTK
-.PP
+.P
The implementation has no specific limits for the per-process maximum
number of shared memory segments
.RB ( SHMSEG ).
diff --git a/man2/shmop.2 b/man2/shmop.2
index 09168ec..a763420 100644
--- a/man2/shmop.2
+++ b/man2/shmop.2
@@ -17,7 +17,7 @@
.\" Changed wording and placement of sentence regarding attachment
.\" of segments marked for destruction
.\"
-.TH SHMOP 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH SHMOP 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
shmat, shmdt \- System V shared memory operations
.SH LIBRARY
@@ -26,7 +26,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/shm.h>
-.PP
+.P
.BI "void *shmat(int " shmid ", const void *_Nullable " shmaddr ", \
int " shmflg );
.BI "int shmdt(const void *" shmaddr );
@@ -62,7 +62,7 @@ rounded down to the nearest multiple of
Otherwise,
.I shmaddr
must be a page-aligned address at which the attach occurs.
-.PP
+.P
In addition to
.BR SHM_RND ,
the following flags may be specified in the
@@ -93,14 +93,14 @@ error would result if a mapping already exists in this address range.)
In this case,
.I shmaddr
must not be NULL.
-.PP
+.P
The
.BR brk (2)
value of the calling process is not altered by the attach.
The segment will automatically be detached at process exit.
The same segment may be attached as a read and as a read-write
one, and more than once, in the process's address space.
-.PP
+.P
A successful
.BR shmat ()
call updates the members of the
@@ -129,7 +129,7 @@ attached with
equal to the value returned by the attaching
.BR shmat ()
call.
-.PP
+.P
On a successful
.BR shmdt ()
call, the system updates the members of the
@@ -154,7 +154,7 @@ returns the address of the attached shared memory segment; on error,
is returned, and
.I errno
is set to indicate the error.
-.PP
+.P
On success,
.BR shmdt ()
returns 0; on error \-1 is returned, and
@@ -189,7 +189,7 @@ was NULL.
.TP
.B ENOMEM
Could not allocate memory for the descriptor or for the page tables.
-.PP
+.P
.BR shmdt ()
can fail with one of the following errors:
.TP
@@ -205,7 +205,7 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4.
.\" SVr4 documents an additional error condition EMFILE.
-.PP
+.P
In SVID 3 (or perhaps earlier),
the type of the \fIshmaddr\fP argument was changed from
.I "char\ *"
@@ -221,15 +221,15 @@ into
After a
.BR fork (2),
the child inherits the attached shared memory segments.
-.PP
+.P
After an
.BR execve (2),
all attached shared memory segments are detached from the process.
-.PP
+.P
Upon
.BR _exit (2),
all attached shared memory segments are detached from the process.
-.PP
+.P
Using
.BR shmat ()
with
@@ -241,12 +241,12 @@ may be attached at different addresses in different processes.
Therefore, any pointers maintained within the shared memory must be
made relative (typically to the starting address of the segment),
rather than absolute.
-.PP
+.P
On Linux, it is possible to attach a shared memory segment even if it
is already marked to be deleted.
However, POSIX.1 does not specify this behavior and
many other implementations do not support it.
-.PP
+.P
The following system parameter affects
.BR shmat ():
.TP
@@ -264,7 +264,7 @@ is normally some multiple of the system page size.
(On many Linux architectures,
.B SHMLBA
is the same as the system page size.)
-.PP
+.P
The implementation places no intrinsic per-process limit on the
number of shared memory segments
.RB ( SHMSEG ).
@@ -272,37 +272,37 @@ number of shared memory segments
The two programs shown below exchange a string using a shared memory segment.
Further details about the programs are given below.
First, we show a shell session demonstrating their use.
-.PP
+.P
In one terminal window, we run the "reader" program,
which creates a System V shared memory segment and a System V semaphore set.
The program prints out the IDs of the created objects,
and then waits for the semaphore to change value.
-.PP
+.P
.in +4n
.EX
$ \fB./svshm_string_read\fP
shmid = 1114194; semid = 15
.EE
.in
-.PP
+.P
In another terminal window, we run the "writer" program.
The "writer" program takes three command-line arguments:
the IDs of the shared memory segment and semaphore set created
by the "reader", and a string.
It attaches the existing shared memory segment,
copies the string to the shared memory, and modifies the semaphore value.
-.PP
+.P
.in +4n
.EX
$ \fB./svshm_string_write 1114194 15 \[aq]Hello, world\[aq]\fP
.EE
.in
-.PP
+.P
Returning to the terminal where the "reader" is running,
we see that the program has ceased waiting on the semaphore
and has printed the string that was copied into the
shared memory segment by the writer:
-.PP
+.P
.in +4n
.EX
Hello, world
@@ -311,7 +311,7 @@ Hello, world
.\"
.SS Program source: svshm_string.h
The following header file is included by the "reader" and "writer" programs:
-.PP
+.P
.in +4n
.\" SRC BEGIN (svshm_string.h)
.EX
@@ -352,7 +352,7 @@ and initializes the semaphore value to 1.
Finally, the program waits for the semaphore value to become 0,
and afterwards prints the string that has been copied into the
shared memory segment by the "writer".
-.PP
+.P
.in +4n
.\" SRC BEGIN (svshm_string_read.c)
.EX
@@ -434,7 +434,7 @@ that have already been created by the "reader", and a string.
It attaches the shared memory segment into its address space,
and then decrements the semaphore value to 0 in order to inform the
"reader" that it can now examine the contents of the shared memory.
-.PP
+.P
.in +4n
.\" SRC BEGIN (svshm_string_write.c)
.EX
diff --git a/man2/shutdown.2 b/man2/shutdown.2
index d9cbcc1..6f45f9f 100644
--- a/man2/shutdown.2
+++ b/man2/shutdown.2
@@ -9,7 +9,7 @@
.\" Modified Tue Oct 22 22:04:51 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1998 by Andi Kleen
.\"
-.TH shutdown 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH shutdown 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
shutdown \- shut down part of a full-duplex connection
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int shutdown(int " sockfd ", int " how );
.fi
.SH DESCRIPTION
diff --git a/man2/sigaction.2 b/man2/sigaction.2
index 8edde42..bbe4d5a 100644
--- a/man2/sigaction.2
+++ b/man2/sigaction.2
@@ -25,7 +25,7 @@
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
.\" Added notes on ptrace SIGTRAP and SYS_SECCOMP.
.\"
-.TH sigaction 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH sigaction 2 2024-02-25 "Linux man-pages 6.7"
.SH NAME
sigaction, rt_sigaction \- examine and change a signal action
.SH LIBRARY
@@ -34,22 +34,22 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.BI "int sigaction(int " signum ,
.BI " const struct sigaction *_Nullable restrict " act ,
.BI " struct sigaction *_Nullable restrict " oldact );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sigaction ():
.nf
_POSIX_C_SOURCE
.fi
-.PP
+.P
.IR siginfo_t :
.nf
_POSIX_C_SOURCE >= 199309L
@@ -62,13 +62,13 @@ receipt of a specific signal.
(See
.BR signal (7)
for an overview of signals.)
-.PP
+.P
.I signum
specifies the signal and can be any valid signal except
.B SIGKILL
and
.BR SIGSTOP .
-.PP
+.P
If
.I act
is non-NULL, the new action for signal
@@ -79,11 +79,11 @@ If
.I oldact
is non-NULL, the previous action is saved in
.IR oldact .
-.PP
+.P
The
.I sigaction
structure is defined as something like:
-.PP
+.P
.in +4n
.EX
struct sigaction {
@@ -95,12 +95,12 @@ struct sigaction {
};
.EE
.in
-.PP
+.P
On some architectures a union is involved: do not assign to both
.I sa_handler
and
.IR sa_sigaction .
-.PP
+.P
The
.I sa_restorer
field is not intended for application use.
@@ -109,7 +109,7 @@ field is not intended for application use.
field.)
Some further details of the purpose of this field can be found in
.BR sigreturn (2).
-.PP
+.P
.I sa_handler
specifies the action to be associated with
.I signum
@@ -123,7 +123,7 @@ to ignore this signal.
.IP \[bu]
A pointer to a signal handling function.
This function receives the signal number as its only argument.
-.PP
+.P
If
.B SA_SIGINFO
is specified in
@@ -135,7 +135,7 @@ then
specifies the signal-handling function for
.IR signum .
This function receives three arguments, as described below.
-.PP
+.P
.I sa_mask
specifies a mask of signals which should be blocked
(i.e., added to the signal mask of the thread in which
@@ -145,7 +145,7 @@ In addition, the signal which triggered the handler
will be blocked, unless the
.B SA_NODEFER
flag is used.
-.PP
+.P
.I sa_flags
specifies a set of flags which modify the behavior of the signal.
It is formed by the bitwise OR of zero or more of the following:
@@ -292,7 +292,7 @@ the signal handler address is passed via the
.I act.sa_sigaction
field.
This handler takes three arguments, as follows:
-.PP
+.P
.in +4n
.EX
void
@@ -302,7 +302,7 @@ handler(int sig, siginfo_t *info, void *ucontext)
}
.EE
.in
-.PP
+.P
These three arguments are as follows
.TP
.I sig
@@ -329,11 +329,11 @@ structure can be found in
and
.BR signal (7).
Commonly, the handler function doesn't make any use of the third argument.
-.PP
+.P
The
.I siginfo_t
data type is a structure with the following fields:
-.PP
+.P
.in +4n
.EX
siginfo_t {
@@ -380,7 +380,7 @@ siginfo_t {
}
.EE
.in
-.PP
+.P
.IR si_signo ", " si_errno " and " si_code
are defined for all signals.
.RI ( si_errno
@@ -595,13 +595,13 @@ event,
will contain
.B SIGTRAP
and have the ptrace event in the high byte:
-.PP
+.P
.in +4n
.EX
(SIGTRAP | PTRACE_EVENT_foo << 8).
.EE
.in
-.PP
+.P
For a
.RB non- ptrace (2)
event, the values that can appear in
@@ -624,12 +624,12 @@ or
.IP \[bu]
.B _POSIX_C_SOURCE
with the value 200809L or greater.
-.PP
+.P
For the
.B TRAP_*
constants, the symbol definitions are provided only in the first two cases.
Before glibc 2.20, no feature test macros were required to obtain these symbols.
-.PP
+.P
For a regular signal, the following list shows the values which can be
placed in
.I si_code
@@ -672,7 +672,7 @@ or
.\" It appears to have been an idea that was tried during 2.5.6
.\" through to Linux 2.5.24 and then was backed out.
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -704,7 +704,7 @@ Coprocessor error.
.B ILL_BADSTK
Internal stack error.
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -736,7 +736,7 @@ Floating-point invalid operation.
.B FPE_FLTSUB
Subscript out of range.
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -762,7 +762,7 @@ See
The protection key which applied to this access is available via
.IR si_pkey .
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -785,7 +785,7 @@ Hardware memory error consumed on a machine check; action required.
.BR BUS_MCEERR_AO " (since Linux 2.6.32)"
Hardware memory error detected in process but not consumed; action optional.
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -805,7 +805,7 @@ Process taken branch trap.
.BR TRAP_HWBKPT " (since Linux 2.4, IA64 only)"
Hardware breakpoint/watchpoint.
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -831,7 +831,7 @@ Child has stopped.
.BR CLD_CONTINUED " (since Linux 2.6.9)"
Stopped child has continued.
.RE
-.PP
+.P
The following values can be placed in
.I si_code
for a
@@ -857,7 +857,7 @@ High priority input available.
.B POLL_HUP
Device disconnected.
.RE
-.PP
+.P
The following value can be placed in
.I si_code
for a
@@ -884,7 +884,7 @@ However, historically, a second
.BR sigaction ()
call would typically leave those bits set in
.IR oldact\->sa_flags .
-.PP
+.P
This means that support for new flags cannot be detected
simply by testing for a flag in
.IR sa_flags ,
@@ -892,7 +892,7 @@ and a program must test that
.B SA_UNSUPPORTED
has been cleared before relying on the contents of
.IR sa_flags .
-.PP
+.P
Since the behavior of the signal handler cannot be guaranteed
unless the check passes,
it is wise to either block the affected signal
@@ -901,12 +901,12 @@ or where this is not possible,
for example if the signal is synchronous, to issue the second
.BR sigaction ()
in the signal handler itself.
-.PP
+.P
In kernels that do not support a specific flag,
the kernel's behavior is as if the flag was not set,
even if the flag was set in
.IR act\->sa_flags .
-.PP
+.P
The flags
.BR SA_NOCLDSTOP ,
.BR SA_NOCLDWAIT ,
@@ -922,7 +922,7 @@ because they were introduced before Linux 5.11.
However, in general, programs may assume that these flags are supported,
since they have all been supported since Linux 2.6,
which was released in the year 2003.
-.PP
+.P
See EXAMPLES below for a demonstration of the use of
.BR SA_UNSUPPORTED .
.SH RETURN VALUE
@@ -953,7 +953,7 @@ used internally by the NPTL threading implementation.
See
.BR nptl (7)
for details.
-.PP
+.P
On architectures where the signal trampoline resides in the C library,
the glibc wrapper function for
.BR sigaction ()
@@ -966,7 +966,7 @@ flag in the
field.
See
.BR sigreturn (2).
-.PP
+.P
The original Linux system call was named
.BR sigaction ().
However, with the addition of real-time signals in Linux 2.2,
@@ -999,7 +999,7 @@ POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, SVr4.
.\" SVr4 does not document the EINTR condition.
-.PP
+.P
POSIX.1-1990 disallowed setting the action for
.B SIGCHLD
to
@@ -1016,27 +1016,34 @@ terminated children do not become zombies is to catch the
signal and perform a
.BR wait (2)
or similar.
-.PP
+.P
POSIX.1-1990 specified only
.BR SA_NOCLDSTOP .
POSIX.1-2001 added
-.BR SA_NOCLDSTOP ,
.BR SA_NOCLDWAIT ,
.BR SA_NODEFER ,
.BR SA_ONSTACK ,
.BR SA_RESETHAND ,
.BR SA_RESTART ,
and
-.BR SA_SIGINFO .
+.B SA_SIGINFO
+as XSI extensions.
+POSIX.1-2008 moved
+.BR SA_NODEFER ,
+.BR SA_RESETHAND ,
+.BR SA_RESTART ,
+and
+.B SA_SIGINFO
+to the base specifications.
Use of these latter values in
.I sa_flags
may be less portable in applications intended for older
UNIX implementations.
-.PP
+.P
The
.B SA_RESETHAND
flag is compatible with the SVr4 flag of the same name.
-.PP
+.P
The
.B SA_NODEFER
flag is compatible with the SVr4 flag of the same name under kernels
@@ -1054,7 +1061,7 @@ During an
.BR execve (2),
the dispositions of handled signals are reset to the default;
the dispositions of ignored signals are left unchanged.
-.PP
+.P
According to POSIX, the behavior of a process is undefined after it
ignores a
.BR SIGFPE ,
@@ -1072,23 +1079,23 @@ signal.
(Also dividing the most negative integer by \-1 may generate
.BR SIGFPE .)
Ignoring this signal might lead to an endless loop.
-.PP
+.P
.BR sigaction ()
can be called with a NULL second argument to query the current signal
handler.
It can also be used to check whether a given signal is valid for
the current machine by calling it with NULL second and third arguments.
-.PP
+.P
It is not possible to block
.BR SIGKILL " or " SIGSTOP
(by specifying them in
.IR sa_mask ).
Attempts to do so are silently ignored.
-.PP
+.P
See
.BR sigsetops (3)
for details on manipulating signal sets.
-.PP
+.P
See
.BR signal\-safety (7)
for a list of the async-signal-safe functions that can be
@@ -1119,7 +1126,7 @@ the kernel does not always provide meaningful values
for all of the fields of the
.I siginfo_t
that are relevant for that signal.
-.PP
+.P
Up to and including Linux 2.6.13, specifying
.B SA_NODEFER
in
@@ -1140,7 +1147,7 @@ if
is determined to be supported, and
.B EXIT_FAILURE
otherwise.
-.PP
+.P
.\" SRC BEGIN (sigaction.c)
.EX
#include <signal.h>
diff --git a/man2/sigaltstack.2 b/man2/sigaltstack.2
index 0ebfebd..82ba812 100644
--- a/man2/sigaltstack.2
+++ b/man2/sigaltstack.2
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" aeb, various minor fixes
-.TH sigaltstack 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH sigaltstack 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sigaltstack \- set and/or get signal stack context
.SH LIBRARY
@@ -13,16 +13,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.BI "int sigaltstack(const stack_t *_Nullable restrict " ss ,
.BI " stack_t *_Nullable restrict " old_ss );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sigaltstack ():
.nf
_XOPEN_SOURCE >= 500
@@ -39,7 +39,7 @@ An alternate signal stack is used during the
execution of a signal handler if the establishment of that handler (see
.BR sigaction (2))
requested it.
-.PP
+.P
The normal sequence of events for using an alternate signal stack
is the following:
.TP 3
@@ -59,18 +59,18 @@ When establishing a signal handler using
inform the system that the signal handler should be executed
on the alternate signal stack by
specifying the \fBSA_ONSTACK\fP flag.
-.PP
+.P
The \fIss\fP argument is used to specify a new
alternate signal stack, while the \fIold_ss\fP argument
is used to retrieve information about the currently
established signal stack.
If we are interested in performing just one
of these tasks, then the other argument can be specified as NULL.
-.PP
+.P
The
.I stack_t
type used to type the arguments of this function is defined as follows:
-.PP
+.P
.in +4n
.EX
typedef struct {
@@ -80,7 +80,7 @@ typedef struct {
} stack_t;
.EE
.in
-.PP
+.P
To establish a new alternate signal stack,
the fields of this structure are set as follows:
.TP
@@ -119,14 +119,14 @@ The constant \fBSIGSTKSZ\fP is defined to be large enough
to cover the usual size requirements for an alternate signal stack,
and the constant \fBMINSIGSTKSZ\fP defines the minimum
size required to execute a signal handler.
-.PP
+.P
To disable an existing stack, specify \fIss.ss_flags\fP
as \fBSS_DISABLE\fP.
In this case, the kernel ignores any other flags in
.I ss.ss_flags
and the remaining fields
in \fIss\fP.
-.PP
+.P
If \fIold_ss\fP is not NULL, then it is used to return information about
the alternate signal stack which was in effect prior to the
call to
@@ -162,7 +162,7 @@ using a further call to
.B SS_AUTODISARM
The alternate signal stack has been marked to be autodisarmed
as described above.
-.PP
+.P
By specifying
.I ss
as NULL, and
@@ -207,10 +207,9 @@ T{
.BR sigaltstack ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
.B SS_AUTODISARM
is a Linux extension.
.SH HISTORY
@@ -223,7 +222,7 @@ standard stack is exhausted: in this case, a signal handler for
.B SIGSEGV
cannot be invoked on the standard stack; if we wish to handle it,
we must use an alternate signal stack.
-.PP
+.P
Establishing an alternate signal stack is useful if a thread
expects that it may exhaust its standard stack.
This may occur, for example, because the stack grows so large
@@ -233,13 +232,13 @@ If the standard stack is exhausted, the kernel sends
the thread a \fBSIGSEGV\fP signal.
In these circumstances the only way to catch this signal is
on an alternate signal stack.
-.PP
+.P
On most hardware architectures supported by Linux, stacks grow
downward.
.BR sigaltstack ()
automatically takes account
of the direction of stack growth.
-.PP
+.P
Functions called from a signal handler executing on an alternate
signal stack will also use the alternate signal stack.
(This also applies to any handlers invoked for other signals while
@@ -248,7 +247,7 @@ Unlike the standard stack, the system does not
automatically extend the alternate signal stack.
Exceeding the allocated size of the alternate signal stack will
lead to unpredictable results.
-.PP
+.P
A successful call to
.BR execve (2)
removes any existing alternate
@@ -264,7 +263,7 @@ and do not include
.BR CLONE_VFORK ,
in which case any alternate signal stack that was established in the parent
is disabled in the child process.
-.PP
+.P
.BR sigaltstack ()
supersedes the older
.BR sigstack ()
@@ -327,7 +326,7 @@ to install an alternate signal stack that is employed by a handler
for the
.B SIGSEGV
signal:
-.PP
+.P
.in +4n
.EX
stack_t ss;
diff --git a/man2/signal.2 b/man2/signal.2
index 619babf..77f7b19 100644
--- a/man2/signal.2
+++ b/man2/signal.2
@@ -13,7 +13,7 @@
.\" various sections.
.\" 2008-07-11, mtk: rewrote and expanded portability discussion.
.\"
-.TH signal 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH signal 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
signal \- ANSI C signal handling
.SH LIBRARY
@@ -22,9 +22,9 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.B typedef void (*sighandler_t)(int);
-.PP
+.P
.BI "sighandler_t signal(int " signum ", sighandler_t " handler );
.fi
.SH DESCRIPTION
@@ -37,7 +37,7 @@ and has also varied historically across different versions of Linux.
.BR sigaction (2)
instead.
See \fIPortability\fP below.
-.PP
+.P
.BR signal ()
sets the disposition of the signal
.I signum
@@ -47,7 +47,7 @@ which is either
.BR SIG_IGN ,
.BR SIG_DFL ,
or the address of a programmer-defined function (a "signal handler").
-.PP
+.P
If the signal
.I signum
is delivered to the process, then one of the following happens:
@@ -74,7 +74,7 @@ is called with argument
.IR signum .
If invocation of the handler caused the signal to be blocked,
then the signal is unblocked upon return from the handler.
-.PP
+.P
The signals
.B SIGKILL
and
@@ -113,7 +113,7 @@ is defined.
Without use of such a type, the declaration of
.BR signal ()
is the somewhat harder to read:
-.PP
+.P
.in +4n
.EX
.BI "void ( *" signal "(int " signum ", void (*" handler ")(int)) ) (int);"
@@ -131,7 +131,7 @@ The semantics when using
to establish a signal handler vary across systems
(and POSIX.1 explicitly permits this variation);
.B do not use it for this purpose.
-.PP
+.P
POSIX.1 solved the portability mess by specifying
.BR sigaction (2),
which provides explicit control of the semantics when a
@@ -141,7 +141,7 @@ signal handler is invoked; use that interface instead of
C11, POSIX.1-2008.
.SH HISTORY
C89, POSIX.1-2001.
-.PP
+.P
In the original UNIX systems, when a handler that was established using
.BR signal ()
was invoked by the delivery of a signal,
@@ -151,20 +151,20 @@ and the system did not block delivery of further instances of the signal.
This is equivalent to calling
.BR sigaction (2)
with the following flags:
-.PP
+.P
.in +4n
.EX
sa.sa_flags = SA_RESETHAND | SA_NODEFER;
.EE
.in
-.PP
+.P
System\ V also provides these semantics for
.BR signal ().
This was bad because the signal might be delivered again
before the handler had a chance to reestablish itself.
Furthermore, rapid deliveries of the same signal could
result in recursive invocations of the handler.
-.PP
+.P
BSD improved on this situation, but unfortunately also
changed the semantics of the existing
.BR signal ()
@@ -179,13 +179,13 @@ restarted if interrupted by a signal handler (see
The BSD semantics are equivalent to calling
.BR sigaction (2)
with the following flags:
-.PP
+.P
.in +4n
.EX
sa.sa_flags = SA_RESTART;
.EE
.in
-.PP
+.P
The situation on Linux is as follows:
.IP \[bu] 3
The kernel's
@@ -214,7 +214,7 @@ provides System\ V semantics.
.\" System V semantics are also provided if one uses the separate
.\" .BR sysv_signal (3)
.\" function.
-.\" .IP *
+.\" .IP \[bu]
.\" The
.\" .BR signal ()
.\" function in Linux libc4 and libc5 provide System\ V semantics.
@@ -229,7 +229,7 @@ provides System\ V semantics.
The effects of
.BR signal ()
in a multithreaded process are unspecified.
-.PP
+.P
According to POSIX, the behavior of a process is undefined after it
ignores a
.BR SIGFPE ,
@@ -247,14 +247,14 @@ signal.
(Also dividing the most negative integer by \-1 may generate
.BR SIGFPE .)
Ignoring this signal might lead to an endless loop.
-.PP
+.P
See
.BR sigaction (2)
for details on what happens when the disposition
.B SIGCHLD
is set to
.BR SIG_IGN .
-.PP
+.P
See
.BR signal\-safety (7)
for a list of the async-signal-safe functions that can be
diff --git a/man2/signalfd.2 b/man2/signalfd.2
index 9af22b0..fba622c 100644
--- a/man2/signalfd.2
+++ b/man2/signalfd.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH signalfd 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH signalfd 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
signalfd \- create a file descriptor for accepting signals
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/signalfd.h>
-.PP
+.P
.BI "int signalfd(int " fd ", const sigset_t *" mask ", int " flags );
.fi
.SH DESCRIPTION
@@ -26,7 +26,7 @@ and has the advantage that the file descriptor may be monitored by
.BR poll (2),
and
.BR epoll (7).
-.PP
+.P
The
.I mask
argument specifies the set of signals that the caller
@@ -46,7 +46,7 @@ or
signals via a signalfd file descriptor;
these signals are silently ignored if specified in
.IR mask .
-.PP
+.P
If the
.I fd
argument is \-1,
@@ -60,7 +60,7 @@ is not \-1,
then it must specify a valid existing signalfd file descriptor, and
.I mask
is used to replace the signal set associated with that file descriptor.
-.PP
+.P
Starting with Linux 2.6.27, the following values may be bitwise ORed in
.I flags
to change the behavior of
@@ -85,11 +85,11 @@ See the description of the
flag in
.BR open (2)
for reasons why this may be useful.
-.PP
+.P
Up to Linux 2.6.26, the
.I flags
argument is unused, and must be specified as zero.
-.PP
+.P
.BR signalfd ()
returns a file descriptor that supports the following operations:
.TP
@@ -131,7 +131,11 @@ or fails with the error
.B EAGAIN
if the file descriptor has been made nonblocking.
.TP
-.BR poll "(2), " select "(2) (and similar)"
+.BR poll (2)
+.TQ
+.BR select (2)
+.TQ
+(and similar)
The file descriptor is readable
(the
.BR select (2)
@@ -161,7 +165,7 @@ The format of the
structure(s) returned by
.BR read (2)s
from a signalfd file descriptor is as follows:
-.PP
+.P
.in +4n
.EX
struct signalfd_siginfo {
@@ -192,7 +196,7 @@ struct signalfd_siginfo {
};
.EE
.in
-.PP
+.P
Each of the fields in this structure
is analogous to the similarly named field in the
.I siginfo_t
@@ -338,7 +342,7 @@ The glibc
.BR signalfd ()
wrapper function does not include this argument,
since it provides the required value for the underlying system call.
-.PP
+.P
There are two underlying Linux system calls:
.BR signalfd ()
and the more recent
@@ -379,7 +383,7 @@ If a signal appears in the
.I mask
of more than one of the file descriptors, then occurrences
of that signal can be read (once) from any one of the file descriptors.
-.PP
+.P
Attempts to include
.B SIGKILL
and
@@ -387,7 +391,7 @@ and
in
.I mask
are silently ignored.
-.PP
+.P
The signal mask employed by a signalfd file descriptor can be viewed
via the entry for the corresponding file descriptor in the process's
.IR /proc/ pid /fdinfo
@@ -405,7 +409,7 @@ or the
.B SIGFPE
signal that results from an arithmetic error.
Such signals can be caught only via signal handler.
-.PP
+.P
As described above,
in normal usage one blocks the signals that will be accepted via
.BR signalfd ().
@@ -443,7 +447,7 @@ The program terminates after accepting a
.B SIGQUIT
signal.
The following shell session demonstrates the use of the program:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./signalfd_demo"
diff --git a/man2/sigpending.2 b/man2/sigpending.2
index e1b3158..cd67531 100644
--- a/man2/sigpending.2
+++ b/man2/sigpending.2
@@ -6,7 +6,7 @@
.\"
.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
.\"
-.TH sigpending 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sigpending 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sigpending, rt_sigpending \- examine pending signals
.SH LIBRARY
@@ -15,15 +15,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.BI "int sigpending(sigset_t *" set );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sigpending ():
.nf
_POSIX_C_SOURCE
@@ -79,16 +79,16 @@ when the kernel provides it.
See
.BR sigsetops (3)
for details on manipulating signal sets.
-.PP
+.P
If a signal is both blocked and has a disposition of "ignored", it is
.I not
added to the mask of pending signals when generated.
-.PP
+.P
The set of signals that is pending for a thread
is the union of the set of signals that is pending for that thread
and the set of signals that is pending for the process as a whole; see
.BR signal (7).
-.PP
+.P
A child created via
.BR fork (2)
initially has an empty pending signal set;
diff --git a/man2/sigprocmask.2 b/man2/sigprocmask.2
index a89c1ed..f0017b4 100644
--- a/man2/sigprocmask.2
+++ b/man2/sigprocmask.2
@@ -6,7 +6,7 @@
.\"
.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
.\"
-.TH sigprocmask 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sigprocmask 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sigprocmask, rt_sigprocmask \- examine and change blocked signals
.SH LIBRARY
@@ -14,33 +14,33 @@ Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.B #include <signal.h>
-.PP
+.P
.nf
/* Prototype for the glibc wrapper function */
.BI "int sigprocmask(int " how ", const sigset_t *_Nullable restrict " set ,
.BI " sigset_t *_Nullable restrict " oldset );
-.PP
+.P
.BR "#include <signal.h>" " /* Definition of " SIG_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
/* Prototype for the underlying system call */
.BI "int syscall(SYS_rt_sigprocmask, int " how ,
.BI " const kernel_sigset_t *_Nullable " set ,
.BI " kernel_sigset_t *_Nullable " oldset ,
.BI " size_t " sigsetsize );
-.PP
+.P
/* Prototype for the legacy system call */
.BI "[[deprecated]] int syscall(SYS_sigprocmask, int " how ,
.BI " const old_kernel_sigset_t *_Nullable " set ,
.BI " old_kernel_sigset_t *_Nullable " oldset );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sigprocmask ():
.nf
_POSIX_C_SOURCE
@@ -53,7 +53,7 @@ blocked for the caller
(see also
.BR signal (7)
for more details).
-.PP
+.P
The behavior of the call is dependent on the value of
.IR how ,
as follows.
@@ -72,12 +72,12 @@ It is permissible to attempt to unblock a signal which is not blocked.
.B SIG_SETMASK
The set of blocked signals is set to the argument
.IR set .
-.PP
+.P
If
.I oldset
is non-NULL, the previous value of the signal mask is stored in
.IR oldset .
-.PP
+.P
If
.I set
is NULL, then the signal mask is unchanged (i.e.,
@@ -86,12 +86,12 @@ is ignored),
but the current value of the signal mask is nevertheless returned in
.I oldset
(if it is not NULL).
-.PP
+.P
A set of functions for modifying and inspecting variables of type
.I sigset_t
("signal sets") is described in
.BR sigsetops (3).
-.PP
+.P
The use of
.BR sigprocmask ()
is unspecified in a multithreaded process; see
@@ -127,7 +127,7 @@ In this manual page, the former is referred to as
(it is nevertheless named
.I sigset_t
in the kernel sources).
-.PP
+.P
The glibc wrapper function for
.BR sigprocmask ()
silently ignores attempts to block the two real-time signals that
@@ -135,7 +135,7 @@ are used internally by the NPTL threading implementation.
See
.BR nptl (7)
for details.
-.PP
+.P
The original Linux system call was named
.BR sigprocmask ().
However, with the addition of real-time signals in Linux 2.2,
@@ -164,7 +164,7 @@ This argument is currently required to have a fixed architecture specific value
.IR sizeof(kernel_sigset_t) ).
.\" sizeof(kernel_sigset_t) == _NSIG / 8,
.\" which equals to 8 on most architectures, but e.g. on MIPS it's 16.
-.PP
+.P
The glibc
.BR sigprocmask ()
wrapper function hides these details from us, transparently calling
@@ -179,15 +179,15 @@ POSIX.1-2001.
It is not possible to block
.BR SIGKILL " or " SIGSTOP .
Attempts to do so are silently ignored.
-.PP
+.P
Each of the threads in a process has its own signal mask.
-.PP
+.P
A child created via
.BR fork (2)
inherits a copy of its parent's signal mask;
the signal mask is preserved across
.BR execve (2).
-.PP
+.P
If
.BR SIGBUS ,
.BR SIGFPE ,
@@ -201,11 +201,11 @@ unless the signal was generated by
.BR sigqueue (3),
or
.BR raise (3).
-.PP
+.P
See
.BR sigsetops (3)
for details on manipulating signal sets.
-.PP
+.P
Note that it is permissible (although not very useful) to specify both
.I set
and
diff --git a/man2/sigreturn.2 b/man2/sigreturn.2
index 03ce952..dd0935a 100644
--- a/man2/sigreturn.2
+++ b/man2/sigreturn.2
@@ -7,7 +7,7 @@
.\" 2008-06-26, mtk, added some more detail on the work done by sigreturn()
.\" 2014-12-05, mtk, rewrote all of the rest of the original page
.\"
-.TH sigreturn 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sigreturn 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sigreturn, rt_sigreturn \- return from signal handler and cleanup stack frame
.SH LIBRARY
@@ -27,14 +27,14 @@ it creates a new frame on the user-space stack where it
saves various pieces of process context
(processor status word, registers, signal mask, and signal stack settings).
.\" See arch/x86/kernel/signal.c::__setup_frame() [in Linux 3.17 source code]
-.PP
+.P
The kernel also arranges that, during the transition back to user mode,
the signal handler is called, and that, upon return from the handler,
control passes to a piece of user-space code commonly called
the "signal trampoline".
The signal trampoline code in turn calls
.BR sigreturn ().
-.PP
+.P
This
.BR sigreturn ()
call undoes everything that was
@@ -82,7 +82,7 @@ vary depending on the architecture.
takes no arguments, since all of the information that it requires
is available in the stack frame that was previously created by the
kernel on the user-space stack.)
-.PP
+.P
Once upon a time, UNIX systems placed the signal trampoline code
onto the user stack.
Nowadays, pages of the user stack are protected so as to
@@ -107,7 +107,7 @@ and sets the
flag in the
.I sa_flags
field.
-.PP
+.P
The saved process context information is placed in a
.I ucontext_t
structure (see
@@ -118,7 +118,7 @@ as the third argument of a handler established via
with the
.B SA_SIGINFO
flag.
-.PP
+.P
On some other UNIX systems,
the operation of the signal trampoline differs a little.
In particular, on some systems, upon transitioning back to user mode,
diff --git a/man2/sigsuspend.2 b/man2/sigsuspend.2
index f89a6ca..9bb39f8 100644
--- a/man2/sigsuspend.2
+++ b/man2/sigsuspend.2
@@ -6,7 +6,7 @@
.\"
.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
.\"
-.TH sigsuspend 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sigsuspend 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sigsuspend, rt_sigsuspend \- wait for a signal
.SH LIBRARY
@@ -15,15 +15,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.BI "int sigsuspend(const sigset_t *" mask );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sigsuspend ():
.nf
_POSIX_C_SOURCE
@@ -35,7 +35,7 @@ mask given by
.I mask
and then suspends the thread until delivery of a signal whose
action is to invoke a signal handler or to terminate a process.
-.PP
+.P
If the signal terminates the process, then
.BR sigsuspend ()
does not return.
@@ -44,7 +44,7 @@ If the signal is caught, then
returns after the signal handler returns,
and the signal mask is restored to the state before the call to
.BR sigsuspend ().
-.PP
+.P
It is not possible to block
.B SIGKILL
or
@@ -115,7 +115,7 @@ with the signal mask that was returned by
(in the
.I oldset
argument).
-.PP
+.P
See
.BR sigsetops (3)
for details on manipulating signal sets.
diff --git a/man2/sigwaitinfo.2 b/man2/sigwaitinfo.2
index a5703fc..cf231bc 100644
--- a/man2/sigwaitinfo.2
+++ b/man2/sigwaitinfo.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigwaitinfo 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sigwaitinfo 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sigwaitinfo, sigtimedwait, rt_sigtimedwait \- synchronously wait
for queued signals
@@ -12,19 +12,19 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <signal.h>
-.PP
+.P
.BI "int sigwaitinfo(const sigset_t *restrict " set ,
.BI " siginfo_t *_Nullable restrict " info );
.BI "int sigtimedwait(const sigset_t *restrict " set ,
.BI " siginfo_t *_Nullable restrict " info ,
.BI " const struct timespec *restrict " timeout );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sigwaitinfo (),
.BR sigtimedwait ():
.nf
@@ -40,7 +40,7 @@ is pending
is already pending for the calling thread,
.BR sigwaitinfo ()
will return immediately.)
-.PP
+.P
.BR sigwaitinfo ()
removes the signal from the set of pending
signals and returns the signal number as its function result.
@@ -52,7 +52,7 @@ then the buffer that it points to is used to return a structure of type
(see
.BR sigaction (2))
containing information about the signal.
-.PP
+.P
If multiple signals in
.I set
are pending for the caller, the signal that is retrieved by
@@ -60,7 +60,7 @@ are pending for the caller, the signal that is retrieved by
is determined according to the usual ordering rules; see
.BR signal (7)
for further details.
-.PP
+.P
.BR sigtimedwait ()
operates in exactly the same way as
.BR sigwaitinfo ()
@@ -74,7 +74,7 @@ may overrun by a small amount.)
This argument is a
.BR timespec (3)
structure.
-.PP
+.P
If both fields of this structure are specified as 0, a poll is performed:
.BR sigtimedwait ()
returns immediately, either with information about a signal that
@@ -116,7 +116,7 @@ On Linux,
.BR sigwaitinfo ()
is a library function implemented on top of
.BR sigtimedwait ().
-.PP
+.P
The glibc wrapper functions for
.BR sigwaitinfo ()
and
@@ -126,7 +126,7 @@ are used internally by the NPTL threading implementation.
See
.BR nptl (7)
for details.
-.PP
+.P
The original Linux system call was named
.BR sigtimedwait ().
However, with the addition of real-time signals in Linux 2.2,
@@ -175,18 +175,18 @@ a thread other than the one calling
.BR sigwaitinfo ()
or
.BR sigtimedwait ()).
-.PP
+.P
The set of signals that is pending for a given thread is the
union of the set of signals that is pending specifically for that thread
and the set of signals that is pending for the process as a whole (see
.BR signal (7)).
-.PP
+.P
Attempts to wait for
.B SIGKILL
and
.B SIGSTOP
are silently ignored.
-.PP
+.P
If multiple threads of a process are blocked
waiting for the same signal(s) in
.BR sigwaitinfo ()
@@ -195,7 +195,7 @@ or
then exactly one of the threads will actually receive the
signal if it becomes pending for the process as a whole;
which of the threads receives the signal is indeterminate.
-.PP
+.P
.BR sigwaitinfo ()
or
.BR sigtimedwait (),
@@ -207,7 +207,7 @@ or the
.B SIGFPE
signal that results from an arithmetic error.
Such signals can be caught only via signal handler.
-.PP
+.P
POSIX leaves the meaning of a NULL value for the
.I timeout
argument of
diff --git a/man2/socket.2 b/man2/socket.2
index 2a35f2b..b83bd5b 100644
--- a/man2/socket.2
+++ b/man2/socket.2
@@ -12,7 +12,7 @@
.\" Modified 2002-07-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH socket 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH socket 2 2024-01-28 "Linux man-pages 6.7"
.SH NAME
socket \- create an endpoint for communication
.SH LIBRARY
@@ -21,7 +21,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int socket(int " domain ", int " type ", int " protocol );
.fi
.SH DESCRIPTION
@@ -30,7 +30,7 @@ creates an endpoint for communication and returns a file descriptor
that refers to that endpoint.
The file descriptor returned by a successful call will be
the lowest-numbered file descriptor not currently open for the process.
-.PP
+.P
The
.I domain
argument specifies a communication domain; this selects the protocol
@@ -79,7 +79,7 @@ T}:AppleTalk:T{
T}
T{
.B AF_X25
-T}:ITU-T X.25 / ISO-8208 protocol:T{
+T}:ITU-T X.25 / ISO/IEC\~8208 protocol:T{
.BR x25 (7)
T}
T{
@@ -193,11 +193,11 @@ T}:T{
XDP (express data path) interface
T}
.TE
-.PP
+.P
Further details of the above address families,
as well as information on several other address families, can be found in
.BR address_families (7).
-.PP
+.P
The socket has the indicated
.IR type ,
which specifies the communication semantics.
@@ -227,9 +227,9 @@ Provides a reliable datagram layer that does not guarantee ordering.
Obsolete and should not be used in new programs;
see
.BR packet (7).
-.PP
+.P
Some socket types may not be implemented by all protocol families.
-.PP
+.P
Since Linux 2.6.27, the
.I type
argument serves a second purpose:
@@ -257,7 +257,7 @@ See the description of the
flag in
.BR open (2)
for reasons why this may be useful.
-.PP
+.P
The
.I protocol
specifies a particular protocol to be used with the socket.
@@ -273,7 +273,7 @@ in which communication is to take place; see
See
.BR getprotoent (3)
on how to map protocol name strings to protocol numbers.
-.PP
+.P
Sockets of type
.B SOCK_STREAM
are full-duplex byte streams.
@@ -303,7 +303,7 @@ Out-of-band data may also be transmitted as described in
.BR send (2)
and received as described in
.BR recv (2).
-.PP
+.P
The communications protocols which implement a
.B SOCK_STREAM
ensure that data is not lost or duplicated.
@@ -329,7 +329,7 @@ The only difference is that
calls will return only the amount of data requested,
and any data remaining in the arriving packet will be discarded.
Also all message boundaries in incoming datagrams are preserved.
-.PP
+.P
.B SOCK_DGRAM
and
.B SOCK_RAW
@@ -339,14 +339,14 @@ calls.
Datagrams are generally received with
.BR recvfrom (2),
which returns the next datagram along with the address of its sender.
-.PP
+.P
.B SOCK_PACKET
is an obsolete socket type to receive raw packets directly from the
device driver.
Use
.BR packet (7)
instead.
-.PP
+.P
An
.BR fcntl (2)
.B F_SETOWN
@@ -369,7 +369,7 @@ call with the
or
.B SIOCSPGRP
argument.
-.PP
+.P
When the network signals an error condition to the protocol module (e.g.,
using an ICMP message for IP) the pending error flag is set for the socket.
The next operation on this socket will return the error code of the pending
@@ -379,7 +379,7 @@ to retrieve detailed information about the error; see
.B IP_RECVERR
in
.BR ip (7).
-.PP
+.P
The operation of sockets is controlled by socket level
.IR options .
These options are defined in
@@ -425,24 +425,24 @@ created until sufficient resources are freed.
.B EPROTONOSUPPORT
The protocol type or the specified protocol is not
supported within this domain.
-.PP
+.P
Other errors may be generated by the underlying protocol modules.
.SH STANDARDS
POSIX.1-2008.
-.PP
+.P
.B SOCK_NONBLOCK
and
.B SOCK_CLOEXEC
are Linux-specific.
.SH HISTORY
POSIX.1-2001, 4.4BSD.
-.PP
+.P
.BR socket ()
appeared in 4.2BSD.
It is generally portable to/from
non-BSD systems supporting clones of the BSD socket layer (including
System\ V variants).
-.PP
+.P
The manifest constants used under 4.x BSD for protocol families
are
.BR PF_UNIX ,
@@ -485,7 +485,7 @@ is shown in
.BR tcp (7),
.BR udp (7),
.BR unix (7)
-.PP
+.P
\[lq]An Introductory 4.3BSD Interprocess Communication Tutorial\[rq]
and
\[lq]BSD Interprocess Communication Tutorial\[rq],
diff --git a/man2/socketcall.2 b/man2/socketcall.2
index 24f7f6b..d536966 100644
--- a/man2/socketcall.2
+++ b/man2/socketcall.2
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Tue Oct 22 22:11:53 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH socketcall 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH socketcall 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
socketcall \- socket system calls
.SH LIBRARY
@@ -15,10 +15,10 @@ Standard C library
.BR "#include <linux/net.h>" " /* Definition of " SYS_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_socketcall " */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_socketcall, int " call ", unsigned long *" args );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR socketcall (),
@@ -32,11 +32,11 @@ determines which socket function to invoke.
.I args
points to a block containing the actual arguments,
which are passed through to the appropriate call.
-.PP
+.P
User programs should call the appropriate functions by their usual names.
Only standard library implementors and kernel hackers need to know about
.BR socketcall ().
-.PP
+.P
.TS
tab(:);
l l.
@@ -152,7 +152,7 @@ system call; instead
and so on really are implemented as separate system calls.
.SH STANDARDS
Linux.
-.PP
+.P
On x86-32,
.BR socketcall ()
was historically the only entry point for the sockets API.
diff --git a/man2/socketpair.2 b/man2/socketpair.2
index 741596e..ae304e6 100644
--- a/man2/socketpair.2
+++ b/man2/socketpair.2
@@ -11,7 +11,7 @@
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2008-10-11, mtk: Add description of SOCK_NONBLOCK and SOCK_CLOEXEC
.\"
-.TH socketpair 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH socketpair 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
socketpair \- create a pair of connected sockets
.SH LIBRARY
@@ -20,7 +20,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/socket.h>
-.PP
+.P
.BI "int socketpair(int " domain ", int " type ", int " protocol \
", int " sv [2]);
.fi
@@ -35,7 +35,7 @@ and using the optionally specified
.IR protocol .
For further details of these arguments, see
.BR socket (2).
-.PP
+.P
The file descriptors used in referencing the new sockets are returned in
.I sv[0]
and
@@ -48,7 +48,7 @@ On error, \-1 is returned,
is set to indicate the error, and
.I sv
is left unchanged
-.PP
+.P
On Linux (and other systems),
.BR socketpair ()
does not modify
@@ -90,13 +90,13 @@ and
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, 4.4BSD.
-.PP
+.P
.BR socketpair ()
first appeared in 4.2BSD.
It is generally portable to/from
non-BSD systems supporting clones of the BSD socket layer (including
System\ V variants).
-.PP
+.P
Since Linux 2.6.27,
.BR socketpair ()
supports the
diff --git a/man2/splice.2 b/man2/splice.2
index 88d4160..ff39e03 100644
--- a/man2/splice.2
+++ b/man2/splice.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH splice 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH splice 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
splice \- splice data to/from a pipe
.SH LIBRARY
@@ -12,9 +12,9 @@ Standard C library
.SH SYNOPSIS
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
-.B "#define _FILE_OFFSET_BITS 64
+.B #define _FILE_OFFSET_BITS 64
.B #include <fcntl.h>
-.PP
+.P
.BI "ssize_t splice(int " fd_in ", off_t *_Nullable " off_in ,
.BI " int " fd_out ", off_t *_Nullable " off_out ,
.BI " size_t " len ", unsigned int " flags );
@@ -31,7 +31,7 @@ bytes of data from the file descriptor
to the file descriptor
.IR fd_out ,
where one of the file descriptors must refer to a pipe.
-.PP
+.P
The following semantics apply for
.I fd_in
and
@@ -64,12 +64,12 @@ offset from which bytes will be read from
in this case, the file offset of
.I fd_in
is not changed.
-.PP
+.P
Analogous statements apply for
.I fd_out
and
.IR off_out .
-.PP
+.P
The
.I flags
argument is a bit mask that is composed by ORing together
@@ -121,14 +121,14 @@ Upon successful completion,
.BR splice ()
returns the number of bytes
spliced to or from the pipe.
-.PP
+.P
A return value of 0 means end of input.
If
.I fd_in
refers to a pipe, then this means that there was no data to transfer,
and it would not make sense to block because there are no writers
connected to the write end of the pipe.
-.PP
+.P
On error,
.BR splice ()
returns \-1 and
@@ -182,7 +182,7 @@ Linux.
.SH HISTORY
Linux 2.6.17,
glibc 2.5.
-.PP
+.P
In Linux 2.6.30 and earlier,
exactly one of
.I fd_in
@@ -212,7 +212,7 @@ or from one buffer to another.
.TP
.BR vmsplice (2)
"copies" data from user space into the buffer.
-.PP
+.P
Though we talk of copying, actual copies are generally avoided.
The kernel does this by implementing a pipe buffer as a set
of reference-counted pointers to pages of kernel memory.
@@ -243,7 +243,7 @@ only pointers are copied, not the pages of the buffer.
.\" the data and choose to forward it to two or more different
.\" users - for things like logging etc.).
.\"
-.PP
+.P
.B _FILE_OFFSET_BITS
should be defined to be 64 in code that uses non-null
.I off_in
diff --git a/man2/spu_create.2 b/man2/spu_create.2
index 36d1bbd..38efa2c 100644
--- a/man2/spu_create.2
+++ b/man2/spu_create.2
@@ -8,7 +8,7 @@
.\" 2007-07-10, some polishing by mtk
.\" 2007-09-28, updates for newer kernels by Jeremy Kerr <jk@ozlabs.org>
.\"
-.TH spu_create 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH spu_create 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
spu_create \- create a new spu context
.SH LIBRARY
@@ -19,12 +19,12 @@ Standard C library
.BR "#include <sys/spu.h>" " /* Definition of " SPU_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_spu_create, const char *" pathname \
", unsigned int " flags ,
.BI " mode_t " mode ", int " neighbor_fd );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR spu_create (),
@@ -49,7 +49,7 @@ is successful, a directory is created at
.I pathname
and it is populated with the files described in
.BR spufs (7).
-.PP
+.P
When a context is created,
the returned file descriptor can only be passed to
.BR spu_run (2),
@@ -68,7 +68,7 @@ directory) once the last reference to the context has gone;
this usually occurs when the file descriptor returned by
.BR spu_create ()
is closed.
-.PP
+.P
The
.I mode
argument (minus any bits set in the process's
@@ -80,13 +80,13 @@ See
for a full list of the possible
.I mode
values.
-.PP
+.P
The
.I neighbor_fd
is used only when the
.B SPU_CREATE_AFFINITY_SPU
flag is specified; see below.
-.PP
+.P
The
.I flags
argument can be zero or any bitwise OR-ed
@@ -248,7 +248,7 @@ By convention, it gets mounted in
Linux on PowerPC.
.SH HISTORY
Linux 2.6.16.
-.PP
+.P
Prior to the addition of the
.B SPU_CREATE_AFFINITY_SPU
flag in Linux 2.6.23, the
diff --git a/man2/spu_run.2 b/man2/spu_run.2
index 0a9d229..5b70753 100644
--- a/man2/spu_run.2
+++ b/man2/spu_run.2
@@ -9,7 +9,7 @@
.\" 2007-09-28, updates for newer kernels, added example
.\" by Jeremy Kerr <jk@ozlabs.org>
.\"
-.TH spu_run 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH spu_run 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
spu_run \- execute an SPU context
.SH LIBRARY
@@ -20,11 +20,11 @@ Standard C library
.BR "#include <sys/spu.h>" " /* Definition of " SPU_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_spu_run, int " fd ", uint32_t *" npc \
", uint32_t *" event );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR spu_run (),
@@ -44,7 +44,7 @@ that refers to a specific SPU context.
When the context gets scheduled to a physical SPU,
it starts execution at the instruction pointer passed in
.IR npc .
-.PP
+.P
Execution of SPU code happens synchronously, meaning that
.BR spu_run ()
blocks while the SPU is still running.
@@ -53,7 +53,7 @@ to execute SPU code in parallel with other code on either the
main CPU or other SPUs, a new thread of execution must be created
first (e.g., using
.BR pthread_create (3)).
-.PP
+.P
When
.BR spu_run ()
returns, the current value of the SPU program counter is written to
@@ -63,7 +63,7 @@ so successive calls to
can use the same
.I npc
pointer.
-.PP
+.P
The
.I event
argument provides a buffer for an extended status code.
@@ -73,7 +73,7 @@ context was created with the
flag, then this buffer is populated by the Linux kernel before
.BR spu_run ()
returns.
-.PP
+.P
The status code may be one (or more) of the following constants:
.TP
.B SPE_EVENT_DMA_ALIGNMENT
@@ -89,7 +89,7 @@ A DMA storage error occurred.
.TP
.B SPE_EVENT_SPE_ERROR
An illegal instruction was executed.
-.PP
+.P
NULL
is a valid value for the
.I event
@@ -104,7 +104,7 @@ register.
On failure, it returns \-1 and sets
.I errno
is set to indicate the error.
-.PP
+.P
The
.I spu_status
register value is a bit mask of status codes and
@@ -141,7 +141,7 @@ The bits masked with this value contain the code returned from a
.B stop-and-signal
instruction.
These bits are valid only if the 0x02 bit is set.
-.PP
+.P
If
.BR spu_run ()
has not returned an error, one or more bits among the lower eight
@@ -198,7 +198,7 @@ The following is an example of running a simple, one-instruction SPU
program with the
.BR spu_run ()
system call.
-.PP
+.P
.\" SRC BEGIN (spu_run.c)
.EX
#include <err.h>
diff --git a/man2/stat.2 b/man2/stat.2
index f41daab..bb813ff 100644
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -16,7 +16,7 @@
.\" 2007-06-08 mtk: Added example program
.\" 2007-07-05 mtk: Added details on underlying system call interfaces
.\"
-.TH stat 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH stat 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
stat, fstat, lstat, fstatat \- get file status
.SH LIBRARY
@@ -25,25 +25,25 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/stat.h>
-.PP
+.P
.BI "int stat(const char *restrict " pathname ,
.BI " struct stat *restrict " statbuf );
.BI "int fstat(int " fd ", struct stat *" statbuf );
.BI "int lstat(const char *restrict " pathname ,
.BI " struct stat *restrict " statbuf );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int fstatat(int " dirfd ", const char *restrict " pathname ,
.BI " struct stat *restrict " statbuf ", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR lstat ():
.nf
/* Since glibc 2.20 */ _DEFAULT_SOURCE
@@ -52,7 +52,7 @@ Feature Test Macro Requirements for glibc (see
|| /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200112L
|| /* glibc 2.19 and earlier */ _BSD_SOURCE
.fi
-.PP
+.P
.BR fstatat ():
.nf
Since glibc 2.10:
@@ -71,7 +71,7 @@ and
(search) permission is required on all of the directories in
.I pathname
that lead to the file.
-.PP
+.P
.BR stat ()
and
.BR fstatat ()
@@ -80,7 +80,7 @@ retrieve information about the file pointed to by
the differences for
.BR fstatat ()
are described below.
-.PP
+.P
.BR lstat ()
is identical to
.BR stat (),
@@ -88,7 +88,7 @@ except that if
.I pathname
is a symbolic link, then it returns information about the link itself,
not the file that the link refers to.
-.PP
+.P
.BR fstat ()
is identical to
.BR stat (),
@@ -101,7 +101,7 @@ All of these system calls return a
.I stat
structure (see
.BR stat (3type)).
-.PP
+.P
.\" Background: inode attributes are modified with i_mutex held, but
.\" read by stat() without taking the mutex.
.IR Note :
@@ -135,7 +135,7 @@ which can still provide exactly the behavior of each of
.BR lstat (),
and
.BR fstat ().
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -147,7 +147,7 @@ the calling process, as is done by
and
.BR lstat ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
@@ -161,13 +161,13 @@ directory of the calling process (like
.BR stat ()
and
.BR lstat ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
.I flags
can either be 0, or include one or more of the following flags ORed:
.TP
@@ -214,7 +214,7 @@ instead return information about the link itself, like
.BR fstatat ()
dereferences symbolic links, like
.BR stat ().)
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -329,7 +329,7 @@ SVr4, 4.3BSD, POSIX.1-2001.
POSIX.1-2008.
Linux 2.6.16,
glibc 2.4.
-.PP
+.P
According to POSIX.1-2001,
.BR lstat ()
on a symbolic link need return valid information only in the
@@ -343,7 +343,7 @@ POSIX.1-2008 tightens the specification, requiring
.BR lstat ()
to return valid information in all fields except the mode bits in
.IR st_mode .
-.PP
+.P
Use of the
.I st_blocks
and
@@ -377,7 +377,7 @@ Similar remarks apply for
.BR fstat ()
and
.BR lstat ().
-.PP
+.P
The kernel-internal versions of the
.I stat
structure dealt with by the different versions are, respectively:
@@ -404,7 +404,7 @@ and various other enlarged fields and further padding in the structure.
(Various padding bytes were eventually consumed in Linux 2.6,
with the advent of 32-bit device IDs and nanosecond components
for the timestamp fields.)
-.PP
+.P
The glibc
.BR stat ()
wrapper function hides these details from applications,
@@ -438,13 +438,13 @@ and repacking the returned information if required for old binaries.
.\" interface, rather than the libc-kernel interface.
.\"
.\" (Note that the details depend on gcc being used as c compiler.)
-.PP
+.P
On modern 64-bit systems, life is simpler: there is a single
.BR stat ()
system call and the kernel deals with a
.I stat
structure that contains fields of a sufficient size.
-.PP
+.P
The underlying system call employed by the glibc
.BR fstatat ()
wrapper function is actually called
@@ -458,7 +458,7 @@ The following program calls
and displays selected fields in the returned
.I stat
structure.
-.PP
+.P
.\" SRC BEGIN (stat.c)
.EX
#include <stdint.h>
diff --git a/man2/statfs.2 b/man2/statfs.2
index 26dad7c..df633ae 100644
--- a/man2/statfs.2
+++ b/man2/statfs.2
@@ -5,7 +5,7 @@
.\" Modified 2003-08-17 by Walter Harms
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH statfs 2 2023-07-18 "Linux man-pages 6.05.01"
+.TH statfs 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
statfs, fstatfs \- get filesystem statistics
.SH LIBRARY
@@ -14,11 +14,11 @@ Standard C library
.SH SYNOPSIS
.nf
.BR "#include <sys/vfs.h> " "/* or <sys/statfs.h> */"
-.PP
+.P
.BI "int statfs(const char *" path ", struct statfs *" buf );
.BI "int fstatfs(int " fd ", struct statfs *" buf );
.fi
-.PP
+.P
Unless you need the
.I f_type
field, you should use the standard
@@ -34,7 +34,7 @@ is the pathname of any file within the mounted filesystem.
is a pointer to a
.I statfs
structure defined approximately as follows:
-.PP
+.P
.in +4n
.EX
struct statfs {
@@ -56,10 +56,10 @@ struct statfs {
};
.EE
.in
-.PP
+.P
The following filesystem types may appear in
.IR f_type :
-.PP
+.P
.in +4n
.EX
ADFS_SUPER_MAGIC 0xadf5
@@ -150,11 +150,11 @@ XFS_SUPER_MAGIC 0x58465342
_XIAFS_SUPER_MAGIC 0x012fd16d /* Linux 2.0 and earlier */
.EE
.in
-.PP
+.P
Most of these MAGIC constants are defined in
.IR /usr/include/linux/magic.h ,
and some are hardcoded in kernel sources.
-.PP
+.P
The
.I f_flags
field is a bit mask indicating mount options for the filesystem.
@@ -201,13 +201,13 @@ in
.\" dab741e0e02bd3c4f5e2e97be74b39df2523fc6e
Symbolic links are not followed when resolving paths; see
.BR mount (2).
-.PP
+.P
Nobody knows what
.I f_fsid
is supposed to contain (but see below).
-.PP
+.P
Fields that are undefined for a particular filesystem are set to 0.
-.PP
+.P
.BR fstatfs ()
returns the same information about an open file referenced by descriptor
.IR fd .
@@ -299,7 +299,7 @@ is defined as
.IR "struct { int val[2]; }" .
The same holds for FreeBSD, except that it uses the include file
.IR <sys/mount.h> .
-.PP
+.P
The general idea is that
.I f_fsid
contains some random stuff such that the pair
@@ -312,7 +312,7 @@ Several operating systems restrict giving out the
field to the superuser only (and zero it for unprivileged users),
because this field is used in the filehandle of the filesystem
when NFS-exported, and giving it out is a security concern.
-.PP
+.P
Under some operating systems, the
.I fsid
can be used as the second argument to the
@@ -325,7 +325,7 @@ The Linux
.BR statfs ()
was inspired by the 4.4BSD one
(but they do not use the same structure).
-.PP
+.P
The original Linux
.BR statfs ()
and
@@ -347,7 +347,7 @@ The glibc
and
.BR fstatfs ()
wrapper functions transparently deal with the kernel differences.
-.PP
+.P
LSB has deprecated the library calls
.BR statfs ()
and
@@ -369,7 +369,7 @@ or compare these fields to local variables in a program.
Using
.I "unsigned\ int"
for such variables suffices on most systems.
-.PP
+.P
Some systems have only \fI<sys/vfs.h>\fP, other systems also have
\fI<sys/statfs.h>\fP, where the former includes the latter.
So it seems
diff --git a/man2/statx.2 b/man2/statx.2
index d7c36b8..ce79da2 100644
--- a/man2/statx.2
+++ b/man2/statx.2
@@ -8,7 +8,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH statx 2 2023-06-01 "Linux man-pages 6.05.01"
+.TH statx 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
statx \- get file status (extended)
.SH LIBRARY
@@ -19,7 +19,7 @@ Standard C library
.BR "#define _GNU_SOURCE " "/* See feature_test_macros(7) */"
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int statx(int " dirfd ", const char *restrict " pathname ", int " flags ,
.BI " unsigned int " mask ", struct statx *restrict " statxbuf );
.fi
@@ -28,7 +28,7 @@ This function returns information about a file, storing it in the buffer
pointed to by
.IR statxbuf .
The returned buffer is a structure of the following type:
-.PP
+.P
.in +4n
.EX
struct statx {
@@ -71,9 +71,9 @@ struct statx {
};
.EE
.in
-.PP
+.P
The file timestamps are structures of the following type:
-.PP
+.P
.in +4n
.EX
struct statx_timestamp {
@@ -82,7 +82,7 @@ struct statx_timestamp {
};
.EE
.in
-.PP
+.P
(Note that reserved space and padding is omitted.)
.SS
Invoking \fBstatx\fR():
@@ -93,7 +93,7 @@ with a pathname,
execute (search) permission is required on all of the directories in
.I pathname
that lead to the file.
-.PP
+.P
.BR statx ()
uses
.IR pathname ,
@@ -147,7 +147,7 @@ flag is specified in
(see below),
then the target file is the one referred to by the file descriptor
.IR dirfd .
-.PP
+.P
.I flags
can be used to influence a pathname-based lookup.
A value for
@@ -202,7 +202,7 @@ If
is a symbolic link, do not dereference it:
instead return information about the link itself, like
.BR lstat (2).
-.PP
+.P
.I flags
can also be used to control what sort of synchronization the kernel will do
when querying a file on a remote filesystem.
@@ -225,7 +225,7 @@ the system has cached if possible.
This may mean that the information returned is approximate, but,
on a network filesystem, it may not involve a round trip to the server - even
if no lease is held.
-.PP
+.P
The
.I mask
argument to
@@ -233,7 +233,7 @@ argument to
is used to tell the kernel which fields the caller is interested in.
.I mask
is an ORed combination of the following constants:
-.PP
+.P
.in +4n
.TS
lB l.
@@ -257,7 +257,7 @@ STATX_DIOALIGN Want stx_dio_mem_align and stx_dio_offset_align
(since Linux 6.1; support varies by filesystem)
.TE
.in
-.PP
+.P
Note that, in general, the kernel does
.I not
reject values in
@@ -293,7 +293,7 @@ has the same format as the
.I mask
argument and bits are set in it to indicate
which fields have been filled in.
-.PP
+.P
It should be noted that the kernel may return fields that weren't
requested and may fail to return fields that were requested,
depending on what the backing filesystem supports.
@@ -302,7 +302,7 @@ In either case,
.I stx_mask
will not be equal
.IR mask .
-.PP
+.P
If a filesystem does not support a field or if it has
an unrepresentable value (for instance, a file with an exotic type),
then the mask bit corresponding to that field will be cleared in
@@ -310,12 +310,12 @@ then the mask bit corresponding to that field will be cleared in
even if the user asked for it and a dummy value will be filled in for
compatibility purposes if one is available (e.g., a dummy UID and GID may be
specified to mount under some circumstances).
-.PP
+.P
A filesystem may also fill in fields that the caller didn't ask for if it has
values for them available and the information is available at no extra cost.
If this happens, the corresponding bits will be set in
.IR stx_mask .
-.PP
+.P
.\" Background: inode attributes are modified with i_mutex held, but
.\" read by stat() without taking the mutex.
.IR Note :
@@ -340,7 +340,7 @@ or the old
.I stx_uid
together with the new
.IR stx_mode .
-.PP
+.P
Apart from
.I stx_mask
(which is described above), the fields in the
@@ -439,7 +439,7 @@ or 0 if direct I/O is not supported on this file.
This will only be nonzero if
.I stx_dio_mem_align
is nonzero, and vice versa.
-.PP
+.P
For further information on the above fields, see
.BR inode (7).
.\"
@@ -455,7 +455,7 @@ The bits in
.I stx_attributes_mask
correspond bit-by-bit to
.IR stx_attributes .
-.PP
+.P
The flags are as follows:
.TP
.B STATX_ATTR_COMPRESSED
diff --git a/man2/stime.2 b/man2/stime.2
index e4d1a38..1337889 100644
--- a/man2/stime.2
+++ b/man2/stime.2
@@ -7,21 +7,21 @@
.\" Modified 2001-03-16 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH stime 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH stime 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
stime \- set time
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
+.P
.BI "[[deprecated]] int stime(const time_t *" t );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR stime ():
.nf
Since glibc 2.19:
@@ -35,7 +35,7 @@ This function is deprecated;
use
.BR clock_settime (2)
instead.
-.PP
+.P
.BR stime ()
sets the system's idea of the time and date.
The time, pointed
@@ -62,7 +62,7 @@ privilege is required.
None.
.SH HISTORY
SVr4.
-.PP
+.P
Starting with glibc 2.31,
this function is no longer available to newly linked applications
and is no longer declared in
diff --git a/man2/subpage_prot.2 b/man2/subpage_prot.2
index 4309a7d..aaeb883 100644
--- a/man2/subpage_prot.2
+++ b/man2/subpage_prot.2
@@ -7,7 +7,7 @@
.\" in Linux commit fa28237cfcc5827553044cbd6ee52e33692b0faa
.\" both written by Paul Mackerras <paulus@samba.org>
.\"
-.TH subpage_prot 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH subpage_prot 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
subpage_prot \- define a subpage protection for an address range
.SH LIBRARY
@@ -17,11 +17,11 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_subpage_prot, unsigned long " addr ", unsigned long " len ,
.BI " uint32_t *" map );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR subpage_prot (),
@@ -33,14 +33,14 @@ The PowerPC-specific
system call provides the facility to control the access
permissions on individual 4\ kB subpages on systems configured with
a page size of 64\ kB.
-.PP
+.P
The protection map is applied to the memory pages in the region starting at
.I addr
and continuing for
.I len
bytes.
Both of these arguments must be aligned to a 64-kB boundary.
-.PP
+.P
The protection map is specified in the buffer pointed to by
.IR map .
The map has 2 bits per 4\ kB subpage;
@@ -80,7 +80,7 @@ Out of memory.
Linux.
.SH HISTORY
Linux 2.6.25 (PowerPC).
-.PP
+.P
The system call is provided only if the kernel is configured with
.BR CONFIG_PPC_64K_PAGES .
.SH NOTES
@@ -113,6 +113,6 @@ hardware pages (on machines with hardware 64-kB page support).
.SH SEE ALSO
.BR mprotect (2),
.BR syscall (2)
-.PP
+.P
.I Documentation/admin\-guide/mm/hugetlbpage.rst
in the Linux kernel source tree
diff --git a/man2/swapon.2 b/man2/swapon.2
index 400f609..87bd6a0 100644
--- a/man2/swapon.2
+++ b/man2/swapon.2
@@ -22,7 +22,7 @@
.\" Author: Rafael Aquini <aquini@redhat.com>
.\" Date: Wed Jul 3 15:02:46 2013 -0700
.\"
-.TH swapon 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH swapon 2 2023-12-22 "Linux man-pages 6.7"
.SH NAME
swapon, swapoff \- start/stop swapping to file/device
.SH LIBRARY
@@ -31,7 +31,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/swap.h>
-.PP
+.P
.BI "int swapon(const char *" path ", int " swapflags );
.BI "int swapoff(const char *" path );
.fi
@@ -42,7 +42,7 @@ sets the swap area to the file or block device specified by
.BR swapoff ()
stops swapping to the file or block device specified by
.IR path .
-.PP
+.P
If the
.B SWAP_FLAG_PREFER
flag is specified in the
@@ -52,13 +52,13 @@ argument, the new swap area will have a higher priority than default.
The priority is encoded within
.I swapflags
as:
-.PP
+.P
.in +4n
.EX
.I "(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK"
.EE
.in
-.PP
+.P
If the
.B SWAP_FLAG_DISCARD
flag is specified in the
@@ -69,7 +69,7 @@ if the swap device supports the discard or trim operation.
(This may improve performance on some Solid State Devices,
but often it does not.)
See also NOTES.
-.PP
+.P
These functions may be used only by a privileged process (one having the
.B CAP_SYS_ADMIN
capability).
@@ -78,13 +78,13 @@ Each swap area has a priority, either high or low.
The default priority is low.
Within the low-priority areas,
newer areas are even lower priority than older areas.
-.PP
+.P
All priorities set with
.I swapflags
are high-priority, higher than default.
They may have any nonnegative value chosen by the caller.
Higher numbers mean higher priority.
-.PP
+.P
Swap pages are allocated from areas in priority order,
highest priority first.
For areas with different priorities,
@@ -92,7 +92,7 @@ a higher-priority area is exhausted before using a lower-priority area.
If two or more areas have the same priority,
and it is the highest priority available,
pages are allocated on a round-robin basis between them.
-.PP
+.P
As of Linux 1.3.6, the kernel usually follows these rules,
but there are exceptions.
.SH RETURN VALUE
@@ -156,7 +156,7 @@ argument was introduced in Linux 1.3.2.
.SH NOTES
The partition or path must be prepared with
.BR mkswap (8).
-.PP
+.P
There is an upper limit on the number of swap files that may be used,
defined by the kernel constant
.BR MAX_SWAPFILES .
@@ -164,7 +164,8 @@ Before Linux 2.4.10,
.B MAX_SWAPFILES
has the value 8;
since Linux 2.4.10, it has the value 32.
-Since Linux 2.6.18, the limit is decreased by 2 (thus: 30)
+Since Linux 2.6.18, the limit is decreased by 2 (thus 30),
+since Linux 5.19, the limit is decreased by 3 (thus: 29)
if the kernel is built with the
.B CONFIG_MIGRATION
option
@@ -180,7 +181,11 @@ Since Linux 5.14, the limit is further decreased by 4
if the kernel is built with the
.B CONFIG_DEVICE_PRIVATE
option.
-.PP
+Since Linux 5.19, the limit is further decreased by 1
+if the kernel is built with the
+.B CONFIG_PTE_MARKER
+option.
+.P
Discard of swap pages was introduced in Linux 2.6.29,
then made conditional
on the
diff --git a/man2/symlink.2 b/man2/symlink.2
index dd87f2d..37db3c8 100644
--- a/man2/symlink.2
+++ b/man2/symlink.2
@@ -10,7 +10,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH symlink 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH symlink 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
symlink, symlinkat \- make a new name for a file
.SH LIBRARY
@@ -19,28 +19,28 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int symlink(const char *" target ", const char *" linkpath );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int symlinkat(const char *" target ", int " newdirfd \
", const char *" linkpath );
-.PP
+.P
.fi
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR symlink ():
.nf
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* glibc <= 2.19: */ _BSD_SOURCE
.fi
-.PP
+.P
.BR symlinkat ():
.nf
Since glibc 2.10:
@@ -54,20 +54,20 @@ creates a symbolic link named
.I linkpath
which contains the string
.IR target .
-.PP
+.P
Symbolic links are interpreted at run time as if the contents of the
link had been substituted into the path being followed to find a file or
directory.
-.PP
+.P
Symbolic links may contain
.I ..
path components, which (if used at the start of the link) refer to the
parent directories of that in which the link resides.
-.PP
+.P
A symbolic link (also known as a soft link) may point to an existing
file or to a nonexistent one; the latter case is known as a dangling
link.
-.PP
+.P
The permissions of a symbolic link are irrelevant; the ownership is
ignored when following the link
(except when the
@@ -79,7 +79,7 @@ renaming of the link is requested and the link is in a directory with
the sticky bit
.RB ( S_ISVTX )
set.
-.PP
+.P
If
.I linkpath
exists, it will
@@ -91,7 +91,7 @@ The
system call operates in exactly the same way as
.BR symlink (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I linkpath
is relative, then it is interpreted relative to the directory
@@ -101,7 +101,7 @@ referred to by the file descriptor
the calling process, as is done by
.BR symlink ()
for a relative pathname).
-.PP
+.P
If
.I linkpath
is relative and
@@ -113,13 +113,13 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR symlink ()).
-.PP
+.P
If
.I linkpath
is absolute, then
.I newdirfd
is ignored.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -246,7 +246,7 @@ argument.
No checking of
.I target
is done.
-.PP
+.P
Deleting the name referred to by a symbolic link will actually delete the
file (unless it also has other hard links).
If this behavior is not desired, use
diff --git a/man2/sync.2 b/man2/sync.2
index 21f01d7..a556c8e 100644
--- a/man2/sync.2
+++ b/man2/sync.2
@@ -13,7 +13,7 @@
.\" Modified 2001-10-10 by aeb, following Michael Kerrisk.
.\" 2011-09-07, mtk, Added syncfs() documentation,
.\"
-.TH sync 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sync 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sync, syncfs \- commit filesystem caches to disk
.SH LIBRARY
@@ -22,17 +22,17 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B void sync(void);
-.PP
+.P
.BI "int syncfs(int " fd );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR sync ():
.nf
_XOPEN_SOURCE >= 500
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE
.fi
-.PP
+.P
.BR syncfs ():
.nf
_GNU_SOURCE
@@ -49,7 +49,7 @@ Feature Test Macro Requirements for glibc (see
.BR sync ()
causes all pending modifications to filesystem metadata and cached file
data to be written to the underlying filesystems.
-.PP
+.P
.BR syncfs ()
is like
.BR sync (),
@@ -65,7 +65,7 @@ to indicate the error.
.SH ERRORS
.BR sync ()
is always successful.
-.PP
+.P
.BR syncfs ()
can fail for at least the following reasons:
.TP
@@ -81,7 +81,9 @@ metadata related to the filesystem itself.
.B ENOSPC
Disk space was exhausted while synchronizing.
.TP
-.BR ENOSPC ", " EDQUOT
+.B ENOSPC
+.TQ
+.B EDQUOT
Data was written to a file on NFS or another filesystem which does not
allocate space at the time of a
.BR write (2)
@@ -116,7 +118,7 @@ POSIX.1-2001, SVr4, 4.3BSD.
.BR syncfs ()
Linux 2.6.39,
glibc 2.14.
-.PP
+.P
Since glibc 2.2.2, the Linux prototype for
.BR sync ()
is as listed above,
@@ -125,7 +127,7 @@ In glibc 2.2.1 and earlier,
it was "int sync(void)", and
.BR sync ()
always returned 0.
-.PP
+.P
In mainline kernel versions prior to Linux 5.8,
.BR syncfs ()
will fail only when passed a bad file descriptor
diff --git a/man2/sync_file_range.2 b/man2/sync_file_range.2
index f324f75..becef29 100644
--- a/man2/sync_file_range.2
+++ b/man2/sync_file_range.2
@@ -7,7 +7,7 @@
.\" Andrew Morton's comments in fs/sync.c
.\" 2010-10-09, mtk, Document sync_file_range2()
.\"
-.TH sync_file_range 2 2023-07-15 "Linux man-pages 6.05.01"
+.TH sync_file_range 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sync_file_range \- sync a file segment with disk
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #define _FILE_OFFSET_BITS 64
.B #include <fcntl.h>
-.PP
+.P
.BI "int sync_file_range(int " fd ", off_t " offset ", off_t " nbytes ,
.BI " unsigned int " flags );
.fi
@@ -28,7 +28,7 @@ permits fine control when synchronizing the open file referred to by the
file descriptor
.I fd
with disk.
-.PP
+.P
.I offset
is the starting byte of the file range to be synchronized.
.I nbytes
@@ -42,7 +42,7 @@ Synchronization is in units of the system page size:
is rounded down to a page boundary;
.I (offset+nbytes\-1)
is rounded up to a page boundary.
-.PP
+.P
The
.I flags
bit-mask argument can include any of the following values:
@@ -61,7 +61,7 @@ write more than request queue size.
.B SYNC_FILE_RANGE_WAIT_AFTER
Wait upon write-out of all pages in the range
after performing any write.
-.PP
+.P
Specifying
.I flags
as 0 is permitted, as a no-op.
@@ -89,7 +89,7 @@ will detect any
I/O errors or
.B ENOSPC
conditions and will return these to the caller.
-.PP
+.P
Useful combinations of the
.I flags
bits are:
@@ -173,14 +173,14 @@ arguments.
for details.)
Therefore, these architectures define a different
system call that orders the arguments suitably:
-.PP
+.P
.in +4n
.EX
.BI "int sync_file_range2(int " fd ", unsigned int " flags ,
.BI " off_t " offset ", off_t " nbytes );
.EE
.in
-.PP
+.P
The behavior of this system call is otherwise exactly the same as
.BR sync_file_range ().
.SH STANDARDS
diff --git a/man2/syscall.2 b/man2/syscall.2
index 43f054a..01229e8 100644
--- a/man2/syscall.2
+++ b/man2/syscall.2
@@ -12,7 +12,7 @@
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
.\" Added mips and arm64.
.\"
-.TH syscall 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH syscall 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
syscall \- indirect system call
.SH LIBRARY
@@ -22,15 +22,15 @@ Standard C library
.nf
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "long syscall(long " number ", ...);"
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR syscall ():
.nf
Since glibc 2.19:
@@ -49,13 +49,13 @@ Employing
.BR syscall ()
is useful, for example,
when invoking a system call that has no wrapper function in the C library.
-.PP
+.P
.BR syscall ()
saves CPU registers before making the system call,
restores the registers upon return from the system call,
and stores any error returned by the system call in
.BR errno (3).
-.PP
+.P
Symbolic constants for system call numbers can be found in the header file
.IR <sys/syscall.h> .
.SH RETURN VALUE
@@ -68,7 +68,7 @@ and an error number is stored in
.TP
.B ENOSYS
The requested system call number is not implemented.
-.PP
+.P
Other errors are specific to the invoked system call.
.SH NOTES
.BR syscall ()
@@ -85,7 +85,7 @@ However, when using
to make a system call,
the caller might need to handle architecture-dependent details;
this requirement is most commonly encountered on certain 32-bit architectures.
-.PP
+.P
For example, on the ARM architecture Embedded ABI (EABI), a
64-bit value (e.g.,
.IR "long long" )
@@ -97,7 +97,7 @@ the
.BR readahead (2)
system call would be invoked as follows on the ARM architecture with the EABI
in little endian mode:
-.PP
+.P
.in +4n
.EX
syscall(SYS_readahead, fd, 0,
@@ -106,7 +106,7 @@ syscall(SYS_readahead, fd, 0,
count);
.EE
.in
-.PP
+.P
Since the offset argument is 64 bits, and the first argument
.RI ( fd )
is passed in
@@ -120,16 +120,16 @@ That means inserting a dummy value into
(the second argument of 0).
Care also must be taken so that the split follows endian conventions
(according to the C ABI for the platform).
-.PP
+.P
Similar issues can occur on MIPS with the O32 ABI,
on PowerPC and parisc with the 32-bit ABI, and on Xtensa.
.\" Mike Frysinger: this issue ends up forcing MIPS
.\" O32 to take 7 arguments to syscall()
-.PP
+.P
.\" See arch/parisc/kernel/sys_parisc.c.
Note that while the parisc C ABI also uses aligned register pairs,
it uses a shim layer to hide the issue from user space.
-.PP
+.P
The affected system calls are
.BR fadvise64_64 (2),
.BR ftruncate64 (2),
@@ -140,7 +140,7 @@ The affected system calls are
.BR sync_file_range (2),
and
.BR truncate64 (2).
-.PP
+.P
.\" You need to look up the syscalls directly in the kernel source to see if
.\" they should be in this list. For example, look at fs/read_write.c and
.\" the function signatures that do:
@@ -159,7 +159,7 @@ Welcome to the wonderful world of historical baggage.
Every architecture has its own way of invoking and passing arguments to the
kernel.
The details for various architectures are listed in the two tables below.
-.PP
+.P
The first table lists the instruction used to transition to kernel mode
(which might not be the fastest or best way to transition to the kernel,
so you might have to refer to
@@ -202,7 +202,7 @@ x86-64 syscall rax rax rdx - 5
x32 syscall rax rax rdx - 5
xtensa syscall a2 a2 - -
.TE
-.PP
+.P
Notes:
.IP \[bu] 3
On a few architectures,
@@ -292,7 +292,7 @@ in the system call interface, even if it is defined in the System V ABI.
.in
.ft P
\}
-.PP
+.P
The second table shows the registers used to pass the system call arguments.
.if t \{\
.ft CW
@@ -329,7 +329,7 @@ x86-64 rdi rsi rdx r10 r8 r9 -
x32 rdi rsi rdx r10 r8 r9 -
xtensa a6 a3 a4 a5 a8 a9 -
.TE
-.PP
+.P
Notes:
.IP \[bu] 3
The mips/o32 system call convention passes
@@ -338,7 +338,7 @@ arguments 5 through 8 on the user stack.
.in
.ft P
\}
-.PP
+.P
Note that these tables don't cover the entire calling convention\[em]some
architectures may indiscriminately clobber other registers not listed here.
.SH EXAMPLES
diff --git a/man2/syscalls.2 b/man2/syscalls.2
index 1011c14..09535aa 100644
--- a/man2/syscalls.2
+++ b/man2/syscalls.2
@@ -9,7 +9,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH syscalls 2 2023-07-30 "Linux man-pages 6.05.01"
+.TH syscalls 2 2024-02-18 "Linux man-pages 6.7"
.SH NAME
syscalls \- Linux system calls
.SH SYNOPSIS
@@ -29,7 +29,7 @@ as the name of the system call that it invokes.
For example, glibc contains a function
.BR chdir ()
which invokes the underlying "chdir" system call.
-.PP
+.P
Often the glibc wrapper function is quite thin, doing little work
other than copying arguments to the right registers
before invoking the system call,
@@ -49,7 +49,7 @@ the wrapper function negates the returned error number
(to make it positive), copies it to
.IR errno ,
and returns \-1 to the caller of the wrapper.
-.PP
+.P
Sometimes, however, the wrapper function does some extra work
before invoking the system call.
For example, nowadays there are (for reasons described below) two
@@ -76,8 +76,8 @@ the system call appeared in Linux 1.0 or earlier.
Where a system call is marked "1.2"
this means the system call probably appeared in a Linux 1.1.x kernel version,
and first appeared in a stable kernel with 1.2.
-(Development of the 1.2 kernel was initiated from a branch of kernel
-1.0.6 via the 1.1.x unstable kernel series.)
+(Development of the Linux 1.2 kernel was initiated from a branch of
+Linux 1.0.6 via the Linux 1.1.x unstable kernel series.)
.IP \[bu]
Where a system call is marked "2.0"
this means the system call probably appeared in a Linux 1.3.x kernel version,
@@ -98,7 +98,7 @@ via the Linux 1.3.x unstable kernel series.)
Where a system call is marked "2.2"
this means the system call probably appeared in a Linux 2.1.x kernel version,
and first appeared in a stable kernel with Linux 2.2.0.
-(Development of the Linux 2.2 kernel was initiated from a branch of kernel
+(Development of the Linux 2.2 kernel was initiated from a branch of
Linux 2.0.21 via the Linux 2.1.x unstable kernel series.)
.IP \[bu]
Where a system call is marked "2.4"
@@ -120,7 +120,8 @@ is shown.
This convention continues with the Linux 3.x kernel series,
which followed on from Linux 2.6.39; and the Linux 4.x kernel series,
which followed on from Linux 3.19; and the Linux 5.x kernel series,
-which followed on from Linux 4.20.
+which followed on from Linux 4.20; and the Linux 6.x kernel series,
+which followed on from Linux 5.19.
.IP \[bu]
In some cases, a system call was added to a stable kernel
series after it branched from the previous stable kernel
@@ -129,19 +130,19 @@ For example some system calls that appeared in Linux 2.6.x were also backported
into a Linux 2.4.x release after Linux 2.4.15.
When this is so, the version where the system call appeared
in both of the major kernel series is listed.
-.PP
+.P
The list of system calls that are available as at Linux 5.14
(or in a few cases only on older kernels) is as follows:
+.P
.\"
.\" Looking at scripts/checksyscalls.sh in the kernel source is
.\" instructive about x86 specifics.
.\"
.TS
-l2 le l
----
-l l l.
-\fBSystem call\fP \fBKernel\fP \fBNotes\fP
-
+Lb Lb Lb
+L2 L L.
+System call Kernel Notes
+_
\fB_llseek\fP(2) 1.2
\fB_newselect\fP(2) 2.0
\fB_sysctl\fP(2) 2.0 Removed in 5.5
@@ -832,13 +833,13 @@ T}
.\" 5a0015d62668e64c8b6e02e360fbbea121bfd5e6
\fBxtensa\fP(2) 2.6.13 Xtensa only
.TE
-.PP
+.P
On many platforms, including x86-32, socket calls are all multiplexed
(via glibc wrapper functions) through
.BR socketcall (2)
and similarly System\ V IPC calls are multiplexed through
.BR ipc (2).
-.PP
+.P
Although slots are reserved for them in the system call table,
the following system calls are not implemented in the standard kernel:
.BR afs_syscall (2), \" __NR_afs_syscall is 53 on Linux 2.6.22/i386
@@ -883,7 +884,7 @@ and
.BR putpmsg (2)
calls are for kernels patched to support STREAMS,
and may never be in the standard kernel.
-.PP
+.P
There was briefly
.BR set_zone_reclaim (2),
added in Linux 2.6.13, and removed in Linux 2.6.16;
@@ -967,7 +968,7 @@ proprietary operating-system emulation,
such as sparc, sparc64, and alpha,
there are many additional system calls; mips64 also contains a full
set of 32-bit system calls.
-.PP
+.P
Over time, changes to the interfaces of some system calls have been
necessary.
One reason for such changes was the need to increase the size of
@@ -984,7 +985,7 @@ details such as the size of their arguments.
the glibc wrapper functions do some work to ensure that the right
system call is invoked, and that ABI compatibility is
preserved for old binaries.)
-Examples of systems calls that exist in multiple versions are
+Examples of system calls that exist in multiple versions are
the following:
.IP \[bu] 3
By now there are three different versions of
@@ -1111,7 +1112,7 @@ and similarly
.IR __NR_mmap2 .
s390x is the only 64-bit architecture that has
.IR old_mmap ().
-.\" .PP
+.\" .P
.\" Two system call numbers,
.\" .IR __NR__llseek
.\" and
diff --git a/man2/sysctl.2 b/man2/sysctl.2
index fbe967f..082545e 100644
--- a/man2/sysctl.2
+++ b/man2/sysctl.2
@@ -7,27 +7,27 @@
.\" Modified Tue Oct 22 22:28:41 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Mon Jan 5 20:31:04 1998 by aeb.
.\"
-.TH sysctl 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH sysctl 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sysctl \- read/write system parameters
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.B #include <linux/sysctl.h>
-.PP
+.P
.BI "[[deprecated]] int _sysctl(struct __sysctl_args *" args );
.fi
.SH DESCRIPTION
.B This system call no longer exists on current kernels!
See NOTES.
-.PP
+.P
The
.BR _sysctl ()
call reads and/or writes kernel parameters.
For example, the hostname,
or the maximum number of open files.
The argument has the form
-.PP
+.P
.in +4n
.EX
struct __sysctl_args {
@@ -41,7 +41,7 @@ struct __sysctl_args {
};
.EE
.in
-.PP
+.P
This call does a search in a tree structure, possibly resembling
a directory tree under
.IR /proc/sys ,
@@ -56,7 +56,9 @@ Otherwise, a value of \-1 is returned and
is set to indicate the error.
.SH ERRORS
.TP
-.BR EACCES ", " EPERM
+.B EACCES
+.TQ
+.B EPERM
No search permission for one of the encountered "directories",
or no read permission where
.I oldval
@@ -78,7 +80,7 @@ Linux.
.SH HISTORY
Linux 1.3.57.
Removed in Linux 5.5, glibc 2.32.
-.PP
+.P
It originated in
4.4BSD.
Only Linux has the
@@ -95,7 +97,7 @@ and in Linux 5.5, the system call was finally removed.
Use the
.I /proc/sys
interface instead.
-.PP
+.P
Note that on older kernels where this system call still exists,
it is available only if the kernel was configured with the
.B CONFIG_SYSCTL_SYSCALL
@@ -106,9 +108,9 @@ necessitating the use of
.SH BUGS
The object names vary between kernel versions,
making this system call worthless for applications.
-.PP
+.P
Not all available objects are properly documented.
-.PP
+.P
It is not yet possible to change operating system by writing to
.IR /proc/sys/kernel/ostype .
.SH EXAMPLES
diff --git a/man2/sysfs.2 b/man2/sysfs.2
index d650a9c..06507fd 100644
--- a/man2/sysfs.2
+++ b/man2/sysfs.2
@@ -4,7 +4,7 @@
.\"
.\" Created Wed Aug 9 1995 Thomas K. Dyas <tdyas@eden.rutgers.edu>
.\"
-.TH sysfs 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sysfs 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sysfs \- get filesystem type information
.SH SYNOPSIS
@@ -21,7 +21,7 @@ filesystem that is normally mounted at
.IR /sys ,
see
.BR sysfs (5).
-.PP
+.P
The (obsolete)
.BR sysfs ()
system call returns information about the filesystem types
@@ -51,7 +51,7 @@ has enough space to accept the string.
.B 3
Return the total number of filesystem types currently present in the
kernel.
-.PP
+.P
The numbering of the filesystem type indexes begins with zero.
.SH RETURN VALUE
On success,
@@ -82,7 +82,7 @@ is invalid.
None.
.SH HISTORY
SVr4.
-.PP
+.P
This System-V derived system call is obsolete; don't use it.
On systems with
.IR /proc ,
diff --git a/man2/sysinfo.2 b/man2/sysinfo.2
index fc44136..5566b4b 100644
--- a/man2/sysinfo.2
+++ b/man2/sysinfo.2
@@ -12,7 +12,7 @@
.\" Modified Tue Oct 22 22:29:51 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Mon Aug 25 16:06:11 1997 by Nicolás Lichtmaier <nick@debian.org>
.\"
-.TH sysinfo 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH sysinfo 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
sysinfo \- return system information
.SH LIBRARY
@@ -21,18 +21,18 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/sysinfo.h>
-.PP
+.P
.BI "int sysinfo(struct sysinfo *" info );
.fi
.SH DESCRIPTION
.BR sysinfo ()
returns certain statistics on memory and swap usage,
as well as the load average.
-.PP
+.P
Until Linux 2.3.16,
.BR sysinfo ()
returned information in the following structure:
-.PP
+.P
.in +4n
.EX
struct sysinfo {
@@ -49,13 +49,13 @@ struct sysinfo {
};
.EE
.in
-.PP
+.P
In the above structure, the sizes of the memory and swap fields
are given in bytes.
-.PP
+.P
Since Linux 2.3.23 (i386) and Linux 2.3.48
(all architectures) the structure is:
-.PP
+.P
.in +4n
.EX
struct sysinfo {
@@ -76,7 +76,7 @@ struct sysinfo {
};
.EE
.in
-.PP
+.P
In the above structure,
sizes of the memory and swap fields are given as multiples of
.I mem_unit
diff --git a/man2/syslog.2 b/man2/syslog.2
index 4e90778..a799c82 100644
--- a/man2/syslog.2
+++ b/man2/syslog.2
@@ -10,7 +10,7 @@
.\" 2008-02-15, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Update LOG_BUF_LEN details; update RETURN VALUE section.
.\"
-.TH syslog 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH syslog 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
syslog, klogctl \- read and/or clear kernel message ring buffer;
set console_loglevel
@@ -22,12 +22,12 @@ Standard C library
.BR "#include <sys/klog.h>" " /* Definition of " SYSLOG_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_syslog, int " type ", char *" bufp ", int " len );
-.PP
+.P
/* The glibc interface */
.B #include <sys/klog.h>
-.PP
+.P
.BI "int klogctl(int " type ", char *" bufp ", int " len );
.fi
.SH DESCRIPTION
@@ -39,7 +39,7 @@ which talks to
see
.BR syslog (3)
for details.
-.PP
+.P
This page describes the kernel
.BR syslog ()
system call, which is used to control the kernel
@@ -208,7 +208,7 @@ The
and
.I len
arguments are ignored.
-.PP
+.P
All commands except 3 and 10 require privilege.
In Linux kernels before Linux 2.6.37,
command types 3 and 10 are allowed to unprivileged processes;
@@ -300,7 +300,7 @@ T}
KERN_INFO 6 Informational
KERN_DEBUG 7 Debug-level messages
.TE
-.sp 1
+.P
The kernel
.I printk()
routine will print a message on the
@@ -319,7 +319,7 @@ For \fItype\fP 10,
.BR syslog ()
returns the total size of the kernel log buffer.
For other values of \fItype\fP, 0 is returned on success.
-.PP
+.P
In case of error, \-1 is returned,
and \fIerrno\fP is set to indicate the error.
.SH ERRORS
diff --git a/man2/tee.2 b/man2/tee.2
index 7a3a6b1..e9ae11f 100644
--- a/man2/tee.2
+++ b/man2/tee.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tee 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH tee 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
tee \- duplicating pipe content
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <fcntl.h>
-.PP
+.P
.BI "ssize_t tee(int " fd_in ", int " fd_out ", size_t " len \
", unsigned int " flags );
.fi
@@ -36,7 +36,7 @@ It does not consume the data that is duplicated from
.IR fd_in ;
therefore, that data can be copied by a subsequent
.BR splice (2).
-.PP
+.P
.I flags
is a bit mask that is composed by ORing together
zero or more of the following values:
@@ -72,7 +72,7 @@ A return value of 0 means that there was no data to transfer,
and it would not make sense to block, because there are no
writers connected to the write end of the pipe referred to by
.IR fd_in .
-.PP
+.P
On error,
.BR tee ()
returns \-1 and
@@ -121,7 +121,7 @@ program using the
.BR tee ()
system call.
Here is an example of its use:
-.PP
+.P
.in +4n
.EX
$ \fBdate | ./a.out out.log | cat\fP
diff --git a/man2/time.2 b/man2/time.2
index f121e9c..5ac0bc4 100644
--- a/man2/time.2
+++ b/man2/time.2
@@ -6,7 +6,7 @@
.\" Modified Sat Jul 24 14:13:40 1993 by Rik Faith <faith@cs.unc.edu>
.\" Additions by Joseph S. Myers <jsm28@cam.ac.uk>, 970909
.\"
-.TH time 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH time 2 2023-11-11 "Linux man-pages 6.7"
.SH NAME
time \- get time in seconds
.SH LIBRARY
@@ -15,14 +15,14 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
+.P
.BI "time_t time(time_t *_Nullable " tloc );
.fi
.SH DESCRIPTION
.BR time ()
returns the time as the number of seconds since the
Epoch, 1970-01-01 00:00:00 +0000 (UTC).
-.PP
+.P
If
.I tloc
is non-NULL,
@@ -35,6 +35,17 @@ On error, \fI((time_t)\ \-1)\fP is returned, and
is set to indicate the error.
.SH ERRORS
.TP
+.B EOVERFLOW
+The time cannot be represented as a
+.I time_t
+value.
+This can happen if an executable with 32-bit
+.I time_t
+is run on a 64-bit kernel when the time is 2038-01-19 03:14:08 UTC or later.
+However, when the system time is out of
+.I time_t
+range in other situations, the behavior is undefined.
+.TP
.B EFAULT
.I tloc
points outside your accessible address space (but see BUGS).
@@ -60,29 +71,15 @@ in which case they are leap years.
This value is not the same as the actual number of seconds between the time
and the Epoch, because of leap seconds and because system clocks are not
required to be synchronized to a standard reference.
-The intention is that the interpretation of seconds since the Epoch values be
-consistent; see POSIX.1-2008 Rationale A.4.15 for further rationale.
-.PP
-On Linux, a call to
-.BR time ()
-with
-.I tloc
-specified as NULL cannot fail with the error
-.BR EOVERFLOW ,
-even on ABIs where
-.I time_t
-is a signed 32-bit integer and the clock reaches or exceeds 2**31 seconds
-(2038-01-19 03:14:08 UTC, ignoring leap seconds).
-(POSIX.1 permits, but does not require, the
-.B EOVERFLOW
-error in the case where the seconds since the Epoch will not fit in
-.IR time_t .)
-Instead, the behavior on Linux is undefined when the system time is out of the
-.I time_t
-range.
+Linux systems normally follow the POSIX requirement
+that this value ignore leap seconds,
+so that conforming systems interpret it consistently;
+see POSIX.1-2018 Rationale A.4.16.
+.P
Applications intended to run after 2038 should use ABIs with
.I time_t
-wider than 32 bits.
+wider than 32 bits; see
+.BR time_t (3type).
.SS C library/kernel differences
On some architectures, an implementation of
.BR time ()
@@ -101,7 +98,7 @@ successful reports that the time is a few seconds
the Epoch, so the C library wrapper function never sets
.I errno
as a result of this call.
-.PP
+.P
The
.I tloc
argument is obsolescent and should always be NULL in new code.
diff --git a/man2/timer_create.2 b/man2/timer_create.2
index 3265b27..44d505d 100644
--- a/man2/timer_create.2
+++ b/man2/timer_create.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_create 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH timer_create 2 2023-11-11 "Linux man-pages 6.7"
.SH NAME
timer_create \- create a POSIX per-process timer
.SH LIBRARY
@@ -13,17 +13,17 @@ Real-time library
.nf
.BR "#include <signal.h>" " /* Definition of " SIGEV_* " constants */"
.B #include <time.h>
-.PP
+.P
.BI "int timer_create(clockid_t " clockid ,
.BI " struct sigevent *_Nullable restrict " sevp ,
.BI " timer_t *restrict " timerid );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR timer_create ():
.nf
_POSIX_C_SOURCE >= 199309L
@@ -36,7 +36,7 @@ The ID of the new timer is returned in the buffer pointed to by
which must be a non-null pointer.
This ID is unique within the process, until the timer is deleted.
The new timer is initially disarmed.
-.PP
+.P
The
.I clockid
argument specifies the clock that the new timer uses to measure time.
@@ -96,12 +96,12 @@ The caller must have the
capability in order to set a timer against this clock.
.TP
.BR CLOCK_TAI " (since Linux 3.10)"
-A system-wide clock derived from wall-clock time but ignoring leap seconds.
-.PP
+A system-wide clock derived from wall-clock time but counting leap seconds.
+.P
See
.BR clock_getres (2)
for some further details on the above clocks.
-.PP
+.P
As well as the above values,
.I clockid
can be specified as the
@@ -110,7 +110,7 @@ returned by a call to
.BR clock_getcpuclockid (3)
or
.BR pthread_getcpuclockid (3).
-.PP
+.P
The
.I sevp
argument points to a
@@ -118,8 +118,8 @@ argument points to a
structure that specifies how the caller
should be notified when the timer expires.
For the definition and general details of this structure, see
-.BR sigevent (7).
-.PP
+.BR sigevent (3type).
+.P
The
.I sevp.sigev_notify
field can have the following values:
@@ -134,7 +134,7 @@ Upon timer expiration, generate the signal
.I sigev_signo
for the process.
See
-.BR sigevent (7)
+.BR sigevent (3type)
for general details.
The
.I si_code
@@ -152,7 +152,7 @@ Upon timer expiration, invoke
.I sigev_notify_function
as if it were the start function of a new thread.
See
-.BR sigevent (7)
+.BR sigevent (3type)
for details.
.TP
.BR SIGEV_THREAD_ID " (Linux-specific)"
@@ -168,7 +168,7 @@ field specifies a kernel thread ID, that is, the value returned by
or
.BR gettid (2).
This flag is intended only for use by threading libraries.
-.PP
+.P
Specifying
.I sevp
as NULL is equivalent to specifying a pointer to a
@@ -258,7 +258,7 @@ POSIX.1-2008.
.SH HISTORY
Linux 2.6.
POSIX.1-2001.
-.PP
+.P
Prior to Linux 2.6,
glibc provided an incomplete user-space implementation
.RB ( CLOCK_REALTIME
@@ -270,12 +270,12 @@ running kernels older than Linux 2.6.
.SH NOTES
A program may create multiple interval timers using
.BR timer_create ().
-.PP
+.P
Timers are not inherited by the child of a
.BR fork (2),
and are disarmed and deleted during an
.BR execve (2).
-.PP
+.P
The kernel preallocates a "queued real-time signal"
for each timer created using
.BR timer_create ().
@@ -283,7 +283,7 @@ Consequently, the number of timers is limited by the
.B RLIMIT_SIGPENDING
resource limit (see
.BR setrlimit (2)).
-.PP
+.P
The timers created by
.BR timer_create ()
are commonly known as "POSIX (interval) timers".
@@ -304,7 +304,7 @@ Return the overrun count for the last timer expiration.
.TP
.BR timer_delete (2)
Disarm and delete a timer.
-.PP
+.P
Since Linux 3.10, the
.IR /proc/ pid /timers
file can be used to list the POSIX timers for the process with PID
@@ -312,7 +312,7 @@ file can be used to list the POSIX timers for the process with PID
See
.BR proc (5)
for further information.
-.PP
+.P
Since Linux 4.10,
.\" baa73d9e478ff32d62f3f9422822b59dd9a95a21
support for POSIX timers is a configurable option that is enabled by default.
@@ -331,12 +331,12 @@ Assuming that the timer expired at least once while the program slept,
the signal handler will be invoked,
and the handler displays some information about the timer notification.
The program terminates after one invocation of the signal handler.
-.PP
+.P
In the following example run, the program sleeps for 1 second,
after creating a timer that has a frequency of 100 nanoseconds.
By the time the signal is unblocked and delivered,
there have been around ten million overruns.
-.PP
+.P
.in +4n
.EX
$ \fB./a.out 1 100\fP
@@ -482,6 +482,6 @@ main(int argc, char *argv[])
.BR clock_getcpuclockid (3),
.BR pthread_getcpuclockid (3),
.BR pthreads (7),
-.BR sigevent (7),
+.BR sigevent (3type),
.BR signal (7),
.BR time (7)
diff --git a/man2/timer_delete.2 b/man2/timer_delete.2
index ee1468e..b08d736 100644
--- a/man2/timer_delete.2
+++ b/man2/timer_delete.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_delete 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH timer_delete 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
timer_delete \- delete a POSIX per-process timer
.SH LIBRARY
@@ -12,15 +12,15 @@ Real-time library
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
+.P
.BI "int timer_delete(timer_t " timerid );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR timer_delete ():
.nf
_POSIX_C_SOURCE >= 199309L
diff --git a/man2/timer_getoverrun.2 b/man2/timer_getoverrun.2
index 7521957..0f136b6 100644
--- a/man2/timer_getoverrun.2
+++ b/man2/timer_getoverrun.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_getoverrun 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH timer_getoverrun 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
timer_getoverrun \- get overrun count for a POSIX per-process timer
.SH LIBRARY
@@ -12,15 +12,15 @@ Real-time library
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
+.P
.BI "int timer_getoverrun(timer_t " timerid );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR timer_getoverrun ():
.nf
_POSIX_C_SOURCE >= 199309L
@@ -36,7 +36,7 @@ via signals
.RB ( SIGEV_SIGNAL ),
and via threads
.RB ( SIGEV_THREAD ).
-.PP
+.P
When expiration notifications are delivered via a signal,
overruns can occur as follows.
Regardless of whether or not a real-time signal is used for
@@ -56,7 +56,7 @@ In this interval, further timer expirations may occur.
The timer overrun count is the number of additional
timer expirations that occurred between the time when the signal
was generated and when it was delivered or accepted.
-.PP
+.P
Timer overruns can also occur when expiration notifications
are delivered via invocation of a thread,
since there may be an arbitrary delay between an expiration of the timer
@@ -87,7 +87,7 @@ structure (see
This allows an application to avoid the overhead of making
a system call to obtain the overrun count,
but is a nonportable extension to POSIX.1.
-.PP
+.P
POSIX.1 discusses timer overruns only in the context of
timer notifications using signals.
.\" FIXME . Austin bug filed, 11 Feb 09
diff --git a/man2/timer_settime.2 b/man2/timer_settime.2
index 030bab5..d222fe4 100644
--- a/man2/timer_settime.2
+++ b/man2/timer_settime.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_settime 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH timer_settime 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
timer_settime, timer_gettime \- arm/disarm and fetch
state of POSIX per-process timer
@@ -13,18 +13,18 @@ Real-time library
.SH SYNOPSIS
.nf
.B #include <time.h>
-.PP
+.P
.BI "int timer_gettime(timer_t " timerid ", struct itimerspec *" curr_value );
.BI "int timer_settime(timer_t " timerid ", int " flags ,
.BI " const struct itimerspec *restrict " new_value ,
.BI " struct itimerspec *_Nullable restrict " old_value );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR timer_settime (),
.BR timer_gettime ():
.nf
@@ -44,7 +44,7 @@ The
.I itimerspec
structure is described in
.BR itimerspec (3type).
-.PP
+.P
Each of the substructures of the
.I itimerspec
structure is a
@@ -54,7 +54,7 @@ in seconds and nanoseconds.
These time values are measured according to the clock
that was specified when the timer was created by
.BR timer_create (2).
-.PP
+.P
If
.I new_value\->it_value
specifies a nonzero value (i.e., either subfield is nonzero), then
@@ -68,7 +68,7 @@ If
specifies a zero value
(i.e., both subfields are zero),
then the timer is disarmed.
-.PP
+.P
The
.I new_value\->it_interval
field specifies the period of the timer, in seconds and nanoseconds.
@@ -80,7 +80,7 @@ If
specifies a zero value,
then the timer expires just once, at the time specified by
.IR it_value .
-.PP
+.P
By default, the initial expiration time specified in
.I new_value\->it_value
is interpreted relative to the current time on the timer's
@@ -101,7 +101,7 @@ and the overrun count (see
.BR timer_getoverrun (2))
will be set correctly.
.\" By experiment: the overrun count is set correctly, for CLOCK_REALTIME.
-.PP
+.P
If the value of the
.B CLOCK_REALTIME
clock is adjusted while an absolute timer based on that clock is armed,
@@ -111,7 +111,7 @@ Adjustments to the
clock have no effect on relative timers based on that clock.
.\" Similar remarks might apply with respect to process and thread CPU time
.\" clocks, but these clocks are not currently (2.6.28) settable on Linux.
-.PP
+.P
If
.I old_value
is not NULL, then it points to a buffer
@@ -120,7 +120,7 @@ that is used to return the previous interval of the timer (in
and the amount of time until the timer
would previously have next expired (in
.IR old_value\->it_value ).
-.PP
+.P
.BR timer_gettime ()
returns the time until next expiration, and the interval,
for the timer specified by
@@ -163,7 +163,7 @@ is not a valid pointer.
.I timerid
is invalid.
.\" FIXME . eventually: invalid value in flags
-.PP
+.P
.BR timer_settime ()
may fail with the following errors:
.TP
diff --git a/man2/timerfd_create.2 b/man2/timerfd_create.2
index 6ceea56..1d6a0d2 100644
--- a/man2/timerfd_create.2
+++ b/man2/timerfd_create.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH timerfd_create 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH timerfd_create 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
timerfd_create, timerfd_settime, timerfd_gettime \-
timers that notify via file descriptors
@@ -12,9 +12,9 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/timerfd.h>
-.PP
+.P
.BI "int timerfd_create(int " clockid ", int " flags );
-.PP
+.P
.BI "int timerfd_settime(int " fd ", int " flags ,
.BI " const struct itimerspec *" new_value ,
.BI " struct itimerspec *_Nullable " old_value );
@@ -32,7 +32,7 @@ with the advantage that the file descriptor may be monitored by
.BR poll (2),
and
.BR epoll (7).
-.PP
+.P
The use of these three system calls is analogous to the use of
.BR timer_create (2),
.BR timer_settime (2),
@@ -93,14 +93,14 @@ but will wake the system if it is suspended.
The caller must have the
.B CAP_WAKE_ALARM
capability in order to set a timer against this clock.
-.PP
+.P
See
.BR clock_getres (2)
for some further details on the above clocks.
-.PP
+.P
The current value of each of these clocks can be retrieved using
.BR clock_gettime (2).
-.PP
+.P
Starting with Linux 2.6.27, the following values may be bitwise ORed in
.I flags
to change the behavior of
@@ -125,7 +125,7 @@ See the description of the
flag in
.BR open (2)
for reasons why this may be useful.
-.PP
+.P
In Linux versions up to and including 2.6.26,
.I flags
must be specified as zero.
@@ -134,7 +134,7 @@ must be specified as zero.
arms (starts) or disarms (stops)
the timer referred to by the file descriptor
.IR fd .
-.PP
+.P
The
.I new_value
argument specifies the initial expiration and interval for the timer.
@@ -142,7 +142,7 @@ The
.I itimerspec
structure used for this argument is described in
.BR itimerspec (3type).
-.PP
+.P
.I new_value.it_value
specifies the initial expiration of the timer,
in seconds and nanoseconds.
@@ -152,7 +152,7 @@ to a nonzero value arms the timer.
Setting both fields of
.I new_value.it_value
to zero disarms the timer.
-.PP
+.P
Setting one or both fields of
.I new_value.it_interval
to nonzero values specifies the period, in seconds and nanoseconds,
@@ -161,7 +161,7 @@ If both fields of
.I new_value.it_interval
are zero, the timer expires just once, at the time specified by
.IR new_value.it_value .
-.PP
+.P
By default,
the initial expiration time specified in
.I new_value
@@ -173,7 +173,7 @@ specifies a time relative to the current value of the clock specified by
An absolute timeout can be selected via the
.I flags
argument.
-.PP
+.P
The
.I flags
argument is a bit mask that can include the following values:
@@ -202,7 +202,7 @@ When such changes occur, a current or future
.BR read (2)
from the file descriptor will fail with the error
.BR ECANCELED .
-.PP
+.P
If the
.I old_value
argument is not NULL, then the
@@ -222,7 +222,7 @@ an
structure that contains the current setting of the timer
referred to by the file descriptor
.IR fd .
-.PP
+.P
The
.I it_value
field returns the amount of time
@@ -232,7 +232,7 @@ then the timer is currently disarmed.
This field always contains a relative value, regardless of whether the
.B TFD_TIMER_ABSTIME
flag was specified when setting the timer.
-.PP
+.P
The
.I it_interval
field returns the interval of the timer.
@@ -317,7 +317,11 @@ but before the
.BR read (2)
on the file descriptor.
.TP
-.BR poll "(2), " select "(2) (and similar)"
+.BR poll (2)
+.TQ
+.BR select (2)
+.TQ
+(and similar)
The file descriptor is readable
(the
.BR select (2)
@@ -384,7 +388,7 @@ returns a new file descriptor.
On error, \-1 is returned and
.I errno
is set to indicate the error.
-.PP
+.P
.BR timerfd_settime ()
and
.BR timerfd_gettime ()
@@ -430,7 +434,7 @@ or
but the caller did not have the
.B CAP_WAKE_ALARM
capability.
-.PP
+.P
.BR timerfd_settime ()
and
.BR timerfd_gettime ()
@@ -450,7 +454,7 @@ is not a valid pointer.
.B EINVAL
.I fd
is not a valid timerfd file descriptor.
-.PP
+.P
.BR timerfd_settime ()
can also fail with the following errors:
.TP
@@ -500,7 +504,7 @@ the caller once more calls
to rearm the timer (without first doing a
.BR read (2)
on the file descriptor).
-.PP
+.P
In this case the following occurs:
.IP \[bu] 3
The
@@ -534,9 +538,9 @@ The second argument specifies the interval for the timer, in seconds.
The third argument specifies the number of times the program should
allow the timer to expire before terminating.
The second and third command-line arguments are optional.
-.PP
+.P
The following shell session demonstrates the use of the program:
-.PP
+.P
.in +4n
.EX
.RB "$" " a.out 3 1 100"
diff --git a/man2/times.2 b/man2/times.2
index 1d85010..2dad5b5 100644
--- a/man2/times.2
+++ b/man2/times.2
@@ -15,7 +15,7 @@
.\" Added notes on nonstandard behavior: Linux allows 'buf' to
.\" be NULL, but POSIX.1 doesn't specify this and it's nonportable.
.\"
-.TH times 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH times 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
times \- get process times
.SH LIBRARY
@@ -24,7 +24,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/times.h>
-.PP
+.P
.BI "clock_t times(struct tms *" buf );
.fi
.SH DESCRIPTION
@@ -38,7 +38,7 @@ The
.I struct tms
is as defined in
.IR <sys/times.h> :
-.PP
+.P
.in +4n
.EX
struct tms {
@@ -49,7 +49,7 @@ struct tms {
};
.EE
.in
-.PP
+.P
The
.I tms_utime
field contains the CPU time spent executing instructions
@@ -58,7 +58,7 @@ The
.I tms_stime
field contains the CPU time spent executing inside the kernel
while performing tasks on behalf of the calling process.
-.PP
+.P
The
.I tms_cutime
field contains the sum of the
@@ -73,7 +73,7 @@ field contains the sum of the
and
.I tms_cstime
values for all waited-for terminated children.
-.PP
+.P
Times for terminated children (and their descendants)
are added in at the moment
.BR wait (2)
@@ -83,7 +83,7 @@ returns their process ID.
In particular,
times of grandchildren
that the children did not wait for are never seen.
-.PP
+.P
All times reported are in clock ticks.
.SH RETURN VALUE
.BR times ()
@@ -120,12 +120,12 @@ POSIX.1-2008.
POSIX.1-2001,
SVr4,
4.3BSD.
-.PP
+.P
In POSIX.1-1996 the symbol \fBCLK_TCK\fP (defined in
.IR <time.h> )
is mentioned as obsolescent.
It is obsolete now.
-.PP
+.P
Before Linux 2.6.9,
if the disposition of
.B SIGCHLD
@@ -145,7 +145,7 @@ This nonconformance is rectified in Linux 2.6.9 and later.
.\" See the description of times() in XSH, which says:
.\" The times of a terminated child process are included... when wait()
.\" or waitpid() returns the process ID of this terminated child.
-.PP
+.P
On Linux,
the \[lq]arbitrary point in the past\[rq]
from which the return value of
@@ -164,10 +164,10 @@ To measure changes in elapsed time,
use
.BR clock_gettime (2)
instead.
-.\" .PP
+.\" .P
.\" On older systems the number of clock ticks per second is given
.\" by the variable HZ.
-.PP
+.P
SVr1-3 returns
.I long
and the struct members are of type
@@ -182,13 +182,13 @@ because it had no type
yet.
.SH NOTES
The number of clock ticks per second can be obtained using:
-.PP
+.P
.in +4n
.EX
sysconf(_SC_CLK_TCK);
.EE
.in
-.PP
+.P
Note that
.BR clock (3)
also returns a value of type
diff --git a/man2/tkill.2 b/man2/tkill.2
index 8780e8a..78a1ce5 100644
--- a/man2/tkill.2
+++ b/man2/tkill.2
@@ -6,7 +6,7 @@
.\" 2004-05-31, added tgkill, ahu, aeb
.\" 2008-01-15 mtk -- rewrote DESCRIPTION
.\"
-.TH tkill 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH tkill 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
tkill, tgkill \- send a signal to a thread
.SH LIBRARY
@@ -17,14 +17,14 @@ Standard C library
.BR "#include <signal.h>" " /* Definition of " SIG* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "[[deprecated]] int syscall(SYS_tkill, pid_t " tid ", int " sig );
-.PP
+.P
.B #include <signal.h>
-.PP
+.P
.BI "int tgkill(pid_t " tgid ", pid_t " tid ", int " sig );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR tkill (),
@@ -43,7 +43,7 @@ in the thread group
can be used to send a signal only to a process (i.e., thread group)
as a whole, and the signal will be delivered to an arbitrary
thread within that process.)
-.PP
+.P
.BR tkill ()
is an obsolete predecessor to
.BR tgkill ().
@@ -76,7 +76,7 @@ Avoid using this system call.
.\" measurable, one could exhaust all but 1-2 available pid values,
.\" possibly by lowering the max pid parameter in /proc, forcing
.\" the same tid to be reused rapidly.
-.PP
+.P
These are the raw system call interfaces, meant for internal
thread library use.
.SH RETURN VALUE
diff --git a/man2/truncate.2 b/man2/truncate.2
index 02a12e5..13ebec0 100644
--- a/man2/truncate.2
+++ b/man2/truncate.2
@@ -12,7 +12,7 @@
.\" Modified 2002-04-06 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH truncate 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH truncate 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
truncate, ftruncate \- truncate a file to a specified length
.SH LIBRARY
@@ -21,16 +21,16 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int truncate(const char *" path ", off_t " length );
.BI "int ftruncate(int " fd ", off_t " length );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR truncate ():
.nf
_XOPEN_SOURCE >= 500
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19: */ _BSD_SOURCE
.fi
-.PP
+.P
.BR ftruncate ():
.nf
_XOPEN_SOURCE >= 500
@@ -58,20 +58,20 @@ or referenced by
to be truncated to a size of precisely
.I length
bytes.
-.PP
+.P
If the file previously was larger than this size, the extra data is lost.
If the file previously was shorter, it is extended, and
the extended part reads as null bytes (\[aq]\e0\[aq]).
-.PP
+.P
The file offset is not changed.
-.PP
+.P
If the size changed, then the st_ctime and st_mtime fields
(respectively, time of last status change and
time of last modification; see
.BR inode (7))
for the file are updated,
and the set-user-ID and set-group-ID mode bits may be cleared.
-.PP
+.P
With
.BR ftruncate (),
the file must be open for writing; with
@@ -148,7 +148,7 @@ The named file resides on a read-only filesystem.
.TP
.B ETXTBSY
The file is an executable file that is being executed.
-.PP
+.P
For
.BR ftruncate ()
the same errors apply, but instead of things that can be wrong with
@@ -197,7 +197,7 @@ and
to be used to extend a file beyond its current length:
a notable example on Linux is VFAT.
.\" At the very least: OSF/1, Solaris 7, and FreeBSD conform, mtk, Jan 2002
-.PP
+.P
On some 32-bit architectures,
the calling signature for these system calls differ,
for the reasons described in
@@ -212,13 +212,13 @@ POSIX.1-2001,
.\" POSIX.1-2001 also has
.\" .BR truncate (),
.\" as an XSI extension.
-.\" .LP
+.\" .P
.\" SVr4 documents additional
.\" .BR truncate ()
.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for
.\" .BR ftruncate ()
.\" an additional EAGAIN error condition.
-.PP
+.P
The original Linux
.BR truncate ()
and
diff --git a/man2/umask.2 b/man2/umask.2
index c920b55..bfea2e6 100644
--- a/man2/umask.2
+++ b/man2/umask.2
@@ -11,7 +11,7 @@
.\" <nick@debian.com> with Lars Wirzenius <liw@iki.fi> suggestion
.\" 2006-05-13, mtk, substantial rewrite of description of 'mask'
.\" 2008-01-09, mtk, a few rewrites and additions.
-.TH umask 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH umask 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
umask \- set file mode creation mask
.SH LIBRARY
@@ -20,7 +20,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/stat.h>
-.PP
+.P
.BI "mode_t umask(mode_t " mask );
.fi
.SH DESCRIPTION
@@ -30,7 +30,7 @@ sets the calling process's file mode creation mask (umask) to
& 0777 (i.e., only the file permission bits of
.I mask
are used), and returns the previous value of the mask.
-.PP
+.P
The umask is used by
.BR open (2),
.BR mkdir (2),
@@ -45,7 +45,7 @@ argument to
.BR open (2)
and
.BR mkdir (2).
-.PP
+.P
Alternatively, if the parent directory has a default ACL (see
.BR acl (5)),
the umask is ignored, the default ACL is inherited,
@@ -54,23 +54,23 @@ and permission bits absent in the
.I mode
argument are turned off.
For example, the following default ACL is equivalent to a umask of 022:
-.PP
+.P
.in +4n
.EX
u::rwx,g::r-x,o::r-x
.EE
.in
-.PP
+.P
Combining the effect of this default ACL with a
.I mode
argument of 0666 (rw-rw-rw-), the resulting file permissions would be 0644
(rw-r--r--).
-.PP
+.P
The constants that should be used to specify
.I mask
are described in
.BR inode (7).
-.PP
+.P
The typical default value for the process umask is
.BR S_IWGRP " | " S_IWOTH
(octal 022).
@@ -79,22 +79,22 @@ In the usual case where the
argument to
.BR open (2)
is specified as:
-.PP
+.P
.in +4n
.EX
.BR S_IRUSR " | " S_IWUSR " | " S_IRGRP " | " S_IWGRP " | " S_IROTH " | " S_IWOTH
.EE
.in
-.PP
+.P
(octal 0666) when creating a new file, the permissions on the
resulting file will be:
-.PP
+.P
.in +4n
.EX
.BR S_IRUSR " | " S_IWUSR " | " S_IRGRP " | " S_IROTH
.EE
.in
-.PP
+.P
(because 0666 & \[ti]022 = 0644; i.e. rw\-r\-\-r\-\-).
.SH RETURN VALUE
This system call always succeeds and the previous value of the mask
@@ -109,7 +109,7 @@ A child process created via
inherits its parent's umask.
The umask is left unchanged by
.BR execve (2).
-.PP
+.P
It is impossible to use
.BR umask ()
to fetch a process's umask without at the same time changing it.
@@ -118,7 +118,7 @@ A second call to
would then be needed to restore the umask.
The nonatomicity of these two steps provides the potential
for races in multithreaded programs.
-.PP
+.P
Since Linux 4.7, the umask of any process can be viewed via the
.I Umask
field of
@@ -126,7 +126,7 @@ field of
Inspecting this field in
.I /proc/self/status
allows a process to retrieve its umask without at the same time changing it.
-.PP
+.P
The umask setting also affects the permissions assigned to POSIX IPC objects
.RB ( mq_open (3),
.BR sem_open (3),
diff --git a/man2/umount.2 b/man2/umount.2
index cba0abc..07e3a93 100644
--- a/man2/umount.2
+++ b/man2/umount.2
@@ -7,7 +7,7 @@
.\" 2008-10-06, mtk: Created this as a new page by splitting
.\" umount/umount2 material out of mount.2
.\"
-.TH umount 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH umount 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
umount, umount2 \- unmount filesystem
.SH LIBRARY
@@ -16,7 +16,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B "#include <sys/mount.h>"
-.PP
+.P
.BI "int umount(const char *" target );
.BI "int umount2(const char *" target ", int " flags );
.fi
@@ -29,11 +29,11 @@ remove the attachment of the (topmost) filesystem mounted on
.\" Note: the kernel naming differs from the glibc naming
.\" umount2 is the glibc name for what the kernel now calls umount
.\" and umount is the glibc name for oldumount
-.PP
+.P
Appropriate privilege (Linux: the
.B CAP_SYS_ADMIN
capability) is required to unmount filesystems.
-.PP
+.P
Linux 2.1.116 added the
.BR umount2 ()
system call, which, like
@@ -162,7 +162,7 @@ and
.B MNT_EXPIRE
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=10092
are available since glibc 2.11.
-.PP
+.P
The original
.BR umount ()
function was called as \fIumount(device)\fP and would return
@@ -183,7 +183,7 @@ This means that
.BR umount ()
of any peer in a set of shared mounts will cause all of its
peers to be unmounted and all of their slaves to be unmounted as well.
-.PP
+.P
This propagation of unmount activity can be particularly surprising
on systems where every mount is shared by default.
On such systems,
@@ -191,7 +191,7 @@ recursively bind mounting the root directory of the filesystem
onto a subdirectory and then later unmounting that subdirectory with
.B MNT_DETACH
will cause every mount in the mount namespace to be lazily unmounted.
-.PP
+.P
To ensure
.BR umount ()
does not propagate in this fashion,
diff --git a/man2/uname.2 b/man2/uname.2
index e84f3e7..e4f449f 100644
--- a/man2/uname.2
+++ b/man2/uname.2
@@ -4,7 +4,7 @@
.\"
.\" 2007-07-05 mtk: Added details on underlying system call interfaces
.\"
-.TH uname 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH uname 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
uname \- get name and information about current kernel
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/utsname.h>
-.PP
+.P
.BI "int uname(struct utsname *" buf );
.fi
.SH DESCRIPTION
@@ -24,7 +24,7 @@ The
.I utsname
struct is defined in
.IR <sys/utsname.h> :
-.PP
+.P
.in +4n
.EX
struct utsname {
@@ -41,7 +41,7 @@ struct utsname {
};
.EE
.in
-.PP
+.P
The length of the arrays in a
.I struct utsname
is unspecified (see NOTES);
@@ -60,7 +60,7 @@ is not valid.
The
.I domainname
member (the NIS or YP domain name) is a GNU extension.
-.PP
+.P
The length of the fields in the struct varies.
Some operating systems
or libraries use a hardcoded 9 or 33 or 65 or 257.
@@ -120,7 +120,7 @@ Similarly, the
.I domainname
field is set via
.BR setdomainname (2).
-.PP
+.P
Part of the utsname information is also accessible via
.IR /proc/sys/kernel/ { ostype ,
.IR hostname ,
diff --git a/man2/unimplemented.2 b/man2/unimplemented.2
index 535d3e9..3daa030 100644
--- a/man2/unimplemented.2
+++ b/man2/unimplemented.2
@@ -4,7 +4,7 @@
.\"
.\" Updated, aeb, 980612
.\"
-.TH UNIMPLEMENTED 2 2022-10-09 "Linux man-pages 6.05.01"
+.TH UNIMPLEMENTED 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
afs_syscall, break, fattach, fdetach, ftime, getmsg, getpmsg, gtty, isastream,
lock, madvise1, mpx, prof, profil, putmsg, putpmsg, security,
@@ -27,7 +27,7 @@ Note that
and
.BR ulimit (3)
are implemented as library functions.
-.PP
+.P
Some system calls, like
.BR alloc_hugepages (2),
.BR free_hugepages (2),
@@ -36,7 +36,7 @@ Some system calls, like
and
.BR vm86 (2)
exist only on certain architectures.
-.PP
+.P
Some system calls, like
.BR ipc (2),
.BR create_module (2),
diff --git a/man2/unlink.2 b/man2/unlink.2
index 85cb670..7485a32 100644
--- a/man2/unlink.2
+++ b/man2/unlink.2
@@ -10,7 +10,7 @@
.\" Modified 2001-05-17 by aeb
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH unlink 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH unlink 2 2024-02-18 "Linux man-pages 6.7"
.SH NAME
unlink, unlinkat \- delete a name and possibly the file it refers to
.SH LIBRARY
@@ -19,20 +19,20 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "int unlink(const char *" pathname );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int unlinkat(int " dirfd ", const char *" pathname ", int " flags );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR unlinkat ():
.nf
Since glibc 2.10:
@@ -46,13 +46,13 @@ deletes a name from the filesystem.
If that name was the
last link to a file and no processes have the file open, the file is
deleted and the space it was using is made available for reuse.
-.PP
+.P
If the name was the last link to a file but any processes still have
the file open, the file will remain in existence until the last file
descriptor referring to it is closed.
-.PP
+.P
If the name referred to a symbolic link, the link is removed.
-.PP
+.P
If the name referred to a socket, FIFO, or device, the name for it is
removed but processes which have the object open may continue to use
it.
@@ -69,7 +69,7 @@ includes the
.B AT_REMOVEDIR
flag)
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -81,7 +81,7 @@ the calling process, as is done by
and
.BR rmdir (2)
for a relative pathname).
-.PP
+.P
If the pathname given in
.I pathname
is relative and
@@ -95,13 +95,13 @@ directory of the calling process (like
.BR unlink ()
and
.BR rmdir (2)).
-.PP
+.P
If the pathname given in
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
.I flags
is a bit mask that can either be specified as 0, or by ORing
together flag values that control the operation of
@@ -117,12 +117,12 @@ on
.IR pathname .
If the
.B AT_REMOVEDIR
-flag is specified, then
+flag is specified, it
performs the equivalent of
.BR rmdir (2)
on
.IR pathname .
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for
@@ -218,7 +218,7 @@ The file to be unlinked is marked immutable or append-only.
.B EROFS
.I pathname
refers to a file on a read-only filesystem.
-.PP
+.P
The same errors that occur for
.BR unlink ()
and
diff --git a/man2/unshare.2 b/man2/unshare.2
index b12afb5..ce2464d 100644
--- a/man2/unshare.2
+++ b/man2/unshare.2
@@ -15,7 +15,7 @@
.\" by clone, which would require porting and maintaining all commands
.\" such as login, and su, that establish a user session.
.\"
-.TH unshare 2 2023-05-26 "Linux man-pages 6.05.01"
+.TH unshare 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
unshare \- disassociate parts of the process execution context
.SH LIBRARY
@@ -25,7 +25,7 @@ Standard C library
.nf
.B #define _GNU_SOURCE
.B #include <sched.h>
-.PP
+.P
.BI "int unshare(int " flags );
.fi
.SH DESCRIPTION
@@ -40,12 +40,12 @@ or
while other parts, such as virtual memory, may be
shared by explicit request when creating a process or thread using
.BR clone (2).
-.PP
+.P
The main use of
.BR unshare ()
is to allow a process to control its
shared execution context without creating a new process.
-.PP
+.P
The
.I flags
argument is a bit mask that specifies which parts of
@@ -250,7 +250,7 @@ to the corresponding semaphores, as described in
.BR semop (2).
.\" CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared
.\" (i.e., current->signal->count > 1), force CLONE_THREAD.
-.PP
+.P
In addition,
.BR CLONE_THREAD ,
.BR CLONE_SIGHAND ,
@@ -277,7 +277,7 @@ automatically implies
If the process is multithreaded, then
the use of these flags results in an error.
.\" See kernel/fork.c::check_unshare_flags()
-.PP
+.P
If
.I flags
is specified as zero, then
@@ -457,7 +457,7 @@ Such functionality may be added in the future, if required.
.\"be incrementally added to unshare without affecting legacy
.\"applications using unshare.
.\"
-.PP
+.P
Creating all kinds of namespace, except user namespaces, requires the
.B CAP_SYS_ADMIN
capability.
@@ -477,7 +477,7 @@ Here's an example of the use of this program,
running a shell in a new mount namespace,
and verifying that the original shell and the
new shell are in separate mount namespaces:
-.PP
+.P
.in +4n
.EX
$ \fBreadlink /proc/$$/ns/mnt\fP
@@ -487,7 +487,7 @@ $ \fBsudo ./unshare \-m /bin/bash\fP
mnt:[4026532325]
.EE
.in
-.PP
+.P
The differing output of the two
.BR readlink (1)
commands shows that the two shells are in different mount namespaces.
@@ -563,7 +563,7 @@ main(int argc, char *argv[])
.BR setns (2),
.BR vfork (2),
.BR namespaces (7)
-.PP
+.P
.I Documentation/userspace\-api/unshare.rst
in the Linux kernel source tree
.\" commit f504d47be5e8fa7ecf2bf660b18b42e6960c0eb2
diff --git a/man2/uselib.2 b/man2/uselib.2
index 1d6a072..cdd7fba 100644
--- a/man2/uselib.2
+++ b/man2/uselib.2
@@ -8,13 +8,13 @@
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2005-01-09 by aeb
.\"
-.TH uselib 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH uselib 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
uselib \- load shared library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "[[deprecated]] int uselib(const char *" library );
.fi
.SH DESCRIPTION
@@ -65,13 +65,13 @@ Therefore, in order to employ this system call,
it was sufficient to manually declare the interface in your code;
alternatively, you could invoke the system call using
.BR syscall (2).
-.PP
+.P
In ancient libc versions (before glibc 2.0),
.BR uselib ()
was used to load
the shared libraries with names found in an array of names
in the binary.
-.\" .PP
+.\" .P
.\" .\" libc 4.3.1f - changelog 1993-03-02
.\" Since libc 4.3.2, startup code tries to prefix these names
.\" with "/usr/lib", "/lib" and "" before giving up.
@@ -81,14 +81,14 @@ in the binary.
.\" .BR LD_LIBRARY_PATH ,
.\" and if not found there,
.\" prefixes "/usr/lib", "/lib" and "/" are tried.
-.\" .PP
+.\" .P
.\" From libc 4.4.4 on only the library "/lib/ld.so" is loaded,
.\" so that this dynamic library can load the remaining libraries needed
.\" (again using this call).
.\" This is also the state of affairs in libc5.
-.\" .PP
+.\" .P
.\" glibc2 does not use this call.
-.PP
+.P
Since Linux 3.15,
.\" commit 69369a7003735d0d8ef22097e27a55a8bad9557a
this system call is available only when the kernel is configured with the
diff --git a/man2/userfaultfd.2 b/man2/userfaultfd.2
index 82903c6..27f4b69 100644
--- a/man2/userfaultfd.2
+++ b/man2/userfaultfd.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH userfaultfd 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH userfaultfd 2 2024-02-12 "Linux man-pages 6.7"
.SH NAME
userfaultfd \- create a file descriptor for handling page faults in user space
.SH LIBRARY
@@ -16,10 +16,10 @@ Standard C library
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.BR "#include <linux/userfaultfd.h>" " /* Definition of " UFFD_* " constants */"
.B #include <unistd.h>
-.PP
+.P
.BI "int syscall(SYS_userfaultfd, int " flags );
.fi
-.PP
+.P
.IR Note :
glibc provides no wrapper for
.BR userfaultfd (),
@@ -32,7 +32,7 @@ handling to a user-space application,
and returns a file descriptor that refers to the new object.
The new userfaultfd object is configured using
.BR ioctl (2).
-.PP
+.P
Once the userfaultfd object is configured, the application can use
.BR read (2)
to receive userfaultfd notifications.
@@ -41,7 +41,7 @@ depending on the value of
.I flags
used for the creation of the userfaultfd or subsequent calls to
.BR fcntl (2).
-.PP
+.P
The following values may be bitwise ORed in
.I flags
to change the behavior of
@@ -69,12 +69,12 @@ When a kernel-originated fault was triggered
on the registered range with this userfaultfd, a
.B SIGBUS
signal will be delivered.
-.PP
+.P
When the last file descriptor referring to a userfaultfd object is closed,
all memory ranges that were registered with the object are unregistered
and unread events are flushed.
.\"
-.PP
+.P
Userfaultfd supports three modes of registration:
.TP
.BR UFFDIO_REGISTER_MODE_MISSING " (since Linux 4.10)"
@@ -111,9 +111,9 @@ The faulted thread will be stopped from execution
until user-space write-unprotects the page using an
.B UFFDIO_WRITEPROTECT
ioctl.
-.PP
+.P
Multiple modes can be enabled at the same time for the same memory range.
-.PP
+.P
Since Linux 4.14, a userfaultfd page-fault notification can selectively embed
faulting thread ID information into the notification.
One needs to enable this feature explicitly using the
@@ -132,7 +132,7 @@ them using the operations described in
.BR ioctl_userfaultfd (2).
When servicing the page fault events,
the fault-handling thread can trigger a wake-up for the sleeping thread.
-.PP
+.P
It is possible for the faulting threads and the fault-handling threads
to run in the context of different processes.
In this case, these threads may belong to different programs,
@@ -142,7 +142,7 @@ In such non-cooperative mode,
the process that monitors userfaultfd and handles page faults
needs to be aware of the changes in the virtual memory layout
of the faulting process to avoid memory corruption.
-.PP
+.P
Since Linux 4.11,
userfaultfd can also notify the fault-handling threads about changes
in the virtual memory layout of the faulting process.
@@ -166,7 +166,7 @@ soon as the userfaultfd manager executes
The userfaultfd manager should carefully synchronize calls to
.B UFFDIO_COPY
with the processing of events.
-.PP
+.P
The current asynchronous model of the event delivery is optimal for
single threaded non-cooperative userfaultfd manager implementations.
.\" Regarding the preceding sentence, Mike Rapoport says:
@@ -174,13 +174,13 @@ single threaded non-cooperative userfaultfd manager implementations.
.\" problematic for multi-threaded monitor. I even suspect that it would be
.\" impossible to ensure synchronization between page faults and non-page
.\" fault events in multi-threaded monitor.
-.\" .PP
+.\" .P
.\" FIXME elaborate about non-cooperating mode, describe its limitations
.\" for kernels before Linux 4.11, features added in Linux 4.11
.\" and limitations remaining in Linux 4.11
.\" Maybe it's worth adding a dedicated sub-section...
.\"
-.PP
+.P
Since Linux 5.7, userfaultfd is able to do
synchronous page dirty tracking using the new write-protect register mode.
One should check against the feature bit
@@ -200,14 +200,15 @@ the application must enable it using the
.B UFFDIO_API
.BR ioctl (2)
operation.
-This operation allows a handshake between the kernel and user space
-to determine the API version and supported features.
+This operation allows a two-step handshake between the kernel and user space
+to determine what API version and features the kernel supports,
+and then to enable those features user space wants.
This operation must be performed before any of the other
.BR ioctl (2)
operations described below (or those operations fail with the
.B EINVAL
error).
-.PP
+.P
After a successful
.B UFFDIO_API
operation,
@@ -221,14 +222,14 @@ operation,
a page fault occurring in the requested memory range, and satisfying
the mode defined at the registration time, will be forwarded by the kernel to
the user-space application.
-The application can then use the
-.B UFFDIO_COPY ,
-.B UFFDIO_ZEROPAGE ,
+The application can then use various (e.g.,
+.BR UFFDIO_COPY ,
+.BR UFFDIO_ZEROPAGE ,
or
-.B UFFDIO_CONTINUE
+.BR UFFDIO_CONTINUE )
.BR ioctl (2)
operations to resolve the page fault.
-.PP
+.P
Since Linux 4.14, if the application sets the
.B UFFD_FEATURE_SIGBUS
feature bit using the
@@ -247,23 +248,23 @@ accesses.
For example, this feature can be useful for applications that
want to prevent the kernel from automatically allocating pages and filling
holes in sparse files when the hole is accessed through a memory mapping.
-.PP
+.P
The
.B UFFD_FEATURE_SIGBUS
feature is implicitly inherited through
.BR fork (2)
if used in combination with
.BR UFFD_FEATURE_FORK .
-.PP
+.P
Details of the various
.BR ioctl (2)
operations can be found in
.BR ioctl_userfaultfd (2).
-.PP
+.P
Since Linux 4.11, events other than page-fault may enabled during
.B UFFDIO_API
operation.
-.PP
+.P
Up to Linux 4.11,
userfaultfd can be used only with anonymous private memory mappings.
Since Linux 4.11,
@@ -276,13 +277,13 @@ The user needs to first check availability of this feature using
ioctl against the feature bit
.B UFFD_FEATURE_PAGEFAULT_FLAG_WP
before using this feature.
-.PP
+.P
Since Linux 5.19,
the write-protection mode was also supported on
shmem and hugetlbfs memory types.
It can be detected with the feature bit
.BR UFFD_FEATURE_WP_HUGETLBFS_SHMEM .
-.PP
+.P
To register with userfaultfd write-protect mode, the user needs to initiate the
.B UFFDIO_REGISTER
ioctl with mode
@@ -300,7 +301,7 @@ registered, user-space will
receive any notification when a missing page is written.
Instead, user-space will receive a write-protect page-fault notification
only when an existing but write-protected page got written.
-.PP
+.P
After the
.B UFFDIO_REGISTER
ioctl completed with
@@ -312,7 +313,7 @@ where
.I uffdio_writeprotect.mode
should be set to
.BR UFFDIO_WRITEPROTECT_MODE_WP .
-.PP
+.P
When a write-protect event happens,
user-space will receive a page-fault notification whose
.I uffd_msg.pagefault.flags
@@ -325,7 +326,7 @@ write-protect notifications will always have the
bit set along with the
.B UFFD_PAGEFAULT_FLAG_WP
bit.
-.PP
+.P
To resolve a write-protection page fault, the user should initiate another
.B UFFDIO_WRITEPROTECT
ioctl, whose
@@ -351,14 +352,14 @@ since Linux 5.13,
or
.B UFFD_FEATURE_MINOR_SHMEM
since Linux 5.14.
-.PP
+.P
To register with userfaultfd minor fault mode,
the user needs to initiate the
.B UFFDIO_REGISTER
ioctl with mode
.B UFFD_REGISTER_MODE_MINOR
set.
-.PP
+.P
When a minor fault occurs,
user-space will receive a page-fault notification
whose
@@ -366,7 +367,7 @@ whose
will have the
.B UFFD_PAGEFAULT_FLAG_MINOR
flag set.
-.PP
+.P
To resolve a minor page fault,
the handler should decide whether or not
the existing page contents need to be modified first.
@@ -382,7 +383,7 @@ ioctl,
which installs the page table entries and
(by default)
wakes up the faulting thread(s).
-.PP
+.P
Minor fault mode supports only hugetlbfs-backed (since Linux 5.13)
and shmem-backed (since Linux 5.14) memory.
.\"
@@ -393,7 +394,7 @@ from the userfaultfd file descriptor returns one or more
.I uffd_msg
structures, each of which describes a page-fault event
or an event required for the non-cooperative userfaultfd usage:
-.PP
+.P
.in +4n
.EX
struct uffd_msg {
@@ -430,7 +431,7 @@ struct uffd_msg {
} __packed;
.EE
.in
-.PP
+.P
If multiple events are available and the supplied buffer is large enough,
.BR read (2)
returns as many events as will fit in the supplied buffer.
@@ -442,7 +443,7 @@ structure, the
.BR read (2)
fails with the error
.BR EINVAL .
-.PP
+.P
The fields set in the
.I uffd_msg
structure are as follows:
@@ -532,7 +533,7 @@ If this flag is set, then the fault was a minor fault.
.TP
.B UFFD_PAGEFAULT_FLAG_WRITE
If this flag is set, then the fault was a write fault.
-.PP
+.P
If neither
.B UFFD_PAGEFAULT_FLAG_WP
nor
@@ -569,7 +570,7 @@ or unmapped
The end address of the memory range that was freed using
.BR madvise (2)
or unmapped
-.PP
+.P
A
.BR read (2)
on a userfaultfd file descriptor can fail with the following errors:
@@ -579,7 +580,7 @@ The userfaultfd object has not yet been enabled using the
.B UFFDIO_API
.BR ioctl (2)
operation
-.PP
+.P
If the
.B O_NONBLOCK
flag is enabled in the associated open file description,
@@ -636,7 +637,7 @@ has the value 0.
Linux.
.SH HISTORY
Linux 4.3.
-.PP
+.P
Support for hugetlbfs and shared memory areas and
non-page-fault events was added in Linux 4.11
.SH NOTES
@@ -666,7 +667,7 @@ The program creates two threads, one of which acts as the
page-fault handler for the process, for the pages in a demand-page zero
region created using
.BR mmap (2).
-.PP
+.P
The program takes one command-line argument,
which is the number of pages that will be created in a mapping
whose page faults will be handled via userfaultfd.
@@ -678,13 +679,13 @@ and registers the address range of that mapping using the
operation.
The program then creates a second thread that will perform the
task of handling page faults.
-.PP
+.P
The main thread then walks through the pages of the mapping fetching
bytes from successive pages.
Because the pages have not yet been accessed,
the first access of a byte in each page will trigger a page-fault event
on the userfaultfd file descriptor.
-.PP
+.P
Each of the page-fault events is handled by the second thread,
which sits in a loop processing input from the userfaultfd file descriptor.
In each loop iteration, the second thread first calls
@@ -699,9 +700,9 @@ the faulting region using the
.B UFFDIO_COPY
.BR ioctl (2)
operation.
-.PP
+.P
The following is an example of what we see when running the program:
-.PP
+.P
.in +4n
.EX
$ \fB./userfaultfd_demo 3\fP
@@ -879,6 +880,13 @@ main(int argc, char *argv[])
if (uffd == \-1)
err(EXIT_FAILURE, "userfaultfd");
\&
+ /* NOTE: Two-step feature handshake is not needed here, since this
+ example doesn't require any specific features.
+\&
+ Programs that *do* should call UFFDIO_API twice: once with
+ `features = 0` to detect features supported by this kernel, and
+ again with the subset of features the program actually wants to
+ enable. */
uffdio_api.api = UFFD_API;
uffdio_api.features = 0;
if (ioctl(uffd, UFFDIO_API, &uffdio_api) == \-1)
@@ -938,6 +946,6 @@ main(int argc, char *argv[])
.BR ioctl_userfaultfd (2),
.BR madvise (2),
.BR mmap (2)
-.PP
+.P
.I Documentation/admin\-guide/mm/userfaultfd.rst
in the Linux kernel source tree
diff --git a/man2/ustat.2 b/man2/ustat.2
index a894b13..6a682d7 100644
--- a/man2/ustat.2
+++ b/man2/ustat.2
@@ -7,7 +7,7 @@
.\" Modified 2001-03-22 by aeb
.\" Modified 2003-08-04 by aeb
.\"
-.TH ustat 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH ustat 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
ustat \- get filesystem statistics
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.B #include <sys/types.h>
.BR "#include <unistd.h>" " /* libc[45] */"
.BR "#include <ustat.h>" " /* glibc2 */"
-.PP
+.P
.BI "[[deprecated]] int ustat(dev_t " dev ", struct ustat *" ubuf );
.fi
.SH DESCRIPTION
@@ -32,7 +32,7 @@ is a pointer to a
.I ustat
structure that contains the following
members:
-.PP
+.P
.in +4n
.EX
daddr_t f_tfree; /* Total free blocks */
@@ -41,7 +41,7 @@ char f_fname[6]; /* Filsys name */
char f_fpack[6]; /* Filsys pack name */
.EE
.in
-.PP
+.P
The last two fields,
.I f_fname
and
@@ -79,7 +79,7 @@ SVr4.
Removed in glibc 2.28.
.\" SVr4 documents additional error conditions ENOLINK, ECOMM, and EINTR
.\" but has no ENOSYS condition.
-.PP
+.P
.BR ustat ()
is deprecated and has been provided only for compatibility.
All new programs should use
diff --git a/man2/utime.2 b/man2/utime.2
index 86760ab..51073d0 100644
--- a/man2/utime.2
+++ b/man2/utime.2
@@ -8,7 +8,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2004-10-10 by Andries Brouwer <aeb@cwi.nl>
.\"
-.TH utime 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH utime 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
utime, utimes \- change file last access and modification times
.SH LIBRARY
@@ -17,12 +17,12 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <utime.h>
-.PP
+.P
.BI "int utime(const char *" filename ,
.BI " const struct utimbuf *_Nullable " times );
-.PP
+.P
.B #include <sys/time.h>
-.PP
+.P
.BI "int utimes(const char *" filename ,
.BI " const struct timeval " times "[_Nullable 2]);"
.fi
@@ -30,7 +30,7 @@ Standard C library
.B Note:
modern applications may prefer to use the interfaces described in
.BR utimensat (2).
-.PP
+.P
The
.BR utime ()
system call
@@ -43,23 +43,23 @@ fields of
respectively.
The status change time (ctime) will be set to the current time, even if the
other time stamps don't actually change.
-.PP
+.P
If
.I times
is NULL, then the access and modification times of the file are set
to the current time.
-.PP
+.P
Changing timestamps is permitted when: either
the process has appropriate privileges,
or the effective user ID equals the user ID
of the file, or
.I times
is NULL and the process has write permission for the file.
-.PP
+.P
The
.I utimbuf
structure is:
-.PP
+.P
.in +4n
.EX
struct utimbuf {
@@ -68,12 +68,12 @@ struct utimbuf {
};
.EE
.in
-.PP
+.P
The
.BR utime ()
system call
allows specification of timestamps with a resolution of 1 second.
-.PP
+.P
The
.BR utimes ()
system call
@@ -86,7 +86,7 @@ structures, which allow a precision of 1 microsecond for specifying timestamps.
The
.I timeval
structure is:
-.PP
+.P
.in +4n
.EX
struct timeval {
@@ -95,7 +95,7 @@ struct timeval {
};
.EE
.in
-.PP
+.P
.I times[0]
specifies the new access time, and
.I times[1]
diff --git a/man2/utimensat.2 b/man2/utimensat.2
index 77456fc..d69539d 100644
--- a/man2/utimensat.2
+++ b/man2/utimensat.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH utimensat 2 2023-07-20 "Linux man-pages 6.05.01"
+.TH utimensat 2 2024-01-01 "Linux man-pages 6.7"
.SH NAME
utimensat, futimens \- change file timestamps with nanosecond precision
.SH LIBRARY
@@ -14,17 +14,17 @@ Standard C library
.nf
.BR "#include <fcntl.h>" " /* Definition of " AT_* " constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int utimensat(int " dirfd ", const char *" pathname ,
.BI " const struct timespec " times "[_Nullable 2], int " flags );
.BI "int futimens(int " fd ", const struct timespec " times "[_Nullable 2]);"
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR utimensat ():
.nf
Since glibc 2.10:
@@ -32,7 +32,7 @@ Feature Test Macro Requirements for glibc (see
Before glibc 2.10:
_ATFILE_SOURCE
.fi
-.PP
+.P
.BR futimens ():
.nf
Since glibc 2.10:
@@ -51,7 +51,7 @@ and
.BR utimes (2),
which permit only second and microsecond precision, respectively,
when setting file timestamps.
-.PP
+.P
With
.BR utimensat ()
the file is specified via the pathname given in
@@ -61,7 +61,7 @@ With
the file whose timestamps are to be updated is specified via
an open file descriptor,
.IR fd .
-.PP
+.P
For both calls, the new file timestamps are specified in the array
.IR times :
.I times[0]
@@ -75,10 +75,10 @@ since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).
This information is conveyed in a
.BR timespec (3)
structure.
-.PP
+.P
Updated file timestamps are set to the greatest value
supported by the filesystem that is not greater than the specified time.
-.PP
+.P
If the
.I tv_nsec
field of one of the
@@ -97,12 +97,12 @@ In both of these cases, the value of the corresponding
.I tv_sec
.\" 2.6.22 was broken: it is not ignored
field is ignored.
-.PP
+.P
If
.I times
is NULL, then both timestamps are set to the current time.
.\"
-.PP
+.P
The status change time (ctime) will be set to the current time, even if the
other time stamps don't actually change.
.SS Permissions requirements
@@ -123,7 +123,7 @@ the caller must have write access to the file;
the caller's effective user ID must match the owner of the file; or
.IP \[bu]
the caller must have appropriate privileges.
-.PP
+.P
To make any change other than setting both timestamps to the
current time (i.e.,
.I times
@@ -138,7 +138,7 @@ and neither
field is
.BR UTIME_OMIT ),
either condition 2 or 3 above must apply.
-.PP
+.P
If both
.I tv_nsec
fields are specified as
@@ -161,7 +161,7 @@ for a relative pathname).
See
.BR openat (2)
for an explanation of why this can be useful.
-.PP
+.P
If
.I pathname
is relative and
@@ -173,19 +173,40 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR utimes (2)).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
The
.I flags
-field is a bit mask that may be 0, or include the following constant,
-defined in
+argument is a bit mask created by ORing together zero or more of
+the following values defined in
.IR <fcntl.h> :
.TP
+.BR AT_EMPTY_PATH " (since Linux 5.8)"
+If
+.I pathname
+is an empty string, operate on the file referred to by
+.I dirfd
+(which may have been obtained using the
+.BR open (2)
+.B O_PATH
+flag).
+In this case,
+.I dirfd
+can refer to any type of file, not just a directory.
+If
+.I dirfd
+is
+.BR AT_FDCWD ,
+the call operates on the current working directory.
+This flag is Linux-specific; define
+.B _GNU_SOURCE
+to obtain its definition.
+.TP
.B AT_SYMLINK_NOFOLLOW
If
.I pathname
@@ -383,7 +404,6 @@ T{
.BR futimens ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH VERSIONS
.SS C library/kernel ABI differences
On Linux,
@@ -402,13 +422,13 @@ the file referred to by the file descriptor
Using this feature, the call
.I "futimens(fd,\ times)"
is implemented as:
-.PP
+.P
.in +4n
.EX
utimensat(fd, NULL, times, 0);
.EE
.in
-.PP
+.P
Note, however, that the glibc wrapper for
.BR utimensat ()
disallows passing NULL as the value for
@@ -432,7 +452,7 @@ POSIX.1-2008.
.BR utimensat ()
obsoletes
.BR futimesat (2).
-.PP
+.P
On Linux, timestamps cannot be changed for a file marked immutable,
and the only change permitted for files marked append-only is to
set the timestamps to the current time.
@@ -441,7 +461,7 @@ set the timestamps to the current time.
and
.BR utimes (2)
on Linux.)
-.PP
+.P
If both
.I tv_nsec
fields are specified as
@@ -504,7 +524,7 @@ c) the wrong
value is returned in case of an error.
.\" Below, the long description of the errors from the previous bullet
.\" point (abridged because it's too much detail for a man page).
-.\" .IP *
+.\" .IP \[bu]
.\" If one of the
.\" .I tv_nsec
.\" fields is
@@ -516,7 +536,7 @@ value is returned in case of an error.
.\" should occur if the process's effective user ID does not match
.\" the file owner and the process is not privileged.
.\" Instead, the call successfully changes one of the timestamps.
-.\" .IP *
+.\" .IP \[bu]
.\" If file is not writable by the effective user ID of the process and
.\" the process's effective user ID does not match the file owner and
.\" the process is not privileged,
@@ -532,7 +552,7 @@ value is returned in case of an error.
.\" fields are
.\" .BR UTIME_NOW .
.\" Instead the call succeeds.
-.\" .IP *
+.\" .IP \[bu]
.\" If a file is marked as append-only (see
.\" .BR chattr (1)),
.\" then Linux traditionally
@@ -554,7 +574,7 @@ value is returned in case of an error.
.\" .BR UTIME_NOW .
.\" Instead, the call fails with the error
.\" .BR EPERM .
-.\" .IP *
+.\" .IP \[bu]
.\" If a file is marked as immutable (see
.\" .BR chattr (1)),
.\" then Linux traditionally
diff --git a/man2/vfork.2 b/man2/vfork.2
index 85c04d3..5d523ad 100644
--- a/man2/vfork.2
+++ b/man2/vfork.2
@@ -6,7 +6,7 @@
.\" 1999-11-10: Merged text taken from the page contributed by
.\" Reed H. Petty (rhp@draper.net)
.\"
-.TH vfork 2 2023-07-28 "Linux man-pages 6.05.01"
+.TH vfork 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
vfork \- create a child process and block parent
.SH LIBRARY
@@ -15,15 +15,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B pid_t vfork(void);
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR vfork ():
.nf
Since glibc 2.12:
@@ -61,7 +61,7 @@ just like
creates a child process of the calling process.
For details and return value and errors, see
.BR fork (2).
-.PP
+.P
.BR vfork ()
is a special case of
.BR clone (2).
@@ -70,7 +70,7 @@ the parent process.
It may be useful in performance-sensitive applications
where a child is created which then immediately issues an
.BR execve (2).
-.PP
+.P
.BR vfork ()
differs from
.BR fork (2)
@@ -90,7 +90,7 @@ established by the parent process and flushing the parent's
.BR stdio (3)
buffers), but may call
.BR _exit (2).
-.PP
+.P
As with
.BR fork (2),
the child process created by
@@ -101,7 +101,7 @@ the
.BR vfork ()
call differs only in the treatment of the virtual address space,
as described above.
-.PP
+.P
Signals sent to the parent
arrive after the child releases the parent's memory
(i.e., after the child terminates
@@ -145,7 +145,7 @@ remaining blocked until the child either terminates or calls
.BR execve (2),
and cannot rely on any specific behavior with respect to shared memory.
.\" In AIXv3.1 vfork is equivalent to fork.
-.PP
+.P
Some consider the semantics of
.BR vfork ()
to be an architectural blemish, and the 4.2BSD man page stated:
@@ -211,7 +211,7 @@ LinuxThreads threading library.
(See
.BR pthreads (7)
for a description of Linux threading libraries.)
-.PP
+.P
A call to
.BR vfork ()
is equivalent to calling
@@ -219,7 +219,7 @@ is equivalent to calling
with
.I flags
specified as:
-.PP
+.P
.in +4n
.EX
CLONE_VM | CLONE_VFORK | SIGCHLD
@@ -231,7 +231,7 @@ None.
4.3BSD; POSIX.1-2001 (but marked OBSOLETE).
POSIX.1-2008 removes the specification of
.BR vfork ().
-.PP
+.P
The
.BR vfork ()
system call appeared in 3.0BSD.
@@ -261,7 +261,7 @@ changes memory, those changes may result in an inconsistent process state
from the perspective of the parent process
(e.g., memory changes would be visible in the parent,
but changes to the state of open file descriptors would not be visible).
-.PP
+.P
When
.BR vfork ()
is called in a multithreaded process,
diff --git a/man2/vhangup.2 b/man2/vhangup.2
index af9853b..ed422b6 100644
--- a/man2/vhangup.2
+++ b/man2/vhangup.2
@@ -5,7 +5,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH vhangup 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH vhangup 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
vhangup \- virtually hangup the current terminal
.SH LIBRARY
@@ -14,15 +14,15 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.B int vhangup(void);
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR vhangup ():
.nf
Since glibc 2.21:
diff --git a/man2/vm86.2 b/man2/vm86.2
index 97595e8..fba1167 100644
--- a/man2/vm86.2
+++ b/man2/vm86.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH vm86 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH vm86 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
vm86old, vm86 \- enter virtual 8086 mode
.SH LIBRARY
@@ -12,7 +12,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/vm86.h>
-.PP
+.P
.BI "int vm86old(struct vm86_struct *" info );
.BI "int vm86(unsigned long " fn ", struct vm86plus_struct *" v86 );
.fi
@@ -29,11 +29,11 @@ The definition of
.I struct vm86_struct
was changed
in 1.1.8 and 1.1.9.
-.PP
+.P
These calls cause the process to enter VM86 mode (virtual-8086 in Intel
literature), and are used by
.BR dosemu .
-.PP
+.P
VM86 mode is an emulation of real mode within a protected mode task.
.SH RETURN VALUE
On success, zero is returned.
diff --git a/man2/vmsplice.2 b/man2/vmsplice.2
index 4520b8a..ccbf2c6 100644
--- a/man2/vmsplice.2
+++ b/man2/vmsplice.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH vmsplice 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH vmsplice 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
vmsplice \- splice user pages to/from a pipe
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <fcntl.h>
-.PP
+.P
.BI "ssize_t vmsplice(int " fd ", const struct iovec *" iov ,
.BI " size_t " nr_segs ", unsigned int " flags );
.fi
@@ -50,14 +50,14 @@ from a pipe.
The file descriptor
.I fd
must refer to a pipe.
-.PP
+.P
The pointer
.I iov
points to an array of
.I iovec
structures as described in
.BR iovec (3type).
-.PP
+.P
The
.I flags
argument is a bit mask that is composed by ORing together
@@ -148,7 +148,7 @@ as defined in
Currently,
.\" UIO_MAXIOV in kernel source
this limit is 1024.
-.PP
+.P
.\" commit 6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7
.BR vmsplice ()
really supports true splicing only from user memory to a pipe.
diff --git a/man2/wait.2 b/man2/wait.2
index cbd851e..e15ca87 100644
--- a/man2/wait.2
+++ b/man2/wait.2
@@ -26,7 +26,7 @@
.\" 2005-05-10, mtk, __W* flags can't be used with waitid()
.\" 2008-07-04, mtk, removed erroneous text about SA_NOCLDSTOP
.\"
-.TH wait 2 2023-05-03 "Linux man-pages 6.05.01"
+.TH wait 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
wait, waitpid, waitid \- wait for process to change state
.SH LIBRARY
@@ -35,21 +35,21 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/wait.h>
-.PP
+.P
.BI "pid_t wait(int *_Nullable " "wstatus" );
.BI "pid_t waitpid(pid_t " pid ", int *_Nullable " wstatus ", int " options );
-.PP
+.P
.BI "int waitid(idtype_t " idtype ", id_t " id \
", siginfo_t *" infop ", int " options );
/* This is the glibc and POSIX interface; see
NOTES for information on the raw system call. */
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR waitid ():
.nf
Since glibc 2.26:
@@ -70,7 +70,7 @@ In the case of a terminated child, performing a wait allows
the system to release the resources associated with the child;
if a wait is not performed, then the terminated child remains in
a "zombie" state (see NOTES below).
-.PP
+.P
If a child has already changed state, then these calls return immediately.
Otherwise, they block until either a child changes state or
a signal handler interrupts the call (assuming that system calls
@@ -90,13 +90,13 @@ children terminates.
The call
.I wait(&wstatus)
is equivalent to:
-.PP
+.P
.in +4n
.EX
waitpid(\-1, &wstatus, 0);
.EE
.in
-.PP
+.P
The
.BR waitpid ()
system call suspends execution of the calling thread until a
@@ -109,7 +109,7 @@ waits only for terminated children, but this behavior is modifiable
via the
.I options
argument, as described below.
-.PP
+.P
The value of
.I pid
can be:
@@ -131,7 +131,7 @@ equal to that of the calling process at the time of the call to
meaning wait for the child whose process ID is equal to the
value of
.IR pid .
-.PP
+.P
The value of
.I options
is an OR of zero or more of the following constants:
@@ -151,9 +151,9 @@ even if this option is not specified.
.BR WCONTINUED " (since Linux 2.6.10)"
also return if a stopped child has been resumed by delivery of
.BR SIGCONT .
-.PP
+.P
(For Linux-only options, see below.)
-.PP
+.P
If
.I wstatus
is not NULL,
@@ -233,7 +233,7 @@ The
.BR waitid ()
system call (available since Linux 2.6.9) provides more precise
control over which child state changes to wait for.
-.PP
+.P
The
.I idtype
and
@@ -266,7 +266,7 @@ as the caller's process group at the time of the call.
Wait for any child;
.I id
is ignored.
-.PP
+.P
The child state changes to wait for are specified by ORing
one or more of the following flags in
.IR options :
@@ -281,7 +281,7 @@ Wait for children that have been stopped by delivery of a signal.
Wait for (previously stopped) children that have been
resumed by delivery of
.BR SIGCONT .
-.PP
+.P
The following flags may additionally be ORed in
.IR options :
.TP
@@ -292,7 +292,7 @@ As for
.B WNOWAIT
Leave the child in a waitable state; a later wait call
can be used to again retrieve the child status information.
-.PP
+.P
Upon successful return,
.BR waitid ()
fills in the following fields of the
@@ -337,7 +337,7 @@ Set to one of:
.B CLD_CONTINUED
(child continued by
.BR SIGCONT ).
-.PP
+.P
If
.B WNOHANG
was specified in
@@ -355,7 +355,7 @@ waitable state, zero out the
.I si_pid
field before the call and check for a nonzero value in this field
after the call returns.
-.PP
+.P
POSIX.1-2008 Technical Corrigendum 1 (2013) adds the requirement that when
.B WNOHANG
is specified in
@@ -382,7 +382,7 @@ not all implementations follow the POSIX.1 specification on this point.
.BR wait ():
on success, returns the process ID of the terminated child;
on failure, \-1 is returned.
-.PP
+.P
.BR waitpid ():
on success, returns the process ID of the child whose state has changed;
if
@@ -391,7 +391,7 @@ was specified and one or more child(ren) specified by
.I pid
exist, but have not yet changed state, then 0 is returned.
On failure, \-1 is returned.
-.PP
+.P
.BR waitid ():
returns 0 on success or
if
@@ -404,7 +404,7 @@ on failure, \-1 is returned.
.\" returns the PID of the child. Either this is a bug, or it is intended
.\" behavior that needs to be documented. See my Jan 2009 LKML mail
.\" "waitid() return value strangeness when infop is NULL".
-.PP
+.P
On failure, each of these calls sets
.I errno
to indicate the error.
@@ -465,7 +465,7 @@ is equal to
.BR wait ()
is actually a library function that (in glibc) is implemented as a call to
.BR wait4 (2).
-.PP
+.P
On some architectures, there is no
.BR waitpid ()
system call;
@@ -473,7 +473,7 @@ system call;
instead, this interface is implemented via a C library
wrapper function that calls
.BR wait4 (2).
-.PP
+.P
The raw
.BR waitid ()
system call takes a fifth argument, of type
@@ -507,7 +507,7 @@ are adopted by
operation);
.BR init (1)
automatically performs a wait to remove the zombies.
-.PP
+.P
POSIX.1-2001 specifies that if the disposition of
.B SIGCHLD
is set to
@@ -536,7 +536,7 @@ Note that even though the default disposition of
is "ignore", explicitly setting the disposition to
.B SIG_IGN
results in different treatment of zombie process children.)
-.PP
+.P
Linux 2.6 conforms to the POSIX requirements.
However, Linux 2.4 (and earlier) does not:
if a
@@ -565,7 +565,7 @@ of another thread, even when the latter belongs to the same thread group.
However, POSIX prescribes such functionality, and since Linux 2.4
a thread can, and by default will, wait on children of other threads
in the same thread group.
-.PP
+.P
The following Linux-specific
.I options
are for use with children created using
@@ -596,7 +596,7 @@ type ("clone" or "non-clone").
Do not wait for children of other threads in
the same thread group.
This was the default before Linux 2.4.
-.PP
+.P
Since Linux 4.7,
.\" commit bf959931ddb88c4e4366e96dd22e68fa0db9527c
.\" prevents cases where an unreapable zombie is created if
@@ -636,9 +636,9 @@ using the integer supplied on the command line as the exit status.
The parent process executes a loop that monitors the child using
.BR waitpid (),
and uses the W*() macros described above to analyze the wait status value.
-.PP
+.P
The following shell session demonstrates the use of the program:
-.PP
+.P
.in +4n
.EX
.RB "$" " ./a.out &"
diff --git a/man2/wait4.2 b/man2/wait4.2
index 7136d70..8e0798a 100644
--- a/man2/wait4.2
+++ b/man2/wait4.2
@@ -10,7 +10,7 @@
.\" Rewrote much of this page, and removed much duplicated text,
.\" replacing with pointers to wait.2
.\"
-.TH wait4 2 2023-03-30 "Linux man-pages 6.05.01"
+.TH wait4 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
wait3, wait4 \- wait for process to change state, BSD style
.SH LIBRARY
@@ -19,18 +19,18 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <sys/wait.h>
-.PP
+.P
.BI "pid_t wait3(int *_Nullable " "wstatus" ", int " options ,
.BI " struct rusage *_Nullable " rusage );
.BI "pid_t wait4(pid_t " pid ", int *_Nullable " wstatus ", int " options ,
.BI " struct rusage *_Nullable " rusage );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR wait3 ():
.nf
Since glibc 2.26:
@@ -44,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
.fi
-.PP
+.P
.BR wait4 ():
.nf
Since glibc 2.19:
@@ -58,7 +58,7 @@ These functions are nonstandard; in new programs, the use of
or
.BR waitid (2)
is preferable.
-.PP
+.P
The
.BR wait3 ()
and
@@ -68,45 +68,45 @@ system calls are similar to
but additionally return resource usage information about the
child in the structure pointed to by
.IR rusage .
-.PP
+.P
Other than the use of the
.I rusage
argument, the following
.BR wait3 ()
call:
-.PP
+.P
.in +4n
.EX
wait3(wstatus, options, rusage);
.EE
.in
-.PP
+.P
is equivalent to:
-.PP
+.P
.in +4n
.EX
waitpid(\-1, wstatus, options);
.EE
.in
-.PP
+.P
Similarly, the following
.BR wait4 ()
call:
-.PP
+.P
.in +4n
.EX
wait4(pid, wstatus, options, rusage);
.EE
.in
-.PP
+.P
is equivalent to:
-.PP
+.P
.in +4n
.EX
waitpid(pid, wstatus, options);
.EE
.in
-.PP
+.P
In other words,
.BR wait3 ()
waits of any child, while
@@ -115,7 +115,7 @@ can be used to select a specific child, or children, on which to wait.
See
.BR wait (2)
for further details.
-.PP
+.P
If
.I rusage
is not NULL, the
@@ -135,14 +135,14 @@ As for
None.
.SH HISTORY
4.3BSD.
-.PP
+.P
SUSv1 included a specification of
.BR wait3 ();
SUSv2 included
.BR wait3 (),
but marked it LEGACY;
SUSv3 removed it.
-.PP
+.P
Including
.I <sys/time.h>
is not required these days, but increases portability.
diff --git a/man2/write.2 b/man2/write.2
index d1dc273..fc22ae3 100644
--- a/man2/write.2
+++ b/man2/write.2
@@ -16,7 +16,7 @@
.\" gave some examples of why this might occur.
.\" Noted what happens if write() is interrupted by a signal.
.\"
-.TH write 2 2023-04-03 "Linux man-pages 6.05.01"
+.TH write 2 2023-10-31 "Linux man-pages 6.7"
.SH NAME
write \- write to a file descriptor
.SH LIBRARY
@@ -25,7 +25,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <unistd.h>
-.PP
+.P
.BI "ssize_t write(int " fd ", const void " buf [. count "], size_t " count );
.fi
.SH DESCRIPTION
@@ -36,7 +36,7 @@ bytes from the buffer starting at
.I buf
to the file referred to by the file descriptor
.IR fd .
-.PP
+.P
The number of bytes written may be less than
.I count
if, for example,
@@ -50,7 +50,7 @@ handler after having written less than
bytes.
(See also
.BR pipe (7).)
-.PP
+.P
For a seekable file (i.e., one to which
.BR lseek (2)
may be applied, for example, a regular file)
@@ -64,14 +64,14 @@ with
the file offset is first set to the end of the file before writing.
The adjustment of the file offset and the write operation
are performed as an atomic step.
-.PP
+.P
POSIX requires that a
.BR read (2)
that can be proved to occur after a
.BR write ()
has returned will return the new data.
Note that not all filesystems are POSIX conforming.
-.PP
+.P
According to POSIX.1, if
.I count
is greater than
@@ -82,7 +82,7 @@ see NOTES for the upper limit on Linux.
On success, the number of bytes written is returned.
On error, \-1 is returned, and \fIerrno\fP is set
to indicate the error.
-.PP
+.P
Note that a successful
.BR write ()
may transfer fewer than
@@ -100,7 +100,7 @@ In the event of a partial write, the caller can make another
call to transfer the remaining bytes.
The subsequent call will either transfer further bytes or
may result in an error (e.g., if the disk is now full).
-.PP
+.P
If \fIcount\fP is zero and
.I fd
refers to a regular file, then
@@ -222,7 +222,7 @@ When this happens the writing process will also receive a
signal.
(Thus, the write return value is seen only if the program
catches, blocks or ignores this signal.)
-.PP
+.P
Other errors may occur, depending on the object connected to
.IR fd .
.SH STANDARDS
@@ -231,7 +231,7 @@ POSIX.1-2008.
SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional error
.\" conditions EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, or ERANGE.
-.PP
+.P
Under SVr4 a write may be interrupted and return
.B EINTR
at any point,
@@ -251,7 +251,7 @@ or even
The only way to be sure is to call
.BR fsync (2)
after you are done writing all your data.
-.PP
+.P
If a
.BR write ()
is interrupted by a signal handler before any bytes are written,
@@ -259,7 +259,7 @@ then the call fails with the error
.BR EINTR ;
if it is interrupted after at least one byte has been written,
the call succeeds, and returns the number of bytes written.
-.PP
+.P
On Linux,
.BR write ()
(and similar system calls) will transfer at most
@@ -267,7 +267,7 @@ On Linux,
returning the number of bytes actually transferred.
.\" commit e28cc71572da38a5a12c1cfe4d7032017adccf69
(This is true on both 32-bit and 64-bit systems.)
-.PP
+.P
An error return value while performing
.BR write ()
using direct I/O does not mean the
@@ -279,13 +279,13 @@ was attempted should be considered inconsistent.
.SH BUGS
According to POSIX.1-2008/SUSv4 Section XSI 2.9.7
("Thread Interactions with Regular File Operations"):
-.PP
+.P
.RS 4
All of the following functions shall be atomic with respect to
each other in the effects specified in POSIX.1-2008 when they
operate on regular files or symbolic links: ...
.RE
-.PP
+.P
Among the APIs subsequently listed are
.BR write ()
and