aboutsummaryrefslogtreecommitdiffstats
path: root/man2
diff options
context:
space:
mode:
Diffstat (limited to 'man2')
-rw-r--r--man2/ioctl_list.220
-rw-r--r--man2/listxattr.28
-rw-r--r--man2/memfd_create.28
-rw-r--r--man2/nfsservctl.224
-rw-r--r--man2/open_by_handle_at.28
-rw-r--r--man2/perf_event_open.212
-rw-r--r--man2/poll.234
-rw-r--r--man2/process_vm_readv.24
-rw-r--r--man2/ptrace.292
-rw-r--r--man2/select.239
-rw-r--r--man2/select_tut.222
-rw-r--r--man2/semop.234
-rw-r--r--man2/sendmmsg.24
-rw-r--r--man2/shmget.21
-rw-r--r--man2/sigaction.28
-rw-r--r--man2/spu_run.24
-rw-r--r--man2/umask.224
-rw-r--r--man2/wait4.248
18 files changed, 218 insertions, 176 deletions
diff --git a/man2/ioctl_list.2 b/man2/ioctl_list.2
index fc07aaf99c..ef84eb53aa 100644
--- a/man2/ioctl_list.2
+++ b/man2/ioctl_list.2
@@ -871,14 +871,14 @@ For
most drivers use CD_FRAMESIZE, but the Optics Storage
driver uses OPT_BLOCKSIZE instead (both have the numerical value
2048).
+.PP
.nf
-
CDROMREADCOOKED char [CD_FRAMESIZE]
CDROMREADMODE1 char [CD_FRAMESIZE or OPT_BLOCKSIZE]
CDROMREADMODE2 char [CD_FRAMESIZE_RAW0]
CDROMREADRAW char [CD_FRAMESIZE_RAW]
-
.fi
+.PP
.BR EQL_ENSLAVE ,
.BR EQL_EMANCIPATE ,
.BR EQL_GETSLAVECFG ,
@@ -891,16 +891,16 @@ take a
The
.I ifr_data
field is a pointer to another structure as follows:
+.PP
.nf
-
EQL_ENSLAVE const struct slaving_request *
EQL_EMANCIPATE const struct slaving_request *
EQL_GETSLAVECFG struct slave_config * // I-O
EQL_SETSLAVECFG const struct slave_config *
EQL_GETMASTERCFG struct master_config *
EQL_SETMASTERCFG const struct master_config *
-
.fi
+.PP
.B FDRAWCMD
takes a
.IR "struct floppy raw_cmd\ *" .
@@ -972,14 +972,14 @@ and
.B SIOCDELRT
take an input pointer whose type depends on
the protocol:
+.PP
.nf
-
Most protocols const struct rtentry *
AX.25 const struct ax25_route *
NET/ROM const struct nr_route_struct *
INET6 const struct in6_rtmsg *
-
.fi
+.PP
.B SIOCGIFCONF
takes a
.IR "struct ifconf\ *" .
@@ -992,12 +992,12 @@ bytes, into which the kernel writes a list of type
.PP
.B SIOCSIFHWADDR
takes an input pointer whose type depends on the protocol:
+.PP
.nf
-
Most protocols const struct ifreq *
AX.25 const char [AX25_ADDR_LEN]
-
.fi
+.PP
.B TIOCLINUX
takes a
.IR "const char\ *" .
@@ -1011,8 +1011,8 @@ after an N-byte pad.
.I struct selection
is implicitly defined in
.IR drivers/char/selection.c
+.PP
.nf
-
TIOCLINUX-2 1 + const struct selection *
TIOCLINUX-3 void
TIOCLINUX-4 void
@@ -1020,8 +1020,8 @@ is implicitly defined in
TIOCLINUX-6 char *
TIOCLINUX-7 char *
TIOCLINUX-10 1 + const char *
-
.fi
+.PP
// Duplicate ioctls
.PP
This list does not include ioctls in the range
diff --git a/man2/listxattr.2 b/man2/listxattr.2
index 3d0b232deb..9bca9cbc2f 100644
--- a/man2/listxattr.2
+++ b/man2/listxattr.2
@@ -106,10 +106,10 @@ The
.I list
of names is returned as an unordered array of null-terminated character
strings (attribute names are separated by null bytes (\(aq\\0\(aq)), like this:
+.PP
.fam C
.RS
.nf
-
user.name1\\0system.name1\\0user.name2\\0
.fi
.RE
@@ -119,10 +119,10 @@ Filesystems that implement POSIX ACLs using
extended attributes might return a
.I list
like this:
+.PP
.fam C
.RS
.nf
-
system.posix_acl_access\\0system.posix_acl_default\\0
.fi
.RE
@@ -217,7 +217,7 @@ user.empty: <no value>
.EE
.in
.SS Program source (listxattr.c)
-.nf
+.EX
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
@@ -330,7 +330,7 @@ main(int argc, char *argv[])
free(buf);
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.SH SEE ALSO
.BR getfattr (1),
.BR setfattr (1),
diff --git a/man2/memfd_create.2 b/man2/memfd_create.2
index 8d66b79148..230aab71a1 100644
--- a/man2/memfd_create.2
+++ b/man2/memfd_create.2
@@ -358,7 +358,7 @@ Existing seals: WRITE SHRINK
.in
.SS Program source: t_memfd_create.c
\&
-.nf
+.EX
#include <sys/memfd.h>
#include <fcntl.h>
#include <stdlib.h>
@@ -437,10 +437,10 @@ main(int argc, char *argv[])
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.SS Program source: t_get_seals.c
\&
-.nf
+.EX
#include <sys/memfd.h>
#include <fcntl.h>
#include <unistd.h>
@@ -486,7 +486,7 @@ main(int argc, char *argv[])
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.SH SEE ALSO
.BR fcntl (2),
.BR ftruncate (2),
diff --git a/man2/nfsservctl.2 b/man2/nfsservctl.2
index 7dcd4d383f..207acfbcab 100644
--- a/man2/nfsservctl.2
+++ b/man2/nfsservctl.2
@@ -20,19 +20,20 @@ It has been replaced by a set of files in the
filesystem; see
.BR nfsd (7).
.PP
-.nf
+.in +4n
+.EX
/*
* These are the commands understood by nfsctl().
*/
-#define NFSCTL_SVC 0 /* This is a server process. */
-#define NFSCTL_ADDCLIENT 1 /* Add an NFS client. */
-#define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */
-#define NFSCTL_EXPORT 3 /* Export a filesystem. */
-#define NFSCTL_UNEXPORT 4 /* Unexport a filesystem. */
-#define NFSCTL_UGIDUPDATE 5 /* Update a client's UID/GID map
- (only in Linux 2.4.x and earlier). */
-#define NFSCTL_GETFH 6 /* Get a file handle (used by mountd)
- (only in Linux 2.4.x and earlier). */
+#define NFSCTL_SVC 0 /* This is a server process. */
+#define NFSCTL_ADDCLIENT 1 /* Add an NFS client. */
+#define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */
+#define NFSCTL_EXPORT 3 /* Export a filesystem. */
+#define NFSCTL_UNEXPORT 4 /* Unexport a filesystem. */
+#define NFSCTL_UGIDUPDATE 5 /* Update a client's UID/GID map
+ (only in Linux 2.4.x and earlier). */
+#define NFSCTL_GETFH 6 /* Get a file handle (used by mountd)
+ (only in Linux 2.4.x and earlier). */
struct nfsctl_arg {
int ca_version; /* safeguard */
@@ -50,7 +51,8 @@ union nfsctl_res {
struct knfs_fh cr_getfh;
unsigned int cr_debug;
};
-.fi
+.EE
+.in
.SH RETURN VALUE
On success, zero is returned.
On error, \-1 is returned, and
diff --git a/man2/open_by_handle_at.2 b/man2/open_by_handle_at.2
index 446afd648d..e99ea4887c 100644
--- a/man2/open_by_handle_at.2
+++ b/man2/open_by_handle_at.2
@@ -505,7 +505,7 @@ open_by_handle_at: Stale NFS file handle
.in
.SS Program source: t_name_to_handle_at.c
\&
-.nf
+.EX
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/stat.h>
@@ -575,10 +575,10 @@ main(int argc, char *argv[])
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.SS Program source: t_open_by_handle_at.c
\&
-.nf
+.EX
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/stat.h>
@@ -715,7 +715,7 @@ main(int argc, char *argv[])
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.SH SEE ALSO
.BR open (2),
.BR libblkid (3),
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index 7089602de7..bada5a9146 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -540,9 +540,9 @@ then we are measuring a hardware CPU cache event.
To calculate the appropriate
.I config
value use the following equation:
+.PP
.RS 4
.nf
-
(perf_hw_cache_id) | (perf_hw_cache_op_id << 8) |
(perf_hw_cache_op_result_id << 16)
.fi
@@ -1618,8 +1618,8 @@ these fields can be used to compute the time
delta since
.I time_enabled
(in nanoseconds) using rdtsc or similar.
+.IP
.nf
-
u64 quot, rem;
u64 delta;
quot = (cyc >> time_shift);
@@ -1638,8 +1638,8 @@ are read in the
seqcount loop described above.
This delta can then be added to
enabled and possible running (if idx), improving the scaling:
+.IP
.nf
-
enabled += delta;
if (idx)
running += delta;
@@ -3265,8 +3265,8 @@ 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).
-.nf
-
+.PP
+.EX
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@@ -3319,7 +3319,7 @@ main(int argc, char **argv)
close(fd);
}
-.fi
+.EE
.SH SEE ALSO
.BR fcntl (2),
.BR mmap (2),
diff --git a/man2/poll.2 b/man2/poll.2
index 922cacc89c..a4f565f906 100644
--- a/man2/poll.2
+++ b/man2/poll.2
@@ -264,25 +264,29 @@ Other than the difference in the precision of the
argument, the following
.BR ppoll ()
call:
-.nf
-
- ready = ppoll(&fds, nfds, tmo_p, &sigmask);
-
-.fi
+.PP
+.in +4n
+.EX
+ready = ppoll(&fds, nfds, tmo_p, &sigmask);
+.EE
+.in
+.PP
is equivalent to
.I atomically
executing the following calls:
-.nf
-
- sigset_t origmask;
- int timeout;
+.PP
+.in +4n
+.EX
+sigset_t origmask;
+int timeout;
- timeout = (tmo_p == NULL) ? \-1 :
- (tmo_p\->tv_sec * 1000 + tmo_p\->tv_nsec / 1000000);
- pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
- ready = poll(&fds, nfds, timeout);
- pthread_sigmask(SIG_SETMASK, &origmask, NULL);
-.fi
+timeout = (tmo_p == NULL) ? \-1 :
+ (tmo_p\->tv_sec * 1000 + tmo_p\->tv_nsec / 1000000);
+pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
+ready = poll(&fds, nfds, timeout);
+pthread_sigmask(SIG_SETMASK, &origmask, NULL);
+.EE
+.in
.PP
See the description of
.BR pselect (2)
diff --git a/man2/process_vm_readv.2 b/man2/process_vm_readv.2
index 609c2af92a..9e44f55a77 100644
--- a/man2/process_vm_readv.2
+++ b/man2/process_vm_readv.2
@@ -309,7 +309,7 @@ and writes the first 10 bytes into
and the second 10 bytes into
.IR buf2 .
.PP
-.nf
+.EX
#include <sys/uio.h>
int
@@ -335,7 +335,7 @@ main(void)
else
return 0;
}
-.fi
+.EE
.SH SEE ALSO
.BR readv (2),
.BR writev (2)
diff --git a/man2/ptrace.2 b/man2/ptrace.2
index a79bbd9d50..dc84d4136b 100644
--- a/man2/ptrace.2
+++ b/man2/ptrace.2
@@ -404,8 +404,8 @@ field includes information
.BR __SI_FAULT ,
etc.) that are not otherwise exposed to user space.
.PP
-.in +10n
-.nf
+.in +4n
+.EX
struct ptrace_peeksiginfo_args {
u64 off; /* Ordinal position in queue at which
to start copying signals */
@@ -1181,16 +1181,18 @@ flag may cause
to return 0 ("no wait results available yet")
even if the tracer knows there should be a notification.
Example:
-.nf
-
- errno = 0;
- ptrace(PTRACE_CONT, pid, 0L, 0L);
- if (errno == ESRCH) {
- /* tracee is dead */
- r = waitpid(tracee, &status, __WALL | WNOHANG);
- /* r can still be 0 here! */
- }
-.fi
+.PP
+.in +4n
+.EX
+errno = 0;
+ptrace(PTRACE_CONT, pid, 0L, 0L);
+if (errno == ESRCH) {
+ /* tracee is dead */
+ r = waitpid(tracee, &status, __WALL | WNOHANG);
+ /* r can still be 0 here! */
+}
+.EE
+.in
.\" FIXME .
.\" waitid usage? WNOWAIT?
.\" describe how wait notifications queue (or not queue)
@@ -1815,18 +1817,20 @@ the tracer can read and write data to
the tracee using informational commands.
These commands leave the tracee in ptrace-stopped state:
.PP
-.nf
- ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);
- ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);
- ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);
- ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);
- ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);
- ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);
- ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);
- ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);
- ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);
- ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);
-.fi
+.in +4n
+.EX
+ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);
+ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);
+ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);
+ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);
+ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);
+ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);
+ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);
+ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);
+ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);
+ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);
+.EE
+.in
.PP
Note that some errors are not reported.
For example, setting signal information
@@ -2714,29 +2718,39 @@ file descriptor.
The usual symptom of this bug is that when you attach to
a quiescent process with the command
.PP
- strace \-p <process-ID>
+.in +4n
+.EX
+strace \-p <process-ID>
+.EE
+.in
.PP
then, instead of the usual
and expected one-line output such as
-.nf
-
- restart_syscall(<... resuming interrupted call ...>_
-
-.fi
+.PP
+.in +4n
+.EX
+restart_syscall(<... resuming interrupted call ...>_
+.EE
+.in
+.PP
or
-.nf
-
- select(6, [5], NULL, [5], NULL_
-
-.fi
+.PP
+.in +4n
+.EX
+select(6, [5], NULL, [5], NULL_
+.EE
+.in
+.PP
('_' denotes the cursor position), you observe more than one line.
For example:
-.nf
-
+.PP
+.in +4n
+.EX
clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0
epoll_wait(4,_
-
-.fi
+.EE
+.in
+.PP
What is not visible here is that the process was blocked in
.BR epoll_wait (2)
before
diff --git a/man2/select.2 b/man2/select.2
index 8e7d9eefc9..fb412f02fb 100644
--- a/man2/select.2
+++ b/man2/select.2
@@ -219,23 +219,28 @@ Other than the difference in the precision of the
argument, the following
.BR pselect ()
call:
-.nf
-
- ready = pselect(nfds, &readfds, &writefds, &exceptfds,
- timeout, &sigmask);
-
-.fi
+.PP
+.in +4n
+.EX
+ready = pselect(nfds, &readfds, &writefds, &exceptfds,
+ timeout, &sigmask);
+.EE
+.in
+.PP
is equivalent to
.I atomically
executing the following calls:
-.nf
-
- sigset_t origmask;
+.PP
+.in +4n
+.EX
+sigset_t origmask;
- pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
- ready = select(nfds, &readfds, &writefds, &exceptfds, timeout);
- pthread_sigmask(SIG_SETMASK, &origmask, NULL);
-.fi
+pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
+ready = select(nfds, &readfds, &writefds, &exceptfds, timeout);
+pthread_sigmask(SIG_SETMASK, &origmask, NULL);
+.EE
+.in
+.PP
.PP
The reason that
.BR pselect ()
@@ -553,9 +558,9 @@ The final argument of the
system call is not a
.I "sigset_t\ *"
pointer, but is instead a structure of the form:
+.PP
.in +4
-.nf
-
+.EX
struct {
const kernel_sigset_t *ss; /* Pointer to signal set */
size_t ss_len; /* Size (in bytes) of object
@@ -651,7 +656,7 @@ but the glibc wrapper hides this behavior by internally copying the
.I timeout
to a local variable and passing that variable to the system call.
.SH EXAMPLE
-.nf
+.EX
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
@@ -688,7 +693,7 @@ main(void)
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.SH SEE ALSO
.BR accept (2),
.BR connect (2),
diff --git a/man2/select_tut.2 b/man2/select_tut.2
index 4d06c0963d..cef482003d 100644
--- a/man2/select_tut.2
+++ b/man2/select_tut.2
@@ -251,7 +251,7 @@ call would enable
by using an empty signal mask.
Our program would look like:
.PP
-.nf
+.EX
static volatile sig_atomic_t got_SIGCHLD = 0;
static void
@@ -305,7 +305,7 @@ main(int argc, char *argv[])
/* main body of program */
}
}
-.fi
+.EE
.SS Practical
So what is the point of
.BR select ()?
@@ -474,12 +474,14 @@ function, you can call
with a finite timeout and no file descriptors as
follows:
.PP
-.nf
- struct timeval tv;
- tv.tv_sec = 0;
- tv.tv_usec = 200000; /* 0.2 seconds */
- select(0, NULL, NULL, NULL, &tv);
-.fi
+.in +4n
+.EX
+struct timeval tv;
+tv.tv_sec = 0;
+tv.tv_usec = 200000; /* 0.2 seconds */
+select(0, NULL, NULL, NULL, &tv);
+.EE
+.in
.PP
This is guaranteed to work only on UNIX systems, however.
.SH RETURN VALUE
@@ -532,7 +534,7 @@ Here is an example that better demonstrates the true utility of
The listing below is a TCP forwarding program that forwards
from one TCP port to another.
.PP
-.nf
+.EX
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@@ -797,7 +799,7 @@ main(int argc, char *argv[])
}
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.PP
The above program properly forwards most kinds of TCP connections
including OOB signal data transmitted by \fBtelnet\fP servers.
diff --git a/man2/semop.2 b/man2/semop.2
index 88de490486..95940782fd 100644
--- a/man2/semop.2
+++ b/man2/semop.2
@@ -522,26 +522,28 @@ 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.
-.nf
-
- struct sembuf sops[2];
- int semid;
+.PP
+.in +4n
+.EX
+struct sembuf sops[2];
+int semid;
- /* Code to set \fIsemid\fP omitted */
+/* Code to set \fIsemid\fP omitted */
- sops[0].sem_num = 0; /* Operate on semaphore 0 */
- sops[0].sem_op = 0; /* Wait for value to equal 0 */
- sops[0].sem_flg = 0;
+sops[0].sem_num = 0; /* Operate on semaphore 0 */
+sops[0].sem_op = 0; /* Wait for value to equal 0 */
+sops[0].sem_flg = 0;
- sops[1].sem_num = 0; /* Operate on semaphore 0 */
- sops[1].sem_op = 1; /* Increment value by one */
- sops[1].sem_flg = 0;
+sops[1].sem_num = 0; /* Operate on semaphore 0 */
+sops[1].sem_op = 1; /* Increment value by one */
+sops[1].sem_flg = 0;
- if (semop(semid, sops, 2) == \-1) {
- perror("semop");
- exit(EXIT_FAILURE);
- }
-.fi
+if (semop(semid, sops, 2) == \-1) {
+ perror("semop");
+ exit(EXIT_FAILURE);
+}
+.EE
+.in
.SH SEE ALSO
.BR clone (2),
.BR semctl (2),
diff --git a/man2/sendmmsg.2 b/man2/sendmmsg.2
index 7dfa4d608d..ce441ef77f 100644
--- a/man2/sendmmsg.2
+++ b/man2/sendmmsg.2
@@ -175,7 +175,7 @@ and
in two distinct UDP datagrams using one system call.
The contents of the first datagram originates from a pair of buffers.
.PP
-.nf
+.EX
#define _GNU_SOURCE
#include <netinet/ip.h>
#include <stdio.h>
@@ -232,7 +232,7 @@ main(void)
exit(0);
}
-.fi
+.EE
.SH SEE ALSO
.BR recvmmsg (2),
.BR sendmsg (2),
diff --git a/man2/shmget.2 b/man2/shmget.2
index ec30bc2b2b..0c816c6b34 100644
--- a/man2/shmget.2
+++ b/man2/shmget.2
@@ -124,7 +124,6 @@ the base-2 logarithm of the desired page size in the six bits at the offset
.BR SHM_HUGE_SHIFT .
Thus, the above two constants are defined as:
.IP
-.nf
.in +4
.EX
#define SHM_HUGE_2MB (21 << SHM_HUGE_SHIFT)
diff --git a/man2/sigaction.2 b/man2/sigaction.2
index b877921d48..b5aec082da 100644
--- a/man2/sigaction.2
+++ b/man2/sigaction.2
@@ -546,9 +546,11 @@ will contain
.BR SIGTRAP
and have the ptrace event in the high byte:
.PP
-.nf
- (SIGTRAP | PTRACE_EVENT_foo << 8).
-.fi
+.in +4n
+.EX
+(SIGTRAP | PTRACE_EVENT_foo << 8).
+.EE
+.in
.PP
For a
.RB non- ptrace (2)
diff --git a/man2/spu_run.2 b/man2/spu_run.2
index 528c8c1390..0efd3fae68 100644
--- a/man2/spu_run.2
+++ b/man2/spu_run.2
@@ -210,7 +210,7 @@ program with the
.BR spu_run ()
system call.
.PP
-.nf
+.EX
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
@@ -258,7 +258,7 @@ int main(void)
exit(EXIT_SUCCESS);
}
-.fi
+.EE
.\" .SH AUTHORS
.\" Arnd Bergmann <arndb@de.ibm.com>, Jeremy Kerr <jk@ozlabs.org>
.SH SEE ALSO
diff --git a/man2/umask.2 b/man2/umask.2
index 756176bc3f..8501b00447 100644
--- a/man2/umask.2
+++ b/man2/umask.2
@@ -92,18 +92,22 @@ In the usual case where the
argument to
.BR open (2)
is specified as:
-.nf
-
- S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
-
-.fi
+.PP
+.in +4n
+.EX
+S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
+.EE
+.in
+.PP
(octal 0666) when creating a new file, the permissions on the
resulting file will be:
-.nf
-
- S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
-
-.fi
+.PP
+.in +4n
+.EX
+S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
+.EE
+.in
+.PP
(because 0666 & ~022 = 0644; i.e., rw\-r\-\-r\-\-).
.SH RETURN VALUE
This system call always succeeds and the previous value of the mask
diff --git a/man2/wait4.2 b/man2/wait4.2
index 5a121a40a9..a88b188838 100644
--- a/man2/wait4.2
+++ b/man2/wait4.2
@@ -88,31 +88,39 @@ Other than the use of the
argument, the following
.BR wait3 ()
call:
-.nf
-
- wait3(wstatus, options, rusage);
-
-.fi
+.PP
+.in +4n
+.EX
+wait3(wstatus, options, rusage);
+.EE
+.in
+.PP
is equivalent to:
-.nf
-
- waitpid(\-1, wstatus, options);
-
-.fi
+.PP
+.in +4n
+.EX
+waitpid(\-1, wstatus, options);
+.EE
+.in
+.PP
Similarly, the following
.BR wait4 ()
call:
-.nf
-
- wait4(pid, wstatus, options, rusage);
-
-.fi
+.PP
+.in +4n
+.EX
+wait4(pid, wstatus, options, rusage);
+.EE
+.in
+.PP
is equivalent to:
-.nf
-
- waitpid(pid, wstatus, options);
-
-.fi
+.PP
+.in +4n
+.EX
+waitpid(pid, wstatus, options);
+.EE
+.in
+.PP
In other words,
.BR wait3 ()
waits of any child, while