summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2023-07-18 00:31:19 +0200
committerAlejandro Colomar <alx@kernel.org>2023-07-30 22:46:37 +0200
commitdc2c5cd382642bd5863fba0d9771491daabd92eb (patch)
treebaee508d80cbe83b786db0143707ec39263fa6ef
parentfed449894668ca9306290e939107984af0604cb9 (diff)
man7/: srcfixf
Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--man7/ascii.72
-rw-r--r--man7/capabilities.72
-rw-r--r--man7/cgroups.732
-rw-r--r--man7/cpuset.785
-rw-r--r--man7/credentials.76
-rw-r--r--man7/environ.79
-rw-r--r--man7/feature_test_macros.715
-rw-r--r--man7/inode.753
-rw-r--r--man7/ip.72
-rw-r--r--man7/man.717
-rw-r--r--man7/mount_namespaces.7188
-rw-r--r--man7/namespaces.724
-rw-r--r--man7/netlink.72
-rw-r--r--man7/pipe.78
-rw-r--r--man7/process-keyring.74
-rw-r--r--man7/regex.7186
-rw-r--r--man7/sched.7140
-rw-r--r--man7/session-keyring.75
-rw-r--r--man7/tcp.712
-rw-r--r--man7/time_namespaces.734
-rw-r--r--man7/user-session-keyring.75
21 files changed, 517 insertions, 314 deletions
diff --git a/man7/ascii.7 b/man7/ascii.7
index 4f0c4f902..e86080ef0 100644
--- a/man7/ascii.7
+++ b/man7/ascii.7
@@ -25,7 +25,7 @@ The international counterpart of ASCII is known as ISO 646-IRV.
.PP
The following table contains the 128 ASCII characters.
.PP
-C program \f(CW\[aq]\eX\[aq]\fP escapes are noted.
+C program \f[CW]\[aq]\eX\[aq]\f[] escapes are noted.
.PP
.EX
.TS
diff --git a/man7/capabilities.7 b/man7/capabilities.7
index dca8b01cf..a361ca670 100644
--- a/man7/capabilities.7
+++ b/man7/capabilities.7
@@ -1773,7 +1773,7 @@ Something like:
.PP
.in +4n
.EX
-$ \fBsudo strace \-o trace.log \-u ceci ./myprivprog\fP
+.RB $ " sudo strace \-o trace.log \-u ceci ./myprivprog"
.EE
.in
.PP
diff --git a/man7/cgroups.7 b/man7/cgroups.7
index 6ac3f59e1..ab4ce01d5 100644
--- a/man7/cgroups.7
+++ b/man7/cgroups.7
@@ -242,7 +242,7 @@ Additionally, the availability of the cgroups feature is governed by the
.B CONFIG_CGROUPS
kernel configuration option.
.TP
-.IR cpu " (since Linux 2.6.24; " \fBCONFIG_CGROUP_SCHED\fP )
+.IR cpu " (since Linux 2.6.24; " \f[B]CONFIG_CGROUP_SCHED\f[] )
Cgroups can be guaranteed a minimum number of "CPU shares"
when a system is busy.
This does not limit a cgroup's CPU usage if the CPUs are not busy.
@@ -266,7 +266,7 @@ Further information can be found in the kernel source file
.I Documentation/scheduler/sched\-bwc.txt
in Linux 5.2 and earlier).
.TP
-.IR cpuacct " (since Linux 2.6.24; " \fBCONFIG_CGROUP_CPUACCT\fP )
+.IR cpuacct " (since Linux 2.6.24; " \f[B]CONFIG_CGROUP_CPUACCT\f[] )
This provides accounting for CPU usage by groups of processes.
.IP
Further information can be found in the kernel source file
@@ -275,7 +275,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/cpuacct.txt
in Linux 5.2 and earlier).
.TP
-.IR cpuset " (since Linux 2.6.24; " \fBCONFIG_CPUSETS\fP )
+.IR cpuset " (since Linux 2.6.24; " \f[B]CONFIG_CPUSETS\f[] )
This cgroup can be used to bind the processes in a cgroup to
a specified set of CPUs and NUMA nodes.
.IP
@@ -286,7 +286,7 @@ Further information can be found in the kernel source file
in Linux 5.2 and earlier).
.
.TP
-.IR memory " (since Linux 2.6.25; " \fBCONFIG_MEMCG\fP )
+.IR memory " (since Linux 2.6.25; " \f[B]CONFIG_MEMCG\f[] )
The memory controller supports reporting and limiting of process memory, kernel
memory, and swap used by cgroups.
.IP
@@ -296,7 +296,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/memory.txt
in Linux 5.2 and earlier).
.TP
-.IR devices " (since Linux 2.6.26; " \fBCONFIG_CGROUP_DEVICE\fP )
+.IR devices " (since Linux 2.6.26; " \f[B]CONFIG_CGROUP_DEVICE\f[] )
This supports controlling which processes may create (mknod) devices as
well as open them for reading or writing.
The policies may be specified as allow-lists and deny-lists.
@@ -309,7 +309,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/devices.txt
in Linux 5.2 and earlier).
.TP
-.IR freezer " (since Linux 2.6.28; " \fBCONFIG_CGROUP_FREEZER\fP )
+.IR freezer " (since Linux 2.6.28; " \f[B]CONFIG_CGROUP_FREEZER\f[] )
The
.I freezer
cgroup can suspend and restore (resume) all processes in a cgroup.
@@ -325,7 +325,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/freezer\-subsystem.txt
in Linux 5.2 and earlier).
.TP
-.IR net_cls " (since Linux 2.6.29; " \fBCONFIG_CGROUP_NET_CLASSID\fP )
+.IR net_cls " (since Linux 2.6.29; " \f[B]CONFIG_CGROUP_NET_CLASSID\f[] )
This places a classid, specified for the cgroup, on network packets
created by a cgroup.
These classids can then be used in firewall rules,
@@ -340,7 +340,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/net_cls.txt
in Linux 5.2 and earlier).
.TP
-.IR blkio " (since Linux 2.6.33; " \fBCONFIG_BLK_CGROUP\fP )
+.IR blkio " (since Linux 2.6.33; " \f[B]CONFIG_BLK_CGROUP\f[] )
The
.I blkio
cgroup controls and limits access to specified block devices by
@@ -360,14 +360,14 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/blkio\-controller.txt
in Linux 5.2 and earlier).
.TP
-.IR perf_event " (since Linux 2.6.39; " \fBCONFIG_CGROUP_PERF\fP )
+.IR perf_event " (since Linux 2.6.39; " \f[B]CONFIG_CGROUP_PERF\f[] )
This controller allows
.I perf
monitoring of the set of processes grouped in a cgroup.
.IP
Further information can be found in the kernel source files
.TP
-.IR net_prio " (since Linux 3.3; " \fBCONFIG_CGROUP_NET_PRIO\fP )
+.IR net_prio " (since Linux 3.3; " \f[B]CONFIG_CGROUP_NET_PRIO\f[] )
This allows priorities to be specified, per network interface, for cgroups.
.IP
Further information can be found in the kernel source file
@@ -376,7 +376,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/net_prio.txt
in Linux 5.2 and earlier).
.TP
-.IR hugetlb " (since Linux 3.5; " \fBCONFIG_CGROUP_HUGETLB\fP )
+.IR hugetlb " (since Linux 3.5; " \f[B]CONFIG_CGROUP_HUGETLB\f[] )
This supports limiting the use of huge pages by cgroups.
.IP
Further information can be found in the kernel source file
@@ -385,7 +385,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/hugetlb.txt
in Linux 5.2 and earlier).
.TP
-.IR pids " (since Linux 4.3; " \fBCONFIG_CGROUP_PIDS\fP )
+.IR pids " (since Linux 4.3; " \f[B]CONFIG_CGROUP_PIDS\f[] )
This controller permits limiting the number of process that may be created
in a cgroup (and its descendants).
.IP
@@ -395,7 +395,7 @@ Further information can be found in the kernel source file
.I Documentation/cgroup\-v1/pids.txt
in Linux 5.2 and earlier).
.TP
-.IR rdma " (since Linux 4.11; " \fBCONFIG_CGROUP_RDMA\fP )
+.IR rdma " (since Linux 4.11; " \f[B]CONFIG_CGROUP_RDMA\f[] )
The RDMA controller permits limiting the use of
RDMA/IB-specific resources per cgroup.
.IP
@@ -862,7 +862,7 @@ providing state information about the cgroup:
.PP
.in +4n
.EX
-$ \fBcat mygrp/cgroup.events\fP
+.RB $ " cat mygrp/cgroup.events"
populated 1
frozen 0
.EE
@@ -1852,7 +1852,7 @@ As at Linux 4.15, one sees the following when inspecting this file:
.IP
.in +4n
.EX
-$ \fBcat /sys/kernel/cgroup/delegate\fP
+.RB $ " cat /sys/kernel/cgroup/delegate"
cgroup.procs
cgroup.subtree_control
cgroup.threads
@@ -1870,7 +1870,7 @@ Features are listed one per line:
.IP
.in +4n
.EX
-$ \fBcat /sys/kernel/cgroup/features\fP
+.RB $ " cat /sys/kernel/cgroup/features"
nsdelegate
memory_localevents
.EE
diff --git a/man7/cpuset.7 b/man7/cpuset.7
index 20902db85..92bdb042b 100644
--- a/man7/cpuset.7
+++ b/man7/cpuset.7
@@ -172,14 +172,17 @@ If set (1), that cpuset will receive special handling
after it is released, that is, after all processes cease using
it (i.e., terminate or are moved to a different cpuset)
and all child cpuset directories have been removed.
-See the \fBNotify On Release\fR section, below.
+See the
+.B Notify On Release \" Sx
+section, below.
.\" ====================== cpus ======================
.TP
.I cpuset.cpus
List of the physical numbers of the CPUs on which processes
in that cpuset are allowed to execute.
-See \fBList Format\fR below for a description of the
-format of
+See
+.B List Format \" Sx
+below for a description of the format of
.IR cpus .
.IP
The CPUs allowed to a cpuset may be changed by
@@ -220,8 +223,9 @@ of its parent cpuset.
.I cpuset.mems
List of memory nodes on which processes in this cpuset are
allowed to allocate memory.
-See \fBList Format\fR below for a description of the
-format of
+See
+.B List Format \" Sx
+below for a description of the format of
.IR mems .
.\" ==================== mem_exclusive ====================
.TP
@@ -229,7 +233,9 @@ format of
Flag (0 or 1).
If set (1), the cpuset has exclusive use of
its memory nodes (no sibling or cousin may overlap).
-Also if set (1), the cpuset is a \fBHardwall\fR cpuset (see below).
+Also if set (1), the cpuset is a
+.B Hardwall \" Sx
+cpuset (see below).
By default, this is off (0).
Newly created cpusets also initially default this to off (0).
.IP
@@ -243,11 +249,14 @@ of that cpuset's parent cpuset.
.TP
.IR cpuset.mem_hardwall " (since Linux 2.6.26)"
Flag (0 or 1).
-If set (1), the cpuset is a \fBHardwall\fR cpuset (see below).
-Unlike \fBmem_exclusive\fR,
-there is no constraint on whether cpusets
-marked \fBmem_hardwall\fR may have overlapping
-memory nodes with sibling or cousin cpusets.
+If set (1), the cpuset is a
+.B Hardwall
+cpuset (see below).
+Unlike
+.BR mem_exclusive ,
+there is no constraint on whether cpusets marked
+.B mem_hardwall
+may have overlapping memory nodes with sibling or cousin cpusets.
By default, this is off (0).
Newly created cpusets also initially default this to off (0).
.\" ==================== memory_migrate ====================
@@ -256,13 +265,17 @@ Newly created cpusets also initially default this to off (0).
Flag (0 or 1).
If set (1), then memory migration is enabled.
By default, this is off (0).
-See the \fBMemory Migration\fR section, below.
+See the
+.B Memory Migration \" Sx
+section, below.
.\" ==================== memory_pressure ====================
.TP
.IR cpuset.memory_pressure " (since Linux 2.6.16)"
A measure of how much memory pressure the processes in this
cpuset are causing.
-See the \fBMemory Pressure\fR section, below.
+See the
+.B Memory Pressure \" Sx
+section, below.
Unless
.I memory_pressure_enabled
is enabled, always has value zero (0).
@@ -281,7 +294,8 @@ If set (1), the
calculations are enabled for all cpusets in the system.
By default, this is off (0).
See the
-\fBMemory Pressure\fR section, below.
+.B Memory Pressure \" Sx
+section, below.
.\" ================== memory_spread_page ==================
.TP
.IR cpuset.memory_spread_page " (since Linux 2.6.17)"
@@ -291,7 +305,9 @@ If set (1), pages in the kernel page cache
By default, this is off (0) in the top cpuset,
and inherited from the parent cpuset in
newly created cpusets.
-See the \fBMemory Spread\fR section, below.
+See the
+.B Memory Spread \" Sx
+section, below.
.\" ================== memory_spread_slab ==================
.TP
.IR cpuset.memory_spread_slab " (since Linux 2.6.17)"
@@ -302,7 +318,9 @@ uniformly spread across the cpuset.
By default, is off (0) in the top cpuset,
and inherited from the parent cpuset in
newly created cpusets.
-See the \fBMemory Spread\fR section, below.
+See the
+.B Memory Spread \" Sx
+section, below.
.\" ================== sched_load_balance ==================
.TP
.IR cpuset.sched_load_balance " (since Linux 2.6.24)"
@@ -316,7 +334,9 @@ kernel will avoid load balancing processes in this cpuset,
some other cpuset with overlapping CPUs has its
.I sched_load_balance
flag set.
-See \fBScheduler Load Balancing\fR, below, for further details.
+See
+.BR "Scheduler Load Balancing" , \" Sx
+below, for further details.
.\" ================== sched_relax_domain_level ==================
.TP
.IR cpuset.sched_relax_domain_level " (since Linux 2.6.26)"
@@ -336,7 +356,9 @@ is enabled, then the higher the value of the
.IR sched_relax_domain_level ,
the wider
the range of CPUs over which immediate load balancing is attempted.
-See \fBScheduler Relax Domain Level\fR, below, for further details.
+See
+.BR "Scheduler Relax Domain Level" , \" Sx
+below, for further details.
.\" ================== proc cpuset ==================
.PP
In addition to the above pseudo-files in each directory below
@@ -355,7 +377,11 @@ displaying the process's
(on which CPUs it may be scheduled) and
.I Mems_allowed
(on which memory nodes it may obtain memory),
-in the two formats \fBMask Format\fR and \fBList Format\fR (see below)
+in the two formats
+.B Mask Format \" Sx
+and
+.B List Format \" Sx
+(see below)
as shown in the following example:
.PP
.in +4n
@@ -516,7 +542,9 @@ Unless memory pressure calculation is enabled by setting the pseudo-file
it is not computed for any cpuset, and reads from any
.I memory_pressure
always return zero, as represented by the ASCII string "0\en".
-See the \fBWARNINGS\fR section, below.
+See the
+.B WARNINGS \" Sx
+section, below.
.PP
A per-cpuset, running average is employed for the following reasons:
.IP \[bu] 3
@@ -701,7 +729,9 @@ worthwhile performance benefits.
.PP
By default, load balancing is done across all CPUs, except those
marked isolated using the kernel boot time "isolcpus=" argument.
-(See \fBScheduler Relax Domain Level\fR, below, to change this default.)
+(See
+.BR "Scheduler Relax Domain Level" , \" Sx
+below, to change this default.)
.PP
This default load balancing across all CPUs is not well suited to
the following two situations:
@@ -728,7 +758,8 @@ When the per-cpuset flag
.I sched_load_balance
is disabled, then the
scheduler will avoid load balancing across the CPUs in that cpuset,
-\fIexcept\fR in so far as is necessary because some overlapping cpuset
+.I except
+in so far as is necessary because some overlapping cpuset
has
.I sched_load_balance
enabled.
@@ -856,8 +887,8 @@ The following formats are used to represent sets of
CPUs and memory nodes.
.\" ================== Mask Format ==================
.SS Mask format
-The \fBMask Format\fR is used to represent CPU and memory-node bit masks
-in the
+The Mask Format is used to
+represent CPU and memory-node bit masks in the
.IR /proc/ pid /status
file.
.PP
@@ -872,7 +903,7 @@ The hex digits within a word are also in big-endian order.
The number of 32-bit words displayed is the minimum number needed to
display all bits of the bit mask, based on the size of the bit mask.
.PP
-Examples of the \fBMask Format\fR:
+Examples of the Mask Format:
.PP
.in +4n
.EX
@@ -897,14 +928,14 @@ second for bit 32, the third for bit 16, the fourth for bit 8, the
fifth for bit 4, and the "7" is for bits 2, 1, and 0.
.\" ================== List Format ==================
.SS List format
-The \fBList Format\fR for
+The List Format for
.I cpus
and
.I mems
is a comma-separated list of CPU or memory-node
numbers and ranges of numbers, in ASCII decimal.
.PP
-Examples of the \fBList Format\fR:
+Examples of the List Format:
.PP
.in +4n
.EX
diff --git a/man7/credentials.7 b/man7/credentials.7
index 77cb5e0ef..317f59e8f 100644
--- a/man7/credentials.7
+++ b/man7/credentials.7
@@ -79,7 +79,8 @@ same process group).
A process's group membership can be set using
.BR setpgid (2).
The process whose process ID is the same as its process group ID is the
-\fIprocess group leader\fP for that group.
+.I process group leader
+for that group.
.PP
A session is a collection of processes that share the same session ID.
All of the members of a process group also have the same session ID
@@ -91,7 +92,8 @@ A new session is created when a process calls
which creates a new session whose session ID is the same
as the PID of the process that called
.BR setsid (2).
-The creator of the session is called the \fIsession leader\fP.
+The creator of the session is called the
+.IR "session leader" .
.PP
All of the processes in a session share a
.IR "controlling terminal" .
diff --git a/man7/environ.7 b/man7/environ.7
index 3d4f707d6..165117368 100644
--- a/man7/environ.7
+++ b/man7/environ.7
@@ -35,9 +35,11 @@ of its parent's environment.
.PP
By convention, the strings in
.I environ
-have the form "\fIname\fP\fB=\fP\fIvalue\fP".
+have the form
+. RI \[dq] name\f[B]=\f[]value \[dq].
The name is case-sensitive and may not contain
-the character "\fB=\fP".
+the character
+.RB \[dq] = \[dq].
The value can be anything that can be represented as a string.
The name and the value may not contain an embedded null byte (\[aq]\e0\[aq]),
since this is assumed to terminate the string.
@@ -131,7 +133,8 @@ The sequence of directory prefixes that
and many other
programs employ when searching for an executable file that is specified
as a simple filename (i.a., a pathname that contains no slashes).
-The prefixes are separated by colons (\fB:\fP).
+The prefixes are separated by colons
+.RB ( : ).
The list of prefixes is searched from beginning to end,
by checking the pathname formed by concatenating
a prefix, a slash, and the filename,
diff --git a/man7/feature_test_macros.7 b/man7/feature_test_macros.7
index 10e973dbc..3bc2173ca 100644
--- a/man7/feature_test_macros.7
+++ b/man7/feature_test_macros.7
@@ -125,7 +125,8 @@ that the proper function declarations are visible,
and the macros are not defined by default.
.SS Feature test macros understood by glibc
The paragraphs below explain how feature test macros are handled
-in glibc 2.\fIx\fP,
+in glibc
+.RI 2. x ,
.I x
> 0.
.PP
@@ -814,20 +815,20 @@ shows some examples of what we would see:
.PP
.in +4n
.EX
-$ \fBcc ftm.c\fP
-$ \fB./a.out\fP
+.RB $ " cc ftm.c"
+.RB $ " ./a.out"
_POSIX_SOURCE defined
_POSIX_C_SOURCE defined: 200809L
_BSD_SOURCE defined
_SVID_SOURCE defined
_ATFILE_SOURCE defined
-$ \fBcc \-D_XOPEN_SOURCE=500 ftm.c\fP
-$ \fB./a.out\fP
+.RB $ " cc \-D_XOPEN_SOURCE=500 ftm.c"
+.RB $ " ./a.out"
_POSIX_SOURCE defined
_POSIX_C_SOURCE defined: 199506L
_XOPEN_SOURCE defined: 500
-$ \fBcc \-D_GNU_SOURCE ftm.c\fP
-$ \fB./a.out\fP
+.RB $ " cc \-D_GNU_SOURCE ftm.c"
+.RB $ " ./a.out"
_POSIX_SOURCE defined
_POSIX_C_SOURCE defined: 200809L
_ISOC99_SOURCE defined
diff --git a/man7/inode.7 b/man7/inode.7
index 2fc4fde3c..8b6136cff 100644
--- a/man7/inode.7
+++ b/man7/inode.7
@@ -26,7 +26,10 @@ and
.BR statx (2):
.TP
Device where inode resides
-\fIstat.st_dev\fP; \fIstatx.stx_dev_minor\fP and \fIstatx.stx_dev_major\fP
+.IR stat.st_dev ;
+.I statx.stx_dev_minor
+and
+.I statx.stx_dev_major
.IP
Each inode (as well as the associated file) resides in a filesystem
that is hosted on a device.
@@ -35,7 +38,8 @@ That device is identified by the combination of its major ID
and minor ID (which identifies a specific instance in the general class).
.TP
Inode number
-\fIstat.st_ino\fP; \fIstatx.stx_ino\fP
+.IR stat.st_ino ;
+.I statx.stx_ino
.IP
Each file in a filesystem has a unique inode number.
Inode numbers are guaranteed to be unique only within a filesystem
@@ -44,12 +48,14 @@ which is the reason that hard links may not cross filesystem boundaries).
This field contains the file's inode number.
.TP
File type and mode
-\fIstat.st_mode\fP; \fIstatx.stx_mode\fP
+.IR stat.st_mode ;
+.I statx.stx_mode
.IP
See the discussion of file type and mode, below.
.TP
Link count
-\fIstat.st_nlink\fP; \fIstatx.stx_nlink\fP
+.IR stat.st_nlink ;
+.I statx.stx_nlink
.IP
This field contains the number of hard links to the file.
Additional links to an existing file are created using
@@ -57,7 +63,8 @@ Additional links to an existing file are created using
.TP
User ID
.I st_uid
-\fIstat.st_uid\fP; \fIstatx.stx_uid\fP
+.IR stat.st_uid ;
+.I statx.stx_uid
.IP
This field records the user ID of the owner of the file.
For newly created files,
@@ -66,7 +73,8 @@ The user ID of a file can be changed using
.BR chown (2).
.TP
Group ID
-\fIstat.st_gid\fP; \fIstatx.stx_gid\fP
+.IR stat.st_gid ;
+.I statx.stx_gid
.IP
The inode records the ID of the group owner of the file.
For newly created files,
@@ -78,13 +86,17 @@ The group ID of a file can be changed using
.BR chown (2).
.TP
Device represented by this inode
-\fIstat.st_rdev\fP; \fIstatx.stx_rdev_minor\fP and \fIstatx.stx_rdev_major\fP
+.IR stat.st_rdev ;
+.I statx.stx_rdev_minor
+and
+.I statx.stx_rdev_major
.IP
If this file (inode) represents a device,
then the inode records the major and minor ID of that device.
.TP
File size
-\fIstat.st_size\fP; \fIstatx.stx_size\fP
+.IR stat.st_size ;
+.I statx.stx_size
.IP
This field gives the size of the file (if it is a regular
file or a symbolic link) in bytes.
@@ -92,14 +104,16 @@ The size of a symbolic link is the length of the pathname
it contains, without a terminating null byte.
.TP
Preferred block size for I/O
-\fIstat.st_blksize\fP; \fIstatx.stx_blksize\fP
+.IR stat.st_blksize ;
+.I statx.stx_blksize
.IP
This field gives the "preferred" blocksize for efficient filesystem I/O.
(Writing to a file in smaller chunks may cause
an inefficient read-modify-rewrite.)
.TP
Number of blocks allocated to the file
-\fIstat.st_blocks\fP; \fIstatx.stx_size\fP
+.IR stat.st_blocks ;
+.I statx.stx_size
.IP
This field indicates the number of blocks allocated to the file,
512-byte units,
@@ -119,7 +133,8 @@ on a few systems, a different unit is used, such as 1024.
Furthermore, the unit may differ on a per-filesystem basis.
.TP
Last access timestamp (atime)
-\fIstat.st_atime\fP; \fIstatx.stx_atime\fP
+.IR stat.st_atime ;
+.I statx.stx_atime
.IP
This is the file's last access timestamp.
It is changed by file accesses, for example, by
@@ -152,7 +167,10 @@ flag; see
.BR open (2).
.TP
File creation (birth) timestamp (btime)
-(not returned in the \fIstat\fP structure); \fIstatx.stx_btime\fP
+(not returned in the
+.I stat
+structure);
+.I statx.stx_btime
.IP
The file's creation timestamp.
This is set on file creation and not changed subsequently.
@@ -162,7 +180,8 @@ and is not currently supported by most Linux filesystems.
.\" FIXME Is it supported on ext4 and XFS?
.TP
Last modification timestamp (mtime)
-\fIstat.st_mtime\fP; \fIstatx.stx_mtime\fP
+.IR stat.st_mtime ;
+.I statx.stx_mtime
.IP
This is the file's last modification timestamp.
It is changed by file modifications, for example, by
@@ -180,7 +199,8 @@ The mtime timestamp is
changed for changes in owner, group, hard link count, or mode.
.TP
Last status change timestamp (ctime)
-\fIstat.st_ctime\fP; \fIstatx.stx_ctime\fP
+.IR stat.st_ctime ;
+.I statx.stx_ctime
.IP
This is the file's last status change timestamp.
It is changed by writing or by setting inode information
@@ -348,7 +368,7 @@ field:
.TS
lB l lx.
S_ISUID 04000 T{
-set-user-ID bit (see \fBexecve\fP(2))
+set-user-ID bit (see \f[B]execve\f[](2))
T}
S_ISGID 02000 T{
set-group-ID bit (see below)
@@ -463,7 +483,8 @@ and
.BR S_IXUSR .
.SH NOTES
For pseudofiles that are autogenerated by the kernel, the file size
-(\fIstat.st_size\fP; \fIstatx.stx_size\fP)
+.RI ( stat.st_size ;
+.IR statx.stx_size )
reported by the kernel is not accurate.
For example, the value 0 is returned for many files under the
.I /proc
diff --git a/man7/ip.7 b/man7/ip.7
index c12b03e1b..942069ec4 100644
--- a/man7/ip.7
+++ b/man7/ip.7
@@ -44,7 +44,7 @@ ip \- Linux IPv4 protocol implementation
.\" .B #include <net/netinet.h> -- does not exist anymore
.\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
.B #include <netinet/in.h>
-.B #include <netinet/ip.h> \fR/* superset of previous */
+.BR "#include <netinet/ip.h>" " /* superset of previous */"
.PP
.IB tcp_socket " = socket(AF_INET, SOCK_STREAM, 0);"
.IB udp_socket " = socket(AF_INET, SOCK_DGRAM, 0);"
diff --git a/man7/man.7 b/man7/man.7
index 583fe354f..87cb5bbcc 100644
--- a/man7/man.7
+++ b/man7/man.7
@@ -53,11 +53,15 @@ option is, however, recommended, since this will automatically detect which
macro package is in use.
.PP
For conventions that should be employed when writing man pages
-for the Linux \fIman-pages\fP package, see
+for the Linux
+.I man-pages
+package, see
.BR man\-pages (7).
.SS Title line
The first command in a man page (after comment lines,
-that is, lines that start with \fB.\e"\fP) should be
+that is, lines that start with
+.BR .\e\[dq] )
+should be
.PP
.RS
.B .TH
@@ -399,7 +403,9 @@ Only translations
that can be ignored should be used.
Font changes
.RB ( ft
-and the \fB\ef\fP escape sequence)
+and the
+.B \ef
+escape sequence)
should only have the values 1, 2, 3, 4, R, I, B, P, or CW
(the ft command may also have no parameters).
.PP
@@ -438,8 +444,9 @@ file (such as HTML or Docbook).
Anything else suggests simple ASCII
text (e.g., a "catman" result).
.PP
-Many man pages begin with \fB\[aq]\e"\fP followed by a
-space and a list of characters,
+Many man pages begin with
+.B \[aq]\e\[dq]
+followed by a space and a list of characters,
indicating how the page is to be preprocessed.
For portability's sake to non-troff translators we recommend
that you avoid using anything other than
diff --git a/man7/mount_namespaces.7 b/man7/mount_namespaces.7
index da34c1902..19f3fc2c8 100644
--- a/man7/mount_namespaces.7
+++ b/man7/mount_namespaces.7
@@ -249,9 +249,9 @@ and then view the mounts in
.PP
.in +4n
.EX
-sh1# \fBmount \-\-make\-shared /mntS\fP
-sh1# \fBmount \-\-make\-private /mntP\fP
-sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh1# " mount \-\-make\-shared /mntS"
+.RB sh1# " mount \-\-make\-private /mntP"
+.RB sh1# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
77 61 8:17 / /mntS rw,relatime shared:1
83 61 8:15 / /mntP rw,relatime
.EE
@@ -276,7 +276,7 @@ which is mounted as private:
.PP
.in +4n
.EX
-sh1# \fBcat /proc/self/mountinfo | awk \[aq]$1 == 61\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh1# " cat /proc/self/mountinfo | awk \[aq]$1 == 61\[aq] | sed \[aq]s/ \- .*//\[aq]"
61 0 8:2 / / rw,relatime
.EE
.in
@@ -287,8 +287,8 @@ and inspect the mounts:
.PP
.in +4n
.EX
-$ \fBPS1=\[aq]sh2# \[aq] sudo unshare \-m \-\-propagation unchanged sh\fP
-sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB $ " PS1=\[aq]sh2# \[aq] sudo unshare \-m \-\-propagation unchanged sh"
+.RB sh2# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
222 145 8:17 / /mntS rw,relatime shared:1
225 145 8:15 / /mntP rw,relatime
.EE
@@ -314,11 +314,11 @@ and inspect the set-up:
.PP
.in +4n
.EX
-sh2# \fBmkdir /mntS/a\fP
-sh2# \fBmount /dev/sdb6 /mntS/a\fP
-sh2# \fBmkdir /mntP/b\fP
-sh2# \fBmount /dev/sdb7 /mntP/b\fP
-sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh2# " mkdir /mntS/a"
+.RB sh2# " mount /dev/sdb6 /mntS/a"
+.RB sh2# " mkdir /mntP/b"
+.RB sh2# " mount /dev/sdb7 /mntP/b"
+.RB sh2# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
222 145 8:17 / /mntS rw,relatime shared:1
225 145 8:15 / /mntP rw,relatime
178 222 8:22 / /mntS/a rw,relatime shared:2
@@ -342,7 +342,7 @@ did not propagate:
.PP
.in +4n
.EX
-sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh1# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
77 61 8:17 / /mntS rw,relatime shared:1
83 61 8:15 / /mntP rw,relatime
179 77 8:22 / /mntS/a rw,relatime shared:2
@@ -371,9 +371,9 @@ two mounts as shared in the initial mount namespace:
.PP
.in +4n
.EX
-sh1# \fBmount \-\-make\-shared /mntX\fP
-sh1# \fBmount \-\-make\-shared /mntY\fP
-sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh1# " mount \-\-make\-shared /mntX"
+.RB sh1# " mount \-\-make\-shared /mntY"
+.RB sh1# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
132 83 8:23 / /mntX rw,relatime shared:1
133 83 8:22 / /mntY rw,relatime shared:2
.EE
@@ -384,8 +384,8 @@ we create a new mount namespace and inspect the mounts:
.PP
.in +4n
.EX
-sh2# \fBunshare \-m \-\-propagation unchanged sh\fP
-sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh2# " unshare \-m \-\-propagation unchanged sh"
+.RB sh2# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime shared:2
.EE
@@ -395,8 +395,8 @@ In the new mount namespace, we then mark one of the mounts as a slave:
.PP
.in +4n
.EX
-sh2# \fBmount \-\-make\-slave /mntY\fP
-sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh2# " mount \-\-make\-slave /mntY"
+.RB sh2# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime master:2
.EE
@@ -414,10 +414,10 @@ and
.PP
.in +4n
.EX
-sh2# \fBmkdir /mntX/a\fP
-sh2# \fBmount /dev/sda3 /mntX/a\fP
-sh2# \fBmkdir /mntY/b\fP
-sh2# \fBmount /dev/sda5 /mntY/b\fP
+.RB sh2# " mkdir /mntX/a"
+.RB sh2# " mount /dev/sda3 /mntX/a"
+.RB sh2# " mkdir /mntY/b"
+.RB sh2# " mount /dev/sda5 /mntY/b"
.EE
.in
.PP
@@ -431,7 +431,7 @@ was created as a private mount:
.PP
.in +4n
.EX
-sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh2# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime master:2
173 168 8:3 / /mntX/a rw,relatime shared:3
@@ -450,7 +450,7 @@ was not propagated:
.PP
.in +4n
.EX
-sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh1# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
132 83 8:23 / /mntX rw,relatime shared:1
133 83 8:22 / /mntY rw,relatime shared:2
174 132 8:3 / /mntX/a rw,relatime shared:3
@@ -463,9 +463,9 @@ in the first shell:
.PP
.in +4n
.EX
-sh1# \fBmkdir /mntY/c\fP
-sh1# \fBmount /dev/sda1 /mntY/c\fP
-sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh1# " mkdir /mntY/c"
+.RB sh1# " mount /dev/sda1 /mntY/c"
+.RB sh1# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
132 83 8:23 / /mntX rw,relatime shared:1
133 83 8:22 / /mntY rw,relatime shared:2
174 132 8:3 / /mntX/a rw,relatime shared:3
@@ -480,7 +480,7 @@ and that the new mount is itself a slave mount (to peer group 4):
.PP
.in +4n
.EX
-sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB sh2# " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime master:2
173 168 8:3 / /mntX/a rw,relatime shared:3
@@ -499,7 +499,7 @@ Suppose we have a system with the following mounts:
.PP
.in +4n
.EX
-# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
+.RB # " mount | awk \[aq]{print $1, $2, $3}\[aq]"
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -512,8 +512,8 @@ We do this for the first user, and inspect the mounts:
.PP
.in +4n
.EX
-# \fBmount \-\-rbind / /home/cecilia/\fP
-# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
+.RB # " mount \-\-rbind / /home/cecilia/"
+.RB # " mount | awk \[aq]{print $1, $2, $3}\[aq]"
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -528,8 +528,8 @@ we start to see the explosion problem:
.PP
.in +4n
.EX
-# \fBmount \-\-rbind / /home/henry\fP
-# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
+.RB # " mount \-\-rbind / /home/henry"
+.RB # " mount | awk \[aq]{print $1, $2, $3}\[aq]"
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -559,8 +559,8 @@ it becomes obvious that the explosion is exponential in nature:
.PP
.in +4n
.EX
-# \fBmount \-\-rbind / /home/otto\fP
-# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
+.RB # " mount \-\-rbind / /home/otto"
+.RB # " mount | awk \[aq]{print $1, $2, $3}\[aq]"
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -596,7 +596,7 @@ We make such a mount for the first user:
.PP
.in +4n
.EX
-# \fBmount \-\-rbind \-\-make\-unbindable / /home/cecilia\fP
+.RB # " mount \-\-rbind \-\-make\-unbindable / /home/cecilia"
.EE
.in
.PP
@@ -604,8 +604,8 @@ Before going further, we show that unbindable mounts are indeed unbindable:
.PP
.in +4n
.EX
-# \fBmkdir /mntZ\fP
-# \fBmount \-\-bind /home/cecilia /mntZ\fP
+.RB # " mkdir /mntZ"
+.RB # " mount \-\-bind /home/cecilia /mntZ"
mount: wrong fs type, bad option, bad superblock on /home/cecilia,
missing codepage or helper program, or other error
\&
@@ -618,8 +618,8 @@ Now we create unbindable recursive bind mounts for the other two users:
.PP
.in +4n
.EX
-# \fBmount \-\-rbind \-\-make\-unbindable / /home/henry\fP
-# \fBmount \-\-rbind \-\-make\-unbindable / /home/otto\fP
+.RB # " mount \-\-rbind \-\-make\-unbindable / /home/henry"
+.RB # " mount \-\-rbind \-\-make\-unbindable / /home/otto"
.EE
.in
.PP
@@ -630,7 +630,7 @@ under each user's directory:
.PP
.in +4n
.EX
-# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
+.RB # " mount | awk \[aq]{print $1, $2, $3}\[aq]"
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -853,9 +853,9 @@ in the chroot-ed environment.
.PP
.in +4n
.EX
-# \fBmkdir \-p /mnt/proc\fP
-# \fBmount \-\-bind / /mnt\fP
-# \fBmount \-\-bind /proc /mnt/proc\fP
+.RB # " mkdir \-p /mnt/proc"
+.RB # " mount \-\-bind / /mnt"
+.RB # " mount \-\-bind /proc /mnt/proc"
.EE
.in
.PP
@@ -865,9 +865,9 @@ mount is a shared mount in a new peer group (with no peers):
.PP
.in +4n
.EX
-# \fBmount \-\-make\-private /mnt\fP # Isolate from any previous peer group
-# \fBmount \-\-make\-shared /mnt\fP
-# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB # " mount \-\-make\-private /mnt" " # Isolate from any previous peer group"
+.RB # " mount \-\-make\-shared /mnt"
+.RB # " cat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]"
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
.EE
@@ -880,9 +880,9 @@ onto
.PP
.in +4n
.EX
-# \fBmkdir \-p /tmp/etc\fP
-# \fBmount \-\-bind /mnt/etc /tmp/etc\fP
-# \fBcat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB # " mkdir \-p /tmp/etc"
+.RB # " mount \-\-bind /mnt/etc /tmp/etc"
+.RB # " cat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]"
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
267 40 8:2 /etc /tmp/etc ... shared:102
@@ -901,9 +901,9 @@ so that it can propagate events to the next slave in the chain:
.PP
.in +4n
.EX
-# \fBmount \-\-make\-slave /tmp/etc\fP
-# \fBmount \-\-make\-shared /tmp/etc\fP
-# \fBcat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB # " mount \-\-make\-slave /tmp/etc"
+.RB # " mount \-\-make\-shared /tmp/etc"
+.RB # " cat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]"
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
267 40 8:2 /etc /tmp/etc ... shared:105 master:102
@@ -922,10 +922,10 @@ a slave of
.PP
.in +4n
.EX
-# \fBmkdir \-p /mnt/tmp/etc\fP
-# \fBmount \-\-bind /tmp/etc /mnt/tmp/etc\fP
-# \fBmount \-\-make\-slave /mnt/tmp/etc\fP
-# \fBcat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
+.RB # " mkdir \-p /mnt/tmp/etc"
+.RB # " mount \-\-bind /tmp/etc /mnt/tmp/etc"
+.RB # " mount \-\-make\-slave /mnt/tmp/etc"
+.RB # " cat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]"
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
267 40 8:2 /etc /tmp/etc ... shared:105 master:102
@@ -949,7 +949,7 @@ from the (new) root directory:
.PP
.in +4n
.EX
-# \fBchroot /mnt\fP
+.RB # " chroot /mnt"
.EE
.in
.PP
@@ -958,7 +958,7 @@ we see the following:
.PP
.in +4n
.EX
-# \fBcat /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
+.RB # " cat /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]"
239 61 8:2 / / ... shared:102
248 239 0:4 / /proc ... shared:5
273 239 8:2 /etc /tmp/etc ... master:105 propagate_from:102
@@ -1096,9 +1096,9 @@ Consider the following example:
.IP
.in +4n
.EX
-$ \fBsudo sh\fP
-# \fBmount \-\-bind /dev/null /etc/shadow\fP
-# \fBcat /etc/shadow\fP # Produces no output
+.RB $ " sudo sh"
+.RB # " mount \-\-bind /dev/null /etc/shadow"
+.RB # " cat /etc/shadow" " # Produces no output"
.EE
.in
.IP
@@ -1125,11 +1125,11 @@ in the following step:
.IP
.in +4n
.EX
-# \fBunshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
- \fBstrace \-o /tmp/log \e\fP
- \fBumount /mnt/dir\fP
+.RB # " unshare \-\-user \-\-map\-root\-user \-\-mount \e"
+.B " strace \-o /tmp/log \e"
+.B " umount /mnt/dir"
umount: /etc/shadow: not mounted.
-# \fBgrep \[aq]\[ha]umount\[aq] /tmp/log\fP
+.RB # " grep \[aq]\[ha]umount\[aq] /tmp/log"
umount2("/etc/shadow", 0) = \-1 EINVAL (Invalid argument)
.EE
.in
@@ -1151,11 +1151,11 @@ less privileged mount namespace:
.IP
.in +4n
.EX
-# \fBecho \[aq]aaaaa\[aq] > /tmp/a\fP # File to mount onto /etc/shadow
-# \fBunshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
- \fBsh \-c \[aq]mount \-\-bind /tmp/a /etc/shadow; cat /etc/shadow\[aq]\fP
+.RB # " echo \[aq]aaaaa\[aq] > /tmp/a" " # File to mount onto /etc/shadow"
+.RB # " unshare \-\-user \-\-map\-root\-user \-\-mount \e"
+.B " sh \-c \[aq]mount \-\-bind /tmp/a /etc/shadow; cat /etc/shadow\[aq]"
aaaaa
-# \fBumount /etc/shadow\fP
+.RB # " umount /etc/shadow"
.EE
.in
.IP
@@ -1183,16 +1183,16 @@ and a small hierarchy of mounts underneath that mount.
.IP
.in +4n
.EX
-$ \fBPS1=\[aq]ns1# \[aq] sudo unshare \-\-user \-\-map\-root\-user \e\fP
- \fB\-\-mount \-\-propagation private bash\fP
-ns1# \fBecho $$\fP # We need the PID of this shell later
+.RB $ " PS1=\[aq]ns1# \[aq] sudo unshare \-\-user \-\-map\-root\-user \e"
+.B " \-\-mount \-\-propagation private bash"
+.RB ns1# " echo $$" " # We need the PID of this shell later"
778501
-ns1# \fBmount \-\-make\-shared \-\-bind /mnt /mnt\fP
-ns1# \fBmkdir /mnt/x\fP
-ns1# \fBmount \-\-make\-private \-t tmpfs none /mnt/x\fP
-ns1# \fBmkdir /mnt/x/y\fP
-ns1# \fBmount \-\-make\-private \-t tmpfs none /mnt/x/y\fP
-ns1# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
+.RB ns1# " mount \-\-make\-shared \-\-bind /mnt /mnt"
+.RB ns1# " mkdir /mnt/x"
+.RB ns1# " mount \-\-make\-private \-t tmpfs none /mnt/x"
+.RB ns1# " mkdir /mnt/x/y"
+.RB ns1# " mount \-\-make\-private \-t tmpfs none /mnt/x/y"
+.RB ns1# " grep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]"
986 83 8:5 /mnt /mnt rw,relatime shared:344
989 986 0:56 / /mnt/x rw,relatime
990 989 0:57 / /mnt/x/y rw,relatime
@@ -1207,9 +1207,9 @@ check the state of the propagated mounts rooted at
.IP
.in +4n
.EX
-ns1# \fBPS1=\[aq]ns2# \[aq] unshare \-\-user \-\-map\-root\-user \e\fP
- \fB\-\-mount \-\-propagation unchanged bash\fP
-ns2# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
+.RB ns1# " PS1=\[aq]ns2# \[aq] unshare \-\-user \-\-map\-root\-user \e"
+.B " \-\-mount \-\-propagation unchanged bash"
+.RB ns2# " grep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]"
1239 1204 8:5 /mnt /mnt rw,relatime master:344
1240 1239 0:56 / /mnt/x rw,relatime
1241 1240 0:57 / /mnt/x/y rw,relatime
@@ -1233,9 +1233,9 @@ at the location
.IP
.in +4n
.EX
-$ \fBPS1=\[aq]ns3# \[aq] sudo nsenter \-t 778501 \-\-user \-\-mount\fP
-ns3# \fBmount \-\-rbind \-\-make\-private /mnt/x /mnt/ppp\fP
-ns3# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
+.RB $ " PS1=\[aq]ns3# \[aq] sudo nsenter \-t 778501 \-\-user \-\-mount"
+.RB ns3# " mount \-\-rbind \-\-make\-private /mnt/x /mnt/ppp"
+.RB ns3# " grep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]"
986 83 8:5 /mnt /mnt rw,relatime shared:344
989 986 0:56 / /mnt/x rw,relatime
990 989 0:57 / /mnt/x/y rw,relatime
@@ -1254,7 +1254,7 @@ as can be verified by executing the following command in that shell session:
.IP
.in +4n
.EX
-ns2# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
+.RB ns2# " grep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]"
1239 1204 8:5 /mnt /mnt rw,relatime master:344
1240 1239 0:56 / /mnt/x rw,relatime
1241 1240 0:57 / /mnt/x/y rw,relatime
@@ -1275,10 +1275,10 @@ as shown by the following commands:
.IP
.in +4n
.EX
-ns2# \fBumount /mnt/ppp/y\fP
+.RB ns2# " umount /mnt/ppp/y"
umount: /mnt/ppp/y: not mounted.
-ns2# \fBumount \-l /mnt/ppp | sed \[aq]s/ \- .*//\[aq]\fP # Succeeds...
-ns2# \fBgrep /mnt /proc/self/mountinfo\fP
+.RB ns2# " umount \-l /mnt/ppp | sed \[aq]s/ \- .*//\[aq]" " # Succeeds..."
+.RB ns2# " grep /mnt /proc/self/mountinfo"
1239 1204 8:5 /mnt /mnt rw,relatime master:344
1240 1239 0:56 / /mnt/x rw,relatime
1241 1240 0:57 / /mnt/x/y rw,relatime
@@ -1315,10 +1315,10 @@ a less privileged mount namespace, and indeed the kernel prevents this:
.IP
.in +4n
.EX
-$ \fBsudo mkdir /mnt/dir\fP
-$ \fBsudo mount \-\-bind \-o ro /some/path /mnt/dir\fP
-$ \fBsudo unshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
- \fBmount \-o remount,rw /mnt/dir\fP
+.RB $ " sudo mkdir /mnt/dir"
+.RB $ " sudo mount \-\-bind \-o ro /some/path /mnt/dir"
+.RB $ " sudo unshare \-\-user \-\-map\-root\-user \-\-mount \e"
+.B " mount \-o remount,rw /mnt/dir"
mount: /mnt/dir: permission denied.
.EE
.in
diff --git a/man7/namespaces.7 b/man7/namespaces.7
index 9c1b77b52..7b49a65f6 100644
--- a/man7/namespaces.7
+++ b/man7/namespaces.7
@@ -33,27 +33,27 @@ the namespace type.
lB lB lB lB
l1 lB1 l1 l.
Namespace Flag Page Isolates
-Cgroup CLONE_NEWCGROUP \fBcgroup_namespaces\fP(7) T{
+Cgroup CLONE_NEWCGROUP \f[B]cgroup_namespaces\f[](7) T{
Cgroup root directory
T}
-IPC CLONE_NEWIPC \fBipc_namespaces\fP(7) T{
+IPC CLONE_NEWIPC \f[B]ipc_namespaces\f[](7) T{
System V IPC,
POSIX message queues
T}
-Network CLONE_NEWNET \fBnetwork_namespaces\fP(7) T{
+Network CLONE_NEWNET \f[B]network_namespaces\f[](7) T{
Network devices,
stacks, ports, etc.
T}
-Mount CLONE_NEWNS \fBmount_namespaces\fP(7) Mount points
-PID CLONE_NEWPID \fBpid_namespaces\fP(7) Process IDs
-Time CLONE_NEWTIME \fBtime_namespaces\fP(7) T{
+Mount CLONE_NEWNS \f[B]mount_namespaces\f[](7) Mount points
+PID CLONE_NEWPID \f[B]pid_namespaces\f[](7) Process IDs
+Time CLONE_NEWTIME \f[B]time_namespaces\f[](7) T{
Boot and monotonic
clocks
T}
-User CLONE_NEWUSER \fBuser_namespaces\fP(7) T{
+User CLONE_NEWUSER \f[B]user_namespaces\f[](7) T{
User and group IDs
T}
-UTS CLONE_NEWUTS \fButs_namespaces\fP(7) T{
+UTS CLONE_NEWUTS \f[B]uts_namespaces\f[](7) T{
Hostname and NIS
domain name
T}
@@ -124,7 +124,7 @@ no privilege is required to create a user namespace.
.\"
.\" ==================== The /proc/[pid]/ns/ directory ====================
.\"
-.SS The \fI/proc/\fPpid\fI/ns/\fP directory
+.SS The \f[I]/proc/\f[]pid\f[I]/ns/\f[] directory
Each process has a
.IR /proc/ pid /ns/
.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
@@ -134,7 +134,7 @@ supports being manipulated by
.PP
.in +4n
.EX
-$ \fBls \-l /proc/$$/ns | awk \[aq]{print $1, $9, $10, $11}\[aq]\fP
+.RB $ " ls \-l /proc/$$/ns | awk \[aq]{print $1, $9, $10, $11}\[aq]"
total 0
lrwxrwxrwx. cgroup \-> cgroup:[4026531835]
lrwxrwxrwx. ipc \-> ipc:[4026531839]
@@ -191,7 +191,7 @@ the namespace type and inode number as in the following example:
.PP
.in +4n
.EX
-$ \fBreadlink /proc/$$/ns/uts\fP
+.RB $ " readlink /proc/$$/ns/uts"
uts:[4026531838]
.EE
.in
@@ -266,7 +266,7 @@ check; see
.\"
.\" ==================== The /proc/sys/user directory ====================
.\"
-.SS The \fI/proc/sys/user\fP directory
+.SS The \f[I]/proc/sys/user\f[] directory
The files in the
.I /proc/sys/user
directory (which is present since Linux 4.9) expose limits
diff --git a/man7/netlink.7 b/man7/netlink.7
index e2205482d..f09e26e86 100644
--- a/man7/netlink.7
+++ b/man7/netlink.7
@@ -222,7 +222,7 @@ for
tab(:);
l s
lB lx.
-Standard flag bits in \fInlmsg_flags\fP
+Standard flag bits in \f[I]nlmsg_flags\f[]
_
NLM_F_REQUEST:T{
Must be set on all request messages.
diff --git a/man7/pipe.7 b/man7/pipe.7
index 91554fa3c..fbd876ded 100644
--- a/man7/pipe.7
+++ b/man7/pipe.7
@@ -255,7 +255,7 @@ whether there are multiple writers to the pipe, and on
.IR n ,
the number of bytes to be written:
.TP
-\fBO_NONBLOCK\fP disabled, \fIn\fP <= \fBPIPE_BUF\fP
+.BR O_NONBLOCK " disabled, \f[I]n\f[] <= " PIPE_BUF
All
.I n
bytes are written atomically;
@@ -264,7 +264,7 @@ may block if there is not room for
.I n
bytes to be written immediately
.TP
-\fBO_NONBLOCK\fP enabled, \fIn\fP <= \fBPIPE_BUF\fP
+.BR O_NONBLOCK " enabled, \f[I]n\f[] <= " PIPE_BUF
If there is room to write
.I n
bytes to the pipe, then
@@ -278,7 +278,7 @@ fails, with
set to
.BR EAGAIN .
.TP
-\fBO_NONBLOCK\fP disabled, \fIn\fP > \fBPIPE_BUF\fP
+.BR O_NONBLOCK " disabled, \f[I]n\f[] > " PIPE_BUF
The write is nonatomic: the data given to
.BR write (2)
may be interleaved with
@@ -290,7 +290,7 @@ blocks until
.I n
bytes have been written.
.TP
-\fBO_NONBLOCK\fP enabled, \fIn\fP > \fBPIPE_BUF\fP
+.BR O_NONBLOCK " enabled, \f[I]n\f[] > " PIPE_BUF
If the pipe is full, then
.BR write (2)
fails, with
diff --git a/man7/process-keyring.7 b/man7/process-keyring.7
index 864b05bcd..b4ffa44f2 100644
--- a/man7/process-keyring.7
+++ b/man7/process-keyring.7
@@ -19,7 +19,9 @@ the calling process's process keyring.
.PP
From the
.BR keyctl (1)
-utility, '\fB@p\fP' can be used instead of a numeric key ID in
+utility,
+.RB ' @p '
+can be used instead of a numeric key ID in
much the same way, but since
.BR keyctl (1)
is a program run after forking, this is of no utility.
diff --git a/man7/regex.7 b/man7/regex.7
index 8083d2a6a..231e0789a 100644
--- a/man7/regex.7
+++ b/man7/regex.7
@@ -53,16 +53,22 @@ POSIX.2 leaves some aspects of RE syntax and semantics open;
"\*(dg" marks decisions on these aspects that
may not be fully portable to other POSIX.2 implementations.
.PP
-A (modern) RE is one\*(dg or more nonempty\*(dg \fIbranches\fR,
+A (modern) RE is one\*(dg or more nonempty\*(dg
+.IR branches ,
separated by \[aq]|\[aq].
It matches anything that matches one of the branches.
.PP
-A branch is one\*(dg or more \fIpieces\fR, concatenated.
+A branch is one\*(dg or more
+.IR pieces ,
+concatenated.
It matches a match for the first, followed by a match for the second,
and so on.
.PP
-A piece is an \fIatom\fR possibly followed
-by a single\*(dg \[aq]*\[aq], \[aq]+\[aq], \[aq]?\[aq], or \fIbound\fR.
+A piece is an
+.I atom
+possibly followed
+by a single\*(dg \[aq]*\[aq], \[aq]+\[aq], \[aq]?\[aq], or
+.IR bound .
An atom followed by \[aq]*\[aq]
matches a sequence of 0 or more matches of the atom.
An atom followed by \[aq]+\[aq]
@@ -70,7 +76,9 @@ matches a sequence of 1 or more matches of the atom.
An atom followed by \[aq]?\[aq]
matches a sequence of 0 or 1 matches of the atom.
.PP
-A \fIbound\fR is \[aq]{\[aq] followed by an unsigned decimal integer,
+A
+.I bound
+is \[aq]{\[aq] followed by an unsigned decimal integer,
possibly followed by \[aq],\[aq]
possibly followed by another unsigned decimal integer,
always followed by \[aq]}\[aq].
@@ -78,24 +86,45 @@ The integers must lie between 0 and
.B RE_DUP_MAX
(255\*(dg) inclusive,
and if there are two of them, the first may not exceed the second.
-An atom followed by a bound containing one integer \fIi\fR
+An atom followed by a bound containing one integer
+.I i
and no comma matches
-a sequence of exactly \fIi\fR matches of the atom.
+a sequence of exactly
+.I i
+matches of the atom.
An atom followed by a bound
-containing one integer \fIi\fR and a comma matches
-a sequence of \fIi\fR or more matches of the atom.
+containing one integer
+.I i
+and a comma matches
+a sequence of
+.I i
+or more matches of the atom.
An atom followed by a bound
-containing two integers \fIi\fR and \fIj\fR matches
-a sequence of \fIi\fR through \fIj\fR (inclusive) matches of the atom.
+containing two integers
+.I i
+and
+.I j
+matches
+a sequence of
+.I i
+through
+.I j
+(inclusive) matches of the atom.
.PP
-An atom is a regular expression enclosed in "\fI()\fP"
+An atom is a regular expression enclosed in
+.RI \[dq] () \[dq]
(matching a match for the regular expression),
-an empty set of "\fI()\fP" (matching the null string)\*(dg,
-a \fIbracket expression\fR (see below),
+an empty set of
+.RI \[dq] () \[dq]
+(matching the null string)\*(dg,
+a
+.I bracket expression
+(see below),
\[aq].\[aq] (matching any single character),
\[aq]\[ha]\[aq] (matching the null string at the beginning of a line),
\[aq]$\[aq] (matching the null string at the end of a line),
-a \[aq]\e\[aq] followed by one of the characters "\fI\[ha].[$()|*+?{\e\fP"
+a \[aq]\e\[aq] followed by one of the characters
+.RI \[dq] \[ha].[$()|*+?{\e \[dq]
(matching that character taken as an ordinary character),
a \[aq]\e\[aq] followed by any other character\*(dg
(matching that character taken as an ordinary character,
@@ -106,17 +135,27 @@ is an ordinary character,
not the beginning of a bound\*(dg.
It is illegal to end an RE with \[aq]\e\[aq].
.PP
-A \fIbracket expression\fR is a list of characters enclosed in "\fI[]\fP".
+A
+.I bracket expression
+is a list of characters enclosed in
+.RI \[dq] [] \[dq].
It normally matches any single character from the list (but see below).
If the list begins with \[aq]\[ha]\[aq],
it matches any single character
-(but see below) \fInot\fR from the rest of the list.
+(but see below)
+.I not
+from the rest of the list.
If two characters in the list are separated by \[aq]\-\[aq], this is shorthand
-for the full \fIrange\fR of characters between those two (inclusive) in the
+for the full
+.I range
+of characters between those two (inclusive) in the
collating sequence,
-for example, "\fI[0\-9]\fP" in ASCII matches any decimal digit.
+for example,
+.RI \[dq] [0\-9] \[dq]
+in ASCII matches any decimal digit.
It is illegal\*(dg for two ranges to share an
-endpoint, for example, "\fIa\-c\-e\fP".
+endpoint, for example,
+.RI \[dq] a\-c\-e \[dq].
Ranges are very collating-sequence-dependent,
and portable programs should avoid relying on them.
.PP
@@ -125,7 +164,10 @@ To include a literal \[aq]]\[aq] in the list, make it the first character
To include a literal \[aq]\-\[aq], make it the first or last character,
or the second endpoint of a range.
To use a literal \[aq]\-\[aq] as the first endpoint of a range,
-enclose it in "\fI[.\fP" and "\fI.]\fP"
+enclose it in
+.RI \[dq] [. \[dq]
+and
+.RI \[dq] .] \[dq]
to make it a collating element (see below).
With the exception of these and some combinations using \[aq][\[aq] (see next
paragraphs), all other special characters, including \[aq]\e\[aq], lose their
@@ -134,31 +176,49 @@ special significance within a bracket expression.
Within a bracket expression, a collating element (a character,
a multicharacter sequence that collates as if it were a single character,
or a collating-sequence name for either)
-enclosed in "\fI[.\fP" and "\fI.]\fP" stands for the
+enclosed in
+.RI \[dq] [. \[dq]
+and
+.RI \[dq] .] \[dq]
+stands for the
sequence of characters of that collating element.
The sequence is a single element of the bracket expression's list.
A bracket expression containing a multicharacter collating element
can thus match more than one character,
for example, if the collating sequence includes a "ch" collating element,
-then the RE "\fI[[.ch.]]*c\fP" matches the first five characters
-of "chchcc".
+then the RE
+.RI \[dq] [[.ch.]]*c \[dq]
+matches the first five characters of "chchcc".
.PP
-Within a bracket expression, a collating element enclosed in "\fI[=\fP" and
-"\fI=]\fP" is an equivalence class, standing for the sequences of characters
+Within a bracket expression, a collating element enclosed in
+.RI \[dq] [= \[dq]
+and
+.RI \[dq] =] \[dq]
+is an equivalence class, standing for the sequences of characters
of all collating elements equivalent to that one, including itself.
(If there are no other equivalent collating elements,
the treatment is as if the enclosing delimiters
-were "\fI[.\fP" and "\fI.]\fP".)
+were
+.RI \[dq] [. \[dq]
+and
+.RI \[dq] .] \[dq].)
For example, if o and \(^o are the members of an equivalence class,
-then "\fI[[=o=]]\fP", "\fI[[=\(^o=]]\fP",
-and "\fI[o\(^o]\fP" are all synonymous.
+then
+.RI \[dq] [[=o=]] \[dq],
+.RI \[dq] [[=\(^o=]] \[dq],
+and
+.RI \[dq] [o\(^o] \[dq]
+are all synonymous.
An equivalence class may not\*(dg be an endpoint
of a range.
.PP
-Within a bracket expression, the name of a \fIcharacter class\fR enclosed
-in "\fI[:\fP" and "\fI:]\fP" stands for the list
-of all characters belonging to that
-class.
+Within a bracket expression, the name of a
+.I character class
+enclosed in
+.RI \[dq] [: \[dq]
+and
+.RI \[dq] :] \[dq]
+stands for the list of all characters belonging to that class.
Standard character class names are:
.PP
.RS
@@ -179,8 +239,11 @@ A character class may not be used as an endpoint of a range.
.\" The following does not seem to apply in the glibc implementation
.\" .PP
.\" There are two special cases\*(dg of bracket expressions:
-.\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match
-.\" the null string at the beginning and end of a word respectively.
+.\" the bracket expressions
+.\" .RI \[dq] [[:<:]] \[dq]
+.\" and
+.\" .RI \[dq] [[:>:]] \[dq]
+.\" match the null string at the beginning and end of a word respectively.
.\" A word is defined as a sequence of
.\" word characters
.\" which is neither preceded nor followed by
@@ -210,12 +273,17 @@ their lower-level component subexpressions.
Match lengths are measured in characters, not collating elements.
A null string is considered longer than no match at all.
For example,
-"\fIbb*\fP" matches the three middle characters of "abbbc",
-"\fI(wee|week)(knights|nights)\fP"
+.RI \[dq] bb* \[dq]
+matches the three middle characters of "abbbc",
+.RI \[dq] (wee|week)(knights|nights) \[dq]
matches all ten characters of "weeknights",
-when "\fI(.*).*\fP" is matched against "abc" the parenthesized subexpression
+when
+.RI \[dq] (.*).* \[dq]
+is matched against "abc" the parenthesized subexpression
matches all three characters, and
-when "\fI(a*)*\fP" is matched against "bc"
+when
+.RI \[dq] (a*)* \[dq]
+is matched against "bc"
both the whole RE and the parenthesized
subexpression match the null string.
.PP
@@ -225,10 +293,17 @@ alphabet.
When an alphabetic that exists in multiple cases appears as an
ordinary character outside a bracket expression, it is effectively
transformed into a bracket expression containing both cases,
-for example, \[aq]x\[aq] becomes "\fI[xX]\fP".
+for example, \[aq]x\[aq] becomes
+.RI \[dq] [xX] \[dq].
When it appears inside a bracket expression, all case counterparts
-of it are added to the bracket expression, so that, for example, "\fI[x]\fP"
-becomes "\fI[xX]\fP" and "\fI[\[ha]x]\fP" becomes "\fI[\[ha]xX]\fP".
+of it are added to the bracket expression, so that, for example,
+.RI \[dq] [x] \[dq]
+becomes
+.RI \[dq] [xX] \[dq]
+and
+.RI \[dq] [\[ha]x] \[dq]
+becomes
+.RI \[dq] [\[ha]xX] \[dq].
.PP
No particular limit is imposed on the length of REs\*(dg.
Programs intended to be portable should not employ REs longer
@@ -240,9 +315,15 @@ Obsolete ("basic") regular expressions differ in several respects.
\[aq]|\[aq], \[aq]+\[aq], and \[aq]?\[aq] are
ordinary characters and there is no equivalent
for their functionality.
-The delimiters for bounds are "\fI\e{\fP" and "\fI\e}\fP",
+The delimiters for bounds are
+.RI \[dq] \e{ \[dq]
+and
+.RI \[dq] \e} \[dq],
with \[aq]{\[aq] and \[aq]}\[aq] by themselves ordinary characters.
-The parentheses for nested subexpressions are "\fI\e(\fP" and "\fI\e)\fP",
+The parentheses for nested subexpressions are
+.RI \[dq] \e( \[dq]
+and
+.RI \[dq] \e) \[dq],
with \[aq](\[aq] and \[aq])\[aq] by themselves ordinary characters.
\[aq]\[ha]\[aq] is an ordinary character except at the beginning of the
RE or\*(dg the beginning of a parenthesized subexpression,
@@ -252,13 +333,19 @@ and \[aq]*\[aq] is an ordinary character if it appears at the beginning of the
RE or the beginning of a parenthesized subexpression
(after a possible leading \[aq]\[ha]\[aq]).
.PP
-Finally, there is one new type of atom, a \fIback reference\fR:
-\[aq]\e\[aq] followed by a nonzero decimal digit \fId\fR
+Finally, there is one new type of atom, a
+.IR "back reference" :
+\[aq]\e\[aq] followed by a nonzero decimal digit
+.I d
matches the same sequence of characters
-matched by the \fId\fRth parenthesized subexpression
+matched by the
+.IR d th
+parenthesized subexpression
(numbering subexpressions by the positions of their opening parentheses,
left to right),
-so that, for example, "\fI\e([bc]\e)\e1\fP" matches "bb" or "cc" but not "bc".
+so that, for example,
+.RI \[dq] \e([bc]\e)\e1 \[dq]
+matches "bb" or "cc" but not "bc".
.SH BUGS
Having two kinds of REs is a botch.
.PP
@@ -272,7 +359,8 @@ Back references are a dreadful botch,
posing major problems for efficient implementations.
They are also somewhat vaguely defined
(does
-"\fIa\e(\e(b\e)*\e2\e)*d\fP" match "abbbd"?).
+.RI \[dq] a\e(\e(b\e)*\e2\e)*d \[dq]
+match "abbbd"?).
Avoid using them.
.PP
POSIX.2's specification of case-independent matching is vague.
diff --git a/man7/sched.7 b/man7/sched.7
index 4da3ea331..cba30de50 100644
--- a/man7/sched.7
+++ b/man7/sched.7
@@ -86,20 +86,27 @@ and
.SS Scheduling policies
The scheduler is the kernel component that decides which runnable thread
will be executed by the CPU next.
-Each thread has an associated scheduling policy and a \fIstatic\fP
+Each thread has an associated scheduling policy and a
+.I static
scheduling priority,
.IR sched_priority .
The scheduler makes its decisions based on knowledge of the scheduling
policy and static priority of all threads on the system.
.PP
For threads scheduled under one of the normal scheduling policies
-(\fBSCHED_OTHER\fP, \fBSCHED_IDLE\fP, \fBSCHED_BATCH\fP),
-\fIsched_priority\fP is not used in scheduling
-decisions (it must be specified as 0).
+.RB ( SCHED_OTHER ,
+.BR SCHED_IDLE ,
+.BR SCHED_BATCH ),
+.I sched_priority
+is not used in scheduling decisions
+(it must be specified as 0).
.PP
Processes scheduled under one of the real-time policies
-(\fBSCHED_FIFO\fP, \fBSCHED_RR\fP) have a
-\fIsched_priority\fP value in the range 1 (low) to 99 (high).
+.RB ( SCHED_FIFO ,
+.BR SCHED_RR )
+have a
+.I sched_priority
+value in the range 1 (low) to 99 (high).
(As the numbers imply, real-time threads always have higher priority
than normal threads.)
Note well: POSIX.1 requires an implementation to support only a
@@ -111,8 +118,10 @@ and
.BR sched_get_priority_max (2)
to find the range of priorities supported for a particular policy.
.PP
-Conceptually, the scheduler maintains a list of runnable
-threads for each possible \fIsched_priority\fP value.
+Conceptually,
+the scheduler maintains a list of runnable threads for each possible
+.I sched_priority
+value.
In order to determine which thread runs next, the scheduler looks for
the nonempty list with the highest static priority and selects the
thread at the head of this list.
@@ -129,22 +138,35 @@ The scheduling policy determines the
ordering only within the list of runnable threads with equal static
priority.
.SS SCHED_FIFO: First in-first out scheduling
-\fBSCHED_FIFO\fP can be used only with static priorities higher than
-0, which means that when a \fBSCHED_FIFO\fP thread becomes runnable,
+.B SCHED_FIFO
+can be used only with static priorities higher than 0,
+which means that when a
+.B SCHED_FIFO
+thread becomes runnable,
it will always immediately preempt any currently running
-\fBSCHED_OTHER\fP, \fBSCHED_BATCH\fP, or \fBSCHED_IDLE\fP thread.
-\fBSCHED_FIFO\fP is a simple scheduling
+.BR SCHED_OTHER ,
+.BR SCHED_BATCH ,
+or
+.B SCHED_IDLE
+thread.
+.B SCHED_FIFO is a simple scheduling
algorithm without time slicing.
For threads scheduled under the
-\fBSCHED_FIFO\fP policy, the following rules apply:
+.B SCHED_FIFO
+policy,
+the following rules apply:
.IP \[bu] 3
-A running \fBSCHED_FIFO\fP thread that has been preempted by another thread of
-higher priority will stay at the head of the list for its priority and
-will resume execution as soon as all threads of higher priority are
-blocked again.
+A running
+.B SCHED_FIFO
+thread that has been preempted by another thread of higher priority
+will stay at the head of the list for its priority and
+will resume execution
+as soon as all threads of higher priority are blocked again.
.IP \[bu]
-When a blocked \fBSCHED_FIFO\fP thread becomes runnable, it
-will be inserted at the end of the list for its priority.
+When a blocked
+.B SCHED_FIFO
+thread becomes runnable,
+it will be inserted at the end of the list for its priority.
.IP \[bu]
If a call to
.BR sched_setscheduler (2),
@@ -186,26 +208,38 @@ A thread calling
will be put at the end of the list.
.PP
No other events will move a thread
-scheduled under the \fBSCHED_FIFO\fP policy in the wait list of
+scheduled under the
+.B SCHED_FIFO
+policy in the wait list of
runnable threads with equal static priority.
.PP
-A \fBSCHED_FIFO\fP
-thread runs until either it is blocked by an I/O request, it is
-preempted by a higher priority thread, or it calls
+A
+.B SCHED_FIFO
+thread runs until either
+it is blocked by an I/O request,
+it is preempted by a higher priority thread,
+or it calls
.BR sched_yield (2).
.SS SCHED_RR: Round-robin scheduling
-\fBSCHED_RR\fP is a simple enhancement of \fBSCHED_FIFO\fP.
-Everything
-described above for \fBSCHED_FIFO\fP also applies to \fBSCHED_RR\fP,
-except that each thread is allowed to run only for a maximum time
-quantum.
-If a \fBSCHED_RR\fP thread has been running for a time
-period equal to or longer than the time quantum, it will be put at the
-end of the list for its priority.
-A \fBSCHED_RR\fP thread that has
-been preempted by a higher priority thread and subsequently resumes
-execution as a running thread will complete the unexpired portion of
-its round-robin time quantum.
+.B SCHED_RR
+is a simple enhancement of
+.BR SCHED_FIFO .
+Everything described above for
+.B SCHED_FIFO
+also applies to
+.BR SCHED_RR,
+except that each thread is allowed to run only for a maximum time quantum.
+If a
+.B SCHED_RR
+thread has been running for a time period
+equal to or longer than the time quantum,
+it will be put at the end of the list for its priority.
+A
+.B SCHED_RR
+thread that has
+been preempted by a higher priority thread
+and subsequently resumes execution as a running thread
+will complete the unexpired portion of its round-robin time quantum.
The length of the time quantum can be
retrieved using
.BR sched_rr_get_interval (2).
@@ -376,21 +410,26 @@ will yield the current job and wait for a new period to begin.
.\" Is that intended? (Why?)
.\"
.SS SCHED_OTHER: Default Linux time-sharing scheduling
-\fBSCHED_OTHER\fP can be used at only static priority 0
+.B SCHED_OTHER
+can be used at only static priority 0
(i.e., threads under real-time policies always have priority over
.B SCHED_OTHER
processes).
-\fBSCHED_OTHER\fP is the standard Linux time-sharing scheduler that is
-intended for all threads that do not require the special
-real-time mechanisms.
+.B SCHED_OTHER
+is the standard Linux time-sharing scheduler that is
+intended for all threads that
+do not require the special real-time mechanisms.
.PP
-The thread to run is chosen from the static
-priority 0 list based on a \fIdynamic\fP priority that is determined only
+The thread to run is chosen from the static priority 0 list based on a
+.I dynamic
+priority that is determined only
inside this list.
The dynamic priority is based on the nice value (see below)
and is increased for each time quantum the thread is ready to run,
but denied to run by the scheduler.
-This ensures fair progress among all \fBSCHED_OTHER\fP threads.
+This ensures fair progress among all
+.B SCHED_OTHER
+threads.
.PP
In the Linux kernel source code, the
.B SCHED_OTHER
@@ -454,9 +493,11 @@ the autogroup feature and group scheduling, below.
.\"
.SS SCHED_BATCH: Scheduling batch processes
(Since Linux 2.6.16.)
-\fBSCHED_BATCH\fP can be used only at static priority 0.
-This policy is similar to \fBSCHED_OTHER\fP in that it schedules
-the thread according to its dynamic priority
+.B SCHED_BATCH
+can be used only at static priority 0.
+This policy is similar to
+.B SCHED_OTHER
+in that it schedules the thread according to its dynamic priority
(based on the nice value).
The difference is that this policy
will cause the scheduler to always assume
@@ -476,7 +517,8 @@ interactivity causing extra preemptions (between the workload's tasks).
.\"
.SS SCHED_IDLE: Scheduling very low priority jobs
(Since Linux 2.6.23.)
-\fBSCHED_IDLE\fP can be used only at static priority 0;
+.B SCHED_IDLE
+can be used only at static priority 0;
the process nice value has no influence for this policy.
.PP
This policy is intended for running jobs at extremely low
@@ -765,7 +807,7 @@ A process's autogroup (task group) membership can be viewed via the file
.PP
.in +4n
.EX
-$ \fBcat /proc/1/autogroup\fP
+.RB $ " cat /proc/1/autogroup"
/autogroup\-1 nice 0
.EE
.in
@@ -889,7 +931,7 @@ of the processes in a terminal session:
.PP
.in +4n
.EX
-$ \fBecho 10 > /proc/self/autogroup\fP
+.RB $ " echo 10 > /proc/self/autogroup"
.EE
.in
.SS Real-time features in the mainline Linux kernel
@@ -907,7 +949,7 @@ These patches are named:
.PP
.in +4n
.EX
-patch\-\fIkernelversion\fP\-rt\fIpatchversion\fP
+.RI patch\- kernelversion \-rt patchversion
.EE
.in
.PP
diff --git a/man7/session-keyring.7 b/man7/session-keyring.7
index 8537f0123..a924da034 100644
--- a/man7/session-keyring.7
+++ b/man7/session-keyring.7
@@ -26,8 +26,9 @@ the calling process's session keyring.
.PP
From the
.BR keyctl (1)
-utility, '\fB@s\fP' can be used instead of a numeric key ID in
-much the same way.
+utility,
+.RB ' @s '
+can be used instead of a numeric key ID in much the same way.
.PP
A process's session keyring is inherited across
.BR clone (2),
diff --git a/man7/tcp.7 b/man7/tcp.7
index 6293d59a7..38f0919bd 100644
--- a/man7/tcp.7
+++ b/man7/tcp.7
@@ -363,7 +363,9 @@ but not loaded.
This variable defines how many
bytes of the TCP window are reserved for buffering overhead.
.IP
-A maximum of (\fIwindow/2\[ha]tcp_app_win\fP, mss) bytes in the window
+A maximum of
+.RI ( window/2\[ha]tcp_app_win ,
+mss) bytes in the window
are reserved for the application buffer.
A value of 0 implies that no amount is reserved.
.\"
@@ -822,7 +824,7 @@ The default value is calculated using the formula
.IP
.in +4n
.EX
-max(87380, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128))
+.RI "max(87380, min(4\ MB, " tcp_mem [1]*PAGE_SIZE/128))
.EE
.in
.IP
@@ -1037,7 +1039,7 @@ The default value is calculated using the formula
.IP
.in +4n
.EX
-max(65536, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128))
+.RI "max(65536, min(4\ MB, " tcp_mem [1]*PAGE_SIZE/128))
.EE
.in
.IP
@@ -1119,7 +1121,9 @@ This option should not be used in code intended to be portable.
.TP
.BR TCP_INFO " (since Linux 2.4)"
Used to collect information about this socket.
-The kernel returns a \fIstruct tcp_info\fP as defined in the file
+The kernel returns a
+.I struct tcp_info
+as defined in the file
.IR /usr/include/linux/tcp.h .
This option should not be used in code intended to be portable.
.TP
diff --git a/man7/time_namespaces.7 b/man7/time_namespaces.7
index 8c31b5f95..3679e1187 100644
--- a/man7/time_namespaces.7
+++ b/man7/time_namespaces.7
@@ -56,7 +56,7 @@ this symbolic link in a call to
.BR setns (2)
in order to move into the namespace.)
.\"
-.SS \fI/proc/\fPpid\fI/timens_offsets\fP
+.SS \f[I]/proc/\f[]pid\f[I]/timens_offsets\f[]
Associated with each time namespace are offsets,
expressed with respect to the initial time namespace,
that define the values of the monotonic and
@@ -100,7 +100,7 @@ file are as follows:
.PP
.in +4n
.EX
-$ \fBcat /proc/self/timens_offsets\fP
+.RB $ " cat /proc/self/timens_offsets"
monotonic 0 0
boottime 0 0
.EE
@@ -196,7 +196,7 @@ of a shell in the initial time namespace:
.PP
.in +4n
.EX
-$ \fBreadlink /proc/$$/ns/time\fP
+.RB $ " readlink /proc/$$/ns/time"
time:[4026531834]
.EE
.in
@@ -211,9 +211,9 @@ to display the values of various clocks:
.PP
.in +4n
.EX
-$ \fBuptime \-\-pretty\fP
+.RB $ " uptime \-\-pretty"
up 21 hours, 17 minutes
-$ \fB./clock_times\fP
+.RB $ " ./clock_times"
CLOCK_REALTIME : 1585989401.971 (18356 days + 8h 36m 41s)
CLOCK_TAI : 1585989438.972 (18356 days + 8h 37m 18s)
CLOCK_MONOTONIC: 56338.247 (15h 38m 58s)
@@ -239,9 +239,9 @@ clock forward 7 days:
.PP
.in +4n
.EX
-$ \fBPS1="ns2# " sudo unshare \-T \-\- bash \-\-norc\fP
-ns2# \fBecho "monotonic $((2*24*60*60)) 0" > /proc/$$/timens_offsets\fP
-ns2# \fBecho "boottime $((7*24*60*60)) 0" > /proc/$$/timens_offsets\fP
+.RB $ " PS1="ns2# " sudo unshare \-T \-\- bash \-\-norc"
+.RB ns2# " echo "monotonic $((2*24*60*60)) 0" > /proc/$$/timens_offsets"
+.RB ns2# " echo "boottime $((7*24*60*60)) 0" > /proc/$$/timens_offsets"
.EE
.in
.PP
@@ -269,10 +269,10 @@ file produce an error.
.PP
.in +4n
.EX
-ns2# \fBcat /proc/$$/timens_offsets\fP
+.RB ns2# " cat /proc/$$/timens_offsets"
monotonic 172800 0
boottime 604800 0
-ns2# \fBecho "boottime $((9*24*60*60)) 0" > /proc/$$/timens_offsets\fP
+.RB ns2# " echo \[dq]boottime $((9*24*60*60)) 0\[dq] > /proc/$$/timens_offsets"
bash: echo: write error: Permission denied
.EE
.in
@@ -285,9 +285,9 @@ example program:
.PP
.in +4n
.EX
-ns2# \fBuptime \-\-pretty\fP
+.RB ns2# " uptime \-\-pretty"
up 1 week, 21 hours, 18 minutes
-ns2# \fB./clock_times\fP
+.RB ns2# " ./clock_times"
CLOCK_REALTIME : 1585989457.056 (18356 days + 8h 37m 37s)
CLOCK_TAI : 1585989494.057 (18356 days + 8h 38m 14s)
CLOCK_MONOTONIC: 229193.332 (2 days + 15h 39m 53s)
@@ -307,11 +307,11 @@ namespace, but its children are created in the new namespace.
.PP
.in +4n
.EX
-ns2# \fBreadlink /proc/$$/ns/time\fP
+.RB ns2# " readlink /proc/$$/ns/time"
time:[4026531834]
-ns2# \fBreadlink /proc/$$/ns/time_for_children\fP
+.RB ns2# " readlink /proc/$$/ns/time_for_children"
time:[4026532900]
-ns2# \fBreadlink /proc/self/ns/time\fP # Creates a child process
+.RB ns2# " readlink /proc/self/ns/time" " # Creates a child process"
time:[4026532900]
.EE
.in
@@ -324,9 +324,9 @@ changes that were made in the other time namespace:
.PP
.in +4n
.EX
-$ \fBuptime \-\-pretty\fP
+.RB $ " uptime \-\-pretty"
up 21 hours, 19 minutes
-$ \fB./clock_times\fP
+.RB $ " ./clock_times"
CLOCK_REALTIME : 1585989401.971 (18356 days + 8h 38m 51s)
CLOCK_TAI : 1585989438.972 (18356 days + 8h 39m 28s)
CLOCK_MONOTONIC: 56338.247 (15h 41m 8s)
diff --git a/man7/user-session-keyring.7 b/man7/user-session-keyring.7
index edecb84aa..c4bba1e23 100644
--- a/man7/user-session-keyring.7
+++ b/man7/user-session-keyring.7
@@ -49,8 +49,9 @@ the calling process's user session keyring.
.PP
From the
.BR keyctl (1)
-utility, '\fB@us\fP' can be used instead of a numeric key ID in
-much the same way.
+utility,
+.RB ' @us '
+can be used instead of a numeric key ID in much the same way.
.PP
User session keyrings are independent of
.BR clone (2),