summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2023-03-17 17:08:01 +0100
committerAlejandro Colomar <alx@kernel.org>2023-03-30 15:14:55 +0200
commit4131356cdab8d37fc395ca5466a0401c8573380c (patch)
tree8c4c6f1c3172358b735b481cbbfdd9cc04b00ed9
parentfd00f831b52d61a91d59cb3b46182869145d9700 (diff)
man*/, man-pages.7: VERSIONS, STANDARDS, HISTORY: Reorganize sections
- Add a new HISTORY section that covers the history of an API, both regarding implementations and regarding old standards. This was previously covered in VERSIONS, and in some cases in STANDARDS. - Repurpose VERSIONS to cover differing implementations in _current_ systems. - STANDARDS is reduced to only cover current versions of standards. That basically means only C11 (C99 has been superseeded by C11; C17 is just a bugfix of C11, so not really a new version), and POSIX.1-2008 (*-2001 was superseeded by *-2008; *-2017 was just a bugfix for *-2008). The section also mentions for example 'Linux', 'GNU' or 'BSD' when a non-standard API is Linux- or GNU-only or if it's (de-facto) standard in the BSDs. - In some cases content that should go into one of these sections was in NOTES. Move it from there to where it corresponds. - In the SYNOPSIS, I added [[deprecated]] in some functions that I found are deprecated by the relevant standards. - A few other related changes... Cc: Oskari Pirhonen <xxc3ncoredxx@gmail.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--man1/iconv.12
-rw-r--r--man1/locale.14
-rw-r--r--man1/pldd.110
-rw-r--r--man1/sprof.14
-rw-r--r--man2/_exit.211
-rw-r--r--man2/_syscall.28
-rw-r--r--man2/accept.244
-rw-r--r--man2/access.2108
-rw-r--r--man2/acct.24
-rw-r--r--man2/add_key.26
-rw-r--r--man2/adjtimex.28
-rw-r--r--man2/alarm.24
-rw-r--r--man2/alloc_hugepages.25
-rw-r--r--man2/arch_prctl.24
-rw-r--r--man2/bdflush.28
-rw-r--r--man2/bind.24
-rw-r--r--man2/bpf.210
-rw-r--r--man2/brk.22
-rw-r--r--man2/cacheflush.215
-rw-r--r--man2/capget.22
-rw-r--r--man2/chdir.24
-rw-r--r--man2/chmod.224
-rw-r--r--man2/chown.225
-rw-r--r--man2/chroot.22
-rw-r--r--man2/clock_getres.241
-rw-r--r--man2/clock_nanosleep.211
-rw-r--r--man2/clone.277
-rw-r--r--man2/close.24
-rw-r--r--man2/close_range.211
-rw-r--r--man2/connect.29
-rw-r--r--man2/copy_file_range.215
-rw-r--r--man2/create_module.212
-rw-r--r--man2/delete_module.225
-rw-r--r--man2/dup.226
-rw-r--r--man2/epoll_create.224
-rw-r--r--man2/epoll_ctl.214
-rw-r--r--man2/epoll_wait.227
-rw-r--r--man2/eventfd.282
-rw-r--r--man2/execve.2140
-rw-r--r--man2/execveat.211
-rw-r--r--man2/exit_group.26
-rw-r--r--man2/fallocate.216
-rw-r--r--man2/fanotify_init.28
-rw-r--r--man2/fanotify_mark.28
-rw-r--r--man2/fcntl.267
-rw-r--r--man2/flock.2114
-rw-r--r--man2/fork.219
-rw-r--r--man2/fsync.210
-rw-r--r--man2/futex.220
-rw-r--r--man2/futimesat.223
-rw-r--r--man2/get_kernel_syms.212
-rw-r--r--man2/get_mempolicy.28
-rw-r--r--man2/getcpu.229
-rw-r--r--man2/getdents.212
-rw-r--r--man2/getdomainname.216
-rw-r--r--man2/getgid.238
-rw-r--r--man2/getgroups.266
-rw-r--r--man2/gethostname.221
-rw-r--r--man2/getitimer.248
-rw-r--r--man2/getpagesize.25
-rw-r--r--man2/getpeername.27
-rw-r--r--man2/getpid.269
-rw-r--r--man2/getpriority.24
-rw-r--r--man2/getrandom.29
-rw-r--r--man2/getresuid.216
-rw-r--r--man2/getrlimit.229
-rw-r--r--man2/getrusage.211
-rw-r--r--man2/getsid.213
-rw-r--r--man2/getsockname.27
-rw-r--r--man2/getsockopt.26
-rw-r--r--man2/gettid.215
-rw-r--r--man2/gettimeofday.245
-rw-r--r--man2/getuid.27
-rw-r--r--man2/getunwind.29
-rw-r--r--man2/getxattr.28
-rw-r--r--man2/idle.29
-rw-r--r--man2/init_module.230
-rw-r--r--man2/inotify_add_watch.26
-rw-r--r--man2/inotify_init.216
-rw-r--r--man2/inotify_rm_watch.26
-rw-r--r--man2/io_cancel.216
-rw-r--r--man2/io_destroy.214
-rw-r--r--man2/io_getevents.218
-rw-r--r--man2/io_setup.218
-rw-r--r--man2/io_submit.218
-rw-r--r--man2/ioctl.211
-rw-r--r--man2/ioctl_fat.223
-rw-r--r--man2/ioctl_ficlonerange.29
-rw-r--r--man2/ioctl_fideduperange.213
-rw-r--r--man2/ioctl_fslabel.211
-rw-r--r--man2/ioctl_getfsmap.29
-rw-r--r--man2/ioctl_iflags.22
-rw-r--r--man2/ioctl_ns.22
-rw-r--r--man2/ioctl_userfaultfd.24
-rw-r--r--man2/ioperm.224
-rw-r--r--man2/iopl.210
-rw-r--r--man2/ioprio_set.27
-rw-r--r--man2/ipc.28
-rw-r--r--man2/kcmp.213
-rw-r--r--man2/kexec_load.214
-rw-r--r--man2/keyctl.210
-rw-r--r--man2/kill.232
-rw-r--r--man2/landlock_add_rule.26
-rw-r--r--man2/landlock_create_ruleset.26
-rw-r--r--man2/landlock_restrict_self.26
-rw-r--r--man2/link.245
-rw-r--r--man2/listen.27
-rw-r--r--man2/listxattr.28
-rw-r--r--man2/llseek.27
-rw-r--r--man2/lookup_dcookie.212
-rw-r--r--man2/lseek.222
-rw-r--r--man2/madvise.227
-rw-r--r--man2/mbind.236
-rw-r--r--man2/membarrier.223
-rw-r--r--man2/memfd_create.212
-rw-r--r--man2/memfd_secret.210
-rw-r--r--man2/migrate_pages.28
-rw-r--r--man2/mincore.220
-rw-r--r--man2/mkdir.230
-rw-r--r--man2/mknod.229
-rw-r--r--man2/mlock.292
-rw-r--r--man2/mmap.2102
-rw-r--r--man2/mmap2.29
-rw-r--r--man2/modify_ldt.23
-rw-r--r--man2/mount.212
-rw-r--r--man2/mount_setattr.210
-rw-r--r--man2/move_pages.27
-rw-r--r--man2/mprotect.225
-rw-r--r--man2/mq_getsetattr.22
-rw-r--r--man2/mremap.220
-rw-r--r--man2/msgctl.228
-rw-r--r--man2/msgget.216
-rw-r--r--man2/msgop.28
-rw-r--r--man2/msync.252
-rw-r--r--man2/nanosleep.246
-rw-r--r--man2/nfsservctl.28
-rw-r--r--man2/nice.234
-rw-r--r--man2/open.2268
-rw-r--r--man2/open_by_handle_at.210
-rw-r--r--man2/openat2.29
-rw-r--r--man2/outb.24
-rw-r--r--man2/pause.24
-rw-r--r--man2/pciconfig_read.24
-rw-r--r--man2/perf_event_open.29
-rw-r--r--man2/perfmonctl.216
-rw-r--r--man2/personality.214
-rw-r--r--man2/pidfd_getfd.210
-rw-r--r--man2/pidfd_open.28
-rw-r--r--man2/pidfd_send_signal.28
-rw-r--r--man2/pipe.225
-rw-r--r--man2/pivot_root.28
-rw-r--r--man2/pkey_alloc.215
-rw-r--r--man2/poll.277
-rw-r--r--man2/posix_fadvise.275
-rw-r--r--man2/prctl.211
-rw-r--r--man2/pread.231
-rw-r--r--man2/process_madvise.213
-rw-r--r--man2/process_vm_readv.28
-rw-r--r--man2/ptrace.212
-rw-r--r--man2/query_module.210
-rw-r--r--man2/read.22
-rw-r--r--man2/readahead.215
-rw-r--r--man2/readdir.26
-rw-r--r--man2/readlink.248
-rw-r--r--man2/readv.290
-rw-r--r--man2/reboot.24
-rw-r--r--man2/recv.248
-rw-r--r--man2/recvmmsg.211
-rw-r--r--man2/remap_file_pages.212
-rw-r--r--man2/removexattr.28
-rw-r--r--man2/rename.234
-rw-r--r--man2/request_key.29
-rw-r--r--man2/restart_syscall.28
-rw-r--r--man2/rmdir.24
-rw-r--r--man2/rt_sigqueueinfo.214
-rw-r--r--man2/s390_guarded_storage.211
-rw-r--r--man2/s390_pci_mmio_write.28
-rw-r--r--man2/s390_runtime_instr.29
-rw-r--r--man2/s390_sthyi.26
-rw-r--r--man2/sched_get_priority_max.24
-rw-r--r--man2/sched_rr_get_interval.239
-rw-r--r--man2/sched_setaffinity.211
-rw-r--r--man2/sched_setattr.28
-rw-r--r--man2/sched_setparam.24
-rw-r--r--man2/sched_setscheduler.248
-rw-r--r--man2/sched_yield.24
-rw-r--r--man2/seccomp.212
-rw-r--r--man2/select.260
-rw-r--r--man2/semctl.2106
-rw-r--r--man2/semget.22
-rw-r--r--man2/semop.213
-rw-r--r--man2/send.232
-rw-r--r--man2/sendfile.245
-rw-r--r--man2/sendmmsg.211
-rw-r--r--man2/set_mempolicy.28
-rw-r--r--man2/set_thread_area.214
-rw-r--r--man2/set_tid_address.29
-rw-r--r--man2/seteuid.28
-rw-r--r--man2/setfsgid.232
-rw-r--r--man2/setfsuid.216
-rw-r--r--man2/setgid.228
-rw-r--r--man2/setns.212
-rw-r--r--man2/setpgid.248
-rw-r--r--man2/setresuid.245
-rw-r--r--man2/setreuid.220
-rw-r--r--man2/setsid.24
-rw-r--r--man2/setuid.255
-rw-r--r--man2/setup.211
-rw-r--r--man2/setxattr.28
-rw-r--r--man2/sgetmask.26
-rw-r--r--man2/shmctl.238
-rw-r--r--man2/shmget.26
-rw-r--r--man2/shmop.24
-rw-r--r--man2/shutdown.27
-rw-r--r--man2/sigaction.2160
-rw-r--r--man2/sigaltstack.27
-rw-r--r--man2/signal.276
-rw-r--r--man2/signalfd.266
-rw-r--r--man2/sigpending.244
-rw-r--r--man2/sigprocmask.280
-rw-r--r--man2/sigreturn.24
-rw-r--r--man2/sigsuspend.247
-rw-r--r--man2/sigwaitinfo.290
-rw-r--r--man2/socket.29
-rw-r--r--man2/socketcall.27
-rw-r--r--man2/socketpair.219
-rw-r--r--man2/splice.230
-rw-r--r--man2/spu_create.226
-rw-r--r--man2/spu_run.210
-rw-r--r--man2/stat.224
-rw-r--r--man2/statfs.2112
-rw-r--r--man2/statx.29
-rw-r--r--man2/stime.24
-rw-r--r--man2/subpage_prot.211
-rw-r--r--man2/swapon.26
-rw-r--r--man2/symlink.235
-rw-r--r--man2/sync.243
-rw-r--r--man2/sync_file_range.213
-rw-r--r--man2/sysctl.210
-rw-r--r--man2/sysfs.24
-rw-r--r--man2/sysinfo.28
-rw-r--r--man2/syslog.25
-rw-r--r--man2/tee.210
-rw-r--r--man2/time.224
-rw-r--r--man2/timer_create.288
-rw-r--r--man2/timer_delete.27
-rw-r--r--man2/timer_getoverrun.29
-rw-r--r--man2/timer_settime.27
-rw-r--r--man2/timerfd_create.28
-rw-r--r--man2/times.265
-rw-r--r--man2/tkill.222
-rw-r--r--man2/truncate.250
-rw-r--r--man2/umask.24
-rw-r--r--man2/umount.229
-rw-r--r--man2/uname.246
-rw-r--r--man2/unlink.220
-rw-r--r--man2/unshare.210
-rw-r--r--man2/uselib.26
-rw-r--r--man2/userfaultfd.214
-rw-r--r--man2/ustat.27
-rw-r--r--man2/utime.213
-rw-r--r--man2/utimensat.274
-rw-r--r--man2/vfork.292
-rw-r--r--man2/vhangup.23
-rw-r--r--man2/vm86.23
-rw-r--r--man2/vmsplice.210
-rw-r--r--man2/wait.251
-rw-r--r--man2/wait4.24
-rw-r--r--man2/write.22
-rw-r--r--man2type/open_how.2type2
-rw-r--r--man3/CPU_SET.36
-rw-r--r--man3/INFINITY.32
-rw-r--r--man3/MAX.32
-rw-r--r--man3/MB_CUR_MAX.34
-rw-r--r--man3/MB_LEN_MAX.34
-rw-r--r--man3/_Generic.34
-rw-r--r--man3/__ppc_get_timebase.317
-rw-r--r--man3/__ppc_set_ppr_med.323
-rw-r--r--man3/__ppc_yield.36
-rw-r--r--man3/__setfpucw.35
-rw-r--r--man3/a64l.34
-rw-r--r--man3/abort.36
-rw-r--r--man3/abs.35
-rw-r--r--man3/acos.36
-rw-r--r--man3/acosh.34
-rw-r--r--man3/addseverity.313
-rw-r--r--man3/adjtime.32
-rw-r--r--man3/aio_cancel.39
-rw-r--r--man3/aio_error.39
-rw-r--r--man3/aio_fsync.39
-rw-r--r--man3/aio_init.38
-rw-r--r--man3/aio_read.39
-rw-r--r--man3/aio_return.39
-rw-r--r--man3/aio_suspend.39
-rw-r--r--man3/aio_write.39
-rw-r--r--man3/alloca.37
-rw-r--r--man3/argz_add.32
-rw-r--r--man3/asin.34
-rw-r--r--man3/asinh.34
-rw-r--r--man3/asprintf.36
-rw-r--r--man3/assert.35
-rw-r--r--man3/assert_perror.32
-rw-r--r--man3/atan.34
-rw-r--r--man3/atan2.34
-rw-r--r--man3/atanh.34
-rw-r--r--man3/atexit.336
-rw-r--r--man3/atof.34
-rw-r--r--man3/atoi.315
-rw-r--r--man3/backtrace.310
-rw-r--r--man3/basename.38
-rw-r--r--man3/bcmp.37
-rw-r--r--man3/bcopy.35
-rw-r--r--man3/bindresvport.35
-rw-r--r--man3/bsd_signal.317
-rw-r--r--man3/bsearch.34
-rw-r--r--man3/bswap.32
-rw-r--r--man3/btowc.34
-rw-r--r--man3/byteorder.34
-rw-r--r--man3/bzero.326
-rw-r--r--man3/cabs.37
-rw-r--r--man3/cacos.37
-rw-r--r--man3/cacosh.37
-rw-r--r--man3/canonicalize_file_name.32
-rw-r--r--man3/carg.37
-rw-r--r--man3/casin.37
-rw-r--r--man3/casinh.37
-rw-r--r--man3/catan.37
-rw-r--r--man3/catanh.37
-rw-r--r--man3/catgets.37
-rw-r--r--man3/catopen.326
-rw-r--r--man3/cbrt.34
-rw-r--r--man3/ccos.37
-rw-r--r--man3/ccosh.37
-rw-r--r--man3/ceil.34
-rw-r--r--man3/cexp.37
-rw-r--r--man3/cfree.311
-rw-r--r--man3/cimag.311
-rw-r--r--man3/circleq.34
-rw-r--r--man3/clearenv.317
-rw-r--r--man3/clock.329
-rw-r--r--man3/clock_getcpuclockid.39
-rw-r--r--man3/clog.37
-rw-r--r--man3/clog10.37
-rw-r--r--man3/clog2.32
-rw-r--r--man3/closedir.34
-rw-r--r--man3/cmsg.344
-rw-r--r--man3/confstr.34
-rw-r--r--man3/conj.37
-rw-r--r--man3/copysign.313
-rw-r--r--man3/cos.34
-rw-r--r--man3/cosh.34
-rw-r--r--man3/cpow.37
-rw-r--r--man3/cproj.39
-rw-r--r--man3/creal.311
-rw-r--r--man3/crypt.314
-rw-r--r--man3/csin.37
-rw-r--r--man3/csinh.37
-rw-r--r--man3/csqrt.37
-rw-r--r--man3/ctan.37
-rw-r--r--man3/ctanh.37
-rw-r--r--man3/ctermid.34
-rw-r--r--man3/ctime.3103
-rw-r--r--man3/daemon.312
-rw-r--r--man3/des_crypt.335
-rw-r--r--man3/difftime.34
-rw-r--r--man3/dirfd.33
-rw-r--r--man3/div.36
-rw-r--r--man3/dl_iterate_phdr.314
-rw-r--r--man3/dladdr.315
-rw-r--r--man3/dlerror.310
-rw-r--r--man3/dlinfo.312
-rw-r--r--man3/dlopen.339
-rw-r--r--man3/dlsym.320
-rw-r--r--man3/drand48.34
-rw-r--r--man3/drand48_r.32
-rw-r--r--man3/duplocale.36
-rw-r--r--man3/dysize.36
-rw-r--r--man3/ecvt.32
-rw-r--r--man3/ecvt_r.32
-rw-r--r--man3/encrypt.338
-rw-r--r--man3/end.32
-rw-r--r--man3/endian.39
-rw-r--r--man3/envz_add.32
-rw-r--r--man3/erf.34
-rw-r--r--man3/erfc.34
-rw-r--r--man3/err.315
-rw-r--r--man3/error.33
-rw-r--r--man3/ether_aton.32
-rw-r--r--man3/euidaccess.311
-rw-r--r--man3/exec.344
-rw-r--r--man3/exit.34
-rw-r--r--man3/exp.34
-rw-r--r--man3/exp10.36
-rw-r--r--man3/exp2.37
-rw-r--r--man3/expm1.36
-rw-r--r--man3/fabs.34
-rw-r--r--man3/fclose.34
-rw-r--r--man3/fcloseall.32
-rw-r--r--man3/fdim.37
-rw-r--r--man3/fenv.37
-rw-r--r--man3/ferror.39
-rw-r--r--man3/fexecve.312
-rw-r--r--man3/fflush.34
-rw-r--r--man3/ffs.316
-rw-r--r--man3/fgetc.36
-rw-r--r--man3/fgetgrent.32
-rw-r--r--man3/fgetpwent.32
-rw-r--r--man3/fgetwc.34
-rw-r--r--man3/fgetws.34
-rw-r--r--man3/fileno.36
-rw-r--r--man3/flockfile.34
-rw-r--r--man3/floor.36
-rw-r--r--man3/fma.37
-rw-r--r--man3/fmax.37
-rw-r--r--man3/fmemopen.320
-rw-r--r--man3/fmin.37
-rw-r--r--man3/fmod.34
-rw-r--r--man3/fmtmsg.330
-rw-r--r--man3/fnmatch.318
-rw-r--r--man3/fopen.323
-rw-r--r--man3/fopencookie.32
-rw-r--r--man3/fpathconf.34
-rw-r--r--man3/fpclassify.314
-rw-r--r--man3/fpurge.312
-rw-r--r--man3/fputwc.34
-rw-r--r--man3/fputws.34
-rw-r--r--man3/fread.34
-rw-r--r--man3/frexp.34
-rw-r--r--man3/fseek.34
-rw-r--r--man3/fseeko.37
-rw-r--r--man3/ftime.315
-rw-r--r--man3/ftok.34
-rw-r--r--man3/fts.35
-rw-r--r--man3/ftw.340
-rw-r--r--man3/futimes.318
-rw-r--r--man3/fwide.34
-rw-r--r--man3/gamma.38
-rw-r--r--man3/gcvt.35
-rw-r--r--man3/get_nprocs.32
-rw-r--r--man3/get_phys_pages.36
-rw-r--r--man3/getaddrinfo.342
-rw-r--r--man3/getaddrinfo_a.37
-rw-r--r--man3/getauxval.38
-rw-r--r--man3/getcontext.36
-rw-r--r--man3/getcwd.377
-rw-r--r--man3/getdate.38
-rw-r--r--man3/getdirentries.34
-rw-r--r--man3/getdtablesize.319
-rw-r--r--man3/getentropy.310
-rw-r--r--man3/getenv.319
-rw-r--r--man3/getfsent.315
-rw-r--r--man3/getgrent.34
-rw-r--r--man3/getgrent_r.311
-rw-r--r--man3/getgrnam.38
-rw-r--r--man3/getgrouplist.36
-rw-r--r--man3/gethostbyname.345
-rw-r--r--man3/gethostid.326
-rw-r--r--man3/getifaddrs.318
-rw-r--r--man3/getipnodebyname.39
-rw-r--r--man3/getline.39
-rw-r--r--man3/getloadavg.314
-rw-r--r--man3/getlogin.343
-rw-r--r--man3/getmntent.34
-rw-r--r--man3/getnameinfo.323
-rw-r--r--man3/getnetent.36
-rw-r--r--man3/getnetent_r.35
-rw-r--r--man3/getopt.326
-rw-r--r--man3/getpass.37
-rw-r--r--man3/getprotoent.34
-rw-r--r--man3/getprotoent_r.35
-rw-r--r--man3/getpt.311
-rw-r--r--man3/getpw.32
-rw-r--r--man3/getpwent.37
-rw-r--r--man3/getpwent_r.311
-rw-r--r--man3/getpwnam.37
-rw-r--r--man3/getrpcent.35
-rw-r--r--man3/getrpcent_r.35
-rw-r--r--man3/getrpcport.35
-rw-r--r--man3/gets.34
-rw-r--r--man3/getservent.34
-rw-r--r--man3/getservent_r.35
-rw-r--r--man3/getspnam.36
-rw-r--r--man3/getsubopt.34
-rw-r--r--man3/getttyent.33
-rw-r--r--man3/getusershell.32
-rw-r--r--man3/getutent.32
-rw-r--r--man3/getutmp.38
-rw-r--r--man3/getw.33
-rw-r--r--man3/getwchar.34
-rw-r--r--man3/glob.34
-rw-r--r--man3/gnu_get_libc_version.36
-rw-r--r--man3/grantpt.316
-rw-r--r--man3/group_member.32
-rw-r--r--man3/gsignal.34
-rw-r--r--man3/hsearch.338
-rw-r--r--man3/hypot.34
-rw-r--r--man3/iconv.37
-rw-r--r--man3/iconv_close.37
-rw-r--r--man3/iconv_open.37
-rw-r--r--man3/if_nameindex.316
-rw-r--r--man3/if_nametoindex.37
-rw-r--r--man3/ilogb.34
-rw-r--r--man3/index.37
-rw-r--r--man3/inet.333
-rw-r--r--man3/inet_net_pton.36
-rw-r--r--man3/inet_ntop.35
-rw-r--r--man3/inet_pton.38
-rw-r--r--man3/initgroups.32
-rw-r--r--man3/insque.38
-rw-r--r--man3/isalpha.3173
-rw-r--r--man3/isatty.34
-rw-r--r--man3/isfdtype.318
-rw-r--r--man3/isgreater.38
-rw-r--r--man3/iswalnum.34
-rw-r--r--man3/iswalpha.34
-rw-r--r--man3/iswblank.34
-rw-r--r--man3/iswcntrl.34
-rw-r--r--man3/iswctype.34
-rw-r--r--man3/iswdigit.34
-rw-r--r--man3/iswgraph.34
-rw-r--r--man3/iswlower.34
-rw-r--r--man3/iswprint.34
-rw-r--r--man3/iswpunct.34
-rw-r--r--man3/iswspace.34
-rw-r--r--man3/iswupper.34
-rw-r--r--man3/iswxdigit.34
-rw-r--r--man3/j0.327
-rw-r--r--man3/killpg.311
-rw-r--r--man3/ldexp.34
-rw-r--r--man3/lgamma.337
-rw-r--r--man3/lio_listio.39
-rw-r--r--man3/list.36
-rw-r--r--man3/localeconv.34
-rw-r--r--man3/lockf.34
-rw-r--r--man3/log.34
-rw-r--r--man3/log10.34
-rw-r--r--man3/log1p.34
-rw-r--r--man3/log2.37
-rw-r--r--man3/logb.313
-rw-r--r--man3/login.310
-rw-r--r--man3/lrint.37
-rw-r--r--man3/lround.37
-rw-r--r--man3/lsearch.36
-rw-r--r--man3/makecontext.313
-rw-r--r--man3/makedev.323
-rw-r--r--man3/mallinfo.320
-rw-r--r--man3/malloc.337
-rw-r--r--man3/malloc_get_state.32
-rw-r--r--man3/malloc_hook.32
-rw-r--r--man3/malloc_info.37
-rw-r--r--man3/malloc_stats.36
-rw-r--r--man3/malloc_trim.36
-rw-r--r--man3/malloc_usable_size.32
-rw-r--r--man3/mallopt.310
-rw-r--r--man3/mblen.314
-rw-r--r--man3/mbrlen.34
-rw-r--r--man3/mbrtowc.34
-rw-r--r--man3/mbsinit.34
-rw-r--r--man3/mbsrtowcs.34
-rw-r--r--man3/mbstowcs.314
-rw-r--r--man3/mbtowc.316
-rw-r--r--man3/mcheck.318
-rw-r--r--man3/memccpy.34
-rw-r--r--man3/memchr.330
-rw-r--r--man3/memcmp.36
-rw-r--r--man3/memcpy.36
-rw-r--r--man3/memfrob.35
-rw-r--r--man3/memmem.37
-rw-r--r--man3/memmove.34
-rw-r--r--man3/mempcpy.37
-rw-r--r--man3/memset.34
-rw-r--r--man3/mkdtemp.39
-rw-r--r--man3/mkfifo.317
-rw-r--r--man3/mkstemp.342
-rw-r--r--man3/mktemp.35
-rw-r--r--man3/modf.34
-rw-r--r--man3/mpool.33
-rw-r--r--man3/mq_close.34
-rw-r--r--man3/mq_getattr.38
-rw-r--r--man3/mq_notify.39
-rw-r--r--man3/mq_open.38
-rw-r--r--man3/mq_receive.38
-rw-r--r--man3/mq_send.38
-rw-r--r--man3/mq_unlink.34
-rw-r--r--man3/mtrace.32
-rw-r--r--man3/nan.38
-rw-r--r--man3/netlink.36
-rw-r--r--man3/newlocale.38
-rw-r--r--man3/nextafter.35
-rw-r--r--man3/nextup.34
-rw-r--r--man3/nl_langinfo.34
-rw-r--r--man3/ntp_gettime.318
-rw-r--r--man3/offsetof.34
-rw-r--r--man3/on_exit.310
-rw-r--r--man3/open_memstream.314
-rw-r--r--man3/opendir.312
-rw-r--r--man3/openpty.35
-rw-r--r--man3/perror.344
-rw-r--r--man3/popen.313
-rw-r--r--man3/posix_fallocate.310
-rw-r--r--man3/posix_madvise.311
-rw-r--r--man3/posix_memalign.363
-rw-r--r--man3/posix_openpt.312
-rw-r--r--man3/posix_spawn.311
-rw-r--r--man3/pow.34
-rw-r--r--man3/pow10.39
-rw-r--r--man3/powerof2.32
-rw-r--r--man3/printf.3102
-rw-r--r--man3/profil.34
-rw-r--r--man3/program_invocation_name.39
-rw-r--r--man3/psignal.37
-rw-r--r--man3/pthread_atfork.34
-rw-r--r--man3/pthread_attr_init.34
-rw-r--r--man3/pthread_attr_setaffinity_np.36
-rw-r--r--man3/pthread_attr_setdetachstate.34
-rw-r--r--man3/pthread_attr_setguardsize.37
-rw-r--r--man3/pthread_attr_setinheritsched.37
-rw-r--r--man3/pthread_attr_setschedparam.37
-rw-r--r--man3/pthread_attr_setschedpolicy.37
-rw-r--r--man3/pthread_attr_setscope.34
-rw-r--r--man3/pthread_attr_setsigmask_np.36
-rw-r--r--man3/pthread_attr_setstack.37
-rw-r--r--man3/pthread_attr_setstackaddr.311
-rw-r--r--man3/pthread_cancel.311
-rw-r--r--man3/pthread_cleanup_push.313
-rw-r--r--man3/pthread_cleanup_push_defer_np.36
-rw-r--r--man3/pthread_create.34
-rw-r--r--man3/pthread_detach.34
-rw-r--r--man3/pthread_equal.34
-rw-r--r--man3/pthread_exit.34
-rw-r--r--man3/pthread_getattr_default_np.36
-rw-r--r--man3/pthread_getattr_np.36
-rw-r--r--man3/pthread_getcpuclockid.37
-rw-r--r--man3/pthread_join.34
-rw-r--r--man3/pthread_kill.322
-rw-r--r--man3/pthread_kill_other_threads_np.320
-rw-r--r--man3/pthread_mutex_consistent.322
-rw-r--r--man3/pthread_mutexattr_getpshared.34
-rw-r--r--man3/pthread_mutexattr_init.34
-rw-r--r--man3/pthread_mutexattr_setrobust.312
-rw-r--r--man3/pthread_rwlockattr_setkind_np.310
-rw-r--r--man3/pthread_self.34
-rw-r--r--man3/pthread_setaffinity_np.320
-rw-r--r--man3/pthread_setcancelstate.37
-rw-r--r--man3/pthread_setconcurrency.37
-rw-r--r--man3/pthread_setname_np.36
-rw-r--r--man3/pthread_setschedparam.37
-rw-r--r--man3/pthread_setschedprio.37
-rw-r--r--man3/pthread_sigmask.34
-rw-r--r--man3/pthread_sigqueue.310
-rw-r--r--man3/pthread_spin_init.35
-rw-r--r--man3/pthread_spin_lock.37
-rw-r--r--man3/pthread_testcancel.37
-rw-r--r--man3/pthread_tryjoin_np.36
-rw-r--r--man3/pthread_yield.312
-rw-r--r--man3/ptsname.330
-rw-r--r--man3/putenv.36
-rw-r--r--man3/putgrent.32
-rw-r--r--man3/putpwent.32
-rw-r--r--man3/puts.34
-rw-r--r--man3/putwchar.34
-rw-r--r--man3/qecvt.39
-rw-r--r--man3/qsort.315
-rw-r--r--man3/raise.36
-rw-r--r--man3/rand.333
-rw-r--r--man3/random.320
-rw-r--r--man3/random_r.32
-rw-r--r--man3/rcmd.326
-rw-r--r--man3/re_comp.34
-rw-r--r--man3/readdir.324
-rw-r--r--man3/readdir_r.34
-rw-r--r--man3/realpath.333
-rw-r--r--man3/regex.34
-rw-r--r--man3/remainder.350
-rw-r--r--man3/remove.34
-rw-r--r--man3/remquo.37
-rw-r--r--man3/resolver.32
-rw-r--r--man3/rewinddir.34
-rw-r--r--man3/rexec.316
-rw-r--r--man3/rint.34
-rw-r--r--man3/round.37
-rw-r--r--man3/roundup.32
-rw-r--r--man3/rpmatch.36
-rw-r--r--man3/rtnetlink.32
-rw-r--r--man3/scalb.319
-rw-r--r--man3/scalbln.311
-rw-r--r--man3/scandir.328
-rw-r--r--man3/scanf.34
-rw-r--r--man3/sched_getcpu.37
-rw-r--r--man3/seekdir.36
-rw-r--r--man3/sem_close.34
-rw-r--r--man3/sem_destroy.34
-rw-r--r--man3/sem_getvalue.34
-rw-r--r--man3/sem_init.34
-rw-r--r--man3/sem_open.34
-rw-r--r--man3/sem_post.32
-rw-r--r--man3/sem_unlink.34
-rw-r--r--man3/sem_wait.34
-rw-r--r--man3/setaliasent.33
-rw-r--r--man3/setbuf.314
-rw-r--r--man3/setenv.316
-rw-r--r--man3/setjmp.334
-rw-r--r--man3/setlocale.356
-rw-r--r--man3/setlogmask.34
-rw-r--r--man3/setnetgrent.311
-rw-r--r--man3/shm_open.325
-rw-r--r--man3/siginterrupt.39
-rw-r--r--man3/signbit.35
-rw-r--r--man3/significand.313
-rw-r--r--man3/sigpause.349
-rw-r--r--man3/sigqueue.327
-rw-r--r--man3/sigset.335
-rw-r--r--man3/sigsetops.326
-rw-r--r--man3/sigvec.340
-rw-r--r--man3/sigwait.38
-rw-r--r--man3/sin.34
-rw-r--r--man3/sincos.36
-rw-r--r--man3/sinh.34
-rw-r--r--man3/sleep.312
-rw-r--r--man3/slist.36
-rw-r--r--man3/sockatmark.38
-rw-r--r--man3/sqrt.34
-rw-r--r--man3/sscanf.34
-rw-r--r--man3/stailq.310
-rw-r--r--man3/statvfs.340
-rw-r--r--man3/stdarg.319
-rw-r--r--man3/stdin.312
-rw-r--r--man3/stdio.36
-rw-r--r--man3/stpncpy.352
-rw-r--r--man3/strcasecmp.36
-rw-r--r--man3/strchr.324
-rw-r--r--man3/strcmp.38
-rw-r--r--man3/strcoll.34
-rw-r--r--man3/strcpy.311
-rw-r--r--man3/strdup.323
-rw-r--r--man3/strerror.345
-rw-r--r--man3/strfmon.34
-rw-r--r--man3/strfromd.322
-rw-r--r--man3/strfry.35
-rw-r--r--man3/strftime.320
-rw-r--r--man3/strlen.34
-rw-r--r--man3/strncat.34
-rw-r--r--man3/strnlen.32
-rw-r--r--man3/strpbrk.34
-rw-r--r--man3/strptime.34
-rw-r--r--man3/strsep.34
-rw-r--r--man3/strsignal.335
-rw-r--r--man3/strspn.34
-rw-r--r--man3/strstr.317
-rw-r--r--man3/strtod.336
-rw-r--r--man3/strtoimax.34
-rw-r--r--man3/strtok.323
-rw-r--r--man3/strtol.313
-rw-r--r--man3/strtoul.313
-rw-r--r--man3/strverscmp.32
-rw-r--r--man3/strxfrm.34
-rw-r--r--man3/swab.34
-rw-r--r--man3/sysconf.34
-rw-r--r--man3/syslog.351
-rw-r--r--man3/system.34
-rw-r--r--man3/sysv_signal.36
-rw-r--r--man3/tailq.38
-rw-r--r--man3/tan.34
-rw-r--r--man3/tanh.34
-rw-r--r--man3/tcgetpgrp.310
-rw-r--r--man3/tcgetsid.310
-rw-r--r--man3/telldir.36
-rw-r--r--man3/tempnam.36
-rw-r--r--man3/termios.364
-rw-r--r--man3/tgamma.37
-rw-r--r--man3/timegm.39
-rw-r--r--man3/timeradd.35
-rw-r--r--man3/tmpfile.320
-rw-r--r--man3/tmpnam.324
-rw-r--r--man3/toascii.36
-rw-r--r--man3/toupper.326
-rw-r--r--man3/towctrans.34
-rw-r--r--man3/towlower.321
-rw-r--r--man3/towupper.323
-rw-r--r--man3/trunc.37
-rw-r--r--man3/tsearch.332
-rw-r--r--man3/ttyname.34
-rw-r--r--man3/ttyslot.310
-rw-r--r--man3/tzset.36
-rw-r--r--man3/ualarm.312
-rw-r--r--man3/ulimit.36
-rw-r--r--man3/ungetwc.34
-rw-r--r--man3/unlocked_stdio.331
-rw-r--r--man3/unlockpt.38
-rw-r--r--man3/updwtmp.39
-rw-r--r--man3/uselocale.37
-rw-r--r--man3/usleep.39
-rw-r--r--man3/wcrtomb.34
-rw-r--r--man3/wcscasecmp.38
-rw-r--r--man3/wcscat.34
-rw-r--r--man3/wcschr.34
-rw-r--r--man3/wcscmp.34
-rw-r--r--man3/wcscpy.34
-rw-r--r--man3/wcscspn.34
-rw-r--r--man3/wcsdup.35
-rw-r--r--man3/wcslen.34
-rw-r--r--man3/wcsncasecmp.38
-rw-r--r--man3/wcsncat.34
-rw-r--r--man3/wcsncmp.34
-rw-r--r--man3/wcsncpy.34
-rw-r--r--man3/wcsnlen.36
-rw-r--r--man3/wcspbrk.34
-rw-r--r--man3/wcsrchr.34
-rw-r--r--man3/wcsrtombs.34
-rw-r--r--man3/wcsspn.34
-rw-r--r--man3/wcsstr.34
-rw-r--r--man3/wcstoimax.34
-rw-r--r--man3/wcstok.34
-rw-r--r--man3/wcstombs.312
-rw-r--r--man3/wcswidth.34
-rw-r--r--man3/wctob.34
-rw-r--r--man3/wctomb.314
-rw-r--r--man3/wctrans.34
-rw-r--r--man3/wctype.34
-rw-r--r--man3/wcwidth.34
-rw-r--r--man3/wmemchr.34
-rw-r--r--man3/wmemcmp.34
-rw-r--r--man3/wmemcpy.34
-rw-r--r--man3/wmemmove.34
-rw-r--r--man3/wmemset.34
-rw-r--r--man3/wordexp.310
-rw-r--r--man3/wprintf.34
-rw-r--r--man3/y0.327
-rw-r--r--man3head/printf.h.3head6
-rw-r--r--man3head/sysexits.h.3head6
-rw-r--r--man3type/FILE.3type5
-rw-r--r--man3type/aiocb.3type4
-rw-r--r--man3type/blkcnt_t.3type4
-rw-r--r--man3type/blksize_t.3type4
-rw-r--r--man3type/cc_t.3type4
-rw-r--r--man3type/clock_t.3type4
-rw-r--r--man3type/clockid_t.3type4
-rw-r--r--man3type/dev_t.3type4
-rw-r--r--man3type/div_t.3type4
-rw-r--r--man3type/double_t.3type4
-rw-r--r--man3type/epoll_event.3type6
-rw-r--r--man3type/fenv_t.3type4
-rw-r--r--man3type/id_t.3type4
-rw-r--r--man3type/intN_t.3type9
-rw-r--r--man3type/intmax_t.3type4
-rw-r--r--man3type/intptr_t.3type4
-rw-r--r--man3type/iovec.3type4
-rw-r--r--man3type/itimerspec.3type2
-rw-r--r--man3type/lconv.3type4
-rw-r--r--man3type/mode_t.3type4
-rw-r--r--man3type/off_t.3type25
-rw-r--r--man3type/ptrdiff_t.3type5
-rw-r--r--man3type/regex_t.3type8
-rw-r--r--man3type/size_t.3type27
-rw-r--r--man3type/sockaddr.3type4
-rw-r--r--man3type/stat.3type8
-rw-r--r--man3type/time_t.3type38
-rw-r--r--man3type/timer_t.3type4
-rw-r--r--man3type/timespec.3type7
-rw-r--r--man3type/timeval.3type4
-rw-r--r--man3type/tm.3type31
-rw-r--r--man3type/va_list.3type5
-rw-r--r--man3type/void.3type5
-rw-r--r--man4/fuse.42
-rw-r--r--man5/acct.511
-rw-r--r--man5/sysfs.510
-rw-r--r--man5/utmp.56
-rw-r--r--man7/aio.77
-rw-r--r--man7/cgroup_namespaces.72
-rw-r--r--man7/credentials.71
-rw-r--r--man7/epoll.720
-rw-r--r--man7/fanotify.78
-rw-r--r--man7/feature_test_macros.76
-rw-r--r--man7/inode.79
-rw-r--r--man7/inotify.76
-rw-r--r--man7/man-pages.756
-rw-r--r--man7/mount_namespaces.76
-rw-r--r--man7/numa.72
-rw-r--r--man7/pid_namespaces.72
-rw-r--r--man7/queue.74
-rw-r--r--man7/rtld-audit.76
-rw-r--r--man7/sock_diag.72
-rw-r--r--man7/user_namespaces.72
883 files changed, 6875 insertions, 5719 deletions
diff --git a/man1/iconv.1 b/man1/iconv.1
index ece86aa6d..959275183 100644
--- a/man1/iconv.1
+++ b/man1/iconv.1
@@ -160,6 +160,8 @@ Depending on the architecture,
the above files may instead be located at directories with the path prefix
.IR /usr/lib64 .
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
POSIX.1-2001.
.SH EXAMPLES
Convert text from the ISO 8859-15 character encoding to UTF-8:
diff --git a/man1/locale.1 b/man1/locale.1
index 368bb5eea..4e257eb7b 100644
--- a/man1/locale.1
+++ b/man1/locale.1
@@ -119,7 +119,9 @@ Usual default locale archive location.
.I /usr/share/i18n/locales
Usual default path for locale definition files.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
.EX
$ \fBlocale\fP
diff --git a/man1/pldd.1 b/man1/pldd.1
index 36d8a48dd..f7bff8c2f 100644
--- a/man1/pldd.1
+++ b/man1/pldd.1
@@ -39,15 +39,13 @@ or no command-line arguments are supplied,
exists with a status of 1.
If given an invalid option, it exits with the status 64.
.SH VERSIONS
-.B pldd
-is available since glibc 2.15.
-.SH STANDARDS
-The
-.B pldd
-command is not specified by POSIX.1.
Some other systems
.\" There are man pages on Solaris and HP-UX.
have a similar command.
+.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.15.
.SH NOTES
The command
.PP
diff --git a/man1/sprof.1 b/man1/sprof.1
index 79c86b499..04903d6e9 100644
--- a/man1/sprof.1
+++ b/man1/sprof.1
@@ -53,9 +53,7 @@ Display a short usage message and exit.
.BR \-V ", " \-\-version
Display the program version and exit.
.SH STANDARDS
-The
-.B sprof
-command is a GNU extension, not present in POSIX.1.
+GNU.
.SH EXAMPLES
The following example demonstrates the use of
.BR sprof .
diff --git a/man2/_exit.2 b/man2/_exit.2
index 10a3addc5..b4bb34cca 100644
--- a/man2/_exit.2
+++ b/man2/_exit.2
@@ -60,8 +60,15 @@ is equivalent to
.SH RETURN VALUE
These functions do not return.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-The function
+.TP
+.BR _exit ()
+POSIX.1-2008.
+.TP
+.BR _Exit ()
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.PP
.BR _Exit ()
was introduced by C99.
.SH NOTES
diff --git a/man2/_syscall.2 b/man2/_syscall.2
index efb7e802d..cd9ebb614 100644
--- a/man2/_syscall.2
+++ b/man2/_syscall.2
@@ -68,9 +68,9 @@ you call the system call by
.SH FILES
.I /usr/include/linux/unistd.h
.SH STANDARDS
-The use of these macros is Linux-specific, and deprecated.
-.SH NOTES
-Starting around kernel 2.6.18, the _syscall macros were removed
+Linux.
+.SH HISTORY
+Starting around Linux 2.6.18, the _syscall macros were removed
from header files supplied to user space.
Use
.BR syscall (2)
@@ -79,7 +79,7 @@ instead.
on those architectures,
.BR syscall (2)
was always required.)
-.PP
+.SH NOTES
The _syscall() macros
.I "do not"
produce a prototype.
diff --git a/man2/accept.2 b/man2/accept.2
index d852212e5..2832519f1 100644
--- a/man2/accept.2
+++ b/man2/accept.2
@@ -254,26 +254,6 @@ The value
.B ERESTARTSYS
may be seen during a trace.
.SH VERSIONS
-The
-.BR accept4 ()
-system call is available starting with Linux 2.6.28;
-support in glibc is available starting with glibc 2.10.
-.SH STANDARDS
-.BR accept ():
-POSIX.1-2001, POSIX.1-2008,
-SVr4, 4.4BSD
-.RB ( accept ()
-first appeared in 4.2BSD).
-.\" The BSD man page documents five possible error returns
-.\" (EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT).
-.\" POSIX.1-2001 documents errors
-.\" EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE,
-.\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK.
-.\" In addition, SUSv2 documents EFAULT and ENOSR.
-.PP
-.BR accept4 ()
-is a nonstandard Linux extension.
-.PP
On Linux, the new socket returned by
.BR accept ()
does \fInot\fP inherit file status flags such as
@@ -288,6 +268,30 @@ Portable programs should not rely on inheritance or noninheritance
of file status flags and always explicitly set all required flags on
the socket returned from
.BR accept ().
+.SH STANDARDS
+.TP
+.BR accept ()
+POSIX.1-2008.
+.TP
+.BR accept4 ()
+Linux.
+.PP
+.SH HISTORY
+.TP
+.BR accept ()
+POSIX.1-2001, SVr4, 4.4BSD
+.RB ( accept ()
+first appeared in 4.2BSD).
+.\" The BSD man page documents five possible error returns
+.\" (EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT).
+.\" POSIX.1-2001 documents errors
+.\" EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE,
+.\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK.
+.\" In addition, SUSv2 documents EFAULT and ENOSR.
+.TP
+.BR accept4 ()
+Linux 2.6.28,
+glibc 2.10.
.SH NOTES
There may not always be a connection waiting after a
.B SIGIO
diff --git a/man2/access.2 b/man2/access.2
index d3deeecba..b80b201d8 100644
--- a/man2/access.2
+++ b/man2/access.2
@@ -275,21 +275,65 @@ Write permission was requested for a file on a read-only filesystem.
Write access was requested to an executable which is being
executed.
.SH VERSIONS
+If the calling process has appropriate privileges (i.e., is superuser),
+POSIX.1-2001 permits an implementation to indicate success for an
+.B X_OK
+check even if none of the execute file permission bits are set.
+.\" HPU-UX 11 and Tru64 5.1 do this.
+Linux does not do this.
+.\"
+.SS C library/kernel differences
+The raw
.BR faccessat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.PP
-.BR faccessat2 ()
-was added in Linux 5.8.
+system call takes only the first three arguments.
+The
+.B AT_EACCESS
+and
+.B AT_SYMLINK_NOFOLLOW
+flags are actually implemented within the glibc wrapper function for
+.BR faccessat ().
+If either of these flags is specified, then the wrapper function employs
+.BR fstatat (2)
+to determine access permissions, but see BUGS.
+.\"
+.SS glibc notes
+On older kernels where
+.BR faccessat ()
+is unavailable (and when the
+.B AT_EACCESS
+and
+.B AT_SYMLINK_NOFOLLOW
+flags are not specified),
+the glibc wrapper function falls back to the use of
+.BR access ().
+When
+.I pathname
+is a relative pathname,
+glibc constructs a pathname based on the symbolic link in
+.I /proc/self/fd
+that corresponds to the
+.I dirfd
+argument.
.SH STANDARDS
-.BR access ():
-SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR faccessat ():
+.TP
+.BR access ()
+.TQ
+.BR faccessat ()
POSIX.1-2008.
-.PP
-.BR faccessat2 ():
-Linux-specific.
+.TP
+.BR faccessat2 ()
+Linux.
+.SH HISTORY
+.TP
+.BR access ()
+SVr4, 4.3BSD, POSIX.1-2001.
+.TP
+.BR faccessat ()
+Linux 2.6.16,
+glibc 2.4.
+.TP
+.BR faccessat2 ()
+Linux 5.8.
.SH NOTES
.BR Warning :
Using these calls to check if a user is authorized to, for example,
@@ -316,13 +360,6 @@ is denied, even if some of the other access types in
.I mode
are permitted.
.PP
-If the calling process has appropriate privileges (i.e., is superuser),
-POSIX.1-2001 permits an implementation to indicate success for an
-.B X_OK
-check even if none of the execute file permission bits are set.
-.\" HPU-UX 11 and Tru64 5.1 do this.
-Linux does not do this.
-.PP
A file is accessible only if the permissions on each of the
directories in the path prefix of
.I pathname
@@ -346,39 +383,6 @@ which checks permissions.
(NFS versions 3 and higher perform the check on the server.)
Similar problems can occur to FUSE mounts.
.\"
-.\"
-.SS C library/kernel differences
-The raw
-.BR faccessat ()
-system call takes only the first three arguments.
-The
-.B AT_EACCESS
-and
-.B AT_SYMLINK_NOFOLLOW
-flags are actually implemented within the glibc wrapper function for
-.BR faccessat ().
-If either of these flags is specified, then the wrapper function employs
-.BR fstatat (2)
-to determine access permissions, but see BUGS.
-.\"
-.SS glibc notes
-On older kernels where
-.BR faccessat ()
-is unavailable (and when the
-.B AT_EACCESS
-and
-.B AT_SYMLINK_NOFOLLOW
-flags are not specified),
-the glibc wrapper function falls back to the use of
-.BR access ().
-When
-.I pathname
-is a relative pathname,
-glibc constructs a pathname based on the symbolic link in
-.I /proc/self/fd
-that corresponds to the
-.I dirfd
-argument.
.SH BUGS
Because the Linux kernel's
.BR faccessat ()
diff --git a/man2/acct.2 b/man2/acct.2
index f9fc1cd5c..8b7d943b0 100644
--- a/man2/acct.2
+++ b/man2/acct.2
@@ -118,7 +118,9 @@ refers to a file on a read-only filesystem.
.B EUSERS
There are no more free file structures or we ran out of memory.
.SH STANDARDS
-SVr4, 4.3BSD (but not POSIX).
+None.
+.SH HISTORY
+SVr4, 4.3BSD.
.\" SVr4 documents an EBUSY error condition, but no EISDIR or ENOSYS.
.\" Also AIX and HP-UX document EBUSY (attempt is made
.\" to enable accounting when it is already enabled), as does Solaris
diff --git a/man2/add_key.2 b/man2/add_key.2
index 56fc6d198..10120c941 100644
--- a/man2/add_key.2
+++ b/man2/add_key.2
@@ -208,10 +208,10 @@ and the
started with a period (\[aq].\[aq]).
Keyrings with descriptions (names)
that begin with a period are reserved to the implementation.
-.SH VERSIONS
-This system call first appeared in Linux 2.6.10.
.SH STANDARDS
-This system call is a nonstandard Linux extension.
+Linux.
+.SH HISTORY
+Linux 2.6.10.
.SH NOTES
glibc does not provide a wrapper for this system call.
A wrapper is provided in the
diff --git a/man2/adjtimex.2 b/man2/adjtimex.2
index 155a4e244..523347de2 100644
--- a/man2/adjtimex.2
+++ b/man2/adjtimex.2
@@ -548,13 +548,11 @@ T} Thread safety MT-Safe
.TE
.sp 1
.SH STANDARDS
-None of these interfaces is described in POSIX.1
-.PP
+.TP
.BR adjtimex ()
-and
+.TQ
.BR clock_adjtime ()
-are Linux-specific and should not be used in programs
-intended to be portable.
+Linux.
.PP
The preferred API for the NTP daemon is
.BR ntp_adjtime ().
diff --git a/man2/alarm.2 b/man2/alarm.2
index 43c01a7a7..dbc97b632 100644
--- a/man2/alarm.2
+++ b/man2/alarm.2
@@ -40,7 +40,9 @@ returns the number of seconds remaining until any previously scheduled
alarm was due to be delivered, or zero if there was no previously
scheduled alarm.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH NOTES
.BR alarm ()
and
diff --git a/man2/alloc_hugepages.2 b/man2/alloc_hugepages.2
index 8903cbe06..1e470c619 100644
--- a/man2/alloc_hugepages.2
+++ b/man2/alloc_hugepages.2
@@ -114,10 +114,11 @@ This can be read and written.
Gives info on the number of configured hugetlb pages and on their size
in the three variables HugePages_Total, HugePages_Free, Hugepagesize.
.SH STANDARDS
-These extinct system calls were specific to Linux on Intel processors.
-.SH NOTES
+Linux on Intel processors.
+.SH HISTORY
These system calls are gone;
they existed only in Linux 2.5.36 through to Linux 2.5.54.
+.SH NOTES
Now the hugetlbfs filesystem can be used instead.
Memory backed by huge pages (if the CPU supports them) is obtained by
using
diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2
index 0a82e8100..edb94989b 100644
--- a/man2/arch_prctl.2
+++ b/man2/arch_prctl.2
@@ -133,9 +133,7 @@ is outside the process address space.
.\" .SH AUTHOR
.\" Man page written by Andi Kleen.
.SH STANDARDS
-.BR arch_prctl ()
-is a Linux/x86-64 extension and should not be used in programs intended
-to be portable.
+Linux/x86-64.
.SH NOTES
.BR arch_prctl ()
is supported only on Linux/x86-64 for 64-bit programs currently.
diff --git a/man2/bdflush.2 b/man2/bdflush.2
index 6bc8442ad..50b45084a 100644
--- a/man2/bdflush.2
+++ b/man2/bdflush.2
@@ -93,12 +93,10 @@ or to write an invalid value to a parameter.
Caller does not have the
.B CAP_SYS_ADMIN
capability.
-.SH VERSIONS
-Since glibc 2.23, glibc no longer supports this obsolete system call.
.SH STANDARDS
-.BR bdflush ()
-is Linux-specific and should not be used in programs
-intended to be portable.
+Linux.
+.SH HISTORY
+Since glibc 2.23, glibc no longer supports this obsolete system call.
.SH SEE ALSO
.BR sync (1),
.BR fsync (2),
diff --git a/man2/bind.2 b/man2/bind.2
index 47ca62f32..1f635cb83 100644
--- a/man2/bind.2
+++ b/man2/bind.2
@@ -185,7 +185,9 @@ A component of the path prefix is not a directory.
.B EROFS
The socket inode would reside on a read-only filesystem.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD
.RB ( bind ()
first appeared in 4.2BSD).
.\" SVr4 documents an additional
diff --git a/man2/bpf.2 b/man2/bpf.2
index 445038e6a..a5d08703a 100644
--- a/man2/bpf.2
+++ b/man2/bpf.2
@@ -1052,14 +1052,10 @@ The call was made without sufficient privilege
(without the
.B CAP_SYS_ADMIN
capability).
-.SH VERSIONS
-The
-.BR bpf ()
-system call first appeared in Linux 3.18.
.SH STANDARDS
-The
-.BR bpf ()
-system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 3.18.
.SH NOTES
Prior to Linux 4.4, all
.BR bpf ()
diff --git a/man2/brk.2 b/man2/brk.2
index 31c167c56..42b32a21a 100644
--- a/man2/brk.2
+++ b/man2/brk.2
@@ -95,6 +95,8 @@ is returned, and
is set to
.BR ENOMEM .
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD; SUSv1, marked LEGACY in SUSv2, removed in POSIX.1-2001.
.\"
.\" .BR brk ()
diff --git a/man2/cacheflush.2 b/man2/cacheflush.2
index 6d44e8d6a..aa2ea6e45 100644
--- a/man2/cacheflush.2
+++ b/man2/cacheflush.2
@@ -61,20 +61,13 @@ is not one of
or
.B BCACHE
(but see BUGS).
-.SH STANDARDS
-Historically, this system call was available on all MIPS UNIX variants
-including RISC/os, IRIX, Ultrix, NetBSD, OpenBSD, and FreeBSD
-(and also on some non-UNIX MIPS operating systems), so that
-the existence of this call in MIPS operating systems is a de-facto
-standard.
-.SS Caveat
+.SH VERSIONS
.BR cacheflush ()
should not be used in programs intended to be portable.
On Linux, this call first appeared on the MIPS architecture,
but nowadays, Linux provides a
.BR cacheflush ()
system call on some other architectures, but with different arguments.
-.SH NOTES
.SS Architecture-specific variants
glibc provides a wrapper for this system call,
with the prototype shown in SYNOPSIS,
@@ -127,6 +120,12 @@ the prototype for this built-in function uses
instead of
.I void *
for the parameters.
+.SH STANDARDS
+Historically, this system call was available on all MIPS UNIX variants
+including RISC/os, IRIX, Ultrix, NetBSD, OpenBSD, and FreeBSD
+(and also on some non-UNIX MIPS operating systems), so that
+the existence of this call in MIPS operating systems is a de-facto
+standard.
.SH BUGS
Linux kernels older than Linux 2.6.11 ignore the
.I addr
diff --git a/man2/capget.2 b/man2/capget.2
index 909f8bfe0..68d0ab672 100644
--- a/man2/capget.2
+++ b/man2/capget.2
@@ -245,7 +245,7 @@ instead of 0.)
.B ESRCH
No such thread.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
.SH NOTES
The portable interface to the capability querying and setting
functions is provided by the
diff --git a/man2/chdir.2 b/man2/chdir.2
index 0bbff4e87..9224d336e 100644
--- a/man2/chdir.2
+++ b/man2/chdir.2
@@ -109,7 +109,9 @@ is not a valid file descriptor.
.I fd
does not refer to a directory.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD.
+POSIX.1-2008.
+.SH HISTORY
+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]).
diff --git a/man2/chmod.2 b/man2/chmod.2
index 8b5db74ed..8903901d7 100644
--- a/man2/chmod.2
+++ b/man2/chmod.2
@@ -300,17 +300,6 @@ The file is marked immutable or append-only.
.B EROFS
The named file resides on a read-only filesystem.
.SH VERSIONS
-.BR fchmodat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.SH STANDARDS
-.BR chmod (),
-.BR fchmod ():
-4.4BSD, SVr4, POSIX.1-2001i, POSIX.1-2008.
-.PP
-.BR fchmodat ():
-POSIX.1-2008.
-.SH NOTES
.SS C library/kernel differences
The GNU C library
.BR fchmodat ()
@@ -334,6 +323,19 @@ glibc constructs a pathname based on the symbolic link in
that corresponds to the
.I dirfd
argument.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR chmod ()
+.TQ
+.BR fchmod ()
+4.4BSD, SVr4, POSIX.1-2001.
+.TP
+.BR fchmodat ()
+POSIX.1-2008.
+Linux 2.6.16,
+glibc 2.4.
.SH SEE ALSO
.BR chmod (1),
.BR chown (2),
diff --git a/man2/chown.2 b/man2/chown.2
index d66b66f54..fe1906b7d 100644
--- a/man2/chown.2
+++ b/man2/chown.2
@@ -278,15 +278,6 @@ The file is marked immutable or append-only.
.B EROFS
The named file resides on a read-only filesystem.
.SH VERSIONS
-.BR fchownat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.SH STANDARDS
-.BR chown (),
-.BR fchown (),
-.BR lchown ():
-4.4BSD, SVr4, POSIX.1-2001, POSIX.1-2008.
-.PP
The 4.4BSD version can be
used only by the superuser (that is, ordinary users cannot give away files).
.\" chown():
@@ -295,9 +286,21 @@ used only by the superuser (that is, ordinary users cannot give away files).
.\" fchown():
.\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK
.\" error conditions.
-.PP
-.BR fchownat ():
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR chown ()
+.TQ
+.BR fchown ()
+.TQ
+.BR lchown ()
+4.4BSD, SVr4, POSIX.1-2001.
+.TP
+.BR fchownat ()
POSIX.1-2008.
+Linux 2.6.16,
+glibc 2.4.
.SH NOTES
.SS Ownership of new files
When a new file is created (by, for example,
diff --git a/man2/chroot.2 b/man2/chroot.2
index 5f24ec4f0..9e99b1bae 100644
--- a/man2/chroot.2
+++ b/man2/chroot.2
@@ -136,6 +136,8 @@ is not a directory.
.B EPERM
The caller has insufficient privilege.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4, 4.4BSD, SUSv2 (marked LEGACY).
This function is not part of POSIX.1-2001.
.\" SVr4 documents additional EINTR, ENOLINK and EMULTIHOP error conditions.
diff --git a/man2/clock_getres.2 b/man2/clock_getres.2
index ae514e622..86a0e9afe 100644
--- a/man2/clock_getres.2
+++ b/man2/clock_getres.2
@@ -327,25 +327,6 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-These system calls first appeared in Linux 2.6.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2.
-.PP
-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.
-The symbols
-.BR _POSIX_MONOTONIC_CLOCK ,
-.BR _POSIX_CPUTIME ,
-.B _POSIX_THREAD_CPUTIME
-indicate that
-.BR CLOCK_MONOTONIC ,
-.BR CLOCK_PROCESS_CPUTIME_ID ,
-.B CLOCK_THREAD_CPUTIME_ID
-are available.
-(See also
-.BR sysconf (3).)
-.SH NOTES
POSIX.1 specifies the following:
.RS
.PP
@@ -370,12 +351,32 @@ clocks using
On Linux, these clocks are not settable
(i.e., no process has "appropriate privileges").
.\" See http://bugzilla.kernel.org/show_bug.cgi?id=11972
-.\"
.SS C library/kernel differences
On some architectures, an implementation of
.BR clock_gettime ()
is provided in the
.BR vdso (7).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SUSv2.
+Linux 2.6.
+.PP
+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.
+The symbols
+.BR _POSIX_MONOTONIC_CLOCK ,
+.BR _POSIX_CPUTIME ,
+.B _POSIX_THREAD_CPUTIME
+indicate that
+.BR CLOCK_MONOTONIC ,
+.BR CLOCK_PROCESS_CPUTIME_ID ,
+.B CLOCK_THREAD_CPUTIME_ID
+are available.
+(See also
+.BR sysconf (3).)
+POSIX.1-2008 makes thes APIs mandatory.
.\"
.SS Historical note for SMP systems
Before Linux added kernel support for
diff --git a/man2/clock_nanosleep.2 b/man2/clock_nanosleep.2
index 5da8d1569..38abca6de 100644
--- a/man2/clock_nanosleep.2
+++ b/man2/clock_nanosleep.2
@@ -172,13 +172,12 @@ is not a permitted value for
.B ENOTSUP
The kernel does not support sleeping against this
.IR clockid .
-.SH VERSIONS
-The
-.BR clock_nanosleep ()
-system call first appeared in Linux 2.6.
-Support is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+Linux 2.6,
+glibc 2.1.
.SH NOTES
If the interval specified in
.I request
diff --git a/man2/clone.2 b/man2/clone.2
index be802a280..42ee3fee8 100644
--- a/man2/clone.2
+++ b/man2/clone.2
@@ -1553,25 +1553,7 @@ See the discussion of the
.B ENOSPC
error above.
.SH VERSIONS
-The
-.BR clone3 ()
-system call first appeared in Linux 5.3.
-.\" There is no entry for
-.\" .BR clone ()
-.\" in libc5.
-.\" glibc2 provides
-.\" .BR clone ()
-.\" as described in this manual page.
-.SH STANDARDS
-These system calls
-are Linux-specific and should not be used in programs
-intended to be portable.
-.SH NOTES
-One use of these systems calls
-is to implement threads: multiple flows of control in a program that
-run concurrently in a shared address space.
-.PP
-Note that the glibc
+The glibc
.BR clone ()
wrapper function makes some changes
in the memory pointed to by
@@ -1587,31 +1569,10 @@ is used to recursively create children,
do not use the buffer employed for the parent's stack
as the stack of the child.
.PP
-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
-Handlers registered using
-.BR pthread_atfork (3)
-are not executed during a clone call.
-.PP
-In the Linux 2.4.x series,
-.B CLONE_THREAD
-generally does not make the parent of the new thread the same
-as the parent of the calling process.
-However, from Linux 2.4.7 to Linux 2.4.18 the
-.B CLONE_THREAD
-flag implied the
-.B CLONE_PARENT
-flag (as in Linux 2.6.0 and later).
-.PP
On i386,
.BR clone ()
should not be called through vsyscall, but directly through
.IR "int $0x80" .
-.\"
.SS C library/kernel differences
The raw
.BR clone ()
@@ -1748,7 +1709,29 @@ and
.I stack_size
specifies the size of the stack pointed to by
.IR stack_base .
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
+.BR clone3 ()
+Linux 5.3.
+.\" There is no entry for
+.\" .BR clone ()
+.\" in libc5.
+.\" glibc2 provides
+.\" .BR clone ()
+.\" as described in this manual page.
.SS Linux 2.4 and earlier
+In the Linux 2.4.x series,
+.B CLONE_THREAD
+generally does not make the parent of the new thread the same
+as the parent of the calling process.
+However, from Linux 2.4.7 to Linux 2.4.18 the
+.B CLONE_THREAD
+flag implied the
+.B CLONE_PARENT
+flag (as in Linux 2.6.0 and later).
+.PP
In Linux 2.4 and earlier,
.BR clone ()
does not take arguments
@@ -1756,6 +1739,20 @@ does not take arguments
.IR tls ,
and
.IR child_tid .
+.SH NOTES
+One use of these systems calls
+is to implement threads: multiple flows of control in a program that
+run concurrently in a shared address space.
+.PP
+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
+Handlers registered using
+.BR pthread_atfork (3)
+are not executed during a clone call.
.SH BUGS
GNU C library versions 2.3.4 up to and including 2.24
contained a wrapper function for
diff --git a/man2/close.2 b/man2/close.2
index 2fe28e003..68211bc58 100644
--- a/man2/close.2
+++ b/man2/close.2
@@ -81,7 +81,9 @@ See NOTES for a discussion of why
.BR close ()
should not be retried after an error.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.\" SVr4 documents an additional ENOLINK error condition.
.SH NOTES
A successful close does not guarantee that the data has been successfully
diff --git a/man2/close_range.2 b/man2/close_range.2
index 9dd7ccb8a..782719de0 100644
--- a/man2/close_range.2
+++ b/man2/close_range.2
@@ -72,13 +72,12 @@ flag is specified.
.TP
.B ENOMEM
Insufficient kernel memory was available.
-.SH VERSIONS
-.BR close_range ()
-first appeared in Linux 5.9.
-Library support was added in glibc 2.34.
.SH STANDARDS
-.BR close_range ()
-is a nonstandard function that is also present on FreeBSD.
+None.
+.SH HISTORY
+FreeBSD.
+Linux 5.9,
+glibc 2.34.
.SH NOTES
.SS Closing all open file descriptors
.\" 278a5fbaed89dacd04e9d052f4594ffd0e0585de
diff --git a/man2/connect.2 b/man2/connect.2
index abd480fef..2db271180 100644
--- a/man2/connect.2
+++ b/man2/connect.2
@@ -213,7 +213,9 @@ busy to accept new connections.
Note that for IP sockets the timeout may
be very long when syncookies are enabled on the server.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD,
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD,
.RB (connect ()
first appeared in 4.2BSD).
.\" SVr4 documents the additional
@@ -229,11 +231,6 @@ first appeared in 4.2BSD).
.\" It also
.\" documents many additional error conditions not described here.
.SH NOTES
-For background on the
-.I socklen_t
-type, see
-.BR accept (2).
-.PP
If
.BR connect ()
fails, consider the state of the socket as unspecified.
diff --git a/man2/copy_file_range.2 b/man2/copy_file_range.2
index 34cd56517..1bade7bf7 100644
--- a/man2/copy_file_range.2
+++ b/man2/copy_file_range.2
@@ -185,12 +185,6 @@ are not on the same filesystem,
and the source and target filesystems are not of the same type,
or do not support cross-filesystem copy.
.SH VERSIONS
-The
-.BR copy_file_range ()
-system call first appeared in Linux 4.5, but glibc 2.27 provides a user-space
-emulation when it is not available.
-.\" https://sourceware.org/git/?p=glibc.git;a=commit;f=posix/unistd.h;h=bad7a0c81f501fbbcc79af9eaa4b8254441c4a1f
-.PP
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.
@@ -204,9 +198,12 @@ See BUGS for behavior prior to Linux 5.19.
Applications should target the behaviour and requirements of Linux 5.19,
that was also backported to earlier stable kernels.
.SH STANDARDS
-The
-.BR copy_file_range ()
-system call is a nonstandard Linux and GNU extension.
+Linux, GNU.
+.SH HISTORY
+Linux 4.5,
+but glibc 2.27 provides a user-space
+emulation when it is not available.
+.\" https://sourceware.org/git/?p=glibc.git;a=commit;f=posix/unistd.h;h=bad7a0c81f501fbbcc79af9eaa4b8254441c4a1f
.SH NOTES
If
.I fd_in
diff --git a/man2/create_module.2 b/man2/create_module.2
index b9163ec11..2239f05cd 100644
--- a/man2/create_module.2
+++ b/man2/create_module.2
@@ -53,14 +53,12 @@ The caller was not privileged
(did not have the
.B CAP_SYS_MODULE
capability).
-.SH VERSIONS
-This system call is present only up until Linux 2.4;
-it was removed in Linux 2.6.
-.\" Removed in Linux 2.5.48
.SH STANDARDS
-.BR create_module ()
-is Linux-specific.
-.SH NOTES
+Linux.
+.SH HISTORY
+Removed in Linux 2.6.
+.\" Removed in Linux 2.5.48
+.PP
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 0e0a67596..99c26c5ef 100644
--- a/man2/delete_module.2
+++ b/man2/delete_module.2
@@ -160,9 +160,8 @@ but the reference count of this module is nonzero and
was not specified in
.IR flags .
.SH STANDARDS
-.BR delete_module ()
-is Linux-specific.
-.SH NOTES
+Linux.
+.SH HISTORY
The
.BR delete_module ()
system call is not supported by glibc.
@@ -173,16 +172,6 @@ it is (before glibc 2.23) sufficient to
manually declare the interface in your code;
alternatively, you can invoke the system call using
.BR syscall (2).
-.PP
-The uninterruptible sleep that may occur if
-.B O_NONBLOCK
-is omitted from
-.I flags
-is considered undesirable, because the sleeping process is left
-in an unkillable state.
-As at Linux 3.7, specifying
-.B O_NONBLOCK
-is optional, but in future kernels it is likely to become mandatory.
.SS Linux 2.4 and earlier
In Linux 2.4 and earlier, the system call took only one argument:
.PP
@@ -197,6 +186,16 @@ Some further details of differences in the behavior of
in Linux 2.4 and earlier are
.I not
currently explained in this manual page.
+.SH NOTES
+The uninterruptible sleep that may occur if
+.B O_NONBLOCK
+is omitted from
+.I flags
+is considered undesirable, because the sleeping process is left
+in an unkillable state.
+As at Linux 3.7, specifying
+.B O_NONBLOCK
+is optional, but in future kernels it is likely to become mandatory.
.SH SEE ALSO
.BR create_module (2),
.BR init_module (2),
diff --git a/man2/dup.2 b/man2/dup.2
index af291c3ec..f69922be4 100644
--- a/man2/dup.2
+++ b/man2/dup.2
@@ -197,20 +197,28 @@ The per-process limit on the number of open file descriptors has been reached
.B RLIMIT_NOFILE
in
.BR getrlimit (2)).
-.SH VERSIONS
-.BR dup3 ()
-was added in Linux 2.6.27;
-glibc support is available since glibc 2.9.
.SH STANDARDS
-.BR dup (),
-.BR dup2 ():
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.PP
+.TP
+.BR dup ()
+.TQ
+.BR dup2 ()
+POSIX.1-2008.
+.TP
.BR dup3 ()
-is Linux-specific.
+Linux.
+.SH HISTORY
+.TP
+.BR dup ()
+.TQ
+.BR dup2 ()
+POSIX.1-2001, SVr4, 4.3BSD.
.\" SVr4 documents additional
.\" EINTR and ENOLINK error conditions. POSIX.1 adds EINTR.
.\" The EBUSY return is Linux-specific.
+.TP
+.BR dup3 ()
+Linux 2.6.27,
+glibc 2.9.
.SH NOTES
The error returned by
.BR dup2 ()
diff --git a/man2/epoll_create.2 b/man2/epoll_create.2
index d7d92d917..4d3566a79 100644
--- a/man2/epoll_create.2
+++ b/man2/epoll_create.2
@@ -28,7 +28,7 @@ creates a new
instance.
Since Linux 2.6.8, the
.I size
-argument is ignored, but must be greater than zero; see NOTES.
+argument is ignored, but must be greater than zero; see HISTORY.
.PP
.BR epoll_create ()
returns a file descriptor referring to the new epoll instance.
@@ -98,22 +98,20 @@ The system-wide limit on the total number of open files has been reached.
.TP
.B ENOMEM
There was insufficient memory to create the kernel object.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR epoll_create ()
-was added in Linux 2.6.
-Library support is provided in glibc 2.3.2.
-.PP
+Linux 2.6,
+glibc 2.3.2.
.\" To be precise: kernel 2.5.44.
.\" The interface should be finalized by Linux kernel 2.5.66.
+.TP
.BR epoll_create1 ()
-was added in Linux 2.6.27.
-Library support is provided in glibc 2.9.
-.SH STANDARDS
-.BR epoll_create ()
-and
-.BR epoll_create1 ()
-are Linux-specific.
-.SH NOTES
+Linux 2.6.27,
+glibc 2.9.
+.PP
In the initial
.BR epoll_create ()
implementation, the
diff --git a/man2/epoll_ctl.2 b/man2/epoll_ctl.2
index f02e5ff45..afbafee11 100644
--- a/man2/epoll_ctl.2
+++ b/man2/epoll_ctl.2
@@ -369,15 +369,13 @@ does not support
This error can occur if
.I fd
refers to, for example, a regular file or a directory.
-.SH VERSIONS
-.BR epoll_ctl ()
-was added to in Linux 2.6.
-.\" To be precise: kernel 2.5.44.
-.\" The interface should be finalized by Linux kernel 2.5.66.
-Library support is provided in glibc 2.3.2.
.SH STANDARDS
-.BR epoll_ctl ()
-is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6,
+.\" To be precise: Linux 2.5.44.
+.\" The interface should be finalized by Linux 2.5.66.
+glibc 2.3.2.
.SH NOTES
The
.B epoll
diff --git a/man2/epoll_wait.2 b/man2/epoll_wait.2
index 1620cff9d..7c79afdfa 100644
--- a/man2/epoll_wait.2
+++ b/man2/epoll_wait.2
@@ -207,25 +207,22 @@ is not an
file descriptor, or
.I maxevents
is less than or equal to zero.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR epoll_wait ()
-was added in Linux 2.6.
-.\" To be precise: kernel 2.5.44.
+Linux 2.6,
+.\" To be precise: Linux 2.5.44.
.\" The interface should be finalized by Linux 2.5.66.
-Library support is provided in glibc 2.3.2.
-.PP
+glibc 2.3.2.
+.TP
.BR epoll_pwait ()
-was added in Linux 2.6.19.
-Library support is provided in glibc 2.6.
-.PP
-.BR epoll_pwait2 ()
-was added in Linux 5.11.
-.SH STANDARDS
-.BR epoll_wait (),
-.BR epoll_pwait (),
-and
+Linux 2.6.19,
+glibc 2.6.
+.TP
.BR epoll_pwait2 ()
-are Linux-specific.
+Linux 5.11.
.SH NOTES
While one thread is blocked in a call to
.BR epoll_wait (),
diff --git a/man2/eventfd.2 b/man2/eventfd.2
index 169ca9d1c..9b7ab22b3 100644
--- a/man2/eventfd.2
+++ b/man2/eventfd.2
@@ -264,23 +264,54 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
+.SS C library/kernel differences
+There are two underlying Linux system calls:
+.BR eventfd ()
+and the more recent
+.BR eventfd2 ().
+The former system call does not implement a
+.I flags
+argument.
+The latter system call implements the
+.I flags
+values described above.
+The glibc wrapper function will use
+.BR eventfd2 ()
+where it is available.
+.SS Additional glibc features
+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
+.in +4n
+.EX
+typedef uint64_t eventfd_t;
+
+int eventfd_read(int fd, eventfd_t *value);
+int eventfd_write(int fd, eventfd_t value);
+.EE
+.in
+.PP
+The functions perform the read and write operations on an
+eventfd file descriptor,
+returning 0 if the correct number of bytes was transferred,
+or \-1 otherwise.
+.SH STANDARDS
+Linux, GNU.
+.SH HISTORY
+.TP
.BR eventfd ()
-is available since Linux 2.6.22.
-Working support is provided since glibc 2.8.
+Linux 2.6.22,
+glibc 2.8.
.\" eventfd() is in glibc 2.7, but reportedly does not build
-The
+.TP
.BR eventfd2 ()
-system call (see NOTES) is available since Linux 2.6.27.
+Linux 2.6.27 (see VERSIONS).
Since glibc 2.9, the
.BR eventfd ()
wrapper will employ the
.BR eventfd2 ()
system call, if it is supported by the kernel.
-.SH STANDARDS
-.BR eventfd ()
-and
-.BR eventfd2 ()
-are Linux-specific.
.SH NOTES
Applications can use an eventfd file descriptor instead of a pipe (see
.BR pipe (2))
@@ -320,39 +351,6 @@ directory.
See
.BR proc (5)
for further details.
-.\"
-.SS C library/kernel differences
-There are two underlying Linux system calls:
-.BR eventfd ()
-and the more recent
-.BR eventfd2 ().
-The former system call does not implement a
-.I flags
-argument.
-The latter system call implements the
-.I flags
-values described above.
-The glibc wrapper function will use
-.BR eventfd2 ()
-where it is available.
-.SS Additional glibc features
-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
-.in +4n
-.EX
-typedef uint64_t eventfd_t;
-
-int eventfd_read(int fd, eventfd_t *value);
-int eventfd_write(int fd, eventfd_t value);
-.EE
-.in
-.PP
-The functions perform the read and write operations on an
-eventfd file descriptor,
-returning 0 if the correct number of bytes was transferred,
-or \-1 otherwise.
.SH EXAMPLES
The following program creates an eventfd file descriptor
and then forks to create a child process.
diff --git a/man2/execve.2 b/man2/execve.2
index 819cba3c1..20804ead7 100644
--- a/man2/execve.2
+++ b/man2/execve.2
@@ -552,44 +552,9 @@ See
.TP
.B ETXTBSY
The specified executable was open for writing by one or more processes.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+.SH VERSIONS
POSIX does not document the #! behavior, but it exists
(with some variations) on other UNIX systems.
-.\" SVr4 documents additional error
-.\" conditions EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX does not
-.\" document ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL,
-.\" EISDIR or ELIBBAD error conditions.
-.SH NOTES
-One sometimes sees
-.BR execve ()
-(and the related functions described in
-.BR exec (3))
-described as "executing a
-.I new
-process" (or similar).
-This is a highly misleading description:
-there is no new process;
-many attributes of the calling process remain unchanged
-(in particular, its PID).
-All that
-.BR execve ()
-does is arrange for an existing process (the calling process)
-to execute a new program.
-.PP
-Set-user-ID and set-group-ID processes can not be
-.BR ptrace (2)d.
-.PP
-The result of mounting a filesystem
-.I nosuid
-varies across Linux kernel versions:
-some will refuse execution of set-user-ID and set-group-ID
-executables when this would
-give the user powers they did not have already (and return
-.BR EPERM ),
-some will just ignore the set-user-ID and set-group-ID bits and
-.BR exec ()
-successfully.
.PP
On Linux,
.I argv
@@ -623,23 +588,6 @@ resource limit changes, then the value reported by
will also change,
to reflect the fact that the limit on space for holding
command-line arguments and environment variables has changed.
-.PP
-In most cases where
-.BR execve ()
-fails, control returns to the original executable image,
-and the caller of
-.BR execve ()
-can then handle the error.
-However, in (rare) cases (typically caused by resource exhaustion),
-failure may occur past the point of no return:
-the original executable image has been torn down,
-but the new image could not be completely built.
-In such cases, the kernel kills the process with a
-.\" commit 19d860a140beac48a1377f179e693abe86a9dac9
-.B SIGSEGV
-.RB ( SIGKILL
-until Linux 3.17)
-signal.
.\"
.SS Interpreter scripts
The kernel imposes a maximum length on the text that follows the
@@ -671,15 +619,72 @@ are used to delimit the arguments.
.PP
Linux (like most other modern UNIX systems)
ignores the set-user-ID and set-group-ID bits on scripts.
-.\"
-.\" .SH BUGS
-.\" Some Linux versions have failed to check permissions on ELF
-.\" interpreters. This is a security hole, because it allows users to
-.\" open any file, such as a rewinding tape device, for reading. Some
-.\" Linux versions have also had other security holes in
-.\" .BR execve ()
-.\" that could be exploited for denial of service by a suitably crafted
-.\" ELF binary. There are no known problems with Linux 2.0.34 or Linux 2.2.15.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.\" SVr4 documents additional error
+.\" conditions EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX does not
+.\" document ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL,
+.\" EISDIR or ELIBBAD error conditions.
+.PP
+With UNIX\ V6, the argument list of an
+.BR exec ()
+call was ended by 0,
+while the argument list of
+.I main
+was ended by \-1.
+Thus, this argument list was not directly usable in a further
+.BR exec ()
+call.
+Since UNIX\ V7, both are NULL.
+.SH NOTES
+One sometimes sees
+.BR execve ()
+(and the related functions described in
+.BR exec (3))
+described as "executing a
+.I new
+process" (or similar).
+This is a highly misleading description:
+there is no new process;
+many attributes of the calling process remain unchanged
+(in particular, its PID).
+All that
+.BR execve ()
+does is arrange for an existing process (the calling process)
+to execute a new program.
+.PP
+Set-user-ID and set-group-ID processes can not be
+.BR ptrace (2)d.
+.PP
+The result of mounting a filesystem
+.I nosuid
+varies across Linux kernel versions:
+some will refuse execution of set-user-ID and set-group-ID
+executables when this would
+give the user powers they did not have already (and return
+.BR EPERM ),
+some will just ignore the set-user-ID and set-group-ID bits and
+.BR exec ()
+successfully.
+.PP
+In most cases where
+.BR execve ()
+fails, control returns to the original executable image,
+and the caller of
+.BR execve ()
+can then handle the error.
+However, in (rare) cases (typically caused by resource exhaustion),
+failure may occur past the point of no return:
+the original executable image has been torn down,
+but the new image could not be completely built.
+In such cases, the kernel kills the process with a
+.\" commit 19d860a140beac48a1377f179e693abe86a9dac9
+.B SIGSEGV
+.RB ( SIGKILL
+until Linux 3.17)
+signal.
.SS execve() and EAGAIN
A more detailed explanation of the
.B EAGAIN
@@ -755,17 +760,6 @@ process flag.
The flag is also cleared if a subsequent call to
.BR fork (2)
by this process succeeds.
-.SS Historical
-With UNIX\ V6, the argument list of an
-.BR exec ()
-call was ended by 0,
-while the argument list of
-.I main
-was ended by \-1.
-Thus, this argument list was not directly usable in a further
-.BR exec ()
-call.
-Since UNIX\ V7, both are NULL.
.\"
.\" .SH BUGS
.\" Some Linux versions have failed to check permissions on ELF
diff --git a/man2/execveat.2 b/man2/execveat.2
index a25b3c570..2dc45c0fd 100644
--- a/man2/execveat.2
+++ b/man2/execveat.2
@@ -145,14 +145,11 @@ See BUGS.
is relative and
.I dirfd
is a file descriptor referring to a file other than a directory.
-.SH VERSIONS
-.BR execveat ()
-was added in Linux 3.19.
-Library support was added in glibc 2.34.
.SH STANDARDS
-The
-.BR execveat ()
-system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 3.19,
+glibc 2.34.
.SH NOTES
In addition to the reasons explained in
.BR openat (2),
diff --git a/man2/exit_group.2 b/man2/exit_group.2
index f8b56d3d6..073b5135b 100644
--- a/man2/exit_group.2
+++ b/man2/exit_group.2
@@ -26,10 +26,10 @@ This system call terminates all threads
in the calling process's thread group.
.SH RETURN VALUE
This system call does not return.
-.SH VERSIONS
-This call is present since Linux 2.5.35.
.SH STANDARDS
-This call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.5.35.
.SH NOTES
Since glibc 2.3, this is the system call invoked when the
.BR _exit (2)
diff --git a/man2/fallocate.2 b/man2/fallocate.2
index 209e1ec8b..b9a788e4a 100644
--- a/man2/fallocate.2
+++ b/man2/fallocate.2
@@ -463,17 +463,17 @@ or
but the file referred to by
.I fd
is currently being executed.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR fallocate ()
-is available since Linux 2.6.23.
-Support is provided since glibc 2.10.
-The
+Linux 2.6.23,
+glibc 2.10.
+.TP
.B FALLOC_FL_*
-flags are defined in glibc headers only since glibc 2.18.
+glibc 2.18.
.\" See http://sourceware.org/bugzilla/show_bug.cgi?id=14964
-.SH STANDARDS
-.BR fallocate ()
-is Linux-specific.
.SH SEE ALSO
.BR fallocate (1),
.BR ftruncate (2),
diff --git a/man2/fanotify_init.2 b/man2/fanotify_init.2
index e9c65c280..65d73565f 100644
--- a/man2/fanotify_init.2
+++ b/man2/fanotify_init.2
@@ -460,9 +460,6 @@ The fanotify API is available only if the kernel was configured with
.B EPERM
The operation is not permitted because the caller lacks a required capability.
.SH VERSIONS
-.BR fanotify_init ()
-was introduced in Linux 2.6.36 and enabled in Linux 2.6.37.
-.PP
Prior to Linux 5.13,
.\" commit 7cea2a3c505e87a9d6afc78be4a7f7be636a73a7
calling
@@ -516,7 +513,10 @@ A user will also not receive the pid that generated the event, unless the
listening process itself generated the event.
.RE
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.37.
+.\" was introduced in Linux 2.6.36 and enabled in Linux 2.6.37.
.SH BUGS
The following bug was present before Linux 3.18:
.IP \[bu] 3
diff --git a/man2/fanotify_mark.2 b/man2/fanotify_mark.2
index 5577a3888..3f85deb23 100644
--- a/man2/fanotify_mark.2
+++ b/man2/fanotify_mark.2
@@ -761,11 +761,11 @@ which uses a different
than its root superblock.
This error can be returned only with an fanotify group that identifies
filesystem objects by file handles.
-.SH VERSIONS
-.BR fanotify_mark ()
-was introduced in Linux 2.6.36 and enabled in Linux 2.6.37.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.37.
+.\" was introduced in Linux 2.6.36 and enabled in Linux 2.6.37.
.SH NOTES
.SS FAN_OPEN_EXEC and FAN_OPEN_EXEC_PERM
When using either
diff --git a/man2/fcntl.2 b/man2/fcntl.2
index 3ec52dc4d..7bb909912 100644
--- a/man2/fcntl.2
+++ b/man2/fcntl.2
@@ -1810,38 +1810,7 @@ was not open for writing
or the current set of seals on the file already includes
.BR F_SEAL_SEAL .
.SH STANDARDS
-SVr4, 4.3BSD, POSIX.1-2001.
-Only the operations
-.BR F_DUPFD ,
-.BR F_GETFD ,
-.BR F_SETFD ,
-.BR F_GETFL ,
-.BR F_SETFL ,
-.BR F_GETLK ,
-.BR F_SETLK ,
-and
-.B F_SETLKW
-are specified in POSIX.1-2001.
-.PP
-.B F_GETOWN
-and
-.B F_SETOWN
-are specified in POSIX.1-2001.
-(To get their definitions, define either
-.\" .BR _BSD_SOURCE ,
-.\" or
-.B _XOPEN_SOURCE
-with the value 500 or greater, or
-.B _POSIX_C_SOURCE
-with the value 200809L or greater.)
-.PP
-.B F_DUPFD_CLOEXEC
-is specified in POSIX.1-2008.
-(To get this definition, define
-.B _POSIX_C_SOURCE
-with the value 200809L or greater, or
-.B _XOPEN_SOURCE
-with the value 700 or greater.)
+POSIX.1-2008.
.PP
.BR F_GETOWN_EX ,
.BR F_SETOWN_EX ,
@@ -1874,6 +1843,40 @@ and
.B F_GET_SEALS
are Linux-specific.
.\" FIXME . Once glibc adds support, add a note about FTM requirements
+.SH HISTORY
+SVr4, 4.3BSD, POSIX.1-2001.
+.PP
+Only the operations
+.BR F_DUPFD ,
+.BR F_GETFD ,
+.BR F_SETFD ,
+.BR F_GETFL ,
+.BR F_SETFL ,
+.BR F_GETLK ,
+.BR F_SETLK ,
+and
+.B F_SETLKW
+are specified in POSIX.1-2001.
+.PP
+.B F_GETOWN
+and
+.B F_SETOWN
+are specified in POSIX.1-2001.
+(To get their definitions, define either
+.\" .BR _BSD_SOURCE ,
+.\" or
+.B _XOPEN_SOURCE
+with the value 500 or greater, or
+.B _POSIX_C_SOURCE
+with the value 200809L or greater.)
+.PP
+.B F_DUPFD_CLOEXEC
+is specified in POSIX.1-2008.
+(To get this definition, define
+.B _POSIX_C_SOURCE
+with the value 200809L or greater, or
+.B _XOPEN_SOURCE
+with the value 700 or greater.)
.SH NOTES
The errors returned by
.BR dup2 (2)
diff --git a/man2/flock.2 b/man2/flock.2
index 42fc1c595..a136bcfe8 100644
--- a/man2/flock.2
+++ b/man2/flock.2
@@ -121,16 +121,7 @@ The kernel ran out of memory for allocating lock records.
The file is locked and the
.B LOCK_NB
flag was selected.
-.SH STANDARDS
-4.4BSD (the
-.BR flock ()
-call first appeared in 4.2BSD).
-A version of
-.BR flock (),
-possibly implemented in terms of
-.BR fcntl (2),
-appears on most UNIX systems.
-.SH NOTES
+.SH VERSIONS
Since Linux 2.0,
.BR flock ()
is implemented as a system call in its own right rather
@@ -153,38 +144,43 @@ and
locks
.I do
interact with one another.)
-.PP
-.BR flock ()
-places advisory locks only; given suitable permissions on a file,
-a process is free to ignore the use of
+.SS CIFS details
+Up to Linux 5.4,
.BR flock ()
-and perform I/O on the file.
+is not propagated over SMB.
+A file with such locks will not appear locked for remote clients.
.PP
+Since Linux 5.5,
.BR flock ()
-and
+locks are emulated with SMB byte-range locks on the entire file.
+Similarly to NFS, this means that
.BR fcntl (2)
-locks have different semantics with respect to forked processes and
-.BR dup (2).
-On systems that implement
-.BR flock ()
-using
-.BR fcntl (2),
-the semantics of
+and
.BR flock ()
-will be different from those described in this manual page.
+locks interact with one another.
+Another important side-effect is that the locks are not advisory anymore:
+any IO on a locked file will always fail with
+.B EACCES
+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
-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.
-Between these two steps,
-a pending lock request by another process may be granted,
-with the result that the conversion either blocks, or fails if
-.B LOCK_NB
-was specified.
-(This is the original BSD behavior,
-and occurs on many other implementations.)
-.\" Kernel 2.5.21 changed things a little: during lock conversion
-.\" it is now the highest priority process that will get the lock -- mtk
+Remote and mandatory locking semantics may vary with
+SMB protocol, mount options and server type.
+See
+.BR mount.cifs (8)
+for additional information.
+.SH STANDARDS
+BSD.
+.SH HISTORY
+4.4BSD (the
+.BR flock ()
+call first appeared in 4.2BSD).
+A version of
+.BR flock (),
+possibly implemented in terms of
+.BR fcntl (2),
+appears on most UNIX systems.
.SS NFS details
Up to Linux 2.6.11,
.BR flock ()
@@ -222,32 +218,38 @@ see the discussion of the
.I "local_lock"
option in
.BR nfs (5).
-.SS CIFS details
-Up to Linux 5.4,
+.SH NOTES
.BR flock ()
-is not propagated over SMB.
-A file with such locks will not appear locked for remote clients.
+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
-Since Linux 5.5,
.BR flock ()
-locks are emulated with SMB byte-range locks on the entire file.
-Similarly to NFS, this means that
-.BR fcntl (2)
and
+.BR fcntl (2)
+locks have different semantics with respect to forked processes and
+.BR dup (2).
+On systems that implement
.BR flock ()
-locks interact with one another.
-Another important side-effect is that the locks are not advisory anymore:
-any IO on a locked file will always fail with
-.B EACCES
-when done from a separate file descriptor.
-This difference originates from the design of locks in the SMB protocol,
-which provides mandatory locking semantics.
+using
+.BR fcntl (2),
+the semantics of
+.BR flock ()
+will be different from those described in this manual page.
.PP
-Remote and mandatory locking semantics may vary with
-SMB protocol, mount options and server type.
-See
-.BR mount.cifs (8)
-for additional information.
+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.
+Between these two steps,
+a pending lock request by another process may be granted,
+with the result that the conversion either blocks, or fails if
+.B LOCK_NB
+was specified.
+(This is the original BSD behavior,
+and occurs on many other implementations.)
+.\" Kernel 2.5.21 changed things a little: during lock conversion
+.\" it is now the highest priority process that will get the lock -- mtk
.SH SEE ALSO
.BR flock (1),
.BR close (2),
diff --git a/man2/fork.2 b/man2/fork.2
index 1b2498af7..15d23fef5 100644
--- a/man2/fork.2
+++ b/man2/fork.2
@@ -259,14 +259,7 @@ hardware without a Memory-Management Unit).
.\" commit 4a2c7a7837da1b91468e50426066d988050e4d56
System call was interrupted by a signal and will be restarted.
(This can be seen only during a trace.)
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.SH NOTES
-Under Linux,
-.BR fork ()
-is implemented using copy-on-write pages, so the only penalty that it incurs
-is the time and memory required to duplicate the parent's page tables,
-and to create a unique task structure for the child.
+.SH VERSIONS
.SS C library/kernel differences
Since glibc 2.3.3,
.\" nptl/sysdeps/unix/sysv/linux/fork.c
@@ -291,6 +284,16 @@ The glibc wrapper invokes any fork handlers that have been
established using
.BR pthread_atfork (3).
.\" and does some magic to ensure that getpid(2) returns the right value.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.SH NOTES
+Under Linux,
+.BR fork ()
+is implemented using copy-on-write pages, so the only penalty that it incurs
+is the time and memory required to duplicate the parent's page tables,
+and to create a unique task structure for the child.
.SH EXAMPLES
See
.BR pipe (2)
diff --git a/man2/fsync.2 b/man2/fsync.2
index 9dc99a15a..1043e6a1b 100644
--- a/man2/fsync.2
+++ b/man2/fsync.2
@@ -142,9 +142,7 @@ space at the time of a
.BR write (2)
system call, and some previous write failed due to insufficient
storage space.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.PP
+.SH VERSIONS
On POSIX systems on which
.BR fdatasync ()
is available,
@@ -157,12 +155,16 @@ 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.
-.SH NOTES
+.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
In Linux 2.2 and earlier,
.BR fdatasync ()
diff --git a/man2/futex.2 b/man2/futex.2
index cd52254ba..92eccde5b 100644
--- a/man2/futex.2
+++ b/man2/futex.2
@@ -1738,9 +1738,10 @@ and the timeout expired before the operation completed.
.\"
.\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.\"
-.SH VERSIONS
-Futexes were first made available in a stable kernel release
-with Linux 2.6.0.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.6.0.
.PP
Initial futex support was merged in Linux 2.5.7 but with different
semantics from what was described above.
@@ -1748,19 +1749,6 @@ A four-argument system call with the semantics
described in this page was introduced in Linux 2.5.40.
A fifth argument was added in Linux 2.5.70,
and a sixth argument was added in Linux 2.6.7.
-.SH STANDARDS
-This system call is Linux-specific.
-.SH NOTES
-Several higher-level programming abstractions are implemented via futexes,
-including POSIX semaphores and
-various POSIX threads synchronization mechanisms
-(mutexes, condition variables, read-write locks, and barriers).
-.\" TODO FIXME(Torvald) Above, we cite this section and claim it contains
-.\" details on the synchronization semantics; add the C11 equivalents
-.\" here (or whatever we find consensus for).
-.\"
-.\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-.\"
.SH EXAMPLES
The program below demonstrates use of futexes in a program where a parent
process and a child process use a pair of futexes located inside a
diff --git a/man2/futimesat.2 b/man2/futimesat.2
index fc2560821..6b349ce8b 100644
--- a/man2/futimesat.2
+++ b/man2/futimesat.2
@@ -100,25 +100,26 @@ is relative and
.I dirfd
is a file descriptor referring to a file other than a directory.
.SH VERSIONS
+.SS glibc
+If
+.I pathname
+is NULL, then the glibc
.BR futimesat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
+wrapper function updates the times for the file referred to by
+.IR dirfd .
+.\" The Solaris futimesat() also has this strangeness.
.SH STANDARDS
-This system call is nonstandard.
+None.
+.SH HISTORY
+Linux 2.6.16,
+glibc 2.4.
+.PP
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
A similar system call exists on Solaris.
.SH NOTES
-.SS glibc notes
-If
-.I pathname
-is NULL, then the glibc
-.BR futimesat ()
-wrapper function updates the times for the file referred to by
-.IR dirfd .
-.\" The Solaris futimesat() also has this strangeness.
.SH SEE ALSO
.BR stat (2),
.BR utimensat (2),
diff --git a/man2/get_kernel_syms.2 b/man2/get_kernel_syms.2
index 15e59d99e..04f9e85e8 100644
--- a/man2/get_kernel_syms.2
+++ b/man2/get_kernel_syms.2
@@ -55,14 +55,12 @@ There is only one possible error return:
.B ENOSYS
.BR get_kernel_syms ()
is not supported in this version of the kernel.
-.SH VERSIONS
-This system call is present only up until Linux 2.4;
-it was removed in Linux 2.6.
-.\" Removed in Linux 2.5.48
.SH STANDARDS
-.BR get_kernel_syms ()
-is Linux-specific.
-.SH NOTES
+Linux.
+.SH HISTORY
+Removed in Linux 2.6.
+.\" Removed in Linux 2.5.48
+.PP
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/get_mempolicy.2 b/man2/get_mempolicy.2
index e3b942f4c..d1c7c667e 100644
--- a/man2/get_mempolicy.2
+++ b/man2/get_mempolicy.2
@@ -235,12 +235,10 @@ or
(And there are other
.B EINVAL
cases.)
-.SH VERSIONS
-The
-.BR get_mempolicy ()
-system call was added in Linux 2.6.7.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.7.
.SH NOTES
For information on library support, see
.BR numa (7).
diff --git a/man2/getcpu.2 b/man2/getcpu.2
index 2ef34b7c3..629f6f15c 100644
--- a/man2/getcpu.2
+++ b/man2/getcpu.2
@@ -64,24 +64,11 @@ is set to indicate the error.
.TP
.B EFAULT
Arguments point outside the calling process's address space.
-.SH VERSIONS
-.BR getcpu ()
-was added in Linux 2.6.19 for x86-64 and i386.
-Library support was added in glibc 2.29
-(Earlier glibc versions did not provide a wrapper for this system call,
-necessitating the use of
-.BR syscall (2).)
.SH STANDARDS
-.BR getcpu ()
-is Linux-specific.
-.SH NOTES
-Linux makes a best effort to make this call as fast as possible.
-(On some architectures, this is done via an implementation in the
-.BR vdso (7).)
-The intention of
-.BR getcpu ()
-is to allow programs to make optimizations with per-CPU data
-or for NUMA optimization.
+Linux.
+.SH HISTORY
+Linux 2.6.19 (x86-64 and i386),
+glibc 2.29.
.\"
.SS C library/kernel differences
The kernel system call has a third argument:
@@ -148,6 +135,14 @@ migrating threads between CPUs, and so the argument is now ignored.
.\" although in practice the scheduler's attempt to maintain
.\" soft CPU affinity means that the information is unlikely to change
.\" over the course of the caching interval.
+.SH NOTES
+Linux makes a best effort to make this call as fast as possible.
+(On some architectures, this is done via an implementation in the
+.BR vdso (7).)
+The intention of
+.BR getcpu ()
+is to allow programs to make optimizations with per-CPU data
+or for NUMA optimization.
.SH SEE ALSO
.BR mbind (2),
.BR sched_setaffinity (2),
diff --git a/man2/getdents.2 b/man2/getdents.2
index 27beb7a66..38024c33a 100644
--- a/man2/getdents.2
+++ b/man2/getdents.2
@@ -198,19 +198,19 @@ No such directory.
.B ENOTDIR
File descriptor does not refer to a directory.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
.\" SVr4 documents additional ENOLINK, EIO error conditions.
-.SH NOTES
-Library support for
+.TP
.BR getdents64 ()
-was added in glibc 2.30;
+glibc 2.30.
+.SH NOTES
glibc does not provide a wrapper for
.BR getdents ();
call
.BR getdents ()
-(or
-.BR getdents64 ()
-on earlier glibc versions) using
+using
.BR syscall (2).
In that case you will need to define the
.I linux_dirent
diff --git a/man2/getdomainname.2 b/man2/getdomainname.2
index c26cd368f..b5dd066e2 100644
--- a/man2/getdomainname.2
+++ b/man2/getdomainname.2
@@ -98,14 +98,7 @@ is NULL or
is longer than
.I len
bytes.
-.SH STANDARDS
-POSIX does not specify these calls.
-.\" But they appear on most systems...
-.SH NOTES
-Since Linux 1.0, the limit on the length of a domain name,
-including the terminating null byte, is 64 bytes.
-In older kernels, it was 8 bytes.
-.PP
+.SH VERSIONS
On most Linux architectures (including x86),
there is no
.BR getdomainname ()
@@ -115,6 +108,13 @@ as a library function that returns a copy of the
.I domainname
field returned from a call to
.BR uname (2).
+.SH STANDARDS
+None.
+.\" But they appear on most systems...
+.SH HISTORY
+Since Linux 1.0, the limit on the length of a domain name,
+including the terminating null byte, is 64 bytes.
+In older kernels, it was 8 bytes.
.SH SEE ALSO
.BR gethostname (2),
.BR sethostname (2),
diff --git a/man2/getgid.2 b/man2/getgid.2
index c76495107..6c771bff0 100644
--- a/man2/getgid.2
+++ b/man2/getgid.2
@@ -27,9 +27,27 @@ and never modify
.\" https://www.austingroupbugs.net/view.php?id=511
.\" 0000511: getuid and friends should not modify errno
.IR errno .
+.SH VERSIONS
+On Alpha, instead of a pair of
+.BR getgid ()
+and
+.BR getegid ()
+system calls, a single
+.BR getxgid ()
+system call is provided, which returns a pair of real and effective GIDs.
+The glibc
+.BR getgid ()
+and
+.BR getegid ()
+wrapper functions transparently deal with this.
+See
+.BR syscall (2)
+for details regarding register mapping.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
+.PP
The original Linux
.BR getgid ()
and
@@ -45,22 +63,6 @@ The glibc
and
.BR getegid ()
wrapper functions transparently deal with the variations across kernel versions.
-.PP
-On Alpha, instead of a pair of
-.BR getgid ()
-and
-.BR getegid ()
-system calls, a single
-.BR getxgid ()
-system call is provided, which returns a pair of real and effective GIDs.
-The glibc
-.BR getgid ()
-and
-.BR getegid ()
-wrapper functions transparently deal with this.
-See
-.BR syscall (2)
-for details regarding register mapping.
.SH SEE ALSO
.BR getresgid (2),
.BR setgid (2),
diff --git a/man2/getgroups.2 b/man2/getgroups.2
index 36300bf61..83a1508ef 100644
--- a/man2/getgroups.2
+++ b/man2/getgroups.2
@@ -138,15 +138,48 @@ See the description of
.IR /proc/ pid /setgroups
in
.BR user_namespaces (7).
+.SH VERSIONS
+.SS C library/kernel differences
+At the kernel level, user IDs and group IDs are a per-thread attribute.
+However, POSIX requires that all threads in a process
+share the same credentials.
+The NPTL threading implementation handles the POSIX requirements by
+providing wrapper functions for
+the various system calls that change process UIDs and GIDs.
+These wrapper functions (including the one for
+.BR setgroups ())
+employ a signal-based technique to ensure
+that when one thread changes credentials,
+all of the other threads in the process also change their credentials.
+For details, see
+.BR nptl (7).
.SH STANDARDS
-.BR getgroups ():
-SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR setgroups ():
+.TP
+.BR getgroups ()
+POSIX.1-2008.
+.TP
+.BR setgroups ()
+None.
+.SH HISTORY
+.TP
+.BR getgroups ()
+SVr4, 4.3BSD, POSIX.1-2001.
+.TP
+.BR setgroups ()
SVr4, 4.3BSD.
Since
.BR setgroups ()
requires privilege, it is not covered by POSIX.1.
+.PP
+The original Linux
+.BR getgroups ()
+system call supported only 16-bit group IDs.
+Subsequently, Linux 2.4 added
+.BR getgroups32 (),
+supporting 32-bit IDs.
+The glibc
+.BR getgroups ()
+wrapper function transparently deals with the variation across kernel versions.
.SH NOTES
A process can have up to
.B NGROUPS_MAX
@@ -176,31 +209,6 @@ cannot be larger than one more than this value.
Since Linux 2.6.4, the maximum number of supplementary group IDs is also
exposed via the Linux-specific read-only file,
.IR /proc/sys/kernel/ngroups_max .
-.PP
-The original Linux
-.BR getgroups ()
-system call supported only 16-bit group IDs.
-Subsequently, Linux 2.4 added
-.BR getgroups32 (),
-supporting 32-bit IDs.
-The glibc
-.BR getgroups ()
-wrapper function transparently deals with the variation across kernel versions.
-.\"
-.SS C library/kernel differences
-At the kernel level, user IDs and group IDs are a per-thread attribute.
-However, POSIX requires that all threads in a process
-share the same credentials.
-The NPTL threading implementation handles the POSIX requirements by
-providing wrapper functions for
-the various system calls that change process UIDs and GIDs.
-These wrapper functions (including the one for
-.BR setgroups ())
-employ a signal-based technique to ensure
-that when one thread changes credentials,
-all of the other threads in the process also change their credentials.
-For details, see
-.BR nptl (7).
.SH SEE ALSO
.BR getgid (2),
.BR setgid (2),
diff --git a/man2/gethostname.2 b/man2/gethostname.2
index bc74610c9..8c32a7f68 100644
--- a/man2/gethostname.2
+++ b/man2/gethostname.2
@@ -109,13 +109,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)).
-.SH STANDARDS
-SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD).
-POSIX.1-2001 and POSIX.1-2008 specify
-.BR gethostname ()
-but not
-.BR sethostname ().
-.SH NOTES
+.SH VERSIONS
SUSv2 guarantees that "Host names are limited to 255 bytes".
POSIX.1 guarantees that "Host names (not including
the terminating null byte) are limited to
@@ -148,6 +142,19 @@ set to
.BR ENAMETOOLONG ;
in this case, a terminating null byte is not included in the returned
.IR name .
+.SH STANDARDS
+.TP
+.BR gethostname ()
+POSIX.1-2008.
+.TP
+.BR sethostname ()
+None.
+.SH HISTORY
+SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD).
+POSIX.1-2001 and POSIX.1-2008 specify
+.BR gethostname ()
+but not
+.BR sethostname ().
.PP
Versions of glibc before glibc 2.2
.\" At least glibc 2.0 and glibc 2.1, older versions not checked
diff --git a/man2/getitimer.2 b/man2/getitimer.2
index f092a2fc4..3af439efa 100644
--- a/man2/getitimer.2
+++ b/man2/getitimer.2
@@ -159,7 +159,32 @@ or (since Linux 2.6.22) one of the
fields in the structure pointed to by
.I new_value
contains a value outside the range [0, 999999].
+.SH VERSIONS
+The standards are silent on the meaning of the call:
+.PP
+.in +4n
+.EX
+setitimer(which, NULL, &old_value);
+.EE
+.in
+.PP
+Many systems (Solaris, the BSDs, and perhaps others)
+treat this as equivalent to:
+.PP
+.in +4n
+.EX
+getitimer(which, &old_value);
+.EE
+.in
+.PP
+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.
+.IR "Don't use this Linux misfeature" :
+it is nonportable and unnecessary.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
POSIX.1-2001, SVr4, 4.4BSD (this call first appeared in 4.2BSD).
POSIX.1-2008 marks
.BR getitimer ()
@@ -194,29 +219,6 @@ and the three interfaces
and
.BR usleep (3)
unspecified.
-.PP
-The standards are silent on the meaning of the call:
-.PP
-.in +4n
-.EX
-setitimer(which, NULL, &old_value);
-.EE
-.in
-.PP
-Many systems (Solaris, the BSDs, and perhaps others)
-treat this as equivalent to:
-.PP
-.in +4n
-.EX
-getitimer(which, &old_value);
-.EE
-.in
-.PP
-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.
-.IR "Don't use this Linux misfeature" :
-it is nonportable and unnecessary.
.SH BUGS
The generation and delivery of a signal are distinct, and
only one instance of each of the signals listed above may be pending
diff --git a/man2/getpagesize.2 b/man2/getpagesize.2
index 39af55619..e1c4a5755 100644
--- a/man2/getpagesize.2
+++ b/man2/getpagesize.2
@@ -37,9 +37,10 @@ returns the number of bytes in a memory page,
where "page" is a fixed-length block,
the unit for memory allocation and file mapping performed by
.BR mmap (2).
-.\" .SH HISTORY
-.\" This call first appeared in 4.2BSD.
.SH STANDARDS
+None.
+.SH HISTORY
+This call first appeared in 4.2BSD.
SVr4, 4.4BSD, SUSv2.
In SUSv2 the
.BR getpagesize ()
diff --git a/man2/getpeername.2 b/man2/getpeername.2
index 0a228fe14..2e7917719 100644
--- a/man2/getpeername.2
+++ b/man2/getpeername.2
@@ -76,9 +76,10 @@ The file descriptor
.I sockfd
does not refer to a socket.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD
-.RB ( getpeername ()
-first appeared in 4.2BSD).
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD
+(first appeared in 4.2BSD).
.SH NOTES
For background on the
.I socklen_t
diff --git a/man2/getpid.2 b/man2/getpid.2
index 49c4b7ec7..9084b261f 100644
--- a/man2/getpid.2
+++ b/man2/getpid.2
@@ -34,26 +34,26 @@ or a "subreaper" process defined via the
operation).
.SH ERRORS
These functions are always successful.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD, SVr4.
-.SH NOTES
-If the caller's parent is in a different PID namespace (see
-.BR pid_namespaces (7)),
+.SH VERSIONS
+On Alpha, instead of a pair of
+.BR getpid ()
+and
.BR getppid ()
-returns 0.
-.PP
-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).
-This contrasts with the kernel thread ID (TID),
-which is unique for each thread.
-For further details, see
-.BR gettid (2)
-and the discussion of the
-.B CLONE_THREAD
-flag in
-.BR clone (2).
-.\"
+system calls, a single
+.BR getxpid ()
+system call is provided, which returns a pair of PID and parent PID.
+The glibc
+.BR getpid ()
+and
+.BR getppid ()
+wrapper functions transparently deal with this.
+See
+.BR syscall (2)
+for details regarding register mapping.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD, SVr4.
.SS C library/kernel differences
From glibc 2.3.4 up to and including glibc 2.24,
the glibc wrapper function for
@@ -119,22 +119,23 @@ calls to
always invoke the actual system call, rather than returning a cached value.
.\" FIXME .
.\" Review progress of https://bugzilla.redhat.com/show_bug.cgi?id=1469757
-.PP
-On Alpha, instead of a pair of
-.BR getpid ()
-and
-.BR getppid ()
-system calls, a single
-.BR getxpid ()
-system call is provided, which returns a pair of PID and parent PID.
-The glibc
-.BR getpid ()
-and
+.SH NOTES
+If the caller's parent is in a different PID namespace (see
+.BR pid_namespaces (7)),
.BR getppid ()
-wrapper functions transparently deal with this.
-See
-.BR syscall (2)
-for details regarding register mapping.
+returns 0.
+.PP
+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).
+This contrasts with the kernel thread ID (TID),
+which is unique for each thread.
+For further details, see
+.BR gettid (2)
+and the discussion of the
+.B CLONE_THREAD
+flag in
+.BR clone (2).
.SH SEE ALSO
.BR clone (2),
.BR fork (2),
diff --git a/man2/getpriority.2 b/man2/getpriority.2
index 75f8b5fc4..d27d7f955 100644
--- a/man2/getpriority.2
+++ b/man2/getpriority.2
@@ -147,7 +147,9 @@ and
.I who
values specified.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008,
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001,
SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD).
.SH NOTES
For further details on the nice value, see
diff --git a/man2/getrandom.2 b/man2/getrandom.2
index fb5db32bd..dbd23a0a6 100644
--- a/man2/getrandom.2
+++ b/man2/getrandom.2
@@ -155,12 +155,11 @@ An invalid flag was specified in
The glibc wrapper function for
.BR getrandom ()
determined that the underlying kernel does not implement this system call.
-.SH VERSIONS
-.BR getrandom ()
-was introduced in Linux 3.17.
-Support was added in glibc 2.25.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 3.17,
+glibc 2.25.
.SH NOTES
For an overview and comparison of the various interfaces that
can be used to obtain randomness, see
diff --git a/man2/getresuid.2 b/man2/getresuid.2
index da441d17f..b107238c7 100644
--- a/man2/getresuid.2
+++ b/man2/getresuid.2
@@ -40,17 +40,13 @@ is set to indicate the error.
.B EFAULT
One of the arguments specified an address outside the calling program's
address space.
-.SH VERSIONS
-These system calls were added on Linux 2.1.44.
-.PP
-The prototypes are given since glibc 2.3.2,
-provided
-.B _GNU_SOURCE
-is defined.
.SH STANDARDS
-These calls are nonstandard;
-they also appear on HP-UX and some of the BSDs.
-.SH NOTES
+None.
+These calls also appear on HP-UX and some of the BSDs.
+.SH HISTORY
+Linux 2.1.44,
+glibc 2.3.2.
+.PP
The original Linux
.BR getresuid ()
and
diff --git a/man2/getrlimit.2 b/man2/getrlimit.2
index fdcc9c96f..3b923ca2a 100644
--- a/man2/getrlimit.2
+++ b/man2/getrlimit.2
@@ -559,18 +559,15 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR prlimit ()
-system call is available since Linux 2.6.36.
-Library support is available since glibc 2.13.
.SH STANDARDS
-.BR getrlimit (),
-.BR setrlimit ():
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.PP
-.BR prlimit ():
-Linux-specific.
+.TP
+.BR getrlimit ()
+.TQ
+.BR setrlimit ()
+POSIX.1-2008.
+.TP
+.BR prlimit ()
+Linux.
.PP
.B RLIMIT_MEMLOCK
and
@@ -587,6 +584,16 @@ it is nevertheless present on most implementations.
and
.B RLIMIT_SIGPENDING
are Linux-specific.
+.SH HISTORY
+.TP
+.BR getrlimit ()
+.TQ
+.BR setrlimit ()
+POSIX.1-2001, SVr4, 4.3BSD.
+.TP
+.BR prlimit ()
+Linux 2.6.36,
+glibc 2.13.
.SH NOTES
A child process created via
.BR fork (2)
diff --git a/man2/getrusage.2 b/man2/getrusage.2
index cbf8b2c32..f8b3b3591 100644
--- a/man2/getrusage.2
+++ b/man2/getrusage.2
@@ -199,7 +199,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.PP
POSIX.1 specifies
.BR getrusage (),
but specifies only the fields
@@ -209,9 +210,8 @@ and
.PP
.B RUSAGE_THREAD
is Linux-specific.
-.SH NOTES
-Resource usage metrics are preserved across an
-.BR execve (2).
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.PP
Before Linux 2.6.9, if the disposition of
.B SIGCHLD
@@ -239,6 +239,9 @@ All new applications should be written using
(Since Linux 2.33, glibc no longer provides an
.BR vtimes ()
implementation.)
+.SH NOTES
+Resource usage metrics are preserved across an
+.BR execve (2).
.PP
See also the description of
.IR /proc/ pid /stat
diff --git a/man2/getsid.2 b/man2/getsid.2
index 3afccbd9d..eccbd47b1 100644
--- a/man2/getsid.2
+++ b/man2/getsid.2
@@ -56,15 +56,16 @@ No process with process ID
.I pid
was found.
.SH VERSIONS
-This system call is available since Linux 2.0.
+Linux does not return
+.BR EPERM .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+Linux 2.0.
.\" Linux has this system call since Linux 1.3.44.
.\" There is libc support since libc 5.2.19.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
.SH NOTES
-Linux does not return
-.BR EPERM .
-.PP
See
.BR credentials (7)
for a description of sessions and session IDs.
diff --git a/man2/getsockname.2 b/man2/getsockname.2
index 331dadaee..f21f43cb5 100644
--- a/man2/getsockname.2
+++ b/man2/getsockname.2
@@ -70,9 +70,10 @@ The file descriptor
.I sockfd
does not refer to a socket.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD
-.RB ( getsockname ()
-first appeared in 4.2BSD).
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD
+(first appeared in 4.2BSD).
.\" SVr4 documents additional ENOMEM
.\" and ENOSR error codes.
.SH NOTES
diff --git a/man2/getsockopt.2 b/man2/getsockopt.2
index d209413a4..503101296 100644
--- a/man2/getsockopt.2
+++ b/man2/getsockopt.2
@@ -148,8 +148,10 @@ The file descriptor
.I sockfd
does not refer to a socket.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008,
-SVr4, 4.4BSD (these system calls first appeared in 4.2BSD).
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001,
+SVr4, 4.4BSD (first appeared in 4.2BSD).
.\" SVr4 documents additional ENOMEM and ENOSR error codes, but does
.\" not document the
.\" .BR SO_SNDLOWAT ", " SO_RCVLOWAT ", " SO_SNDTIMEO ", " SO_RCVTIMEO
diff --git a/man2/gettid.2 b/man2/gettid.2
index ba721da48..c1fa3006f 100644
--- a/man2/gettid.2
+++ b/man2/gettid.2
@@ -32,18 +32,11 @@ in
On success, returns the thread ID of the calling thread.
.SH ERRORS
This call is always successful.
-.SH VERSIONS
-The
-.BR gettid ()
-system call first appeared in Linux 2.4.11.
-Library support was added in glibc 2.30.
-(Earlier glibc versions did not provide a wrapper for this system call,
-necessitating the use of
-.BR syscall (2).)
.SH STANDARDS
-.BR gettid ()
-is Linux-specific and should not be used in programs that
-are intended to be portable.
+Linux.
+.SH HISTORY
+Linux 2.4.11,
+glibc 2.30.
.SH NOTES
The thread ID returned by this call is not the same thing as a
POSIX thread ID (i.e., the opaque value returned by
diff --git a/man2/gettimeofday.2 b/man2/gettimeofday.2
index d7f1dbe2b..9d134fa49 100644
--- a/man2/gettimeofday.2
+++ b/man2/gettimeofday.2
@@ -169,7 +169,20 @@ The calling process has insufficient privilege to call
under Linux the
.B CAP_SYS_TIME
capability is required.
+.SH VERSIONS
+.SS C library/kernel differences
+On some architectures, an implementation of
+.BR gettimeofday ()
+is provided in the
+.BR vdso (7).
.SH STANDARDS
+.TP
+.BR gettimeofday ()
+POSIX.1-2008 (obsolete).
+.TP
+.BR settimeofday ()
+None.
+.SH HISTORY
SVr4, 4.3BSD.
POSIX.1-2001 describes
.BR gettimeofday ()
@@ -180,31 +193,12 @@ POSIX.1-2008 marks
as obsolete, recommending the use of
.BR clock_gettime (2)
instead.
-.SH NOTES
-The time returned by
-.BR gettimeofday ()
-.I is
-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
-Macros for operating on
-.I timeval
-structures are described in
-.BR timeradd (3).
.PP
Traditionally, the fields of
.I struct timeval
were of type
.IR long .
.\"
-.SS C library/kernel differences
-On some architectures, an implementation of
-.BR gettimeofday ()
-is provided in the
-.BR vdso (7).
-.\"
.SS The tz_dsttime field
On a non-Linux kernel, with glibc, the
.I tz_dsttime
@@ -264,6 +258,19 @@ this period is determined by unpredictable political
decisions.
So this method of representing timezones
has been abandoned.
+.SH NOTES
+The time returned by
+.BR gettimeofday ()
+.I is
+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
+Macros for operating on
+.I timeval
+structures are described in
+.BR timeradd (3).
.SH SEE ALSO
.BR date (1),
.BR adjtimex (2),
diff --git a/man2/getuid.2 b/man2/getuid.2
index 2ae5c73bb..a5f3d6fe5 100644
--- a/man2/getuid.2
+++ b/man2/getuid.2
@@ -29,9 +29,10 @@ and never modify
.\" 0000511: getuid and friends should not modify errno
.IR errno .
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
-.SS History
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
+.PP
In UNIX\ V6 the
.BR getuid ()
call returned
diff --git a/man2/getunwind.2 b/man2/getunwind.2
index 99eae7121..1a2cc3ebc 100644
--- a/man2/getunwind.2
+++ b/man2/getunwind.2
@@ -75,12 +75,11 @@ fails with the error
.B EFAULT
if the unwind info can't be stored in the space specified by
.IR buf .
-.SH VERSIONS
-This system call is available since Linux 2.4.
.SH STANDARDS
-This system call is Linux-specific,
-and is available only on the IA-64 architecture.
-.SH NOTES
+Linux on IA-64.
+.SH HISTORY
+Linux 2.4.
+.PP
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 82d8c711d..ab8342181 100644
--- a/man2/getxattr.2
+++ b/man2/getxattr.2
@@ -118,11 +118,11 @@ buffer is too small to hold the result.
In addition, the errors documented in
.BR stat (2)
can also occur.
-.SH VERSIONS
-These system calls have been available since Linux 2.4;
-glibc support is provided since glibc 2.3.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.4,
+glibc 2.3.
.\" .SH AUTHORS
.\" Andreas Gruenbacher,
.\" .RI < a.gruenbacher@computer.org >
diff --git a/man2/idle.2 b/man2/idle.2
index 37b936816..689183025 100644
--- a/man2/idle.2
+++ b/man2/idle.2
@@ -16,7 +16,7 @@ idle \- make process 0 idle
.nf
.B #include <unistd.h>
.PP
-.B int idle(void);
+.B [[deprecated]] int idle(void);
.fi
.SH DESCRIPTION
.BR idle ()
@@ -38,8 +38,7 @@ never returns for process 0, and always returns \-1 for a user process.
.TP
.B EPERM
Always, for a user process.
-.SH VERSIONS
-Since Linux 2.3.13, this system call does not exist anymore.
.SH STANDARDS
-This function is Linux-specific, and should not be used in programs
-intended to be portable.
+Linux.
+.SH HISTORY
+Removed in Linux 2.3.13.
diff --git a/man2/init_module.2 b/man2/init_module.2
index 0deb15ac4..8d4831abb 100644
--- a/man2/init_module.2
+++ b/man2/init_module.2
@@ -244,15 +244,13 @@ fails and
is set to the value returned by the
.I init
function.
-.SH VERSIONS
-.BR finit_module ()
-is available since Linux 3.8.
.SH STANDARDS
-.BR init_module ()
-and
+Linux.
+.SH HISTORY
+.TP
.BR finit_module ()
-are Linux-specific.
-.SH NOTES
+Linux 3.8.
+.PP
The
.BR init_module ()
system call is not supported by glibc.
@@ -263,15 +261,6 @@ it is (before glibc 2.23) sufficient to
manually declare the interface in your code;
alternatively, you can invoke the system call using
.BR syscall (2).
-.PP
-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
-See the Linux kernel source file
-.I include/linux/module.h
-for some useful background information.
.SS Linux 2.4 and earlier
In Linux 2.4 and earlier, the
.BR init_module ()
@@ -336,6 +325,15 @@ and
are expected to point within the module body and be
initialized as appropriate for kernel space, that is, relocated with
the rest of the module.
+.SH NOTES
+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
+See the Linux kernel source file
+.I include/linux/module.h
+for some useful background information.
.SH SEE ALSO
.BR create_module (2),
.BR delete_module (2),
diff --git a/man2/inotify_add_watch.2 b/man2/inotify_add_watch.2
index 7d60c8bd9..548d7c924 100644
--- a/man2/inotify_add_watch.2
+++ b/man2/inotify_add_watch.2
@@ -122,10 +122,10 @@ contains
and
.I pathname
is not a directory.
-.SH VERSIONS
-Inotify was merged into the 2.6.13 Linux kernel.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.13.
.SH EXAMPLES
See
.BR inotify (7).
diff --git a/man2/inotify_init.2 b/man2/inotify_init.2
index 4f24543ef..cce298f6a 100644
--- a/man2/inotify_init.2
+++ b/man2/inotify_init.2
@@ -80,15 +80,17 @@ The system-wide limit on the total number of open files has been reached.
.TP
.B ENOMEM
Insufficient kernel memory is available.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR inotify_init ()
-first appeared in Linux 2.6.13;
-library support was added in glibc 2.4.
+Linux 2.6.13,
+glibc 2.4.
+.TP
.BR inotify_init1 ()
-was added in Linux 2.6.27;
-library support was added in glibc 2.9.
-.SH STANDARDS
-These system calls are Linux-specific.
+Linux 2.6.27,
+glibc 2.9.
.SH SEE ALSO
.BR inotify_add_watch (2),
.BR inotify_rm_watch (2),
diff --git a/man2/inotify_rm_watch.2 b/man2/inotify_rm_watch.2
index 6ec0fd667..e3dddf905 100644
--- a/man2/inotify_rm_watch.2
+++ b/man2/inotify_rm_watch.2
@@ -50,10 +50,10 @@ The watch descriptor
is not valid; or
.I fd
is not an inotify file descriptor.
-.SH VERSIONS
-Inotify was merged into the 2.6.13 Linux kernel.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.13.
.SH SEE ALSO
.BR inotify_add_watch (2),
.BR inotify_init (2),
diff --git a/man2/io_cancel.2 b/man2/io_cancel.2
index b5ad9cd2b..5df4fb091 100644
--- a/man2/io_cancel.2
+++ b/man2/io_cancel.2
@@ -11,7 +11,7 @@ Standard C library
.PP
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
-see NOTES.
+see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/aio_abi.h>" " /* Definition of needed types */"
@@ -29,7 +29,7 @@ The wrapper function provided by
uses a different type for the
.I ctx_id
argument.
-See NOTES.
+See VERSIONS.
.PP
The
.BR io_cancel ()
@@ -50,7 +50,7 @@ completion queue.
On success,
.BR io_cancel ()
returns 0.
-For the failure return, see NOTES.
+For the failure return, see VERSIONS.
.SH ERRORS
.TP
.B EAGAIN
@@ -66,12 +66,6 @@ The AIO context specified by \fIctx_id\fP is invalid.
.BR io_cancel ()
is not implemented on this architecture.
.SH VERSIONS
-The asynchronous I/O system calls first appeared in Linux 2.5.
-.SH STANDARDS
-.BR io_cancel ()
-is Linux-specific and should not be used
-in programs that are intended to be portable.
-.SH NOTES
You probably want to use the
.BR io_cancel ()
wrapper function provided by
@@ -98,6 +92,10 @@ then the return value follows the usual conventions for
indicating an error: \-1, with
.I errno
set to a (positive) value that indicates the error.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.
.SH SEE ALSO
.BR io_destroy (2),
.BR io_getevents (2),
diff --git a/man2/io_destroy.2 b/man2/io_destroy.2
index 783d57397..a94600c5f 100644
--- a/man2/io_destroy.2
+++ b/man2/io_destroy.2
@@ -30,7 +30,7 @@ The wrapper function provided by
uses a different type for the
.I ctx_id
argument.
-See NOTES.
+See VERSIONS.
.PP
The
.BR io_destroy ()
@@ -44,7 +44,7 @@ that could not be canceled, and will destroy the
On success,
.BR io_destroy ()
returns 0.
-For the failure return, see NOTES.
+For the failure return, see VERSIONS.
.SH ERRORS
.TP
.B EFAULT
@@ -57,12 +57,6 @@ The AIO context specified by \fIctx_id\fP is invalid.
.BR io_destroy ()
is not implemented on this architecture.
.SH VERSIONS
-The asynchronous I/O system calls first appeared in Linux 2.5.
-.SH STANDARDS
-.BR io_destroy ()
-is Linux-specific and should not be used in programs
-that are intended to be portable.
-.SH NOTES
You probably want to use the
.BR io_destroy ()
wrapper function provided by
@@ -89,6 +83,10 @@ then the return value follows the usual conventions for
indicating an error: \-1, with
.I errno
set to a (positive) value that indicates the error.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.
.SH SEE ALSO
.BR io_cancel (2),
.BR io_getevents (2),
diff --git a/man2/io_getevents.2 b/man2/io_getevents.2
index 489a6a8aa..0f7c7eea6 100644
--- a/man2/io_getevents.2
+++ b/man2/io_getevents.2
@@ -8,6 +8,10 @@ io_getevents \- read asynchronous I/O events from the completion queue
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
+.PP
+Alternatively, Asynchronous I/O library
+.RI ( libaio ", " \-laio );
+see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/aio_abi.h>" " /* Definition of " *io_* " types */"
@@ -32,7 +36,7 @@ The wrapper function provided by
uses a different type for the
.I ctx_id
argument.
-See NOTES.
+See VERSIONS.
.PP
The
.BR io_getevents ()
@@ -67,7 +71,7 @@ It may also be a nonzero value less than
.IR min_nr ,
if the call was interrupted by a signal handler.
.PP
-For the failure return, see NOTES.
+For the failure return, see VERSIONS.
.SH ERRORS
.TP
.B EFAULT
@@ -86,12 +90,6 @@ out of range.
.BR io_getevents ()
is not implemented on this architecture.
.SH VERSIONS
-The asynchronous I/O system calls first appeared in Linux 2.5.
-.SH STANDARDS
-.BR io_getevents ()
-is Linux-specific and should not be used in
-programs that are intended to be portable.
-.SH NOTES
You probably want to use the
.BR io_getevents ()
wrapper function provided by
@@ -118,6 +116,10 @@ then the return value follows the usual conventions for
indicating an error: \-1, with
.I errno
set to a (positive) value that indicates the error.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.
.SH BUGS
An invalid
.I ctx_id
diff --git a/man2/io_setup.2 b/man2/io_setup.2
index 006f4964f..2c3a760bd 100644
--- a/man2/io_setup.2
+++ b/man2/io_setup.2
@@ -11,7 +11,7 @@ Standard C library
.PP
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
-see NOTES.
+see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/aio_abi.h>" " /* Defines needed types */"
@@ -20,7 +20,7 @@ see NOTES.
.fi
.PP
.IR Note :
-There is no glibc wrapper for this system call; see NOTES.
+There is no glibc wrapper for this system call; see VERSIONS.
.SH DESCRIPTION
.IR Note :
this page describes the raw Linux system call interface.
@@ -29,7 +29,7 @@ The wrapper function provided by
uses a different type for the
.I ctx_idp
argument.
-See NOTES.
+See VERSIONS.
.PP
The
.BR io_setup ()
@@ -46,7 +46,7 @@ with the resulting handle.
On success,
.BR io_setup ()
returns 0.
-For the failure return, see NOTES.
+For the failure return, see VERSIONS.
.SH ERRORS
.TP
.B EAGAIN
@@ -71,12 +71,6 @@ Insufficient kernel resources are available.
.BR io_setup ()
is not implemented on this architecture.
.SH VERSIONS
-The asynchronous I/O system calls first appeared in Linux 2.5.
-.SH STANDARDS
-.BR io_setup ()
-is Linux-specific and should not be used in programs
-that are intended to be portable.
-.SH NOTES
glibc does not provide a wrapper for this system call.
You could invoke it using
.BR syscall (2).
@@ -106,6 +100,10 @@ then the return value follows the usual conventions for
indicating an error: \-1, with
.I errno
set to a (positive) value that indicates the error.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.
.SH SEE ALSO
.BR io_cancel (2),
.BR io_destroy (2),
diff --git a/man2/io_submit.2 b/man2/io_submit.2
index ab1011ebf..879ae9d4c 100644
--- a/man2/io_submit.2
+++ b/man2/io_submit.2
@@ -12,7 +12,7 @@ Standard C library
.PP
Alternatively, Asynchronous I/O library
.RI ( libaio ", " \-laio );
-see NOTES.
+see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/aio_abi.h>" " /* Defines needed types */"
@@ -22,7 +22,7 @@ see NOTES.
.fi
.PP
.IR Note :
-There is no glibc wrapper for this system call; see NOTES.
+There is no glibc wrapper for this system call; see VERSIONS.
.SH DESCRIPTION
.IR Note :
this page describes the raw Linux system call interface.
@@ -31,7 +31,7 @@ The wrapper function provided by
uses a different type for the
.I ctx_id
argument.
-See NOTES.
+See VERSIONS.
.PP
The
.BR io_submit ()
@@ -211,7 +211,7 @@ On success,
.BR io_submit ()
returns the number of \fIiocb\fPs submitted (which may be
less than \fInr\fP, or 0 if \fInr\fP is zero).
-For the failure return, see NOTES.
+For the failure return, see VERSIONS.
.SH ERRORS
.TP
.B EAGAIN
@@ -246,12 +246,6 @@ but the submitting context does not have the
.B CAP_SYS_ADMIN
capability.
.SH VERSIONS
-The asynchronous I/O system calls first appeared in Linux 2.5.
-.SH STANDARDS
-.BR io_submit ()
-is Linux-specific and should not be used in
-programs that are intended to be portable.
-.SH NOTES
glibc does not provide a wrapper for this system call.
You could invoke it using
.BR syscall (2).
@@ -281,6 +275,10 @@ then the return value follows the usual conventions for
indicating an error: \-1, with
.I errno
set to a (positive) value that indicates the error.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.
.SH SEE ALSO
.BR io_cancel (2),
.BR io_destroy (2),
diff --git a/man2/ioctl.2 b/man2/ioctl.2
index f33f2c57c..6b55d47c9 100644
--- a/man2/ioctl.2
+++ b/man2/ioctl.2
@@ -94,17 +94,16 @@ The specified request does not apply to the kind of object that the
file descriptor
.I fd
references.
-.SH STANDARDS
-No single standard.
+.SH VERSIONS
Arguments, returns, and semantics of
.BR ioctl ()
vary according to the device driver in question (the call is used as a
catch-all for operations that don't cleanly fit the UNIX stream I/O
model).
-.PP
-The
-.BR ioctl ()
-system call appeared in Version 7 AT&T UNIX.
+.SH STANDARDS
+None.
+.SH HISTORY
+Version\~7 AT&T UNIX.
.SH NOTES
In order to use this call, one needs an open file descriptor.
Often the
diff --git a/man2/ioctl_fat.2 b/man2/ioctl_fat.2
index 24b383f67..d00855095 100644
--- a/man2/ioctl_fat.2
+++ b/man2/ioctl_fat.2
@@ -208,25 +208,24 @@ does not refer to an object in a FAT filesystem.
.PP
For further error values, see
.BR ioctl (2).
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.B VFAT_IOCTL_READDIR_BOTH
-and
+.TQ
.B VFAT_IOCTL_READDIR_SHORT
-first appeared in Linux 2.0.
-.PP
+Linux 2.0.
+.TP
.B FAT_IOCTL_GET_ATTRIBUTES
-and
+.TQ
.B FAT_IOCTL_SET_ATTRIBUTES
-first appeared
.\" just before we got Git history
-in Linux 2.6.12.
-.PP
+Linux 2.6.12.
+.TP
.B FAT_IOCTL_GET_VOLUME_ID
-was introduced in version 3.11
+Linux 3.11.
.\" commit 6e5b93ee55d401f1619092fb675b57c28c9ed7ec
-of the Linux kernel.
-.SH STANDARDS
-This API is Linux-specific.
.SH EXAMPLES
.SS Toggling the archive flag
The following program demonstrates the usage of
diff --git a/man2/ioctl_ficlonerange.2 b/man2/ioctl_ficlonerange.2
index bd6f4220e..7d823dde7 100644
--- a/man2/ioctl_ficlonerange.2
+++ b/man2/ioctl_ficlonerange.2
@@ -110,15 +110,16 @@ Swap files cannot share storage.
.B EXDEV
.IR dest_fd " and " src_fd
are not on the same mounted filesystem.
-.SH VERSIONS
-These ioctl operations first appeared in Linux 4.5.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 4.5.
+.PP
They were previously known as
.B BTRFS_IOC_CLONE
and
.BR BTRFS_IOC_CLONE_RANGE ,
and were private to Btrfs.
-.SH STANDARDS
-This API is Linux-specific.
.SH NOTES
Because a copy-on-write operation requires the allocation of new storage, the
.BR fallocate (2)
diff --git a/man2/ioctl_fideduperange.2 b/man2/ioctl_fideduperange.2
index 117e85d73..34623cf7b 100644
--- a/man2/ioctl_fideduperange.2
+++ b/man2/ioctl_fideduperange.2
@@ -181,19 +181,20 @@ and
.I src_fd
are not on the same mounted filesystem.
.SH VERSIONS
-This ioctl operation first appeared in Linux 4.5.
+Some filesystems may limit the amount of data that can be deduplicated in a
+single call.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 4.5.
+.PP
It was previously known as
.B BTRFS_IOC_FILE_EXTENT_SAME
and was private to Btrfs.
-.SH STANDARDS
-This API is Linux-specific.
.SH NOTES
Because a copy-on-write operation requires the allocation of new storage, the
.BR fallocate (2)
operation may unshare shared blocks to guarantee that subsequent writes will
not fail because of lack of disk space.
-.PP
-Some filesystems may limit the amount of data that can be deduplicated in a
-single call.
.SH SEE ALSO
.BR ioctl (2)
diff --git a/man2/ioctl_fslabel.2 b/man2/ioctl_fslabel.2
index a614c800e..a7c854c6a 100644
--- a/man2/ioctl_fslabel.2
+++ b/man2/ioctl_fslabel.2
@@ -46,17 +46,16 @@ This can appear if the filesystem does not support online label manipulation.
.TP
.B EPERM
The calling process does not have sufficient permissions to set the label.
-.SH VERSIONS
-These
-.BR ioctl (2)
-operations first appeared in Linux 4.18.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 4.18.
+.PP
They were previously known as
.B BTRFS_IOC_GET_FSLABEL
and
.B BTRFS_IOC_SET_FSLABEL
and were private to Btrfs.
-.SH STANDARDS
-This API is Linux-specific.
.SH NOTES
The maximum string length for this interface is
.BR FSLABEL_MAX ,
diff --git a/man2/ioctl_getfsmap.2 b/man2/ioctl_getfsmap.2
index 36d284d45..093f20691 100644
--- a/man2/ioctl_getfsmap.2
+++ b/man2/ioctl_getfsmap.2
@@ -335,13 +335,12 @@ The filesystem does not support this command.
.TP
.B EUCLEAN
The filesystem metadata is corrupt and needs repair.
-.SH VERSIONS
-The
-.B FS_IOC_GETFSMAP
-operation first appeared in Linux 4.12.
.SH STANDARDS
-This API is Linux-specific.
+Linux.
+.PP
Not all filesystems support it.
+.SH HISTORY
+Linux 4.12.
.SH EXAMPLES
See
.I io/fsmap.c
diff --git a/man2/ioctl_iflags.2 b/man2/ioctl_iflags.2
index bf3840ecb..19d246147 100644
--- a/man2/ioctl_iflags.2
+++ b/man2/ioctl_iflags.2
@@ -171,7 +171,7 @@ which is not inheritable, and
.BR FS_DIRSYNC_FL ,
which is inherited only by subdirectories.
.SH STANDARDS
-Inode flags are a nonstandard Linux extension.
+Linux.
.SH NOTES
In order to change the inode flags of a file using the
.B FS_IOC_SETFLAGS
diff --git a/man2/ioctl_ns.2 b/man2/ioctl_ns.2
index b55c4df19..ff2df4835 100644
--- a/man2/ioctl_ns.2
+++ b/man2/ioctl_ns.2
@@ -165,7 +165,7 @@ does not refer to a
.I /proc/[pid]/ns/*
file.
.SH STANDARDS
-Namespaces and the operations described on this page are a Linux-specific.
+Linux.
.SH EXAMPLES
The example shown below uses the
.BR ioctl (2)
diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2
index a78353c54..06e754cea 100644
--- a/man2/ioctl_userfaultfd.2
+++ b/man2/ioctl_userfaultfd.2
@@ -876,9 +876,7 @@ The userfaultfd object has not yet been enabled (via the
.B UFFDIO_API
operation).
.SH STANDARDS
-These
-.BR ioctl (2)
-operations are Linux-specific.
+Linux.
.SH BUGS
In order to detect available userfault features and
enable some subset of those features
diff --git a/man2/ioperm.2 b/man2/ioperm.2
index 3e30159c4..41c451ef1 100644
--- a/man2/ioperm.2
+++ b/man2/ioperm.2
@@ -81,19 +81,7 @@ Out of memory.
.TP
.B EPERM
The calling thread has insufficient privilege.
-.SH STANDARDS
-.BR ioperm ()
-is Linux-specific and should not be used in programs
-intended to be portable.
-.SH NOTES
-The
-.I /proc/ioports
-file shows the I/O ports that are currently allocated on the system.
-.PP
-Before Linux 2.4,
-permissions were not inherited by a child created by
-.BR fork (2).
-.PP
+.SH VERSIONS
glibc has an
.BR ioperm ()
prototype both in
@@ -101,6 +89,16 @@ prototype both in
and in
.IR <sys/perm.h> .
Avoid the latter, it is available on i386 only.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Before Linux 2.4,
+permissions were not inherited by a child created by
+.BR fork (2).
+.SH NOTES
+The
+.I /proc/ioports
+file shows the I/O ports that are currently allocated on the system.
.SH SEE ALSO
.BR iopl (2),
.BR outb (2),
diff --git a/man2/iopl.2 b/man2/iopl.2
index abf1bef67..2ed1d038c 100644
--- a/man2/iopl.2
+++ b/man2/iopl.2
@@ -59,11 +59,7 @@ the
.B CAP_SYS_RAWIO
capability is required to raise the I/O privilege level
above its current value.
-.SH STANDARDS
-.BR iopl ()
-is Linux-specific and should not be used in programs that are
-intended to be portable.
-.SH NOTES
+.SH VERSIONS
.\" Libc5 treats it as a system call and has a prototype in
.\" .IR <unistd.h> .
.\" glibc1 does not have a prototype.
@@ -72,7 +68,9 @@ glibc2 has a prototype both in
and in
.IR <sys/perm.h> .
Avoid the latter, it is available on i386 only.
-.PP
+.SH STANDARDS
+Linux.
+.SH HISTORY
Prior to Linux 5.5
.BR iopl ()
allowed the thread to disable interrupts while running
diff --git a/man2/ioprio_set.2 b/man2/ioprio_set.2
index 8f964af68..3cd15b47d 100644
--- a/man2/ioprio_set.2
+++ b/man2/ioprio_set.2
@@ -188,11 +188,10 @@ No process(es) could be found that matched the specification in
.I which
and
.IR who .
-.SH VERSIONS
-These system calls have been available on Linux since
-kernel 2.6.13.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.13.
.SH NOTES
Two or more processes or threads can share an I/O context.
This will be the case when
diff --git a/man2/ipc.2 b/man2/ipc.2
index ca61cda68..45671dd93 100644
--- a/man2/ipc.2
+++ b/man2/ipc.2
@@ -37,11 +37,7 @@ the other arguments are passed through to the appropriate call.
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 ().
-.SH STANDARDS
-.BR ipc ()
-is Linux-specific, and should not be used in programs
-intended to be portable.
-.SH NOTES
+.SH VERSIONS
On some architectures\[em]for example x86-64 and ARM\[em]there is no
.BR ipc ()
system call; instead,
@@ -49,6 +45,8 @@ system call; instead,
.BR semctl (2),
.BR shmctl (2),
and so on really are implemented as separate system calls.
+.SH STANDARDS
+Linux.
.SH SEE ALSO
.BR msgctl (2),
.BR msgget (2),
diff --git a/man2/kcmp.2 b/man2/kcmp.2
index f9b177f63..7c02b5c44 100644
--- a/man2/kcmp.2
+++ b/man2/kcmp.2
@@ -287,14 +287,11 @@ Process
or
.I pid2
does not exist.
-.SH VERSIONS
-The
-.BR kcmp ()
-system call first appeared in Linux 3.5.
.SH STANDARDS
-.BR kcmp ()
-is Linux-specific and should not be used in programs intended to be portable.
-.SH NOTES
+Linux.
+.SH HISTORY
+Linux 3.5.
+.PP
Before Linux 5.12,
this system call is available only if the kernel is configured with
.BR CONFIG_CHECKPOINT_RESTORE ,
@@ -307,7 +304,7 @@ filesystem; this was deemed to be unsuitable for security reasons.)
Since Linux 5.12,
this system call is also available if the kernel is configured with
.BR CONFIG_KCMP .
-.PP
+.SH NOTES
See
.BR clone (2)
for some background information on the shared resources
diff --git a/man2/kexec_load.2 b/man2/kexec_load.2
index b5a9935db..3063f4364 100644
--- a/man2/kexec_load.2
+++ b/man2/kexec_load.2
@@ -311,15 +311,15 @@ Could not allocate memory.
The caller does not have the
.B CAP_SYS_BOOT
capability.
-.SH VERSIONS
-The
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR kexec_load ()
-system call first appeared in Linux 2.6.13.
-The
+Linux 2.6.13.
+.TP
.BR kexec_file_load ()
-system call first appeared in Linux 3.17.
-.SH STANDARDS
-These system calls are Linux-specific.
+Linux 3.17.
.SH SEE ALSO
.BR reboot (2),
.BR syscall (2),
diff --git a/man2/keyctl.2 b/man2/keyctl.2
index 4ce87dcf3..ef0729de6 100644
--- a/man2/keyctl.2
+++ b/man2/keyctl.2
@@ -14,7 +14,7 @@ Standard C library
.PP
Alternatively, Linux Key Management Utilities
.RI ( libkeyutils ", " \-lkeyutils );
-see NOTES.
+see VERSIONS.
.SH SYNOPSIS
.nf
.BR "#include <linux/keyctl.h>" " /* Definition of " KEY* " constants */"
@@ -1947,10 +1947,6 @@ was
.B KEYCTL_DH_COMPUTE
and the initialization of crypto modules has timed out.
.SH VERSIONS
-This system call first appeared in Linux 2.6.10.
-.SH STANDARDS
-This system call is a nonstandard Linux extension.
-.SH NOTES
A wrapper is provided in the
.I libkeyutils
library.
@@ -1960,6 +1956,10 @@ header file.)
However, rather than using this system call directly,
you probably want to use the various library functions
mentioned in the descriptions of individual operations above.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.6.10.
.SH EXAMPLES
The program below provide subset of the functionality of the
.BR request\-key (8)
diff --git a/man2/kill.2 b/man2/kill.2
index def4a99b6..b3a6e012d 100644
--- a/man2/kill.2
+++ b/man2/kill.2
@@ -100,7 +100,23 @@ has not yet been
.BR wait (2)ed
for.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.SS Linux notes
+Across different kernel versions, Linux has enforced different rules
+for the permissions required for an unprivileged process
+to send a signal to another process.
+.\" In the 0.* kernels things chopped and changed quite
+.\" a bit - MTK, 24 Jul 02
+In Linux 1.0 to 1.2.2, a signal could be sent if the
+effective user ID of the sender matched effective user ID of the target,
+or the real user ID of the sender matched the real user ID of the target.
+From Linux 1.2.3 until 1.3.77, a signal could be sent if the
+effective user ID of the sender matched either the real or effective
+user ID of the target.
+The current rules, which conform to POSIX.1, were adopted
+in Linux 1.3.78.
.SH NOTES
The only signals that can be sent to process ID 1, the
.I init
@@ -125,20 +141,6 @@ at least one
unblocked signal must be delivered to the sending thread before the
.BR kill ()
returns.
-.SS Linux notes
-Across different kernel versions, Linux has enforced different rules
-for the permissions required for an unprivileged process
-to send a signal to another process.
-.\" In the 0.* kernels things chopped and changed quite
-.\" a bit - MTK, 24 Jul 02
-In Linux 1.0 to 1.2.2, a signal could be sent if the
-effective user ID of the sender matched effective user ID of the target,
-or the real user ID of the sender matched the real user ID of the target.
-From Linux 1.2.3 until 1.3.77, a signal could be sent if the
-effective user ID of the sender matched either the real or effective
-user ID of the target.
-The current rules, which conform to POSIX.1, were adopted
-in Linux 1.3.78.
.SH BUGS
In Linux 2.6 up to and including Linux 2.6.7,
there was a bug that meant that when sending signals to a process group,
diff --git a/man2/landlock_add_rule.2 b/man2/landlock_add_rule.2
index 871621348..43a70a2a5 100644
--- a/man2/landlock_add_rule.2
+++ b/man2/landlock_add_rule.2
@@ -118,10 +118,10 @@ has no write access to the underlying ruleset.
.B EFAULT
.I rule_attr
was not a valid address.
-.SH VERSIONS
-Landlock was added in Linux 5.13.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 5.13.
.SH EXAMPLES
See
.BR landlock (7).
diff --git a/man2/landlock_create_ruleset.2 b/man2/landlock_create_ruleset.2
index 8c83813ec..902862f7f 100644
--- a/man2/landlock_create_ruleset.2
+++ b/man2/landlock_create_ruleset.2
@@ -111,10 +111,10 @@ was not a valid address.
Empty accesses (i.e.,
.I attr\->handled_access_fs
is 0).
-.SH VERSIONS
-Landlock was added in Linux 5.13.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 5.13.
.SH EXAMPLES
See
.BR landlock (7).
diff --git a/man2/landlock_restrict_self.2 b/man2/landlock_restrict_self.2
index 1c41bb610..6cf900f0b 100644
--- a/man2/landlock_restrict_self.2
+++ b/man2/landlock_restrict_self.2
@@ -103,10 +103,10 @@ in its user namespace.
.B E2BIG
The maximum number of composed rulesets is reached for the calling thread.
This limit is currently 64.
-.SH VERSIONS
-Landlock was added in Linux 5.13.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 5.13.
.SH EXAMPLES
See
.BR landlock (7).
diff --git a/man2/link.2 b/man2/link.2
index 60b739eba..6271934bd 100644
--- a/man2/link.2
+++ b/man2/link.2
@@ -335,26 +335,6 @@ is an empty string, and
.I olddirfd
refers to a directory.
.SH VERSIONS
-.BR linkat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.SH STANDARDS
-.BR link ():
-SVr4, 4.3BSD, POSIX.1-2001 (but see NOTES), POSIX.1-2008.
-.\" SVr4 documents additional ENOLINK and
-.\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP.
-.\" X/OPEN does not document EFAULT, ENOMEM or EIO.
-.PP
-.BR linkat ():
-POSIX.1-2008.
-.SH NOTES
-Hard links, as created by
-.BR link (),
-cannot span filesystems.
-Use
-.BR symlink (2)
-if this is required.
-.PP
POSIX.1-2001 says that
.BR link ()
should dereference
@@ -385,7 +365,7 @@ is dereferenced if it is a symbolic link.
For precise control over the treatment of symbolic links when
creating a link, use
.BR linkat ().
-.SS glibc notes
+.SS glibc
On older kernels where
.BR linkat ()
is unavailable, the glibc wrapper function falls back to the use of
@@ -405,6 +385,29 @@ that correspond to the
and
.I newdirfd
arguments.
+.SH STANDARDS
+.TP
+.BR link ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR link ()
+SVr4, 4.3BSD, POSIX.1-2001 (but see VERSIONS).
+.\" SVr4 documents additional ENOLINK and
+.\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP.
+.\" X/OPEN does not document EFAULT, ENOMEM or EIO.
+.TP
+.BR linkat ()
+POSIX.1-2008.
+Linux 2.6.16,
+glibc 2.4.
+.SH NOTES
+Hard links, as created by
+.BR link (),
+cannot span filesystems.
+Use
+.BR symlink (2)
+if this is required.
.SH BUGS
On NFS filesystems, the return code may be wrong in case the NFS server
performs the link creation and dies before it can say so.
diff --git a/man2/listen.2 b/man2/listen.2
index 615ded424..482314357 100644
--- a/man2/listen.2
+++ b/man2/listen.2
@@ -90,9 +90,10 @@ The socket is not of a type that supports the
.BR listen ()
operation.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.4BSD
-.RB ( listen ()
-first appeared in 4.2BSD).
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.4BSD
+(first appeared in 4.2BSD).
.SH NOTES
To accept connections, the following steps are performed:
.RS 4
diff --git a/man2/listxattr.2 b/man2/listxattr.2
index f1580573f..3387c6493 100644
--- a/man2/listxattr.2
+++ b/man2/listxattr.2
@@ -133,11 +133,11 @@ buffer is too small to hold the result.
In addition, the errors documented in
.BR stat (2)
can also occur.
-.SH VERSIONS
-These system calls have been available since Linux 2.4;
-glibc support is provided since glibc 2.3.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.4,
+glibc 2.3.
.\" .SH AUTHORS
.\" Andreas Gruenbacher,
.\" .RI < a.gruenbacher@computer.org >
diff --git a/man2/llseek.2 b/man2/llseek.2
index 49b580853..d317ed1e1 100644
--- a/man2/llseek.2
+++ b/man2/llseek.2
@@ -80,13 +80,12 @@ Problem with copying results to user space.
.B EINVAL
.I whence
is invalid.
-.SH STANDARDS
-This function is Linux-specific, and should not be used in programs
-intended to be portable.
-.SH NOTES
+.SH VERSIONS
You probably want to use the
.BR lseek (2)
wrapper function instead.
+.SH STANDARDS
+Linux.
.SH SEE ALSO
.BR lseek (2),
.BR open (2),
diff --git a/man2/lookup_dcookie.2 b/man2/lookup_dcookie.2
index d15146507..82c1ef3a7 100644
--- a/man2/lookup_dcookie.2
+++ b/man2/lookup_dcookie.2
@@ -65,14 +65,14 @@ required to look up cookie values.
.TP
.B ERANGE
The buffer was not large enough to hold the path of the directory entry.
-.SH VERSIONS
-Available since Linux 2.5.43.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.43.
+.PP
The
.B ENAMETOOLONG
-error return was added in Linux 2.5.70.
-.SH STANDARDS
-.BR lookup_dcookie ()
-is Linux-specific.
+error was added in Linux 2.5.70.
.SH NOTES
.BR lookup_dcookie ()
is a special-purpose system call, currently used only by the
diff --git a/man2/lseek.2 b/man2/lseek.2
index 8b184cece..ae46244af 100644
--- a/man2/lseek.2
+++ b/man2/lseek.2
@@ -205,8 +205,17 @@ The resulting file offset cannot be represented in an
.B ESPIPE
.I fd
is associated with a pipe, socket, or FIFO.
+.SH VERSIONS
+On Linux, using
+.BR lseek ()
+on a terminal device fails with the error
+.BR ESPIPE .
+.\" Other systems return the number of written characters,
+.\" using SEEK_SET to set the counter. (Of written characters.)
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.PP
.B SEEK_DATA
and
@@ -230,20 +239,9 @@ then a
moves the file offset to the end of the file, regardless of the use of
.BR lseek ().
.PP
-The
-.I off_t
-data type is a signed integer data type specified by POSIX.1.
-.PP
Some devices are incapable of seeking and POSIX does not specify which
devices must support
.BR lseek ().
-.PP
-On Linux, using
-.BR lseek ()
-on a terminal device fails with the error
-\fBESPIPE\fP.
-.\" Other systems return the number of written characters,
-.\" using SEEK_SET to set the counter. (Of written characters.)
.SH SEE ALSO
.BR dup (2),
.BR fallocate (2),
diff --git a/man2/madvise.2 b/man2/madvise.2
index 9b4652a63..46fd8763b 100644
--- a/man2/madvise.2
+++ b/man2/madvise.2
@@ -838,15 +838,6 @@ be created using the
flag described elsewhere in this page)
was encountered.
.SH VERSIONS
-Since Linux 3.18,
-.\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb
-support for this system call is optional,
-depending on the setting of the
-.B CONFIG_ADVISE_SYSCALLS
-configuration option.
-.SH STANDARDS
-.BR madvise ()
-is not specified by any standards.
Versions of this system call, implementing a wide variety of
.I advice
values, exist on many other implementations.
@@ -865,8 +856,7 @@ with constants
and
.BR POSIX_MADV_DONTNEED ,
and so on, with behavior close to the similarly named flags listed above.
-.SH NOTES
-.SS Linux notes
+.SS Linux
The Linux implementation requires that the address
.I addr
be page-aligned, and allows
@@ -883,10 +873,17 @@ from the system call, as it should).
will return zero iff
.I advice
is supported by the kernel and can be relied on to probe for support.
-.\" .SH HISTORY
-.\" The
-.\" .BR madvise ()
-.\" function first appeared in 4.4BSD.
+.SH STANDARDS
+None.
+.SH HISTORY
+First appeared in 4.4BSD.
+.PP
+Since Linux 3.18,
+.\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb
+support for this system call is optional,
+depending on the setting of the
+.B CONFIG_ADVISE_SYSCALLS
+configuration option.
.SH SEE ALSO
.BR getrlimit (2),
.BR memfd_secret (2),
diff --git a/man2/mbind.2 b/man2/mbind.2
index 5eecb11f6..d540bbe23 100644
--- a/man2/mbind.2
+++ b/man2/mbind.2
@@ -420,12 +420,24 @@ flag and the caller does not have the
.B CAP_SYS_NICE
privilege.
.\" ---------------------------------------------------------------
-.SH VERSIONS
-The
-.BR mbind ()
-system call was added in Linux 2.6.7.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.7.
+.PP
+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
+Before Linux 5.7.
+.\" commit dcf1763546d76c372f3136c8d6b2b6e77f140cf0
+.B MPOL_MF_STRICT
+was ignored on huge page mappings.
+.PP
+.B MPOL_MF_MOVE
+and
+.B MPOL_MF_MOVE_ALL
+are available only on Linux 2.6.16 and later.
.SH NOTES
For information on library support, see
.BR numa (7).
@@ -468,20 +480,6 @@ with an empty set of nodes.
This method will work for
.BR set_mempolicy (2),
as well.
-.PP
-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
-Before Linux 5.7.
-.\" commit dcf1763546d76c372f3136c8d6b2b6e77f140cf0
-.B MPOL_MF_STRICT
-was ignored on huge page mappings.
-.PP
-.B MPOL_MF_MOVE
-and
-.B MPOL_MF_MOVE_ALL
-are available only on Linux 2.6.16 and later.
.SH SEE ALSO
.BR get_mempolicy (2),
.BR getcpu (2),
diff --git a/man2/membarrier.2 b/man2/membarrier.2
index 390c774b9..1df4249b5 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -280,27 +280,18 @@ system call is not implemented by this kernel.
.B EPERM
The current process was not registered prior to using private expedited
commands.
-.SH VERSIONS
-The
-.BR membarrier ()
-system call was added in Linux 4.3.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 4.3.
.PP
-Before Linux 5.10, the prototype for
-.BR membarrier ()
-was:
+Before Linux 5.10, the prototype was:
.PP
.in +4n
.EX
.BI "int membarrier(int " cmd ", int " flags );
.EE
.in
-.SH STANDARDS
-.BR membarrier ()
-is Linux-specific.
-.\" .SH SEE ALSO
-.\" FIXME See if the following syscalls make it into Linux 4.15 or later
-.\" .BR cpu_opv (2),
-.\" .BR rseq (2)
.SH NOTES
A memory barrier instruction is part of the instruction set of
architectures with weakly ordered memory models.
@@ -463,3 +454,7 @@ main(int argc, char *argv[])
}
.EE
.in
+.\" .SH SEE ALSO
+.\" FIXME See if the following syscalls make it into Linux 4.15 or later
+.\" .BR cpu_opv (2),
+.\" .BR rseq (2)
diff --git a/man2/memfd_create.2 b/man2/memfd_create.2
index 786b7c41f..fcf2fab4d 100644
--- a/man2/memfd_create.2
+++ b/man2/memfd_create.2
@@ -184,11 +184,6 @@ The system-wide limit on the total number of open files has been reached.
.TP
.B ENOMEM
There was insufficient memory to create a new anonymous file.
-.SH VERSIONS
-The
-.BR memfd_create ()
-system call first appeared in Linux 3.17;
-glibc support was added in glibc 2.27.
.TP
.B EPERM
The
@@ -203,9 +198,10 @@ group; see the description of
in
.BR proc (5).
.SH STANDARDS
-The
-.BR memfd_create ()
-system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 3.17,
+glibc 2.27.
.SH NOTES
.\" See also http://lwn.net/Articles/593918/
.\" and http://lwn.net/Articles/594919/ and http://lwn.net/Articles/591108/
diff --git a/man2/memfd_secret.2 b/man2/memfd_secret.2
index 1e68a0bd2..552985c51 100644
--- a/man2/memfd_secret.2
+++ b/man2/memfd_secret.2
@@ -132,14 +132,10 @@ There was insufficient memory to create a new anonymous file.
is not implemented on this architecture,
or has not been enabled on the kernel command-line with
.BR secretmem_enable =1.
-.SH VERSIONS
-The
-.BR memfd_secret ()
-system call first appeared in Linux 5.14.
.SH STANDARDS
-The
-.BR memfd_secret ()
-system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 5.14.
.SH NOTES
The
.BR memfd_secret ()
diff --git a/man2/migrate_pages.2 b/man2/migrate_pages.2
index e9e95b4f6..babc08b83 100644
--- a/man2/migrate_pages.2
+++ b/man2/migrate_pages.2
@@ -134,12 +134,10 @@ No process matching
.I pid
could be found.
.\" FIXME Document the other errors that can occur for migrate_pages()
-.SH VERSIONS
-The
-.BR migrate_pages ()
-system call first appeared in Linux 2.6.16.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.16.
.SH NOTES
For information on library support, see
.BR numa (7).
diff --git a/man2/mincore.2 b/man2/mincore.2
index 9f967ad7d..167841aac 100644
--- a/man2/mincore.2
+++ b/man2/mincore.2
@@ -117,18 +117,16 @@ to
+
.I length
contained unmapped memory.
-.SH VERSIONS
-Available since Linux 2.3.99pre1 and glibc 2.2.
.SH STANDARDS
-.BR mincore ()
-is not specified in POSIX.1,
-and it is not available on all UNIX implementations.
-.\" It is on at least NetBSD, FreeBSD, OpenBSD, Solaris 8,
-.\" AIX 5.1, SunOS 4.1
-.\" .SH HISTORY
-.\" The
-.\" .BR mincore ()
-.\" function first appeared in 4.4BSD.
+None.
+.SH HISTORY
+Linux 2.3.99pre1,
+glibc 2.2.
+.PP
+First appeared in 4.4BSD.
+.PP
+NetBSD, FreeBSD, OpenBSD, Solaris 8,
+AIX 5.1, SunOS 4.1.
.SH BUGS
Before Linux 2.6.21,
.BR mincore ()
diff --git a/man2/mkdir.2 b/man2/mkdir.2
index b1339a49a..3d643fbbf 100644
--- a/man2/mkdir.2
+++ b/man2/mkdir.2
@@ -204,25 +204,10 @@ does not support the creation of directories.
.I pathname
refers to a file on a read-only filesystem.
.SH VERSIONS
-.BR mkdirat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.SH STANDARDS
-.BR mkdir ():
-SVr4, BSD, POSIX.1-2001, POSIX.1-2008.
-.\" SVr4 documents additional EIO, EMULTIHOP
-.PP
-.BR mkdirat ():
-POSIX.1-2008.
-.SH NOTES
Under Linux, apart from the permission bits, the
.B S_ISVTX
.I mode
bit is also honored.
-.PP
-There are many infelicities in the protocol underlying NFS.
-Some of these affect
-.BR mkdir ().
.SS glibc notes
On older kernels where
.BR mkdirat ()
@@ -236,6 +221,21 @@ glibc constructs a pathname based on the symbolic link in
that corresponds to the
.I dirfd
argument.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR mkdir ()
+SVr4, BSD, POSIX.1-2001.
+.\" SVr4 documents additional EIO, EMULTIHOP
+.TP
+.BR mkdirat ()
+Linux 2.6.16,
+glibc 2.4.
+.SH NOTES
+There are many infelicities in the protocol underlying NFS.
+Some of these affect
+.BR mkdir ().
.SH SEE ALSO
.BR mkdir (1),
.BR chmod (2),
diff --git a/man2/mknod.2 b/man2/mknod.2
index 25657a9d1..30f256c44 100644
--- a/man2/mknod.2
+++ b/man2/mknod.2
@@ -241,19 +241,6 @@ does not support the type of node requested.
.I pathname
refers to a file on a read-only filesystem.
.SH VERSIONS
-.BR mknodat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.SH STANDARDS
-.BR mknod ():
-SVr4, 4.4BSD, POSIX.1-2001 (but see below), POSIX.1-2008.
-.\" The Linux version differs from the SVr4 version in that it
-.\" does not require root permission to create pipes, also in that no
-.\" EMULTIHOP, ENOLINK, or EINTR error is documented.
-.PP
-.BR mknodat ():
-POSIX.1-2008.
-.SH NOTES
POSIX.1-2001 says: "The only portable use of
.BR mknod ()
is to create a FIFO-special file.
@@ -278,7 +265,21 @@ cannot be used to create directories.
One should make directories with
.BR mkdir (2).
.\" and one should make UNIX domain sockets with socket(2) and bind(2).
-.PP
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR mknod ()
+SVr4, 4.4BSD, POSIX.1-2001 (but see VERSIONS).
+.\" The Linux version differs from the SVr4 version in that it
+.\" does not require root permission to create pipes, also in that no
+.\" EMULTIHOP, ENOLINK, or EINTR error is documented.
+.TP
+.BR mknodat ()
+Linux 2.6.16,
+glibc 2.4.
+POSIX.1-2008.
+.SH NOTES
There are many infelicities in the protocol underlying NFS.
Some of these affect
.BR mknod ()
diff --git a/man2/mlock.2 b/man2/mlock.2
index 3b3c7e2a3..d36e8680c 100644
--- a/man2/mlock.2
+++ b/man2/mlock.2
@@ -256,19 +256,49 @@ to perform the requested operation.
(Linux 2.6.8 and earlier) The caller was not privileged
.RB ( CAP_IPC_LOCK ).
.SH VERSIONS
-.BR mlock2 ()
-is available since Linux 4.4;
-glibc support was added in glibc 2.27.
-.SH STANDARDS
+.SS Linux
+Under Linux,
.BR mlock (),
-.BR munlock (),
-.BR mlockall (),
+.BR mlock2 (),
and
-.BR munlockall ():
-POSIX.1-2001, POSIX.1-2008, SVr4.
+.BR munlock ()
+automatically round
+.I addr
+down to the nearest page boundary.
+However, the POSIX.1 specification of
+.BR mlock ()
+and
+.BR munlock ()
+allows an implementation to require that
+.I addr
+is page aligned, so portable applications should ensure this.
.PP
+The
+.I VmLck
+field of the Linux-specific
+.I /proc/[pid]/status
+file shows how many kilobytes of memory the process with ID
+.I PID
+has locked using
+.BR mlock (),
+.BR mlock2 (),
+.BR mlockall (),
+and
+.BR mmap (2)
+.BR MAP_LOCKED .
+.SH STANDARDS
+.TP
+.BR mlock ()
+.TQ
+.BR munlock ()
+.TQ
+.BR mlockall ()
+.TQ
+.BR munlockall ()
+POSIX.1-2008.
+.TP
.BR mlock2 ()
-is Linux specific.
+Linux.
.PP
On POSIX systems on which
.BR mlock ()
@@ -294,6 +324,20 @@ is defined in \fI<unistd.h>\fP 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 it to 1.
+.SH HISTORY
+.TP
+.BR mlock ()
+.TQ
+.BR munlock ()
+.TQ
+.BR mlockall ()
+.TQ
+.BR munlockall ()
+POSIX.1-2001, POSIX.1-2008, SVr4.
+.TP
+.BR mlock2 ()
+Linux 4.4,
+glibc 2.27.
.SH NOTES
Memory locking has two main applications: real-time algorithms and
high-security data processing.
@@ -392,36 +436,6 @@ flag allow efficient memory locking for applications that deal with
large mappings where only a (small) portion of pages in the mapping are touched.
In such cases, locking all of the pages in a mapping would incur
a significant penalty for memory locking.
-.SS Linux notes
-Under Linux,
-.BR mlock (),
-.BR mlock2 (),
-and
-.BR munlock ()
-automatically round
-.I addr
-down to the nearest page boundary.
-However, the POSIX.1 specification of
-.BR mlock ()
-and
-.BR munlock ()
-allows an implementation to require that
-.I addr
-is page aligned, so portable applications should ensure this.
-.PP
-The
-.I VmLck
-field of the Linux-specific
-.I /proc/[pid]/status
-file shows how many kilobytes of memory the process with ID
-.I PID
-has locked using
-.BR mlock (),
-.BR mlock2 (),
-.BR mlockall (),
-and
-.BR mmap (2)
-.BR MAP_LOCKED .
.SS Limits and permissions
In Linux 2.6.8 and earlier,
a process must be privileged
diff --git a/man2/mmap.2 b/man2/mmap.2
index 6a9395d2c..04f117e02 100644
--- a/man2/mmap.2
+++ b/man2/mmap.2
@@ -665,41 +665,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD.
-.\" SVr4 documents additional error codes ENXIO and ENODEV.
-.\" SUSv2 documents additional error codes EMFILE and EOVERFLOW.
-.PP
-On POSIX systems on which
-.BR mmap (),
-.BR msync (2),
-and
-.BR munmap ()
-are available,
-.B _POSIX_MAPPED_FILES
-is defined in \fI<unistd.h>\fP to a value greater than 0.
-(See also
-.BR sysconf (3).)
-.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
-.\" -1: unavailable, 0: ask using sysconf().
-.\" glibc defines it to 1.
-.SH NOTES
-Memory mapped by
-.BR mmap ()
-is preserved across
-.BR fork (2),
-with the same attributes.
-.PP
-A file is mapped in multiples of the page size.
-For a file that is not
-a multiple of the page size,
-the remaining bytes in the partial page at the end of the mapping
-are zeroed when mapped,
-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
+.SH VERSIONS
On some hardware architectures (e.g., i386),
.B PROT_WRITE
implies
@@ -760,6 +726,57 @@ The relevant flags are:
.BR MAP_POPULATE ,
and
.BR MAP_STACK .
+.SS C library/kernel differences
+This page describes the interface provided by the glibc
+.BR mmap ()
+wrapper function.
+Originally, this function invoked a system call of the same name.
+Since Linux 2.4, that system call has been superseded by
+.BR mmap2 (2),
+and nowadays
+.\" Since around glibc 2.1/2.2, depending on the platform.
+the glibc
+.BR mmap ()
+wrapper function invokes
+.BR mmap2 (2)
+with a suitably adjusted value for
+.IR offset .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD.
+.\" SVr4 documents additional error codes ENXIO and ENODEV.
+.\" SUSv2 documents additional error codes EMFILE and EOVERFLOW.
+.PP
+On POSIX systems on which
+.BR mmap (),
+.BR msync (2),
+and
+.BR munmap ()
+are available,
+.B _POSIX_MAPPED_FILES
+is defined in \fI<unistd.h>\fP to a value greater than 0.
+(See also
+.BR sysconf (3).)
+.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
+.\" -1: unavailable, 0: ask using sysconf().
+.\" glibc defines it to 1.
+.SH NOTES
+Memory mapped by
+.BR mmap ()
+is preserved across
+.BR fork (2),
+with the same attributes.
+.PP
+A file is mapped in multiples of the page size.
+For a file that is not
+a multiple of the page size,
+the remaining bytes in the partial page at the end of the mapping
+are zeroed when mapped,
+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
An application can determine which pages of a mapping are
currently resident in the buffer/page cache using
@@ -860,21 +877,6 @@ and
.I length
must both be a multiple of the underlying huge page size.
.\"
-.SS C library/kernel differences
-This page describes the interface provided by the glibc
-.BR mmap ()
-wrapper function.
-Originally, this function invoked a system call of the same name.
-Since Linux 2.4, that system call has been superseded by
-.BR mmap2 (2),
-and nowadays
-.\" Since around glibc 2.1/2.2, depending on the platform.
-the glibc
-.BR mmap ()
-wrapper function invokes
-.BR mmap2 (2)
-with a suitably adjusted value for
-.IR offset .
.SH BUGS
On Linux, there are no guarantees like those suggested above under
.BR MAP_NORESERVE .
diff --git a/man2/mmap2.2 b/man2/mmap2.2
index 1fd5732ad..dfddef0af 100644
--- a/man2/mmap2.2
+++ b/man2/mmap2.2
@@ -58,11 +58,6 @@ is not a multiple of the system page size.
can also return any of the errors described in
.BR mmap (2).
.SH VERSIONS
-.BR mmap2 ()
-is available since Linux 2.3.31.
-.SH STANDARDS
-This system call is Linux-specific.
-.SH NOTES
On architectures where this system call is present,
the glibc
.BR mmap ()
@@ -78,6 +73,10 @@ is actually the system page size, rather than 4096 bytes.
.\" ia64 can have page sizes ranging from 4 kB to 64 kB.
.\" On cris, it looks like the unit might also be the page size,
.\" which is 8192 bytes. -- mtk, June 2007
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.3.31.
.SH SEE ALSO
.BR getpagesize (2),
.BR mmap (2),
diff --git a/man2/modify_ldt.2 b/man2/modify_ldt.2
index e8ae9c9d0..07f3cddb0 100644
--- a/man2/modify_ldt.2
+++ b/man2/modify_ldt.2
@@ -157,8 +157,7 @@ is 1 or 0x11 and the new LDT entry has invalid values.
.I func
is neither 0, 1, 2, nor 0x11.
.SH STANDARDS
-This call is Linux-specific and should not be used in programs intended
-to be portable.
+Linux.
.SH NOTES
.BR modify_ldt ()
should not be used for thread-local storage, as it slows down context
diff --git a/man2/mount.2 b/man2/mount.2
index a818b89b1..bab18bcae 100644
--- a/man2/mount.2
+++ b/man2/mount.2
@@ -831,7 +831,10 @@ flag.
See
.BR EACCES ,
above.
-.SH VERSIONS
+.\"
+.SH STANDARDS
+Linux.
+.SH HISTORY
The definitions of
.BR MS_DIRSYNC ,
.BR MS_MOVE ,
@@ -844,11 +847,7 @@ The definitions of
and
.B MS_UNBINDABLE
were added to glibc headers in glibc 2.12.
-.\"
-.SH STANDARDS
-This function is Linux-specific and should not be used in
-programs intended to be portable.
-.SH NOTES
+.PP
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.
@@ -884,6 +883,7 @@ Since Linux 2.4 the set-user-ID and set-group-ID bits are
just silently ignored in this case.
.\" The change is in patch-2.4.0-prerelease.
.\"
+.SH NOTES
.SS Mount namespaces
Starting with Linux 2.4.19, Linux provides mount namespaces.
A mount namespace is the set of filesystem mounts that
diff --git a/man2/mount_setattr.2 b/man2/mount_setattr.2
index b171597cf..f89eccbaa 100644
--- a/man2/mount_setattr.2
+++ b/man2/mount_setattr.2
@@ -581,15 +581,13 @@ An attempt was made to add an ID mapping to a mount that is already ID mapped.
The caller does not have
.B CAP_SYS_ADMIN
in the initial user namespace.
-.SH VERSIONS
-.BR mount_setattr ()
-first appeared in Linux 5.12.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 5.12.
.\" commit 7d6beb71da3cc033649d641e1e608713b8220290
.\" commit 2a1867219c7b27f928e2545782b86daaf9ad50bd
.\" commit 9caccd41541a6f7d6279928d9f971f6642c361af
-.SH STANDARDS
-.BR mount_setattr ()
-is Linux-specific.
.SH NOTES
.SS ID-mapped mounts
Creating an ID-mapped mount makes it possible to
diff --git a/man2/move_pages.2 b/man2/move_pages.2
index 1c0851531..c98edf7ff 100644
--- a/man2/move_pages.2
+++ b/man2/move_pages.2
@@ -216,11 +216,10 @@ to another user but did not have privilege to do so
.TP
.B ESRCH
Process does not exist.
-.SH VERSIONS
-.BR move_pages ()
-first appeared in Linux 2.6.18.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.18.
.SH NOTES
For information on library support, see
.BR numa (7).
diff --git a/man2/mprotect.2 b/man2/mprotect.2
index 2bf3098d0..52c14da05 100644
--- a/man2/mprotect.2
+++ b/man2/mprotect.2
@@ -192,12 +192,6 @@ in the middle of a region currently protected as
would result in three mappings:
two read/write mappings at each end and a read-only mapping in the middle.)
.SH VERSIONS
-.BR pkey_mprotect ()
-first appeared in Linux 4.9;
-library support was added in glibc 2.27.
-.SH STANDARDS
-.BR mprotect ():
-POSIX.1-2001, POSIX.1-2008, SVr4.
.\" SVr4 defines an additional error
.\" code EAGAIN. The SVr4 error conditions don't map neatly onto Linux's.
POSIX says that the behavior of
@@ -206,9 +200,6 @@ is unspecified if it is applied to a region of memory that
was not obtained via
.BR mmap (2).
.PP
-.BR pkey_mprotect ()
-is a nonportable Linux extension.
-.SH NOTES
On Linux, it is always permissible to call
.BR mprotect ()
on any address in a process's address space (except for the
@@ -266,6 +257,22 @@ When called this way, the operation of
.BR pkey_mprotect ()
is equivalent to
.BR mprotect ().
+.SH STANDARDS
+.TP
+.BR mprotect ()
+POSIX.1-2008.
+.TP
+.BR pkey_mprotect ()
+Linux.
+.SH HISTORY
+.TP
+.BR mprotect ()
+POSIX.1-2001, SVr4.
+.TP
+.BR pkey_mprotect ()
+Linux 4.9,
+glibc 2.27.
+.SH NOTES
.SH EXAMPLES
.\" sigaction.2 refers to this example
The program below demonstrates the use of
diff --git a/man2/mq_getsetattr.2 b/man2/mq_getsetattr.2
index c53919c66..ebdb42e79 100644
--- a/man2/mq_getsetattr.2
+++ b/man2/mq_getsetattr.2
@@ -25,7 +25,7 @@ For an explanation of how this system call operates,
see the description of
.BR mq_setattr (3).
.SH STANDARDS
-This interface is nonstandard; avoid its use.
+None.
.SH NOTES
Never call it unless you are writing a C library!
.SH SEE ALSO
diff --git a/man2/mremap.2 b/man2/mremap.2
index b8e65cd2f..be215f34d 100644
--- a/man2/mremap.2
+++ b/man2/mremap.2
@@ -243,11 +243,19 @@ was used causing a new mapping to be created that would exceed the
Or, it would exceed the maximum number of allowed mappings.
.RE
.SH STANDARDS
-This call is Linux-specific, and should not be used in programs
-intended to be portable.
+Linux.
+.SH HISTORY
.\" 4.2BSD had a (never actually implemented)
.\" .BR mremap (2)
.\" call with completely different semantics.
+.\" .PP
+Prior to glibc 2.4, glibc did not expose the definition of
+.BR MREMAP_FIXED ,
+and the prototype for
+.BR mremap ()
+did not allow for the
+.I new_address
+argument.
.SH NOTES
.BR mremap ()
changes the
@@ -279,14 +287,6 @@ call will make a best effort to populate the new area but will not fail
with
.B ENOMEM
if the area cannot be populated.
-.PP
-Prior to glibc 2.4, glibc did not expose the definition of
-.BR MREMAP_FIXED ,
-and the prototype for
-.BR mremap ()
-did not allow for the
-.I new_address
-argument.
.\"
.SS MREMAP_DONTUNMAP use cases
Possible applications for
diff --git a/man2/msgctl.2 b/man2/msgctl.2
index ce534dc2a..926f683a9 100644
--- a/man2/msgctl.2
+++ b/man2/msgctl.2
@@ -385,20 +385,10 @@ but the caller is not privileged (Linux: does not have the
.B CAP_SYS_RESOURCE
capability).
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
.\" SVID does not document the EIDRM error condition.
-.SH NOTES
-The
-.BR IPC_INFO ,
-.BR MSG_STAT ,
-and
-.B MSG_INFO
-operations are used by the
-.BR ipcs (1)
-program to provide information on allocated resources.
-In the future these may modified or moved to a
-.I /proc
-filesystem interface.
.PP
Various fields in the \fIstruct msqid_ds\fP were
typed as
@@ -413,6 +403,18 @@ a recompilation under glibc-2.1.91 or later should suffice.
.B IPC_64
flag in
.IR cmd .)
+.SH NOTES
+The
+.BR IPC_INFO ,
+.BR MSG_STAT ,
+and
+.B MSG_INFO
+operations are used by the
+.BR ipcs (1)
+program to provide information on allocated resources.
+In the future these may modified or moved to a
+.I /proc
+filesystem interface.
.SH SEE ALSO
.BR msgget (2),
.BR msgrcv (2),
diff --git a/man2/msgget.2 b/man2/msgget.2
index fb6caee48..60c9aa52d 100644
--- a/man2/msgget.2
+++ b/man2/msgget.2
@@ -168,7 +168,15 @@ number of message queues
.RB ( MSGMNI )
would be exceeded.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.SS Linux
+Until Linux 2.3.20, Linux would return
+.B EIDRM
+for a
+.BR msgget ()
+on a message queue scheduled for deletion.
.SH NOTES
.B IPC_PRIVATE
isn't a flag field but a
@@ -193,12 +201,6 @@ based on available system memory.
Since Linux 3.19, the default value is 32,000.
On Linux, this limit can be read and modified via
.IR /proc/sys/kernel/msgmni .
-.SS Linux notes
-Until Linux 2.3.20, Linux would return
-.B EIDRM
-for a
-.BR msgget ()
-on a message queue scheduled for deletion.
.SH BUGS
The name choice
.B IPC_PRIVATE
diff --git a/man2/msgop.2 b/man2/msgop.2
index 964889ae5..ee4f11419 100644
--- a/man2/msgop.2
+++ b/man2/msgop.2
@@ -450,7 +450,7 @@ were specified in
and this kernel was configured without
.BR CONFIG_CHECKPOINT_RESTORE .
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
.PP
The
.B MSG_EXCEPT
@@ -461,14 +461,16 @@ their definitions can be obtained by defining the
.B _GNU_SOURCE
.\" MSG_COPY since glibc 2.18
feature test macro.
-.SH NOTES
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.PP
The
.I msgp
argument is declared as \fIstruct msgbuf\ *\fP in
glibc 2.0 and 2.1.
It is declared as \fIvoid\ *\fP
in glibc 2.2 and later, as required by SUSv2 and SUSv3.
-.PP
+.SH NOTES
The following limits on message queue resources affect the
.BR msgsnd ()
call:
diff --git a/man2/msync.2 b/man2/msync.2
index e650f7988..4cd38d19a 100644
--- a/man2/msync.2
+++ b/man2/msync.2
@@ -81,31 +81,7 @@ are set in
.TP
.B ENOMEM
The indicated memory (or part of it) was not mapped.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.PP
-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
-On POSIX systems on which
-.BR msync ()
-is available, both
-.B _POSIX_MAPPED_FILES
-and
-.B _POSIX_SYNCHRONIZED_IO
-are defined in
-.I <unistd.h>
-to a value greater than 0.
-(See also
-.BR sysconf (3).)
-.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
-.\" -1: unavailable, 0: ask using sysconf().
-.\" glibc defines them to 1.
-.SH NOTES
+.SH VERSIONS
According to POSIX, either
.B MS_SYNC
or
@@ -132,6 +108,32 @@ or
.B MS_ASYNC
in
.IR flags .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
+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
+On POSIX systems on which
+.BR msync ()
+is available, both
+.B _POSIX_MAPPED_FILES
+and
+.B _POSIX_SYNCHRONIZED_IO
+are defined in
+.I <unistd.h>
+to a value greater than 0.
+(See also
+.BR sysconf (3).)
+.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
+.\" -1: unavailable, 0: ask using sysconf().
+.\" glibc defines them to 1.
.SH SEE ALSO
.BR mmap (2)
.PP
diff --git a/man2/nanosleep.2 b/man2/nanosleep.2
index 12e0cee84..122419296 100644
--- a/man2/nanosleep.2
+++ b/man2/nanosleep.2
@@ -109,27 +109,7 @@ The value in the
field was not in the range [0, 999999999] or
.I tv_sec
was negative.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-If the interval specified in
-.I req
-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
-The fact that
-.BR nanosleep ()
-sleeps for a relative interval can be problematic if the call
-is repeatedly restarted after being interrupted by signals,
-since the time between the interruptions and restarts of the call
-will lead to drift in the time when the sleep finally completes.
-This problem can be avoided by using
-.BR clock_nanosleep (2)
-with an absolute time value.
-.PP
+.SH VERSIONS
POSIX.1 specifies that
.BR nanosleep ()
should measure time against the
@@ -161,7 +141,11 @@ function; ...
Consequently, these time services shall expire when the requested relative
interval elapses, independently of the new or old value of the clock.
.RE
-.SS Old behavior
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
In order to support applications requiring much more precise pauses
(e.g., in order to control some time-critical hardware),
.BR nanosleep ()
@@ -173,6 +157,24 @@ or
.BR SCHED_RR .
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
+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
+The fact that
+.BR nanosleep ()
+sleeps for a relative interval can be problematic if the call
+is repeatedly restarted after being interrupted by signals,
+since the time between the interruptions and restarts of the call
+will lead to drift in the time when the sleep finally completes.
+This problem can be avoided by using
+.BR clock_nanosleep (2)
+with an absolute time value.
.SH BUGS
If a program that catches signals and uses
.BR nanosleep ()
diff --git a/man2/nfsservctl.2 b/man2/nfsservctl.2
index c9ecc069c..7e0996f33 100644
--- a/man2/nfsservctl.2
+++ b/man2/nfsservctl.2
@@ -61,10 +61,10 @@ On success, zero is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
-.SH VERSIONS
-This system call was removed in Linux 3.1.
-Library support was removed in glibc 2.28.
.SH STANDARDS
-This call is Linux-specific.
+Linux.
+.SH HISTORY
+Removed in Linux 3.1.
+Removed in glibc 2.28.
.SH SEE ALSO
.BR nfsd (7)
diff --git a/man2/nice.2 b/man2/nice.2
index c6ba8c752..c97fb0935 100644
--- a/man2/nice.2
+++ b/man2/nice.2
@@ -76,23 +76,7 @@ capability is required.
.B RLIMIT_NICE
resource limit in
.BR setrlimit (2).)
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-However, the raw system call and (g)libc
-(earlier than glibc 2.2.4) return value is nonstandard, see below.
-.\" SVr4 documents an additional
-.\" .B EINVAL
-.\" error code.
-.SH NOTES
-For further details on the nice value, see
-.BR sched (7).
-.PP
-.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).
-.\"
+.SH VERSIONS
.SS C library/kernel differences
POSIX.1 specifies that
.BR nice ()
@@ -107,6 +91,22 @@ Since glibc 2.2.4, the
wrapper function provided by glibc provides conformance to POSIX.1 by calling
.BR getpriority (2)
to obtain the new nice value, which is then returned to the caller.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.\" SVr4 documents an additional
+.\" .B EINVAL
+.\" error code.
+.SH NOTES
+For further details on the nice value, see
+.BR sched (7).
+.PP
+.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).
.SH SEE ALSO
.BR nice (1),
.BR renice (1),
diff --git a/man2/open.2 b/man2/open.2
index aefcae1e6..d9386c48f 100644
--- a/man2/open.2
+++ b/man2/open.2
@@ -1285,19 +1285,133 @@ flag was specified, and an incompatible lease was held on the file
(see
.BR fcntl (2)).
.SH VERSIONS
+The (undefined) effect of
+.B O_RDONLY | O_TRUNC
+varies among implementations.
+On many systems the file is actually truncated.
+.\" Linux 2.0, 2.5: truncate
+.\" Solaris 5.7, 5.8: truncate
+.\" Irix 6.5: truncate
+.\" Tru64 5.1B: truncate
+.\" HP-UX 11.22: truncate
+.\" FreeBSD 4.7: truncate
+.SS Synchronized I/O
+The POSIX.1-2008 "synchronized I/O" option
+specifies different variants of synchronized I/O,
+and specifies the
+.BR open ()
+flags
+.BR O_SYNC ,
+.BR O_DSYNC ,
+and
+.B O_RSYNC
+for controlling the behavior.
+Regardless of whether an implementation supports this option,
+it must at least support the use of
+.B O_SYNC
+for regular files.
+.PP
+Linux implements
+.B O_SYNC
+and
+.BR O_DSYNC ,
+but not
+.BR O_RSYNC .
+Somewhat incorrectly, glibc defines
+.B O_RSYNC
+to have the same value as
+.BR O_SYNC .
+.RB ( O_RSYNC
+is defined in the Linux header file
+.I <asm/fcntl.h>
+on HP PA-RISC, but it is not used.)
+.PP
+.B O_SYNC
+provides synchronized I/O
+.I file
+integrity completion,
+meaning write operations will flush data and all associated metadata
+to the underlying hardware.
+.B O_DSYNC
+provides synchronized I/O
+.I data
+integrity completion,
+meaning write operations will flush data
+to the underlying hardware,
+but will only flush metadata updates that are required
+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
+To understand the difference between the two types of completion,
+consider two pieces of file metadata:
+the file last modification timestamp
+.RI ( st_mtime )
+and the file length.
+All write operations will update the last file modification timestamp,
+but only writes that add data to the end of the
+file will change the file length.
+The last modification timestamp is not needed to ensure that
+a read completes successfully, but the file length is.
+Thus,
+.B O_DSYNC
+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
+Before Linux 2.6.33, Linux implemented only the
+.B O_SYNC
+flag for
+.BR open ().
+However, when that flag was specified,
+most filesystems actually provided the equivalent of synchronized I/O
+.I data
+integrity completion (i.e.,
+.B O_SYNC
+was actually implemented as the equivalent of
+.BR O_DSYNC ).
+.PP
+Since Linux 2.6.33, proper
+.B O_SYNC
+support is provided.
+However, to ensure backward binary compatibility,
+.B O_DSYNC
+was defined with the same value as the historical
+.BR O_SYNC ,
+and
+.B O_SYNC
+was defined as a new (two-bit) flag value that includes the
+.B O_DSYNC
+flag value.
+This ensures that applications compiled against
+new headers get at least
+.B O_DSYNC
+semantics before Linux 2.6.33.
+.\"
+.SS C library/kernel differences
+Since glibc 2.26,
+the glibc wrapper function for
+.BR open ()
+employs the
.BR openat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
+system call, rather than the kernel's
+.BR open ()
+system call.
+For certain architectures, this is also true before glibc 2.26.
+.\"
.SH STANDARDS
-.BR open (),
+.TP
+.BR open ()
+.TQ
.BR creat ()
-SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR openat ():
+.TQ
+.BR openat ()
POSIX.1-2008.
.PP
.BR openat2 (2)
-is Linux-specific.
+Linux.
.PP
The
.BR O_DIRECT ,
@@ -1324,17 +1438,17 @@ with a value greater than or equal to 200809L or
with a value greater than or equal to 700.
In glibc 2.11 and earlier, one obtains the definitions by defining
.BR _GNU_SOURCE .
-.PP
-As noted in
-.BR feature_test_macros (7),
-feature test macros such as
-.BR _POSIX_C_SOURCE ,
-.BR _XOPEN_SOURCE ,
-and
-.B _GNU_SOURCE
-must be defined before including
-.I any
-header files.
+.SH HISTORY
+.TP
+.BR open ()
+.TQ
+.BR creat ()
+SVr4, 4.3BSD, POSIX.1-2001.
+.TP
+.BR openat ()
+POSIX.1-2008.
+Linux 2.6.16,
+glibc 2.4.
.SH NOTES
Under Linux, the
.B O_NONBLOCK
@@ -1345,17 +1459,6 @@ this may be used to open a device in order to get a file descriptor
for use with
.BR ioctl (2).
.PP
-The (undefined) effect of
-.B O_RDONLY | O_TRUNC
-varies among implementations.
-On many systems the file is actually truncated.
-.\" Linux 2.0, 2.5: truncate
-.\" Solaris 5.7, 5.8: truncate
-.\" Irix 6.5: truncate
-.\" Tru64 5.1B: truncate
-.\" HP-UX 11.22: truncate
-.\" FreeBSD 4.7: truncate
-.PP
Note that
.BR open ()
can open device special files, but
@@ -1442,113 +1545,6 @@ operation to test whether two file descriptors
(in the same process or in two different processes)
refer to the same open file description.
.\"
-.\"
-.SS Synchronized I/O
-The POSIX.1-2008 "synchronized I/O" option
-specifies different variants of synchronized I/O,
-and specifies the
-.BR open ()
-flags
-.BR O_SYNC ,
-.BR O_DSYNC ,
-and
-.B O_RSYNC
-for controlling the behavior.
-Regardless of whether an implementation supports this option,
-it must at least support the use of
-.B O_SYNC
-for regular files.
-.PP
-Linux implements
-.B O_SYNC
-and
-.BR O_DSYNC ,
-but not
-.BR O_RSYNC .
-Somewhat incorrectly, glibc defines
-.B O_RSYNC
-to have the same value as
-.BR O_SYNC .
-.RB ( O_RSYNC
-is defined in the Linux header file
-.I <asm/fcntl.h>
-on HP PA-RISC, but it is not used.)
-.PP
-.B O_SYNC
-provides synchronized I/O
-.I file
-integrity completion,
-meaning write operations will flush data and all associated metadata
-to the underlying hardware.
-.B O_DSYNC
-provides synchronized I/O
-.I data
-integrity completion,
-meaning write operations will flush data
-to the underlying hardware,
-but will only flush metadata updates that are required
-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
-To understand the difference between the two types of completion,
-consider two pieces of file metadata:
-the file last modification timestamp
-.RI ( st_mtime )
-and the file length.
-All write operations will update the last file modification timestamp,
-but only writes that add data to the end of the
-file will change the file length.
-The last modification timestamp is not needed to ensure that
-a read completes successfully, but the file length is.
-Thus,
-.B O_DSYNC
-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
-Before Linux 2.6.33, Linux implemented only the
-.B O_SYNC
-flag for
-.BR open ().
-However, when that flag was specified,
-most filesystems actually provided the equivalent of synchronized I/O
-.I data
-integrity completion (i.e.,
-.B O_SYNC
-was actually implemented as the equivalent of
-.BR O_DSYNC ).
-.PP
-Since Linux 2.6.33, proper
-.B O_SYNC
-support is provided.
-However, to ensure backward binary compatibility,
-.B O_DSYNC
-was defined with the same value as the historical
-.BR O_SYNC ,
-and
-.B O_SYNC
-was defined as a new (two-bit) flag value that includes the
-.B O_DSYNC
-flag value.
-This ensures that applications compiled against
-new headers get at least
-.B O_DSYNC
-semantics before Linux 2.6.33.
-.\"
-.SS C library/kernel differences
-Since glibc 2.26,
-the glibc wrapper function for
-.BR open ()
-employs the
-.BR openat ()
-system call, rather than the kernel's
-.BR open ()
-system call.
-For certain architectures, this is also true before glibc 2.26.
-.\"
.SS NFS
There are many infelicities in the protocol underlying NFS, affecting
amongst others
diff --git a/man2/open_by_handle_at.2 b/man2/open_by_handle_at.2
index 20fd4519f..bbdafb76d 100644
--- a/man2/open_by_handle_at.2
+++ b/man2/open_by_handle_at.2
@@ -366,15 +366,15 @@ The specified
is not valid.
This error will occur if, for example, the file has been deleted.
.SH VERSIONS
-These system calls first appeared in Linux 2.6.39.
-Library support is provided since glibc 2.14.
-.SH STANDARDS
-These system calls are nonstandard Linux extensions.
-.PP
FreeBSD has a broadly similar pair of system calls in the form of
.BR getfh ()
and
.BR openfh ().
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.6.39,
+glibc 2.14.
.SH NOTES
A file handle can be generated in one process using
.BR name_to_handle_at ()
diff --git a/man2/openat2.2 b/man2/openat2.2
index 3ffd06ae7..e90211fad 100644
--- a/man2/openat2.2
+++ b/man2/openat2.2
@@ -466,12 +466,11 @@ and an escape from the root during path resolution was detected.
contains
.BR RESOLVE_NO_XDEV ,
and a path component crosses a mount point.
-.SH VERSIONS
-.BR openat2 ()
-first appeared in Linux 5.6.
-.\" commit fddb5d430ad9fa91b49b1d34d0202ffe2fa0e179
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 5.6.
+.\" commit fddb5d430ad9fa91b49b1d34d0202ffe2fa0e179
.PP
The semantics of
.B RESOLVE_BENEATH
diff --git a/man2/outb.2 b/man2/outb.2
index 90bedebd4..11aafcdce 100644
--- a/man2/outb.2
+++ b/man2/outb.2
@@ -68,7 +68,7 @@ to tell the kernel to allow the user space application to access the
I/O ports in question.
Failure to do this will cause the application
to receive a segmentation fault.
-.SH STANDARDS
+.SH VERSIONS
.BR outb ()
and friends are hardware-specific.
The
@@ -77,6 +77,8 @@ argument is passed first and the
.I port
argument is passed second,
which is the opposite order from most DOS implementations.
+.SH STANDARDS
+None.
.SH SEE ALSO
.BR ioperm (2),
.BR iopl (2)
diff --git a/man2/pause.2 b/man2/pause.2
index 1a4f3cb91..7cc7b0b8d 100644
--- a/man2/pause.2
+++ b/man2/pause.2
@@ -40,7 +40,9 @@ is set to
.B EINTR
a signal was caught and the signal-catching function returned.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR kill (2),
.BR select (2),
diff --git a/man2/pciconfig_read.2 b/man2/pciconfig_read.2
index 64de37f53..1f5d512a3 100644
--- a/man2/pciconfig_read.2
+++ b/man2/pciconfig_read.2
@@ -115,6 +115,8 @@ capability.
This does not apply to
.BR pciconfig_iobase ().
.SH STANDARDS
-These calls are Linux-specific, available since Linux 2.0.26/2.1.11.
+Linux.
+.SH HISTORY
+Linux 2.0.26/2.1.11.
.SH SEE ALSO
.BR capabilities (7)
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index 4d3469c38..ee65d20d0 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -3816,18 +3816,15 @@ and (since Linux 3.13) setting a kernel function-trace tracepoint.
.TP
.B ESRCH
Returned if attempting to attach to a process that does not exist.
-.SH VERSION
+.SH STANDARDS
+Linux.
+.SH HISTORY
.BR perf_event_open ()
was introduced in Linux 2.6.31 but was called
.\" commit 0793a61d4df8daeac6492dbf8d2f3e5713caae5e
.BR perf_counter_open ().
It was renamed in Linux 2.6.32.
.\" commit cdd6c482c9ff9c55475ee7392ec8f672eddb7be6
-.SH STANDARDS
-This
-.BR perf_event_open ()
-system call Linux-specific
-and should not be used in programs intended to be portable.
.SH NOTES
The official way of knowing if
.BR perf_event_open ()
diff --git a/man2/perfmonctl.2 b/man2/perfmonctl.2
index 1adbba492..d6d36a0a0 100644
--- a/man2/perfmonctl.2
+++ b/man2/perfmonctl.2
@@ -16,7 +16,7 @@ perfmonctl \- interface to IA-64 performance monitoring unit
.fi
.PP
.IR Note :
-There is no glibc wrapper for this system call; see NOTES.
+There is no glibc wrapper for this system call; see HISTORY.
.SH DESCRIPTION
The IA-64-specific
.BR perfmonctl ()
@@ -174,15 +174,13 @@ returns zero when the operation is successful.
On error, \-1 is returned and
.I errno
is set to indicate the error.
-.SH VERSIONS
-.BR perfmonctl ()
-was added in Linux 2.4;
-.\" commit ecf5b72d5f66af843f189dfe9ce31598c3e48ad7
-it was removed in Linux 5.10.
.SH STANDARDS
-.BR perfmonctl ()
-is Linux-specific and is available only on the IA-64 architecture.
-.SH NOTES
+Linux on IA-64.
+.SH HISTORY
+Added in Linux 2.4;
+.\" commit ecf5b72d5f66af843f189dfe9ce31598c3e48ad7
+removed in Linux 5.10.
+.PP
This system call was broken for many years,
and ultimately removed in Linux 5.10.
.PP
diff --git a/man2/personality.2 b/man2/personality.2
index 4be1b97f5..caca709b8 100644
--- a/man2/personality.2
+++ b/man2/personality.2
@@ -243,15 +243,13 @@ is set to indicate the error.
.TP
.B EINVAL
The kernel was unable to change the personality.
-.SH VERSIONS
-This system call first appeared in Linux 1.1.20
-(and thus first in a stable kernel release with Linux 1.2.0);
-library support was added in glibc 2.3.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 1.1.20,
+.\" (and thus first in a stable kernel release with Linux 1.2.0)
+glibc 2.3.
.\" personality wrapper first appeared in glibc 1.90,
.\" <sys/personality.h> was added later in glibc 2.2.91.
-.SH STANDARDS
-.BR personality ()
-is Linux-specific and should not be used in programs intended to
-be portable.
.SH SEE ALSO
.BR setarch (8)
diff --git a/man2/pidfd_getfd.2 b/man2/pidfd_getfd.2
index 097ec27e8..fe4831b58 100644
--- a/man2/pidfd_getfd.2
+++ b/man2/pidfd_getfd.2
@@ -103,13 +103,11 @@ The process referred to by
.I pidfd
does not exist
(i.e., it has terminated and been waited on).
-.SH VERSIONS
-.BR pidfd_getfd ()
-first appeared in Linux 5.6.
-.\" commit 8649c322f75c96e7ced2fec201e123b2b073bf09
.SH STANDARDS
-.BR pidfd_getfd ()
-is Linux specific.
+Linux.
+.SH HISTORY
+Linux 5.6.
+.\" commit 8649c322f75c96e7ced2fec201e123b2b073bf09
.SH NOTES
For a description of PID file descriptors, see
.BR pidfd_open (2).
diff --git a/man2/pidfd_open.2 b/man2/pidfd_open.2
index f0ba89cdb..68e4c23fa 100644
--- a/man2/pidfd_open.2
+++ b/man2/pidfd_open.2
@@ -80,12 +80,10 @@ Insufficient kernel memory was available.
The process specified by
.I pid
does not exist.
-.SH VERSIONS
-.BR pidfd_open ()
-first appeared in Linux 5.3.
.SH STANDARDS
-.BR pidfd_open ()
-is Linux specific.
+Linux.
+.SH HISTORY
+Linux 5.3.
.SH NOTES
The following code sequence can be used to obtain a file descriptor
for the child of
diff --git a/man2/pidfd_send_signal.2 b/man2/pidfd_send_signal.2
index 30ccfa446..d44a369f3 100644
--- a/man2/pidfd_send_signal.2
+++ b/man2/pidfd_send_signal.2
@@ -118,12 +118,10 @@ is invalid (see
.B ESRCH
The target process does not exist
(i.e., it has terminated and been waited on).
-.SH VERSIONS
-.BR pidfd_send_signal ()
-first appeared in Linux 5.1.
.SH STANDARDS
-.BR pidfd_send_signal ()
-is Linux specific.
+Linux.
+.SH HISTORY
+Linux 5.1.
.SH NOTES
.SS PID file descriptors
The
diff --git a/man2/pipe.2 b/man2/pipe.2
index 26e7df626..adf6d73bf 100644
--- a/man2/pipe.2
+++ b/man2/pipe.2
@@ -193,16 +193,6 @@ and support for notifications
.RB ( CONFIG_WATCH_QUEUE )
is not compiled into the kernel.
.SH VERSIONS
-.BR pipe2 ()
-was added in Linux 2.6.27;
-glibc support is available starting with glibc 2.9.
-.SH STANDARDS
-.BR pipe ():
-POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR pipe2 ()
-is Linux-specific.
-.SH NOTES
.\" See http://math-atlas.sourceforge.net/devel/assembly/64.psabi.1.33.ps.Z
.\" for example, section 3.2.1 "Registers and the Stack Frame".
The System V ABI on some architectures allows the use of more than one register
@@ -219,6 +209,21 @@ wrapper function transparently deals with this.
See
.BR syscall (2)
for information regarding registers used for storing second file descriptor.
+.SH STANDARDS
+.TP
+.BR pipe ()
+POSIX.1-2008.
+.TP
+.BR pipe2 ()
+Linux.
+.SH HISTORY
+.TP
+.BR pipe ()
+POSIX.1-2001.
+.TP
+.BR pipe2 ()
+Linux 2.6.27,
+glibc 2.9.
.SH EXAMPLES
.\" fork.2 refers to this example program.
The following program creates a pipe, and then
diff --git a/man2/pivot_root.2 b/man2/pivot_root.2
index ee5b1fae6..6fa240c06 100644
--- a/man2/pivot_root.2
+++ b/man2/pivot_root.2
@@ -151,12 +151,10 @@ is a mount point and has the propagation type
The calling process does not have the
.B CAP_SYS_ADMIN
capability.
-.SH VERSIONS
-.BR pivot_root ()
-was introduced in Linux 2.3.41.
.SH STANDARDS
-.BR pivot_root ()
-is Linux-specific and hence is not portable.
+Linux.
+.SH HISTORY
+Linux 2.3.41.
.SH NOTES
A command-line interface for this system call is provided by
.BR pivot_root (8).
diff --git a/man2/pkey_alloc.2 b/man2/pkey_alloc.2
index d6d33e8d6..f0c9149f7 100644
--- a/man2/pkey_alloc.2
+++ b/man2/pkey_alloc.2
@@ -83,18 +83,11 @@ does not support protection keys.
Applications should always be prepared to handle this error, since
factors outside of the application's control can reduce the number
of available pkeys.
-.SH VERSIONS
-.BR pkey_alloc ()
-and
-.BR pkey_free ()
-were added in Linux 4.9;
-library support was added in glibc 2.27.
.SH STANDARDS
-The
-.BR pkey_alloc ()
-and
-.BR pkey_free ()
-system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 4.9,
+glibc 2.27.
.SH NOTES
.BR pkey_alloc ()
is always safe to call regardless of whether or not the operating system
diff --git a/man2/poll.2 b/man2/poll.2
index be6de0607..4e26e62d4 100644
--- a/man2/poll.2
+++ b/man2/poll.2
@@ -358,39 +358,6 @@ is invalid (negative).
.B ENOMEM
Unable to allocate memory for kernel data structures.
.SH VERSIONS
-The
-.BR poll ()
-system call was introduced in Linux 2.1.23.
-On older kernels that lack this system call,
-the glibc
-.BR poll ()
-wrapper function provides emulation using
-.BR select (2).
-.PP
-The
-.BR ppoll ()
-system call was added in Linux 2.6.16.
-The
-.BR ppoll ()
-library call was added in glibc 2.4.
-.SH STANDARDS
-.BR poll ()
-conforms to POSIX.1-2001 and POSIX.1-2008.
-.BR ppoll ()
-is Linux-specific.
-.\" FIXME .
-.\" ppoll() is proposed for inclusion in POSIX:
-.\" https://www.austingroupbugs.net/view.php?id=1263
-.\" NetBSD 3.0 has a pollts() which is like Linux ppoll().
-.SH NOTES
-The operation of
-.BR poll ()
-and
-.BR ppoll ()
-is not affected by the
-.B O_NONBLOCK
-flag.
-.PP
On some other UNIX systems,
.\" Darwin, according to a report by Jeremy Sequoia, relayed by Josh Triplett
.BR poll ()
@@ -412,11 +379,6 @@ with the value \-1 for use as a
for
.BR poll ().
This constant is not provided in glibc.
-.PP
-For a discussion of what may happen if a file descriptor being monitored by
-.BR poll ()
-is closed in another thread, see
-.BR select (2).
.SS C library/kernel differences
The Linux
.BR ppoll ()
@@ -448,6 +410,45 @@ See
.BR sigprocmask (2)
for a discussion on the differences between the kernel and the libc
notion of the sigset.
+.SH STANDARDS
+.TP
+.BR poll ()
+POSIX.1-2008.
+.TP
+.BR ppoll ()
+Linux.
+.\" FIXME .
+.\" ppoll() is proposed for inclusion in POSIX:
+.\" https://www.austingroupbugs.net/view.php?id=1263
+.\" NetBSD 3.0 has a pollts() which is like Linux ppoll().
+.SH HISTORY
+.TP
+.BR poll ()
+POSIX.1-2001.
+Linux 2.1.23.
+.IP
+On older kernels that lack this system call,
+the glibc
+.BR poll ()
+wrapper function provides emulation using
+.BR select (2).
+.TP
+.BR ppoll ()
+Linux 2.6.16,
+glibc 2.4.
+.SH NOTES
+The operation of
+.BR poll ()
+and
+.BR ppoll ()
+is not affected by the
+.B O_NONBLOCK
+flag.
+.PP
+For a discussion of what may happen if a file descriptor being monitored by
+.BR poll ()
+is closed in another thread, see
+.BR select (2).
.SH BUGS
See the discussion of spurious readiness notifications under the
BUGS section of
diff --git a/man2/posix_fadvise.2 b/man2/posix_fadvise.2
index 57c65c810..64ba39227 100644
--- a/man2/posix_fadvise.2
+++ b/man2/posix_fadvise.2
@@ -127,47 +127,11 @@ Linux returned
.B EINVAL
in this case.)
.SH VERSIONS
-Kernel support first appeared in Linux 2.5.60;
-the underlying system call is called
-.BR fadvise64 ().
-.\" of fadvise64_64()
-Library support has been provided since glibc 2.2,
-via the wrapper function
-.BR posix_fadvise ().
-.PP
-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.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-Note that the type of the
-.I len
-argument was changed from
-.I size_t
-to
-.I off_t
-in POSIX.1-2001 TC1.
-.SH NOTES
Under Linux, \fBPOSIX_FADV_NORMAL\fP sets the readahead window to the
default size for the backing device; \fBPOSIX_FADV_SEQUENTIAL\fP doubles
this size, and \fBPOSIX_FADV_RANDOM\fP disables file readahead entirely.
These changes affect the entire file, not just the specified region
(but other open file handles to the same file are unaffected).
-.PP
-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
-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),
-and then applying
-.BR mincore (2)
-to the mapping.
.SS C library/kernel differences
The name of the wrapper function in the C library is
.BR posix_fadvise ().
@@ -210,6 +174,45 @@ hidden from applications by the glibc
.BR posix_fadvise ()
wrapper function,
which invokes the appropriate architecture-specific system call.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
+Kernel support first appeared in Linux 2.5.60;
+the underlying system call is called
+.BR fadvise64 ().
+.\" of fadvise64_64()
+Library support has been provided since glibc 2.2,
+via the wrapper function
+.BR posix_fadvise ().
+.PP
+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
+The type of the
+.I len
+argument was changed from
+.I size_t
+to
+.I off_t
+in POSIX.1-2001 TC1.
+.SH NOTES
+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
+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),
+and then applying
+.BR mincore (2)
+to the mapping.
.SH BUGS
Before Linux 2.6.6, if
.I len
diff --git a/man2/prctl.2 b/man2/prctl.2
index 2212331af..bfd52b50c 100644
--- a/man2/prctl.2
+++ b/man2/prctl.2
@@ -2502,12 +2502,6 @@ is not
nor
.BR PR_SPEC_DISABLE_NOEXEC .
.SH VERSIONS
-The
-.BR prctl ()
-system call was introduced in Linux 2.1.57.
-.\" The library interface was added in glibc 2.0.6
-.SH STANDARDS
-This call is Linux-specific.
IRIX has a
.BR prctl ()
system call (also introduced in Linux 2.1.44
@@ -2524,6 +2518,11 @@ and options 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.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.1.57,
+glibc 2.0.6
.SH SEE ALSO
.BR signal (2),
.BR core (5)
diff --git a/man2/pread.2 b/man2/pread.2
index 9a9763323..5d4e0969a 100644
--- a/man2/pread.2
+++ b/man2/pread.2
@@ -88,27 +88,16 @@ to any error specified for
.BR write (2)
or
.BR lseek (2).
-.SH VERSIONS
-The
-.BR pread ()
-and
-.BR pwrite ()
-system calls were added in Linux 2.1.60;
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
+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
.BR lseek (2)
on older kernels without the system calls) was added in glibc 2.1.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-The
-.BR pread ()
-and
-.BR pwrite ()
-system calls are especially useful in multithreaded applications.
-They allow multiple threads to perform I/O on the same file descriptor
-without being affected by changes to the file offset by other threads.
-.\"
.SS C library/kernel differences
On Linux, the underlying system calls were renamed
in Linux 2.6:
@@ -130,6 +119,14 @@ On some 32-bit architectures,
the calling signature for these system calls differ,
for the reasons described in
.BR syscall (2).
+.SH NOTES
+The
+.BR pread ()
+and
+.BR pwrite ()
+system calls are especially useful in multithreaded applications.
+They allow multiple threads to perform I/O on the same file descriptor
+without being affected by changes to the file offset by other threads.
.SH BUGS
POSIX requires that opening a file with the
.B O_APPEND
diff --git a/man2/process_madvise.2 b/man2/process_madvise.2
index 92878286b..1cee5be24 100644
--- a/man2/process_madvise.2
+++ b/man2/process_madvise.2
@@ -183,18 +183,17 @@ See
for
.IR advice -specific
errors.
-.SH VERSIONS
-This system call first appeared in Linux 5.10.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 5.10.
.\" commit ecb8ac8b1f146915aa6b96449b66dd48984caacc
+.PP
Support for this system call is optional,
depending on the setting of the
.B CONFIG_ADVISE_SYSCALLS
configuration option.
-.SH STANDARDS
-The
-.BR process_madvise ()
-system call is Linux-specific.
-.SH NOTES
+.PP
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 712a19dd2..4ce4ec86a 100644
--- a/man2/process_vm_readv.2
+++ b/man2/process_vm_readv.2
@@ -249,11 +249,11 @@ The caller does not have permission to access the address space of the process
No process with ID
.I pid
exists.
-.SH VERSIONS
-These system calls were added in Linux 3.2.
-Support is provided since glibc 2.15.
.SH STANDARDS
-These system calls are nonstandard Linux extensions.
+Linux.
+.SH HISTORY
+Linux 3.2,
+glibc 2.15.
.SH NOTES
The data transfers performed by
.BR process_vm_readv ()
diff --git a/man2/ptrace.2 b/man2/ptrace.2
index 9737b3825..34152c09c 100644
--- a/man2/ptrace.2
+++ b/man2/ptrace.2
@@ -2435,7 +2435,14 @@ 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).
.SH STANDARDS
+None.
+.SH HISTORY
SVr4, 4.3BSD.
+.PP
+Before Linux 2.6.26,
+.\" See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
+.BR init (1),
+the process with PID 1, may not be traced.
.SH NOTES
Although arguments to
.BR ptrace ()
@@ -2452,11 +2459,6 @@ setting unused/ignored arguments to
or
.IR "(void\ *)\ 0".
.PP
-Before Linux 2.6.26,
-.\" See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
-.BR init (1),
-the process with PID 1, may not be traced.
-.PP
A tracees parent continues to be the tracer even if that tracer calls
.BR execve (2).
.PP
diff --git a/man2/query_module.2 b/man2/query_module.2
index 6d6317f92..9cc7349db 100644
--- a/man2/query_module.2
+++ b/man2/query_module.2
@@ -162,14 +162,12 @@ is set to the minimum size needed.
.BR query_module ()
is not supported in this version of the kernel
(e.g., Linux 2.6 or later).
+.SH STANDARDS
+Linux.
.SH VERSIONS
-This system call is present only up until Linux 2.4;
-it was removed in Linux 2.6.
+Removed in Linux 2.6.
.\" Removed in Linux 2.5.48
-.SH STANDARDS
-.BR query_module ()
-is Linux-specific.
-.SH NOTES
+.PP
Some of the information that was formerly available via
.BR query_module ()
can be obtained from
diff --git a/man2/read.2 b/man2/read.2
index 13f999e7b..0430b9d1e 100644
--- a/man2/read.2
+++ b/man2/read.2
@@ -164,6 +164,8 @@ refers to a directory.
Other errors may occur, depending on the object connected to
.IR fd .
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, 4.3BSD, POSIX.1-2001.
.SH NOTES
The types
diff --git a/man2/readahead.2 b/man2/readahead.2
index 11f850726..d69795979 100644
--- a/man2/readahead.2
+++ b/man2/readahead.2
@@ -64,20 +64,15 @@ does not refer to a file type to which
.BR readahead ()
can be applied.
.SH VERSIONS
-The
-.BR readahead ()
-system call appeared in Linux 2.4.13;
-glibc support has been provided since glibc 2.3.
-.SH STANDARDS
-The
-.BR readahead ()
-system call is Linux-specific, and its use should be avoided
-in portable applications.
-.SH NOTES
On some 32-bit architectures,
the calling signature for this system call differs,
for the reasons described in
.BR syscall (2).
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.4.13,
+glibc 2.3.
.SH BUGS
.BR readahead ()
attempts to schedule the reads in the background and return immediately.
diff --git a/man2/readdir.2 b/man2/readdir.2
index 39cc4377a..106f0e68f 100644
--- a/man2/readdir.2
+++ b/man2/readdir.2
@@ -100,9 +100,7 @@ No such directory.
.TP
.B ENOTDIR
File descriptor does not refer to a directory.
-.SH STANDARDS
-This system call is Linux-specific.
-.SH NOTES
+.SH VERSIONS
You will need to define the
.I old_linux_dirent
structure yourself.
@@ -111,6 +109,8 @@ However, probably you should use
instead.
.PP
This system call does not exist on x86-64.
+.SH STANDARDS
+Linux.
.SH SEE ALSO
.BR getdents (2),
.BR readdir (3)
diff --git a/man2/readlink.2 b/man2/readlink.2
index de158da7e..c911c4a7b 100644
--- a/man2/readlink.2
+++ b/man2/readlink.2
@@ -186,20 +186,20 @@ A component of the path prefix is not a directory.
is relative and
.I dirfd
is a file descriptor referring to a file other than a directory.
-.SH VERSIONS
-.BR readlinkat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
.SH STANDARDS
-.BR readlink ():
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR readlink ()
4.4BSD
-.RB ( readlink ()
-first appeared in 4.2BSD),
+(first appeared in 4.2BSD),
POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR readlinkat ():
+.TP
+.BR readlinkat ()
POSIX.1-2008.
-.SH NOTES
+Linux 2.6.16,
+glibc 2.4.
+.PP
Up to and including glibc 2.4, the return type of
.BR readlink ()
was declared as
@@ -207,7 +207,20 @@ was declared as
Nowadays, the return type is declared as
.IR ssize_t ,
as (newly) required in POSIX.1-2001.
-.PP
+.SS glibc
+On older kernels where
+.BR readlinkat ()
+is unavailable, the glibc wrapper function falls back to the use of
+.BR readlink ().
+When
+.I pathname
+is a relative pathname,
+glibc constructs a pathname based on the symbolic link in
+.I /proc/self/fd
+that corresponds to the
+.I dirfd
+argument.
+.SH NOTES
Using a statically sized buffer might not provide enough room for the
symbolic link contents.
The required size for the buffer can be obtained from the
@@ -230,19 +243,6 @@ also addresses a common portability problem when using
for the buffer size,
as this constant is not guaranteed to be defined per POSIX
if the system does not have such limit.
-.SS glibc notes
-On older kernels where
-.BR readlinkat ()
-is unavailable, the glibc wrapper function falls back to the use of
-.BR readlink ().
-When
-.I pathname
-is a relative pathname,
-glibc constructs a pathname based on the symbolic link in
-.I /proc/self/fd
-that corresponds to the
-.I dirfd
-argument.
.SH EXAMPLES
The following program allocates the buffer needed by
.BR readlink ()
diff --git a/man2/readv.2 b/man2/readv.2
index 76a94edd5..b80d7ff02 100644
--- a/man2/readv.2
+++ b/man2/readv.2
@@ -287,21 +287,44 @@ is less than zero or greater than the permitted maximum.
.B EOPNOTSUPP
An unknown flag is specified in \fIflags\fP.
.SH VERSIONS
+.SS C library/kernel differences
+The raw
.BR preadv ()
and
.BR pwritev ()
-first appeared in Linux 2.6.30; library support was added in glibc 2.10.
+system calls have call signatures that differ slightly from that of the
+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
+.BI " unsigned long " pos_l ", unsigned long " pos
.PP
+These arguments contain, respectively, the low order and high order 32 bits of
+.IR offset .
+.SH STANDARDS
+.TP
+.BR readv ()
+.TQ
+.BR writev ()
+POSIX.1-2008.
+.TP
+.BR preadv ()
+.TQ
+.BR pwritev ()
+BSD.
+.TP
.BR preadv2 ()
-and
+.TQ
.BR pwritev2 ()
-first appeared in Linux 4.6.
-Library support was added in glibc 2.26.
-.SH STANDARDS
-.BR readv (),
-.BR writev ():
-POSIX.1-2001, POSIX.1-2008,
-4.4BSD (these system calls first appeared in 4.2BSD).
+Linux.
+.SH HISTORY
+.TP
+.BR readv ()
+.TQ
+.BR writev ()
+POSIX.1-2001,
+4.4BSD (first appeared in 4.2BSD).
.\" Linux libc5 used \fIsize_t\fP as the type of the \fIiovcnt\fP argument,
.\" and \fIint\fP as the return type.
.\" The readv/writev system calls were buggy before Linux 1.3.40.
@@ -309,40 +332,13 @@ POSIX.1-2001, POSIX.1-2008,
.PP
.BR preadv (),
.BR pwritev ():
-nonstandard, but present also on the modern BSDs.
+Linux 2.6.30,
+glibc 2.10.
.PP
.BR preadv2 (),
.BR pwritev2 ():
-nonstandard Linux extension.
-.SH NOTES
-POSIX.1 allows an implementation to place a limit on
-the number of items that can be passed in
-.IR iov .
-An implementation can advertise its limit by defining
-.B IOV_MAX
-in
-.I <limits.h>
-or at run time via the return value from
-.IR sysconf(_SC_IOV_MAX) .
-On modern Linux systems, the limit is 1024.
-Back in Linux 2.0 days, this limit was 16.
-.\"
-.\"
-.SS C library/kernel differences
-The raw
-.BR preadv ()
-and
-.BR pwritev ()
-system calls have call signatures that differ slightly from that of the
-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
-.BI " unsigned long " pos_l ", unsigned long " pos
-.PP
-These arguments contain, respectively, the low order and high order 32 bits of
-.IR offset .
+Linux 4.6,
+glibc 2.26.
.SS Historical C library/kernel differences
To deal with the fact that
.B IOV_MAX
@@ -380,6 +376,20 @@ that the system is running a Linux kernel older than Linux 2.6.18
And since glibc 2.20
(which requires a minimum of Linux 2.6.32),
the glibc wrapper functions always just directly invoke the system calls.
+.SH NOTES
+POSIX.1 allows an implementation to place a limit on
+the number of items that can be passed in
+.IR iov .
+An implementation can advertise its limit by defining
+.B IOV_MAX
+in
+.I <limits.h>
+or at run time via the return value from
+.IR sysconf(_SC_IOV_MAX) .
+On modern Linux systems, the limit is 1024.
+Back in Linux 2.0 days, this limit was 16.
+.\"
+.\"
.SH BUGS
Linux 5.9 and Linux 5.10 have a bug where
.BR preadv2 ()
diff --git a/man2/reboot.2 b/man2/reboot.2
index 6fed0a076..2896ed517 100644
--- a/man2/reboot.2
+++ b/man2/reboot.2
@@ -223,9 +223,7 @@ the caller must have the
.B CAP_SYS_BOOT
inside its user namespace.
.SH STANDARDS
-.BR reboot ()
-is Linux-specific,
-and should not be used in programs intended to be portable.
+Linux.
.SH SEE ALSO
.BR systemctl (1),
.BR systemd (1),
diff --git a/man2/recv.2 b/man2/recv.2
index 81cd1957c..31899df82 100644
--- a/man2/recv.2
+++ b/man2/recv.2
@@ -480,9 +480,32 @@ and
The file descriptor
.I sockfd
does not refer to a socket.
+.SH VERSIONS
+According to POSIX.1,
+.\" POSIX.1-2001, POSIX.1-2008
+the
+.I msg_controllen
+field of the
+.I msghdr
+structure should be typed as
+.IR socklen_t ,
+and the
+.I msg_iovlen
+field should be typed as
+.IR int ,
+but glibc currently types both as
+.IR size_t .
+.\" glibc bug for msg_controllen raised 12 Mar 2006
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
+.\" The problem is an underlying kernel issue: the size of the
+.\" __kernel_size_t type used to type these fields varies
+.\" across architectures, but socklen_t is always 32 bits,
+.\" as (at least with GCC) is int.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008,
-4.4BSD (these interfaces first appeared in 4.2BSD).
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001,
+4.4BSD (first appeared in 4.2BSD).
.PP
POSIX.1 describes only the
.BR MSG_OOB ,
@@ -510,27 +533,6 @@ type was invented by POSIX.
See also
.BR accept (2).
.PP
-According to POSIX.1,
-.\" POSIX.1-2001, POSIX.1-2008
-the
-.I msg_controllen
-field of the
-.I msghdr
-structure should be typed as
-.IR socklen_t ,
-and the
-.I msg_iovlen
-field should be typed as
-.IR int ,
-but glibc currently types both as
-.IR size_t .
-.\" glibc bug for msg_controllen raised 12 Mar 2006
-.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
-.\" The problem is an underlying kernel issue: the size of the
-.\" __kernel_size_t type used to type these fields varies
-.\" across architectures, but socklen_t is always 32 bits,
-.\" as (at least with GCC) is int.
-.PP
See
.BR recvmmsg (2)
for information about a Linux-specific system call
diff --git a/man2/recvmmsg.2 b/man2/recvmmsg.2
index 63a03bd39..b1d9f2a28 100644
--- a/man2/recvmmsg.2
+++ b/man2/recvmmsg.2
@@ -145,14 +145,11 @@ In addition, the following error can occur:
is invalid.
.PP
See also BUGS.
-.SH VERSIONS
-The
-.BR recvmmsg ()
-system call was added in Linux 2.6.33.
-Support in glibc was added in glibc 2.12.
.SH STANDARDS
-.BR recvmmsg ()
-is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.33,
+glibc 2.12.
.SH BUGS
The
.I timeout
diff --git a/man2/remap_file_pages.2 b/man2/remap_file_pages.2
index f6f69c078..8f9b5b394 100644
--- a/man2/remap_file_pages.2
+++ b/man2/remap_file_pages.2
@@ -143,15 +143,11 @@ or
.I pgoff
is invalid.
.\" And possibly others from vma->vm_ops->populate()
-.SH VERSIONS
-The
-.BR remap_file_pages ()
-system call appeared in Linux 2.5.46;
-glibc support was added in glibc 2.3.3.
.SH STANDARDS
-The
-.BR remap_file_pages ()
-system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.5.46,
+glibc 2.3.3.
.SH NOTES
Since Linux 2.6.23,
.\" commit 3ee6dafc677a68e461a7ddafc94a580ebab80735
diff --git a/man2/removexattr.2 b/man2/removexattr.2
index 626ad515d..159061e4a 100644
--- a/man2/removexattr.2
+++ b/man2/removexattr.2
@@ -77,11 +77,11 @@ Extended attributes are not supported by the filesystem, or are disabled.
In addition, the errors documented in
.BR stat (2)
can also occur.
-.SH VERSIONS
-These system calls have been available since Linux 2.4;
-glibc support is provided since glibc 2.3.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.4,
+glibc 2.3.
.\" .SH AUTHORS
.\" Andreas Gruenbacher,
.\" .RI < a.gruenbacher@computer.org >
diff --git a/man2/rename.2 b/man2/rename.2
index 5007ef6b6..1391e2023 100644
--- a/man2/rename.2
+++ b/man2/rename.2
@@ -488,24 +488,28 @@ was specified in
but the caller does not have the
.B CAP_MKNOD
capability.
-.SH VERSIONS
-.BR renameat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
-.PP
-.BR renameat2 ()
-was added in Linux 3.15; library support was added in glibc 2.28.
.SH STANDARDS
-.BR rename ():
-4.3BSD, C89, C99, POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR renameat ():
+.TP
+.BR rename ()
+C11, POSIX.1-2008.
+.TP
+.BR renameat ()
POSIX.1-2008.
-.PP
+.TP
.BR renameat2 ()
-is Linux-specific.
-.SH NOTES
-.\"
+Linux.
+.SH HISTORY
+.TP
+.BR rename ()
+4.3BSD, C89, POSIX.1-2001.
+.TP
+.BR renameat ()
+Linux 2.6.16,
+glibc 2.4.
+.TP
+.BR renameat2 ()
+Linux 3.15,
+glibc 2.28.
.SS glibc notes
On older kernels where
.BR renameat ()
diff --git a/man2/request_key.2 b/man2/request_key.2
index e78321e3c..2d9416ba8 100644
--- a/man2/request_key.2
+++ b/man2/request_key.2
@@ -425,13 +425,14 @@ Insufficient memory to create a key.
The
.I type
argument started with a period (\[aq].\[aq]).
-.SH VERSIONS
-This system call first appeared in Linux 2.6.10.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.6.10.
+.PP
The ability to instantiate keys upon request was added
.\" commit 3e30148c3d524a9c1c63ca28261bc24c457eb07a
in Linux 2.6.13.
-.SH STANDARDS
-This system call is a nonstandard Linux extension.
.SH EXAMPLES
The program below demonstrates the use of
.BR request_key ().
diff --git a/man2/restart_syscall.2 b/man2/restart_syscall.2
index 1ed8c5568..64e28b063 100644
--- a/man2/restart_syscall.2
+++ b/man2/restart_syscall.2
@@ -75,12 +75,10 @@ is the return value of whatever system call is being restarted.
.I errno
is set as per the errors for whatever system call is being restarted by
.BR restart_syscall ().
-.SH VERSIONS
-The
-.BR restart_syscall ()
-system call is present since Linux 2.6.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.
.SH NOTES
There is no glibc wrapper for this system call,
because it is intended for use only by the kernel and
diff --git a/man2/rmdir.2 b/man2/rmdir.2
index b06349e2c..73b7d690d 100644
--- a/man2/rmdir.2
+++ b/man2/rmdir.2
@@ -111,7 +111,9 @@ does not support the removal of directories.
.I pathname
refers to a directory on a read-only filesystem.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH BUGS
Infelicities in the protocol underlying NFS can cause the unexpected
disappearance of directories which are still being used.
diff --git a/man2/rt_sigqueueinfo.2 b/man2/rt_sigqueueinfo.2
index 0f6a2e19e..046b5f382 100644
--- a/man2/rt_sigqueueinfo.2
+++ b/man2/rt_sigqueueinfo.2
@@ -165,15 +165,15 @@ No thread matching
and
.I tid
was found.
-.SH VERSIONS
-The
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR rt_sigqueueinfo ()
-system call was added in Linux 2.2.
-The
+Linux 2.2.
+.TP
.BR rt_tgsigqueueinfo ()
-system call was added in Linux 2.6.31.
-.SH STANDARDS
-These system calls are Linux-specific.
+Linux 2.6.31.
.SH NOTES
Since these system calls are not intended for application use,
there are no glibc wrapper functions; use
diff --git a/man2/s390_guarded_storage.2 b/man2/s390_guarded_storage.2
index 678de36e9..4fa085c97 100644
--- a/man2/s390_guarded_storage.2
+++ b/man2/s390_guarded_storage.2
@@ -126,13 +126,12 @@ and the allocation of a new guarded storage control block has failed.
.TP
.B EOPNOTSUPP
The guarded storage facility is not supported by the hardware.
-.SH VERSIONS
-.\" 916cda1aa1b412d7cf2991c3af7479544942d121, v4.12-rc1~139^2~56^2
-This system call is available since Linux 4.12.
.SH STANDARDS
-This Linux-specific system call is available only on the s390 architecture.
-.PP
-The guarded storage facility is available beginning with System z14.
+Linux on s390.
+.SH HISTORY
+.\" 916cda1aa1b412d7cf2991c3af7479544942d121, v4.12-rc1~139^2~56^2
+Linux 4.12.
+System z14.
.SH NOTES
The description of the guarded storage facility along with related
instructions and Guarded Storage Control Block and
diff --git a/man2/s390_pci_mmio_write.2 b/man2/s390_pci_mmio_write.2
index 6a55a6e52..be0075508 100644
--- a/man2/s390_pci_mmio_write.2
+++ b/man2/s390_pci_mmio_write.2
@@ -85,10 +85,10 @@ PCI support is not enabled.
.TP
.B ENOMEM
Insufficient memory.
-.SH VERSIONS
-These system calls are available since Linux 3.19.
.SH STANDARDS
-This Linux-specific system call is available only on the s390 architecture.
-The required PCI support is available beginning with System z EC12.
+Linux on s390.
+.SH HISTORY
+Linux 3.19.
+System z EC12.
.SH SEE ALSO
.BR syscall (2)
diff --git a/man2/s390_runtime_instr.2 b/man2/s390_runtime_instr.2
index 575d8c138..da256bb60 100644
--- a/man2/s390_runtime_instr.2
+++ b/man2/s390_runtime_instr.2
@@ -79,12 +79,11 @@ Allocating memory for the run-time instrumentation control block failed.
.TP
.B EOPNOTSUPP
The run-time instrumentation facility is not available.
-.SH VERSIONS
-This system call is available since Linux 3.7.
.SH STANDARDS
-This Linux-specific system call is available only on the s390 architecture.
-The run-time instrumentation facility is available
-beginning with System z EC12.
+Linux on s390.
+.SH HISTORY
+Linux 3.7.
+System z EC12.
.SH NOTES
The
.I asm/runtime_instr.h
diff --git a/man2/s390_sthyi.2 b/man2/s390_sthyi.2
index b44d940bc..4c3c3ba2e 100644
--- a/man2/s390_sthyi.2
+++ b/man2/s390_sthyi.2
@@ -113,10 +113,10 @@ Allocating memory for handling the CPU capacity information failed.
The value specified in
.I function_code
is not valid.
-.SH VERSIONS
-This system call is available since Linux 4.15.
.SH STANDARDS
-This Linux-specific system call is available only on the s390 architecture.
+Linux on s390.
+.SH HISTORY
+Linux 4.15.
.SH NOTES
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
diff --git a/man2/sched_get_priority_max.2 b/man2/sched_get_priority_max.2
index 70922ee3b..5185e6039 100644
--- a/man2/sched_get_priority_max.2
+++ b/man2/sched_get_priority_max.2
@@ -97,7 +97,9 @@ The argument
.I policy
does not identify a defined scheduling policy.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.ad l
.nh
diff --git a/man2/sched_rr_get_interval.2 b/man2/sched_rr_get_interval.2
index be2a246ab..328e4a4f7 100644
--- a/man2/sched_rr_get_interval.2
+++ b/man2/sched_rr_get_interval.2
@@ -64,16 +64,21 @@ The system call is not yet implemented (only on rather old kernels).
.B ESRCH
Could not find a process with the ID
.IR pid .
+.SH VERSIONS
+.SS Linux
+Linux 3.9 added
+.\" commit ce0dbbbb30aee6a835511d5be446462388ba9eee
+a new mechanism for adjusting (and viewing) the
+.B SCHED_RR
+quantum: the
+.I /proc/sys/kernel/sched_rr_timeslice_ms
+file exposes the quantum as a millisecond value, whose default is 100.
+Writing 0 to this file resets the quantum to the default value.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-POSIX systems on which
-.BR sched_rr_get_interval ()
-is available define
-.B _POSIX_PRIORITY_SCHEDULING
-in
-.IR <unistd.h> .
-.SS Linux notes
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SS Linux
POSIX does not specify any mechanism for controlling the size of the
round-robin time quantum.
Older Linux kernels provide a (nonportable) method of doing this.
@@ -87,15 +92,13 @@ quantum has varied somewhat across kernel versions.
This method of adjusting the quantum was removed
.\" commit a4ec24b48ddef1e93f7578be53270f0b95ad666c
starting with Linux 2.6.24.
-.PP
-Linux 3.9 added
-.\" commit ce0dbbbb30aee6a835511d5be446462388ba9eee
-a new mechanism for adjusting (and viewing) the
-.B SCHED_RR
-quantum: the
-.I /proc/sys/kernel/sched_rr_timeslice_ms
-file exposes the quantum as a millisecond value, whose default is 100.
-Writing 0 to this file resets the quantum to the default value.
+.SH NOTES
+POSIX systems on which
+.BR sched_rr_get_interval ()
+is available define
+.B _POSIX_PRIORITY_SCHEDULING
+in
+.IR <unistd.h> .
.\" .SH BUGS
.\" As of Linux 1.3.81
.\" .BR sched_rr_get_interval ()
diff --git a/man2/sched_setaffinity.2 b/man2/sched_setaffinity.2
index 86a935391..01e4a4f9e 100644
--- a/man2/sched_setaffinity.2
+++ b/man2/sched_setaffinity.2
@@ -134,9 +134,12 @@ capability in the user namespace of the thread
.TP
.B ESRCH
The thread whose ID is \fIpid\fP could not be found.
-.SH VERSIONS
-The CPU affinity system calls were introduced in Linux kernel 2.5.8.
-The system call wrappers were introduced in glibc 2.3.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.8,
+glibc 2.3.
+.PP
Initially, the glibc interfaces included a
.I cpusetsize
argument, typed as
@@ -145,8 +148,6 @@ In glibc 2.3.3, the
.I cpusetsize
argument was removed, but was then restored in glibc 2.3.4, with type
.IR size_t .
-.SH STANDARDS
-These system calls are Linux-specific.
.SH NOTES
After a call to
.BR sched_setaffinity (),
diff --git a/man2/sched_setattr.2 b/man2/sched_setattr.2
index f610c73fd..fd92a86b2 100644
--- a/man2/sched_setattr.2
+++ b/man2/sched_setattr.2
@@ -372,11 +372,11 @@ The CPU affinity mask of the thread specified by
does not include all CPUs in the system
(see
.BR sched_setaffinity (2)).
-.SH VERSIONS
-These system calls first appeared in Linux 3.14.
-.\" FIXME . Add glibc version
.SH STANDARDS
-These system calls are nonstandard Linux extensions.
+Linux.
+.SH HISTORY
+Linux 3.14.
+.\" FIXME . Add glibc version
.SH NOTES
glibc does not provide wrappers for these system calls; call them using
.BR syscall (2).
diff --git a/man2/sched_setparam.2 b/man2/sched_setparam.2
index 25d7b580b..9aafc2ebb 100644
--- a/man2/sched_setparam.2
+++ b/man2/sched_setparam.2
@@ -100,7 +100,9 @@ capability).
.B ESRCH
The thread whose ID is \fIpid\fP could not be found.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.ad l
.nh
diff --git a/man2/sched_setscheduler.2 b/man2/sched_setscheduler.2
index 19a1f040f..a6333c1ab 100644
--- a/man2/sched_setscheduler.2
+++ b/man2/sched_setscheduler.2
@@ -147,27 +147,7 @@ The calling thread does not have appropriate privileges.
.TP
.B ESRCH
The thread whose ID is \fIpid\fP could not be found.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008 (but see BUGS below).
-The \fBSCHED_BATCH\fP and \fBSCHED_IDLE\fP policies are Linux-specific.
-.SH NOTES
-Further details of the semantics of all of the above "normal"
-and "real-time" scheduling policies can be found in the
-.BR sched (7)
-manual page.
-That page also describes an additional policy,
-.BR SCHED_DEADLINE ,
-which is settable only via
-.BR sched_setattr (2).
-.PP
-POSIX systems on which
-.BR sched_setscheduler ()
-and
-.BR sched_getscheduler ()
-are available define
-.B _POSIX_PRIORITY_SCHEDULING
-in \fI<unistd.h>\fP.
-.PP
+.SH VERSIONS
POSIX.1 does not detail the permissions that an unprivileged
thread requires in order to call
.BR sched_setscheduler (),
@@ -196,6 +176,32 @@ and
instead of the
.BR sched_* (2)
system calls.)
+.SH STANDARDS
+POSIX.1-2008 (but see BUGS below).
+.PP
+.B SCHED_BATCH
+and
+.B SCHED_IDLE
+are Linux-specific.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+Further details of the semantics of all of the above "normal"
+and "real-time" scheduling policies can be found in the
+.BR sched (7)
+manual page.
+That page also describes an additional policy,
+.BR SCHED_DEADLINE ,
+which is settable only via
+.BR sched_setattr (2).
+.PP
+POSIX systems on which
+.BR sched_setscheduler ()
+and
+.BR sched_getscheduler ()
+are available define
+.B _POSIX_PRIORITY_SCHEDULING
+in \fI<unistd.h>\fP.
.SH BUGS
POSIX.1 says that on success,
.BR sched_setscheduler ()
diff --git a/man2/sched_yield.2 b/man2/sched_yield.2
index b58448a09..f1024762a 100644
--- a/man2/sched_yield.2
+++ b/man2/sched_yield.2
@@ -36,7 +36,9 @@ In the Linux implementation,
.BR sched_yield ()
always succeeds.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
If the calling thread is the only thread in the highest
priority list at that time,
diff --git a/man2/seccomp.2 b/man2/seccomp.2
index 32706397f..ecfdb8696 100644
--- a/man2/seccomp.2
+++ b/man2/seccomp.2
@@ -861,15 +861,11 @@ but the kernel does not support the filter return action specified by
.B ESRCH
Another thread caused a failure during thread sync, but its ID could not
be determined.
-.SH VERSIONS
-The
-.BR seccomp ()
-system call first appeared in Linux 3.17.
-.\" FIXME . Add glibc version
.SH STANDARDS
-The
-.BR seccomp ()
-system call is a nonstandard Linux extension.
+Linux.
+.SH HISTORY
+Linux 3.17.
+.\" FIXME . Add glibc version
.SH NOTES
Rather than hand-coding seccomp filters as shown in the example below,
you may prefer to employ the
diff --git a/man2/select.2 b/man2/select.2
index 7718b7506..fd592a3b2 100644
--- a/man2/select.2
+++ b/man2/select.2
@@ -421,29 +421,44 @@ is invalid.
.B ENOMEM
Unable to allocate memory for internal tables.
.SH VERSIONS
-.BR pselect ()
-was added in Linux 2.6.16.
-Prior to this,
-.BR pselect ()
-was emulated in glibc (but see BUGS).
+On some other UNIX systems,
+.\" Darwin, according to a report by Jeremy Sequoia, relayed by Josh Triplett
+.BR select ()
+can fail with the error
+.B EAGAIN
+if the system fails to allocate kernel-internal resources, rather than
+.B ENOMEM
+as Linux does.
+POSIX specifies this error for
+.BR poll (2),
+but not for
+.BR select ().
+Portable programs may wish to check for
+.B EAGAIN
+and loop, just as with
+.BR EINTR .
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+.TP
.BR select ()
-conforms to POSIX.1-2001, POSIX.1-2008, and
-4.4BSD
-.RB ( select ()
-first appeared in 4.2BSD).
+POSIX.1-2001, 4.4BSD (first appeared in 4.2BSD).
+.IP
Generally portable to/from
non-BSD systems supporting clones of the BSD socket layer (including
System\ V variants).
However, note that the System\ V variant typically
sets the timeout variable before returning, but the BSD variant does not.
-.PP
+.TP
.BR pselect ()
-is defined in POSIX.1g, and in
-POSIX.1-2001 and POSIX.1-2008.
-.PP
+Linux 2.6.16.
+POSIX.1g, POSIX.1-2001.
+.IP
+Prior to this,
+it was emulated in glibc (but see BUGS).
+.TP
.B fd_set
-is defined in POSIX.1-2001 and later.
+POSIX.1-2001.
.SH NOTES
The following header also provides the
.I fd_set
@@ -474,23 +489,6 @@ and
is not affected by the
.B O_NONBLOCK
flag.
-.PP
-On some other UNIX systems,
-.\" Darwin, according to a report by Jeremy Sequoia, relayed by Josh Triplett
-.BR select ()
-can fail with the error
-.B EAGAIN
-if the system fails to allocate kernel-internal resources, rather than
-.B ENOMEM
-as Linux does.
-POSIX specifies this error for
-.BR poll (2),
-but not for
-.BR select ().
-Portable programs may wish to check for
-.B EAGAIN
-and loop, just as with
-.BR EINTR .
.\"
.SS The self-pipe trick
On systems that lack
diff --git a/man2/semctl.2 b/man2/semctl.2
index 619062858..1cb71ab55 100644
--- a/man2/semctl.2
+++ b/man2/semctl.2
@@ -503,10 +503,7 @@ and the value to which
is to be set (for some semaphore of the set) is less than 0
or greater than the implementation limit
.BR SEMVMX .
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
-.\" SVr4 documents more error conditions EINVAL and EOVERFLOW.
-.PP
+.SH VERSIONS
POSIX.1 specifies the
.\" POSIX.1-2001, POSIX.1-2008
.I sem_nsems
@@ -518,54 +515,6 @@ and the field is so defined on most other systems.
It was also so defined on Linux 2.2 and earlier,
but, since Linux 2.4, the field has the type
.IR "unsigned\ long" .
-.SH NOTES
-The
-.BR IPC_INFO ,
-.BR SEM_STAT ,
-and
-.B SEM_INFO
-operations are used by the
-.BR ipcs (1)
-program to provide information on allocated resources.
-In the future these may modified or moved to a
-.I /proc
-filesystem interface.
-.PP
-Various fields in a \fIstruct semid_ds\fP were typed as
-.I short
-under Linux 2.2
-and have become
-.I long
-under Linux 2.4.
-To take advantage of this,
-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
-In some earlier versions of glibc, the
-.I semun
-union was defined in \fI<sys/sem.h>\fP, but POSIX.1 requires
-.\" POSIX.1-2001, POSIX.1-2008
-that the caller define this union.
-On versions of glibc where this union is \fInot\fP defined,
-the macro
-.B _SEM_SEMUN_UNDEFINED
-is defined in \fI<sys/sem.h>\fP.
-.PP
-The following system limit on semaphore sets affects a
-.BR semctl ()
-call:
-.TP
-.B SEMVMX
-Maximum value for
-.BR semval :
-implementation dependent (32767).
-.PP
-For greater portability, it is best to always call
-.BR semctl ()
-with four arguments.
.\"
.SS The sempid value
POSIX.1 defines
@@ -609,6 +558,59 @@ operations.
This was rectified
.\" commit a5f4db877177d2a3d7ae62a7bac3a5a27e083d7f
in Linux 4.6.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.\" SVr4 documents more error conditions EINVAL and EOVERFLOW.
+.PP
+Various fields in a \fIstruct semid_ds\fP were typed as
+.I short
+under Linux 2.2
+and have become
+.I long
+under Linux 2.4.
+To take advantage of this,
+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
+In some earlier versions of glibc, the
+.I semun
+union was defined in \fI<sys/sem.h>\fP, but POSIX.1 requires
+.\" POSIX.1-2001, POSIX.1-2008
+that the caller define this union.
+On versions of glibc where this union is \fInot\fP defined,
+the macro
+.B _SEM_SEMUN_UNDEFINED
+is defined in \fI<sys/sem.h>\fP.
+.SH NOTES
+The
+.BR IPC_INFO ,
+.BR SEM_STAT ,
+and
+.B SEM_INFO
+operations are used by the
+.BR ipcs (1)
+program to provide information on allocated resources.
+In the future these may modified or moved to a
+.I /proc
+filesystem interface.
+.PP
+The following system limit on semaphore sets affects a
+.BR semctl ()
+call:
+.TP
+.B SEMVMX
+Maximum value for
+.BR semval :
+implementation dependent (32767).
+.PP
+For greater portability, it is best to always call
+.BR semctl ()
+with four arguments.
.SH EXAMPLES
See
.BR shmop (2).
diff --git a/man2/semget.2 b/man2/semget.2
index a22ebcd75..a89550585 100644
--- a/man2/semget.2
+++ b/man2/semget.2
@@ -197,6 +197,8 @@ or the system wide maximum number of semaphores
.RB ( SEMMNS ),
would be exceeded.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, POSIX.1-2001.
.\" SVr4 documents additional error conditions EFBIG, E2BIG, EAGAIN,
.\" ERANGE, EFAULT.
diff --git a/man2/semop.2 b/man2/semop.2
index 7a1416a26..fe2906be4 100644
--- a/man2/semop.2
+++ b/man2/semop.2
@@ -355,15 +355,12 @@ is greater than
.BR SEMVMX ,
the implementation dependent maximum value for
.IR semval .
-.SH VERSIONS
-.BR semtimedop ()
-first appeared in Linux 2.5.52,
-and was subsequently backported into Linux 2.4.22.
-glibc support for
-.BR semtimedop ()
-first appeared in Linux 2.3.3.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH VERSIONS
+Linux 2.5.52 (backported into Linux 2.4.22),
+glibc 2.3.3.
+POSIX.1-2001, SVr4.
.\" SVr4 documents additional error conditions EINVAL, EFBIG, ENOSPC.
.SH NOTES
The
diff --git a/man2/send.2 b/man2/send.2
index 3f0b74430..bea22da15 100644
--- a/man2/send.2
+++ b/man2/send.2
@@ -437,21 +437,7 @@ will also receive a
unless
.B MSG_NOSIGNAL
is set.
-.SH STANDARDS
-4.4BSD, SVr4, POSIX.1-2001.
-These interfaces first appeared in 4.2BSD.
-.PP
-POSIX.1-2001 describes only the
-.B MSG_OOB
-and
-.B MSG_EOR
-flags.
-POSIX.1-2008 adds a specification of
-.BR MSG_NOSIGNAL .
-The
-.B MSG_CONFIRM
-flag is a Linux extension.
-.SH NOTES
+.SH VERSIONS
According to POSIX.1-2001, the
.I msg_controllen
field of the
@@ -470,7 +456,23 @@ but glibc currently types both as
.\" __kernel_size_t type used to type these fields varies
.\" across architectures, but socklen_t is always 32 bits,
.\" as (at least with GCC) is int.
+.SH STANDARDS
+POSIX.1-2008.
+.PP
+.B MSG_CONFIRM
+is a Linux extension.
+.SH HISTORY
+4.4BSD, SVr4, POSIX.1-2001.
+(first appeared in 4.2BSD).
.PP
+POSIX.1-2001 describes only the
+.B MSG_OOB
+and
+.B MSG_EOR
+flags.
+POSIX.1-2008 adds a specification of
+.BR MSG_NOSIGNAL .
+.SH NOTES
See
.BR sendmmsg (2)
for information about a Linux-specific system call
diff --git a/man2/sendfile.2 b/man2/sendfile.2
index 07a2c5b35..5574eff2b 100644
--- a/man2/sendfile.2
+++ b/man2/sendfile.2
@@ -165,34 +165,15 @@ the input file or the output file.
.I offset
is not NULL but the input file is not seekable.
.SH VERSIONS
-.BR sendfile ()
-first appeared in Linux 2.2.
-The include file
-.I <sys/sendfile.h>
-is present since glibc 2.1.
-.SH STANDARDS
-Not specified in POSIX.1-2001, nor in other standards.
-.PP
Other UNIX systems implement
.BR sendfile ()
with different semantics and prototypes.
It should not be used in portable programs.
-.SH NOTES
-.BR sendfile ()
-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
-If you plan to use
-.BR sendfile ()
-for sending files to a TCP socket, but need
-to send some header data in front of the file contents, you will find
-it useful to employ the
-.B TCP_CORK
-option, described in
-.BR tcp (7),
-to minimize the number of packets and to tune performance.
+.SH STANDARDS
+None.
+.SH HISTORY
+Linux 2.2,
+glibc 2.1.
.PP
In Linux 2.4 and earlier,
.I out_fd
@@ -211,6 +192,22 @@ argument.
The glibc
.BR sendfile ()
wrapper function transparently deals with the kernel differences.
+.SH NOTES
+.BR sendfile ()
+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
+If you plan to use
+.BR sendfile ()
+for sending files to a TCP socket, but need
+to send some header data in front of the file contents, you will find
+it useful to employ the
+.B TCP_CORK
+option, described in
+.BR tcp (7),
+to minimize the number of packets and to tune performance.
.PP
Applications may wish to fall back to
.BR read (2)
diff --git a/man2/sendmmsg.2 b/man2/sendmmsg.2
index 4e5475c45..b9f4786ac 100644
--- a/man2/sendmmsg.2
+++ b/man2/sendmmsg.2
@@ -126,14 +126,11 @@ See also BUGS.
.\"
.\" This matches the behavior of other syscalls like read/write - it
.\" is not an error if less than the requested number of elements are sent.
-.SH VERSIONS
-The
-.BR sendmmsg ()
-system call was added in Linux 3.0.
-Support in glibc was added in Linux 2.14.
.SH STANDARDS
-.BR sendmmsg ()
-is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 3.0,
+glibc 2.14.
.SH NOTES
The value specified in
.I vlen
diff --git a/man2/set_mempolicy.2 b/man2/set_mempolicy.2
index 844fa0839..7b32ee1dc 100644
--- a/man2/set_mempolicy.2
+++ b/man2/set_mempolicy.2
@@ -319,12 +319,10 @@ other than
.TP
.B ENOMEM
Insufficient kernel memory was available.
-.SH VERSIONS
-The
-.BR set_mempolicy ()
-system call was added in Linux 2.6.7.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.7.
.SH NOTES
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
diff --git a/man2/set_thread_area.2 b/man2/set_thread_area.2
index ccfacc70d..02f65e041 100644
--- a/man2/set_thread_area.2
+++ b/man2/set_thread_area.2
@@ -164,17 +164,15 @@ was invoked as a 64-bit system call.
.B ESRCH
.RB ( set_thread_area ())
A free TLS entry could not be located.
-.SH VERSIONS
-.BR set_thread_area ()
-first appeared in Linux 2.5.29.
-.BR get_thread_area ()
-first appeared in Linux 2.5.32.
.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR set_thread_area ()
-and
+Linux 2.5.29.
+.TP
.BR get_thread_area ()
-are Linux-specific and should not be used in programs that are intended
-to be portable.
+Linux 2.5.32.
.SH NOTES
These system calls are generally intended for use only by threading libraries.
.PP
diff --git a/man2/set_tid_address.2 b/man2/set_tid_address.2
index a766d5bef..9c4c68da0 100644
--- a/man2/set_tid_address.2
+++ b/man2/set_tid_address.2
@@ -85,11 +85,12 @@ always returns the caller's thread ID.
.SH ERRORS
.BR set_tid_address ()
always succeeds.
-.SH VERSIONS
-This call is present since Linux 2.5.48.
-Details as given here are valid since Linux 2.5.49.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.5.48.
+.PP
+Details as given here are valid since Linux 2.5.49.
.SH SEE ALSO
.BR clone (2),
.BR futex (2),
diff --git a/man2/seteuid.2 b/man2/seteuid.2
index 14b23b3f4..3e9d1efab 100644
--- a/man2/seteuid.2
+++ b/man2/seteuid.2
@@ -80,9 +80,7 @@ capability in its user namespace) and
.I egid
does not match the current real group ID, current effective group ID,
or current saved set-group-ID.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
+.SH VERSIONS
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).
@@ -122,6 +120,10 @@ are implemented as library functions that call, respectively,
.BR setreuid (2)
and
.BR setregid (2).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
.SH SEE ALSO
.BR geteuid (2),
.BR setresuid (2),
diff --git a/man2/setfsgid.2 b/man2/setfsgid.2
index eb35af7e1..bd17d6999 100644
--- a/man2/setfsgid.2
+++ b/man2/setfsgid.2
@@ -19,7 +19,7 @@ Standard C library
.nf
.B #include <sys/fsuid.h>
.PP
-.BI "int setfsgid(gid_t " fsgid );
+.BI "[[deprecated]] int setfsgid(gid_t " fsgid );
.fi
.SH DESCRIPTION
On Linux, a process has both a filesystem group ID and an effective group ID.
@@ -48,14 +48,21 @@ saved set-group-ID, or current the filesystem user ID.
.SH RETURN VALUE
On both success and failure,
this call returns the previous filesystem group ID of the caller.
-.SH VERSIONS
-This system call is present since Linux 1.2.
-.\" This system call is present since Linux 1.1.44
-.\" and in libc since libc 4.7.6.
.SH STANDARDS
-.BR setfsgid ()
-is Linux-specific and should not be used in programs intended
-to be portable.
+Linux.
+.SH HISTORY
+Linux 1.2.
+.\" Linux 1.1.44
+.\" and in libc since libc 4.7.6.
+.SS C library/kernel differences
+In glibc 2.15 and earlier,
+when the wrapper for this system call determines that the argument can't be
+passed to the kernel without integer truncation (because the kernel
+is old and does not support 32-bit group IDs),
+it will return \-1 and set \fIerrno\fP to
+.B EINVAL
+without attempting
+the system call.
.SH NOTES
The filesystem group ID concept and the
.BR setfsgid ()
@@ -78,15 +85,6 @@ supporting 32-bit IDs.
The glibc
.BR setfsgid ()
wrapper function transparently deals with the variation across kernel versions.
-.SS C library/kernel differences
-In glibc 2.15 and earlier,
-when the wrapper for this system call determines that the argument can't be
-passed to the kernel without integer truncation (because the kernel
-is old and does not support 32-bit group IDs),
-it will return \-1 and set \fIerrno\fP to
-.B EINVAL
-without attempting
-the system call.
.SH BUGS
No error indications of any kind are returned to the caller,
and the fact that both successful and unsuccessful calls return
diff --git a/man2/setfsuid.2 b/man2/setfsuid.2
index 167eca1e3..9f0b941ca 100644
--- a/man2/setfsuid.2
+++ b/man2/setfsuid.2
@@ -19,7 +19,7 @@ Standard C library
.nf
.B #include <sys/fsuid.h>
.PP
-.BI "int setfsuid(uid_t " fsuid );
+.BI "[[deprecated]] int setfsuid(uid_t " fsuid );
.fi
.SH DESCRIPTION
On Linux, a process has both a filesystem user ID and an effective user ID.
@@ -59,15 +59,13 @@ saved set-user-ID, or current filesystem user ID.
.SH RETURN VALUE
On both success and failure,
this call returns the previous filesystem user ID of the caller.
-.SH VERSIONS
-This system call is present since Linux 1.2.
-.\" This system call is present since Linux 1.1.44
-.\" and in libc since libc 4.7.6.
.SH STANDARDS
-.BR setfsuid ()
-is Linux-specific and should not be used in programs intended
-to be portable.
-.SH NOTES
+Linux.
+.SH HISTORY
+Linux 1.2.
+.\" Linux 1.1.44
+.\" and in libc since libc 4.7.6.
+.PP
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
diff --git a/man2/setgid.2 b/man2/setgid.2
index 1e14a7271..601229523 100644
--- a/man2/setgid.2
+++ b/man2/setgid.2
@@ -54,19 +54,7 @@ The calling process is not privileged (does not have the
.I gid
does not match the real group ID or saved set-group-ID of
the calling process.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
-.SH NOTES
-The original Linux
-.BR setgid ()
-system call supported only 16-bit group IDs.
-Subsequently, Linux 2.4 added
-.BR setgid32 ()
-supporting 32-bit IDs.
-The glibc
-.BR setgid ()
-wrapper function transparently deals with the variation across kernel versions.
-.\"
+.SH VERSIONS
.SS C library/kernel differences
At the kernel level, user IDs and group IDs are a per-thread attribute.
However, POSIX requires that all threads in a process
@@ -81,6 +69,20 @@ that when one thread changes credentials,
all of the other threads in the process also change their credentials.
For details, see
.BR nptl (7).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.PP
+The original Linux
+.BR setgid ()
+system call supported only 16-bit group IDs.
+Subsequently, Linux 2.4 added
+.BR setgid32 ()
+supporting 32-bit IDs.
+The glibc
+.BR setgid ()
+wrapper function transparently deals with the variation across kernel versions.
.SH SEE ALSO
.BR getgid (2),
.BR setegid (2),
diff --git a/man2/setns.2 b/man2/setns.2
index 4de32d5c5..93e9933fc 100644
--- a/man2/setns.2
+++ b/man2/setns.2
@@ -302,15 +302,11 @@ for this operation.
.I fd
is a PID file descriptor but the process it refers to no longer exists
(i.e., it has terminated and been waited on).
-.SH VERSIONS
-The
-.BR setns ()
-system call first appeared in Linux 3.0;
-library support was added in glibc 2.14.
.SH STANDARDS
-The
-.BR setns ()
-system call is Linux-specific.
+Linux.
+.SH VERSIONS
+Linux 3.0,
+glibc 2.14.
.SH NOTES
For further information on the
.IR /proc/ pid /ns/
diff --git a/man2/setpgid.2 b/man2/setpgid.2
index ad4ea38dc..fb67d2ab5 100644
--- a/man2/setpgid.2
+++ b/man2/setpgid.2
@@ -229,27 +229,37 @@ For
.I pid
is not the calling process and not a child of the calling process.
.SH STANDARDS
+.TP
+.BR getpgid ()
+.TQ
.BR setpgid ()
-and the version of
-.BR getpgrp ()
-with no arguments
-conform to POSIX.1-2001.
-.PP
-POSIX.1-2001 also specifies
+.TQ
+.BR getpgrp "() (no args)"
+.TQ
+.BR setpgrp "() (no args)"
+POSIX.1-2008 (but see HISTORY).
+.TP
+.BR setpgrp "() (2 args)"
+.TQ
+.BR getpgrp "() (1 arg)"
+None.
+.SH HISTORY
+.TP
.BR getpgid ()
-and the version of
-.BR setpgrp ()
-that takes no arguments.
-(POSIX.1-2008 marks this
-.BR setpgrp ()
-specification as obsolete.)
-.PP
-The version of
-.BR getpgrp ()
-with one argument and the version of
-.BR setpgrp ()
-that takes two arguments derive from 4.2BSD,
-and are not specified by POSIX.1.
+.TQ
+.BR setpgid ()
+.TQ
+.BR getpgrp "() (no args)"
+POSIX.1-2001.
+.TP
+.BR setpgrp "() (no args)"
+POSIX.1-2001.
+POSIX.1-2008 marks it as obsolete.
+.TP
+.BR setpgrp "() (2 args)"
+.TQ
+.BR getpgrp "() (1 arg)"
+4.2BSD.
.SH NOTES
A child created via
.BR fork (2)
diff --git a/man2/setresuid.2 b/man2/setresuid.2
index 081a8e920..874db6f25 100644
--- a/man2/setresuid.2
+++ b/man2/setresuid.2
@@ -97,14 +97,28 @@ for
it is
.BR CAP_SETGID .
.SH VERSIONS
-These calls are available under Linux since Linux 2.1.44.
+.SS C library/kernel differences
+At the kernel level, user IDs and group IDs are a per-thread attribute.
+However, POSIX requires that all threads in a process
+share the same credentials.
+The NPTL threading implementation handles the POSIX requirements by
+providing wrapper functions for
+the various system calls that change process UIDs and GIDs.
+These wrapper functions (including those for
+.BR setresuid ()
+and
+.BR setresgid ())
+employ a signal-based technique to ensure
+that when one thread changes credentials,
+all of the other threads in the process also change their credentials.
+For details, see
+.BR nptl (7).
.SH STANDARDS
-These calls are nonstandard;
-they also appear on HP-UX and some of the BSDs.
-.SH NOTES
-Under HP-UX and FreeBSD, the prototype is found in
-.IR <unistd.h> .
-Under Linux, the prototype is provided since glibc 2.3.2.
+None.
+.SH HISTORY
+Linux 2.1.44,
+glibc 2.3.2.
+HP-UX, FreeBSD.
.PP
The original Linux
.BR setresuid ()
@@ -121,23 +135,6 @@ The glibc
and
.BR setresgid ()
wrapper functions transparently deal with the variations across kernel versions.
-.\"
-.SS C library/kernel differences
-At the kernel level, user IDs and group IDs are a per-thread attribute.
-However, POSIX requires that all threads in a process
-share the same credentials.
-The NPTL threading implementation handles the POSIX requirements by
-providing wrapper functions for
-the various system calls that change process UIDs and GIDs.
-These wrapper functions (including those for
-.BR setresuid ()
-and
-.BR setresgid ())
-employ a signal-based technique to ensure
-that when one thread changes credentials,
-all of the other threads in the process also change their credentials.
-For details, see
-.BR nptl (7).
.SH SEE ALSO
.BR getresuid (2),
.BR getuid (2),
diff --git a/man2/setreuid.2 b/man2/setreuid.2
index 842c2dc2b..702d3b4e0 100644
--- a/man2/setreuid.2
+++ b/man2/setreuid.2
@@ -120,17 +120,7 @@ swapping the effective user (group) ID with the real user (group) ID,
or (ii) setting one to the value of the other or (iii) setting the
effective user (group) ID to the value of the
saved set-user-ID (saved set-group-ID) was specified.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD
-.RB ( setreuid ()
-and
-.BR setregid ()
-first appeared in 4.2BSD).
-.SH NOTES
-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
+.SH VERSIONS
POSIX.1 does not specify all of the UID changes that Linux permits
for an unprivileged process.
For
@@ -150,6 +140,14 @@ across implementations.
.PP
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
+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
The original Linux
.BR setreuid ()
diff --git a/man2/setsid.2 b/man2/setsid.2
index 493e3567b..fe86939e2 100644
--- a/man2/setsid.2
+++ b/man2/setsid.2
@@ -52,7 +52,9 @@ Thus, in particular,
.BR setsid ()
fails if the calling process is already a process group leader.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
.SH NOTES
A child created via
.BR fork (2)
diff --git a/man2/setuid.2 b/man2/setuid.2
index 6293ddd15..c124ff4fc 100644
--- a/man2/setuid.2
+++ b/man2/setuid.2
@@ -100,11 +100,39 @@ The user is not privileged (Linux: does not have the
capability in its user namespace) and
.I uid
does not match the real UID or saved set-user-ID of the calling process.
+.SH VERSIONS
+.SS C library/kernel differences
+At the kernel level, user IDs and group IDs are a per-thread attribute.
+However, POSIX requires that all threads in a process
+share the same credentials.
+The NPTL threading implementation handles the POSIX requirements by
+providing wrapper functions for
+the various system calls that change process UIDs and GIDs.
+These wrapper functions (including the one for
+.BR setuid ())
+employ a signal-based technique to ensure
+that when one thread changes credentials,
+all of the other threads in the process also change their credentials.
+For details, see
+.BR nptl (7).
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.PP
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
+The original Linux
+.BR setuid ()
+system call supported only 16-bit user IDs.
+Subsequently, Linux 2.4 added
+.BR setuid32 ()
+supporting 32-bit IDs.
+The glibc
+.BR setuid ()
+wrapper function transparently deals with the variation across kernel versions.
.SH NOTES
Linux has the concept of the filesystem user ID, normally equal to the
effective user ID.
@@ -118,31 +146,6 @@ If
.I uid
is different from the old effective UID, the process will
be forbidden from leaving core dumps.
-.PP
-The original Linux
-.BR setuid ()
-system call supported only 16-bit user IDs.
-Subsequently, Linux 2.4 added
-.BR setuid32 ()
-supporting 32-bit IDs.
-The glibc
-.BR setuid ()
-wrapper function transparently deals with the variation across kernel versions.
-.\"
-.SS C library/kernel differences
-At the kernel level, user IDs and group IDs are a per-thread attribute.
-However, POSIX requires that all threads in a process
-share the same credentials.
-The NPTL threading implementation handles the POSIX requirements by
-providing wrapper functions for
-the various system calls that change process UIDs and GIDs.
-These wrapper functions (including the one for
-.BR setuid ())
-employ a signal-based technique to ensure
-that when one thread changes credentials,
-all of the other threads in the process also change their credentials.
-For details, see
-.BR nptl (7).
.SH SEE ALSO
.BR getuid (2),
.BR seteuid (2),
diff --git a/man2/setup.2 b/man2/setup.2
index a8c94c4b2..24e0253d1 100644
--- a/man2/setup.2
+++ b/man2/setup.2
@@ -21,7 +21,7 @@ Standard C library
.nf
.B #include <unistd.h>
.PP
-.B int setup(void);
+.B [[deprecated]] int setup(void);
.fi
.SH DESCRIPTION
.BR setup ()
@@ -42,12 +42,11 @@ always returns \-1 for a user process.
.TP
.B EPERM
Always, for a user process.
-.SH VERSIONS
-Since Linux 2.1.121, no such function exists anymore.
.SH STANDARDS
-This function is Linux-specific, and should not be used in programs
-intended to be portable, or indeed in any programs at all.
-.SH NOTES
+Linux.
+.SH VERSIONS
+Removed in Linux 2.1.121.
+.PP
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 8c658223c..43151ebd5 100644
--- a/man2/setxattr.2
+++ b/man2/setxattr.2
@@ -137,11 +137,11 @@ The size of
or
.I value
exceeds a filesystem-specific limit.
-.SH VERSIONS
-These system calls have been available since Linux 2.4;
-glibc support is provided since glibc 2.3.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.4,
+glibc 2.3.
.\" .SH AUTHORS
.\" Andreas Gruenbacher,
.\" .RI < a.gruenbacher@computer.org >
diff --git a/man2/sgetmask.2 b/man2/sgetmask.2
index d342076db..a1af77c15 100644
--- a/man2/sgetmask.2
+++ b/man2/sgetmask.2
@@ -46,15 +46,15 @@ always successfully returns the signal mask.
always succeeds, and returns the previous signal mask.
.SH ERRORS
These system calls always succeed.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
Since Linux 3.16,
.\" f6187769dae48234f3877df3c4d99294cc2254fa
support for these system calls is optional,
depending on whether the kernel was built with the
.B CONFIG_SGETMASK_SYSCALL
option.
-.SH STANDARDS
-These system calls are Linux-specific.
.SH NOTES
These system calls are unaware of signal numbers greater than 31
(i.e., real-time signals).
diff --git a/man2/shmctl.2 b/man2/shmctl.2
index bc456849d..e1c5a9aff 100644
--- a/man2/shmctl.2
+++ b/man2/shmctl.2
@@ -441,24 +441,7 @@ capability).
(Since Linux 2.6.9, this error can also occur if the
.B RLIMIT_MEMLOCK
is 0 and the caller is not privileged.)
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
-.\" SVr4 documents additional error conditions EINVAL,
-.\" ENOENT, ENOSPC, ENOMEM, EEXIST. Neither SVr4 nor SVID documents
-.\" an EIDRM error condition.
-.SH NOTES
-The
-.BR IPC_INFO ,
-.BR SHM_STAT ,
-and
-.B SHM_INFO
-operations are used by the
-.BR ipcs (1)
-program to provide information on allocated resources.
-In the future, these may modified or moved to a
-.I /proc
-filesystem interface.
-.PP
+.SH VERSIONS
Linux permits a process to attach
.RB ( shmat (2))
a shared memory segment that has already been marked for deletion
@@ -466,6 +449,13 @@ using
.IR shmctl(IPC_RMID) .
This feature is not available on other UNIX implementations;
portable applications should avoid relying on it.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.\" SVr4 documents additional error conditions EINVAL,
+.\" ENOENT, ENOSPC, ENOMEM, EEXIST. Neither SVr4 nor SVID documents
+.\" an EIDRM error condition.
.PP
Various fields in a \fIstruct shmid_ds\fP were typed as
.I short
@@ -479,6 +469,18 @@ a recompilation under glibc-2.1.91 or later should suffice.
.B IPC_64
flag in
.IR cmd .)
+.SH NOTES
+The
+.BR IPC_INFO ,
+.BR SHM_STAT ,
+and
+.B SHM_INFO
+operations are used by the
+.BR ipcs (1)
+program to provide information on allocated resources.
+In the future, these may modified or moved to a
+.I /proc
+filesystem interface.
.SH SEE ALSO
.BR mlock (2),
.BR setrlimit (2),
diff --git a/man2/shmget.2 b/man2/shmget.2
index c4d8df8ed..c0b1a669c 100644
--- a/man2/shmget.2
+++ b/man2/shmget.2
@@ -262,13 +262,15 @@ group; see the description of
in
.BR proc (5).
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
-.\" SVr4 documents an additional error condition EEXIST.
+POSIX.1-2008.
.PP
.B SHM_HUGETLB
and
.B SHM_NORESERVE
are Linux extensions.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.\" SVr4 documents an additional error condition EEXIST.
.SH NOTES
.B IPC_PRIVATE
isn't a flag field but a
diff --git a/man2/shmop.2 b/man2/shmop.2
index 6ab2e063a..a28d249e1 100644
--- a/man2/shmop.2
+++ b/man2/shmop.2
@@ -201,7 +201,9 @@ or,
.I shmaddr
is not aligned on a page boundary.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
.\" SVr4 documents an additional error condition EMFILE.
.PP
In SVID 3 (or perhaps earlier),
diff --git a/man2/shutdown.2 b/man2/shutdown.2
index 82411180b..41fcc61d4 100644
--- a/man2/shutdown.2
+++ b/man2/shutdown.2
@@ -67,9 +67,10 @@ The file descriptor
.I sockfd
does not refer to a socket.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.4BSD
-.RB ( shutdown ()
-first appeared in 4.2BSD).
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.4BSD
+(first appeared in 4.2BSD).
.SH NOTES
The constants
.BR SHUT_RD ,
diff --git a/man2/sigaction.2 b/man2/sigaction.2
index c352da8b5..6c241561b 100644
--- a/man2/sigaction.2
+++ b/man2/sigaction.2
@@ -942,35 +942,63 @@ This will also be generated if an attempt
is made to change the action for
.BR SIGKILL " or " SIGSTOP ,
which cannot be caught or ignored.
+.SH VERSIONS
+.SS C library/kernel differences
+The glibc wrapper function for
+.BR sigaction ()
+gives an error
+.RB ( EINVAL )
+on attempts to change the disposition of the two real-time signals
+used internally by the NPTL threading implementation.
+See
+.BR nptl (7)
+for details.
+.PP
+On architectures where the signal trampoline resides in the C library,
+the glibc wrapper function for
+.BR sigaction ()
+places the address of the trampoline code in the
+.I act.sa_restorer
+field and sets the
+.B SA_RESTORER
+flag in the
+.I act.sa_flags
+field.
+See
+.BR sigreturn (2).
+.PP
+The original Linux system call was named
+.BR sigaction ().
+However, with the addition of real-time signals in Linux 2.2,
+the fixed-size, 32-bit
+.I sigset_t
+type supported by that system call was no longer fit for purpose.
+Consequently, a new system call,
+.BR rt_sigaction (),
+was added to support an enlarged
+.I sigset_t
+type.
+The new system call takes a fourth argument,
+.IR "size_t sigsetsize" ,
+which specifies the size in bytes of the signal sets in
+.I act.sa_mask
+and
+.IR oldact.sa_mask .
+This argument is currently required to have the value
+.I sizeof(sigset_t)
+(or the error
+.B EINVAL
+results).
+The glibc
+.BR sigaction ()
+wrapper function hides these details from us, transparently calling
+.BR rt_sigaction ()
+when the kernel provides it.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
.\" SVr4 does not document the EINTR condition.
-.SH NOTES
-A child created via
-.BR fork (2)
-inherits a copy of its parent's signal dispositions.
-During an
-.BR execve (2),
-the dispositions of handled signals are reset to the default;
-the dispositions of ignored signals are left unchanged.
-.PP
-According to POSIX, the behavior of a process is undefined after it
-ignores a
-.BR SIGFPE ,
-.BR SIGILL ,
-or
-.B SIGSEGV
-signal that was not generated by
-.BR kill (2)
-or
-.BR raise (3).
-Integer division by zero has undefined result.
-On some architectures it will generate a
-.B SIGFPE
-signal.
-(Also dividing the most negative integer by \-1 may generate
-.BR SIGFPE .)
-Ignoring this signal might lead to an endless loop.
.PP
POSIX.1-1990 disallowed setting the action for
.B SIGCHLD
@@ -1018,6 +1046,32 @@ allowed the receipt of any signal, not just the one we are installing
(effectively overriding any
.I sa_mask
settings).
+.SH NOTES
+A child created via
+.BR fork (2)
+inherits a copy of its parent's signal dispositions.
+During an
+.BR execve (2),
+the dispositions of handled signals are reset to the default;
+the dispositions of ignored signals are left unchanged.
+.PP
+According to POSIX, the behavior of a process is undefined after it
+ignores a
+.BR SIGFPE ,
+.BR SIGILL ,
+or
+.B SIGSEGV
+signal that was not generated by
+.BR kill (2)
+or
+.BR raise (3).
+Integer division by zero has undefined result.
+On some architectures it will generate a
+.B SIGFPE
+signal.
+(Also dividing the most negative integer by \-1 may generate
+.BR SIGFPE .)
+Ignoring this signal might lead to an endless loop.
.PP
.BR sigaction ()
can be called with a NULL second argument to query the current signal
@@ -1040,58 +1094,6 @@ See
for a list of the async-signal-safe functions that can be
safely called inside from inside a signal handler.
.\"
-.SS C library/kernel differences
-The glibc wrapper function for
-.BR sigaction ()
-gives an error
-.RB ( EINVAL )
-on attempts to change the disposition of the two real-time signals
-used internally by the NPTL threading implementation.
-See
-.BR nptl (7)
-for details.
-.PP
-On architectures where the signal trampoline resides in the C library,
-the glibc wrapper function for
-.BR sigaction ()
-places the address of the trampoline code in the
-.I act.sa_restorer
-field and sets the
-.B SA_RESTORER
-flag in the
-.I act.sa_flags
-field.
-See
-.BR sigreturn (2).
-.PP
-The original Linux system call was named
-.BR sigaction ().
-However, with the addition of real-time signals in Linux 2.2,
-the fixed-size, 32-bit
-.I sigset_t
-type supported by that system call was no longer fit for purpose.
-Consequently, a new system call,
-.BR rt_sigaction (),
-was added to support an enlarged
-.I sigset_t
-type.
-The new system call takes a fourth argument,
-.IR "size_t sigsetsize" ,
-which specifies the size in bytes of the signal sets in
-.I act.sa_mask
-and
-.IR oldact.sa_mask .
-This argument is currently required to have the value
-.I sizeof(sigset_t)
-(or the error
-.B EINVAL
-results).
-The glibc
-.BR sigaction ()
-wrapper function hides these details from us, transparently calling
-.BR rt_sigaction ()
-when the kernel provides it.
-.\"
.SS Undocumented
Before the introduction of
.BR SA_SIGINFO ,
diff --git a/man2/sigaltstack.2 b/man2/sigaltstack.2
index cdc8a8e39..095c95742 100644
--- a/man2/sigaltstack.2
+++ b/man2/sigaltstack.2
@@ -211,11 +211,12 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2, SVr4.
+POSIX.1-2008.
.PP
-The
.B SS_AUTODISARM
-flag is a Linux extension.
+is a Linux extension.
+.SH HISTORY
+POSIX.1-2001, SUSv2, SVr4.
.SH NOTES
The most common usage of an alternate signal stack is to handle the
.B SIGSEGV
diff --git a/man2/signal.2 b/man2/signal.2
index d340c734b..c05b0ee45 100644
--- a/man2/signal.2
+++ b/man2/signal.2
@@ -93,43 +93,7 @@ is set to indicate the error.
.B EINVAL
.I signum
is invalid.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.SH NOTES
-The effects of
-.BR signal ()
-in a multithreaded process are unspecified.
-.PP
-According to POSIX, the behavior of a process is undefined after it
-ignores a
-.BR SIGFPE ,
-.BR SIGILL ,
-or
-.B SIGSEGV
-signal that was not generated by
-.BR kill (2)
-or
-.BR raise (3).
-Integer division by zero has undefined result.
-On some architectures it will generate a
-.B SIGFPE
-signal.
-(Also dividing the most negative integer by \-1 may generate
-.BR SIGFPE .)
-Ignoring this signal might lead to an endless loop.
-.PP
-See
-.BR sigaction (2)
-for details on what happens when the disposition
-.B SIGCHLD
-is set to
-.BR SIG_IGN .
-.PP
-See
-.BR signal\-safety (7)
-for a list of the async-signal-safe functions that can be
-safely called from inside a signal handler.
-.PP
+.SH VERSIONS
The use of
.I sighandler_t
is a GNU extension, exposed if
@@ -173,6 +137,10 @@ POSIX.1 solved the portability mess by specifying
which provides explicit control of the semantics when a
signal handler is invoked; use that interface instead of
.BR signal ().
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.PP
In the original UNIX systems, when a handler that was established using
.BR signal ()
@@ -257,6 +225,40 @@ provides System\ V semantics.
.\" then
.\" .BR signal ()
.\" provides BSD semantics.
+.SH NOTES
+The effects of
+.BR signal ()
+in a multithreaded process are unspecified.
+.PP
+According to POSIX, the behavior of a process is undefined after it
+ignores a
+.BR SIGFPE ,
+.BR SIGILL ,
+or
+.B SIGSEGV
+signal that was not generated by
+.BR kill (2)
+or
+.BR raise (3).
+Integer division by zero has undefined result.
+On some architectures it will generate a
+.B SIGFPE
+signal.
+(Also dividing the most negative integer by \-1 may generate
+.BR SIGFPE .)
+Ignoring this signal might lead to an endless loop.
+.PP
+See
+.BR sigaction (2)
+for details on what happens when the disposition
+.B SIGCHLD
+is set to
+.BR SIG_IGN .
+.PP
+See
+.BR signal\-safety (7)
+for a list of the async-signal-safe functions that can be
+safely called from inside a signal handler.
.SH SEE ALSO
.BR kill (1),
.BR alarm (2),
diff --git a/man2/signalfd.2 b/man2/signalfd.2
index f0c27991b..8e86d6528 100644
--- a/man2/signalfd.2
+++ b/man2/signalfd.2
@@ -328,18 +328,43 @@ Could not mount (internal) anonymous inode device.
.B ENOMEM
There was insufficient memory to create a new signalfd file descriptor.
.SH VERSIONS
+.SS C library/kernel differences
+The underlying Linux system call requires an additional argument,
+.IR "size_t sizemask" ,
+which specifies the size of the
+.I mask
+argument.
+The glibc
.BR signalfd ()
-is available since Linux 2.6.22.
-Working support is provided since glibc 2.8.
-.\" signalfd() is in glibc 2.7, but reportedly does not build
-The
+wrapper function does not include this argument,
+since it provides the required value for the underlying system call.
+.PP
+There are two underlying Linux system calls:
+.BR signalfd ()
+and the more recent
+.BR signalfd4 ().
+The former system call does not implement a
+.I flags
+argument.
+The latter system call implements the
+.I flags
+values described above.
+Starting with glibc 2.9, the
+.BR signalfd ()
+wrapper function will use
.BR signalfd4 ()
-system call (see NOTES) is available since Linux 2.6.27.
+where it is available.
.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR signalfd ()
-and
+Linux 2.6.22,
+glibc 2.8.
+.\" signalfd() is in glibc 2.7, but reportedly does not build
+.TP
.BR signalfd4 ()
-are Linux-specific.
+Linux 2.6.27.
.SH NOTES
A process can create multiple signalfd file descriptors.
This makes it possible to accept different signals
@@ -400,33 +425,6 @@ handler that writes to a file descriptor monitored by
.BR poll (2),
or
.BR epoll (7).
-.\"
-.SS C library/kernel differences
-The underlying Linux system call requires an additional argument,
-.IR "size_t sizemask" ,
-which specifies the size of the
-.I mask
-argument.
-The glibc
-.BR signalfd ()
-wrapper function does not include this argument,
-since it provides the required value for the underlying system call.
-.PP
-There are two underlying Linux system calls:
-.BR signalfd ()
-and the more recent
-.BR signalfd4 ().
-The former system call does not implement a
-.I flags
-argument.
-The latter system call implements the
-.I flags
-values described above.
-Starting with glibc 2.9, the
-.BR signalfd ()
-wrapper function will use
-.BR signalfd4 ()
-where it is available.
.SH BUGS
Before Linux 2.6.25, the
.I ssi_ptr
diff --git a/man2/sigpending.2 b/man2/sigpending.2
index 517058b9e..b0a9c247e 100644
--- a/man2/sigpending.2
+++ b/man2/sigpending.2
@@ -46,27 +46,9 @@ is set to indicate the error.
.I set
points to memory which is not a valid part of the process address space.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-See
-.BR sigsetops (3)
-for details on manipulating signal sets.
-.PP
-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
-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
-A child created via
-.BR fork (2)
-initially has an empty pending signal set;
-the pending signal set is preserved across an
-.BR execve (2).
-.\"
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SS C library/kernel differences
The original Linux system call was named
.BR sigpending ().
@@ -93,7 +75,25 @@ The glibc
wrapper function hides these details from us, transparently calling
.BR rt_sigpending ()
when the kernel provides it.
-.\"
+.SH NOTES
+See
+.BR sigsetops (3)
+for details on manipulating signal sets.
+.PP
+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
+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
+A child created via
+.BR fork (2)
+initially has an empty pending signal set;
+the pending signal set is preserved across an
+.BR execve (2).
.SH BUGS
Up to and including glibc 2.2.1,
there is a bug in the wrapper function for
diff --git a/man2/sigprocmask.2 b/man2/sigprocmask.2
index ae65e3400..692ce601f 100644
--- a/man2/sigprocmask.2
+++ b/man2/sigprocmask.2
@@ -116,45 +116,7 @@ Either the value specified in
.I how
was invalid or the kernel does not support the size passed in
.I sigsetsize.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-It is not possible to block
-.BR SIGKILL " or " SIGSTOP .
-Attempts to do so are silently ignored.
-.PP
-Each of the threads in a process has its own signal mask.
-.PP
-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
-If
-.BR SIGBUS ,
-.BR SIGFPE ,
-.BR SIGILL ,
-or
-.B SIGSEGV
-are generated
-while they are blocked, the result is undefined,
-unless the signal was generated by
-.BR kill (2),
-.BR sigqueue (3),
-or
-.BR raise (3).
-.PP
-See
-.BR sigsetops (3)
-for details on manipulating signal sets.
-.PP
-Note that it is permissible (although not very useful) to specify both
-.I set
-and
-.I oldset
-as NULL.
-.\"
+.SH VERSIONS
.SS C library/kernel differences
The kernel's definition of
.I sigset_t
@@ -209,6 +171,46 @@ wrapper function hides these details from us, transparently calling
.BR rt_sigprocmask ()
when the kernel provides it.
.\"
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+It is not possible to block
+.BR SIGKILL " or " SIGSTOP .
+Attempts to do so are silently ignored.
+.PP
+Each of the threads in a process has its own signal mask.
+.PP
+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
+If
+.BR SIGBUS ,
+.BR SIGFPE ,
+.BR SIGILL ,
+or
+.B SIGSEGV
+are generated
+while they are blocked, the result is undefined,
+unless the signal was generated by
+.BR kill (2),
+.BR sigqueue (3),
+or
+.BR raise (3).
+.PP
+See
+.BR sigsetops (3)
+for details on manipulating signal sets.
+.PP
+Note that it is permissible (although not very useful) to specify both
+.I set
+and
+.I oldset
+as NULL.
.SH SEE ALSO
.BR kill (2),
.BR pause (2),
diff --git a/man2/sigreturn.2 b/man2/sigreturn.2
index a4f0e1315..861e8d25d 100644
--- a/man2/sigreturn.2
+++ b/man2/sigreturn.2
@@ -52,12 +52,14 @@ at the point where it was interrupted by the signal.
.SH RETURN VALUE
.BR sigreturn ()
never returns.
-.SH STANDARDS
+.SH VERSIONS
Many UNIX-type systems have a
.BR sigreturn ()
system call or near equivalent.
However, this call is not specified in POSIX,
and details of its behavior vary across systems.
+.SH STANDARDS
+None.
.SH NOTES
.BR sigreturn ()
exists only to allow the implementation of signal handlers.
diff --git a/man2/sigsuspend.2 b/man2/sigsuspend.2
index 8493d2969..c5c22c2c1 100644
--- a/man2/sigsuspend.2
+++ b/man2/sigsuspend.2
@@ -68,29 +68,9 @@ points to memory which is not a valid part of the process address space.
The call was interrupted by a signal;
.BR signal (7).
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-Normally,
-.BR sigsuspend ()
-is used in conjunction with
-.BR sigprocmask (2)
-in order to prevent delivery of a signal during the execution of a
-critical code section.
-The caller first blocks the signals with
-.BR sigprocmask (2).
-When the critical code has completed, the caller then waits for the
-signals by calling
-.BR sigsuspend ()
-with the signal mask that was returned by
-.BR sigprocmask (2)
-(in the
-.I oldset
-argument).
-.PP
-See
-.BR sigsetops (3)
-for details on manipulating signal sets.
-.\"
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SS C library/kernel differences
The original Linux system call was named
.BR sigsuspend ().
@@ -118,6 +98,27 @@ wrapper function hides these details from us, transparently calling
.BR rt_sigsuspend ()
when the kernel provides it.
.\"
+.SH NOTES
+Normally,
+.BR sigsuspend ()
+is used in conjunction with
+.BR sigprocmask (2)
+in order to prevent delivery of a signal during the execution of a
+critical code section.
+The caller first blocks the signals with
+.BR sigprocmask (2).
+When the critical code has completed, the caller then waits for the
+signals by calling
+.BR sigsuspend ()
+with the signal mask that was returned by
+.BR sigprocmask (2)
+(in the
+.I oldset
+argument).
+.PP
+See
+.BR sigsetops (3)
+for details on manipulating signal sets.
.SH SEE ALSO
.BR kill (2),
.BR pause (2),
diff --git a/man2/sigwaitinfo.2 b/man2/sigwaitinfo.2
index 42209c180..fb797e803 100644
--- a/man2/sigwaitinfo.2
+++ b/man2/sigwaitinfo.2
@@ -110,8 +110,53 @@ The wait was interrupted by a signal handler; see
.B EINVAL
.I timeout
was invalid.
+.SH VERSIONS
+.SS C library/kernel differences
+On Linux,
+.BR sigwaitinfo ()
+is a library function implemented on top of
+.BR sigtimedwait ().
+.PP
+The glibc wrapper functions for
+.BR sigwaitinfo ()
+and
+.BR sigtimedwait ()
+silently ignore attempts to wait for the two real-time signals that
+are used internally by the NPTL threading implementation.
+See
+.BR nptl (7)
+for details.
+.PP
+The original Linux system call was named
+.BR sigtimedwait ().
+However, with the addition of real-time signals in Linux 2.2,
+the fixed-size, 32-bit
+.I sigset_t
+type supported by that system call was no longer fit for purpose.
+Consequently, a new system call,
+.BR rt_sigtimedwait (),
+was added to support an enlarged
+.I sigset_t
+type.
+The new system call takes a fourth argument,
+.IR "size_t sigsetsize" ,
+which specifies the size in bytes of the signal set in
+.IR set .
+This argument is currently required to have the value
+.I sizeof(sigset_t)
+(or the error
+.B EINVAL
+results).
+The glibc
+.BR sigtimedwait ()
+wrapper function hides these details from us, transparently calling
+.BR rt_sigtimedwait ()
+when the kernel provides it.
+.\"
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
In normal usage, the calling program blocks the signals in
.I set
@@ -171,49 +216,6 @@ unspecified, permitting the possibility that this has the same meaning
as a call to
.BR sigwaitinfo (),
and indeed this is what is done on Linux.
-.\"
-.SS C library/kernel differences
-On Linux,
-.BR sigwaitinfo ()
-is a library function implemented on top of
-.BR sigtimedwait ().
-.PP
-The glibc wrapper functions for
-.BR sigwaitinfo ()
-and
-.BR sigtimedwait ()
-silently ignore attempts to wait for the two real-time signals that
-are used internally by the NPTL threading implementation.
-See
-.BR nptl (7)
-for details.
-.PP
-The original Linux system call was named
-.BR sigtimedwait ().
-However, with the addition of real-time signals in Linux 2.2,
-the fixed-size, 32-bit
-.I sigset_t
-type supported by that system call was no longer fit for purpose.
-Consequently, a new system call,
-.BR rt_sigtimedwait (),
-was added to support an enlarged
-.I sigset_t
-type.
-The new system call takes a fourth argument,
-.IR "size_t sigsetsize" ,
-which specifies the size in bytes of the signal set in
-.IR set .
-This argument is currently required to have the value
-.I sizeof(sigset_t)
-(or the error
-.B EINVAL
-results).
-The glibc
-.BR sigtimedwait ()
-wrapper function hides these details from us, transparently calling
-.BR rt_sigtimedwait ()
-when the kernel provides it.
-.\"
.SH SEE ALSO
.BR kill (2),
.BR sigaction (2),
diff --git a/man2/socket.2 b/man2/socket.2
index 0caf77c50..2c681020b 100644
--- a/man2/socket.2
+++ b/man2/socket.2
@@ -428,20 +428,21 @@ supported within this domain.
.PP
Other errors may be generated by the underlying protocol modules.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.4BSD.
+POSIX.1-2008.
.PP
-The
.B SOCK_NONBLOCK
and
.B SOCK_CLOEXEC
-flags are Linux-specific.
+are Linux-specific.
+.SH HISTORY
+POSIX.1-2001, 4.4BSD.
.PP
.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).
-.SH NOTES
+.PP
The manifest constants used under 4.x BSD for protocol families
are
.BR PF_UNIX ,
diff --git a/man2/socketcall.2 b/man2/socketcall.2
index a5803eea6..b4c096085 100644
--- a/man2/socketcall.2
+++ b/man2/socketcall.2
@@ -142,10 +142,7 @@ T}:T{
.BR sendmmsg (2)
T}
.TE
-.SH STANDARDS
-This call is specific to Linux, and should not be used in programs
-intended to be portable.
-.SH NOTES
+.SH VERSIONS
On some architectures\[em]for example, x86-64 and ARM\[em]there is no
.BR socketcall ()
system call; instead
@@ -153,6 +150,8 @@ system call; instead
.BR accept (2),
.BR bind (2),
and so on really are implemented as separate system calls.
+.SH STANDARDS
+Linux.
.PP
On x86-32,
.BR socketcall ()
diff --git a/man2/socketpair.2 b/man2/socketpair.2
index bc80614a1..9831c9715 100644
--- a/man2/socketpair.2
+++ b/man2/socketpair.2
@@ -77,14 +77,7 @@ The specified protocol does not support creation of socket pairs.
.TP
.B EPROTONOSUPPORT
The specified protocol is not supported on this machine.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.4BSD.
-.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).
-.SH NOTES
+.SH VERSIONS
On Linux, the only supported domains for this call are
.B AF_UNIX
(or synonymously,
@@ -93,6 +86,16 @@ and
.B AF_TIPC
.\" commit: 70b03759e9ecfae400605fa34f3d7154cccbbba3
(since Linux 4.12).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.4BSD.
+.PP
+.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
Since Linux 2.6.27,
.BR socketpair ()
diff --git a/man2/splice.2 b/man2/splice.2
index 38d8f703b..dd78e8cd4 100644
--- a/man2/splice.2
+++ b/man2/splice.2
@@ -176,13 +176,21 @@ Either
or
.I off_out
was not NULL, but the corresponding file descriptor refers to a pipe.
-.SH VERSIONS
-The
-.BR splice ()
-system call first appeared in Linux 2.6.17;
-library support was added in glibc 2.5.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.17,
+glibc 2.5.
+.PP
+In Linux 2.6.30 and earlier,
+exactly one of
+.I fd_in
+and
+.I fd_out
+was required to be a pipe.
+Since Linux 2.6.31,
+.\" commit 7c77f0b3f9208c339a4b40737bb2cb0f0319bb8d
+both arguments may refer to pipes.
.SH NOTES
The three system calls
.BR splice (),
@@ -234,16 +242,6 @@ 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
-In Linux 2.6.30 and earlier,
-exactly one of
-.I fd_in
-and
-.I fd_out
-was required to be a pipe.
-Since Linux 2.6.31,
-.\" commit 7c77f0b3f9208c339a4b40737bb2cb0f0319bb8d
-both arguments may refer to pipes.
.SH EXAMPLES
See
.BR tee (2).
diff --git a/man2/spu_create.2 b/man2/spu_create.2
index d7215fd78..2e4abeac9 100644
--- a/man2/spu_create.2
+++ b/man2/spu_create.2
@@ -244,22 +244,10 @@ must point to a location beneath the mount point of
.BR spufs .
By convention, it gets mounted in
.IR /spu .
-.SH VERSIONS
-The
-.BR spu_create ()
-system call was added in Linux 2.6.16.
.SH STANDARDS
-This call is Linux-specific and implemented only on the PowerPC
-architecture.
-Programs using this system call are not portable.
-.SH NOTES
-.BR spu_create ()
-is meant to be used from libraries that implement a more abstract
-interface to SPUs, not to be used from regular applications.
-See
-.UR http://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/
-.UE
-for the recommended libraries.
+Linux on PowerPC.
+.SH HISTORY
+Linux 2.6.16.
.PP
Prior to the addition of the
.B SPU_CREATE_AFFINITY_SPU
@@ -268,6 +256,14 @@ flag in Linux 2.6.23, the
system call took only three arguments (i.e., there was no
.I neighbor_fd
argument).
+.SH NOTES
+.BR spu_create ()
+is meant to be used from libraries that implement a more abstract
+interface to SPUs, not to be used from regular applications.
+See
+.UR http://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/
+.UE
+for the recommended libraries.
.SH EXAMPLES
See
.BR spu_run (2)
diff --git a/man2/spu_run.2 b/man2/spu_run.2
index 720a49997..c3df3ad63 100644
--- a/man2/spu_run.2
+++ b/man2/spu_run.2
@@ -181,14 +181,10 @@ resulting from a Memory Flow Controller (MFC) direct memory access.
The functionality is not provided by the current system, because
either the hardware does not provide SPUs or the spufs module is not
loaded.
-.SH VERSIONS
-The
-.BR spu_run ()
-system call was added in Linux 2.6.16.
.SH STANDARDS
-This call is Linux-specific and implemented only by the PowerPC
-architecture.
-Programs using this system call are not portable.
+Linux on PowerPC.
+.SH HISTORY
+Linux 2.6.16.
.SH NOTES
.BR spu_run ()
is meant to be used from libraries that implement a more abstract
diff --git a/man2/stat.2 b/man2/stat.2
index 8479befcc..546e80ab4 100644
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -306,15 +306,16 @@ calls
on a file whose size exceeds
.I (1<<31)\-1
bytes.
-.SH VERSIONS
-.BR fstatat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
.SH STANDARDS
-.BR stat (),
-.BR fstat (),
-.BR lstat ():
-SVr4, 4.3BSD, POSIX.1-2001, POSIX.1.2008.
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR stat ()
+.TQ
+.BR fstat ()
+.TQ
+.BR lstat ()
+SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional
.\" .BR fstat ()
.\" error conditions EINTR, ENOLINK, and EOVERFLOW. SVr4
@@ -323,9 +324,11 @@ SVr4, 4.3BSD, POSIX.1-2001, POSIX.1.2008.
.\" and
.\" .BR lstat ()
.\" error conditions EINTR, EMULTIHOP, ENOLINK, and EOVERFLOW.
-.PP
-.BR fstatat ():
+.TP
+.BR fstatat ()
POSIX.1-2008.
+Linux 2.6.16,
+glibc 2.4.
.PP
According to POSIX.1-2001,
.BR lstat ()
@@ -349,7 +352,6 @@ fields may be less portable.
(They were introduced in BSD.
The interpretation differs between systems,
and possibly on a single system when NFS mounts are involved.)
-.SH NOTES
.SS C library/kernel differences
Over time, increases in the size of the
.I stat
diff --git a/man2/statfs.2 b/man2/statfs.2
index 8c4d6236f..0496ab6c9 100644
--- a/man2/statfs.2
+++ b/man2/statfs.2
@@ -267,61 +267,7 @@ is not a directory.
.TP
.B EOVERFLOW
Some values were too large to be represented in the returned struct.
-.SH STANDARDS
-Linux-specific.
-The Linux
-.BR statfs ()
-was inspired by the 4.4BSD one
-(but they do not use the same structure).
-.SH NOTES
-The
-.I __fsword_t
-type used for various fields in the
-.I statfs
-structure definition is a glibc internal type,
-not intended for public use.
-This leaves the programmer in a bit of a conundrum when trying to copy
-or compare these fields to local variables in a program.
-Using
-.I "unsigned\ int"
-for such variables suffices on most systems.
-.PP
-The original Linux
-.BR statfs ()
-and
-.BR fstatfs ()
-system calls were not designed with extremely large file sizes in mind.
-Subsequently, Linux 2.6
-added new
-.BR statfs64 ()
-and
-.BR fstatfs64 ()
-system calls that employ a new structure,
-.IR statfs64 .
-The new structure contains the same fields as the original
-.I statfs
-structure, but the sizes of various fields are increased,
-to accommodate large file sizes.
-The glibc
-.BR statfs ()
-and
-.BR fstatfs ()
-wrapper functions transparently deal with the kernel differences.
-.PP
-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
-including the former is the best choice.
-.PP
-LSB has deprecated the library calls
-.BR statfs ()
-and
-.BR fstatfs ()
-and tells us to use
-.BR statvfs (3)
-and
-.BR fstatvfs (3)
-instead.
+.SH VERSIONS
.SS The f_fsid field
Solaris, Irix, and POSIX have a system call
.BR statvfs (2)
@@ -366,6 +312,62 @@ Under some operating systems, the
can be used as the second argument to the
.BR sysfs (2)
system call.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+The Linux
+.BR statfs ()
+was inspired by the 4.4BSD one
+(but they do not use the same structure).
+.PP
+The original Linux
+.BR statfs ()
+and
+.BR fstatfs ()
+system calls were not designed with extremely large file sizes in mind.
+Subsequently, Linux 2.6
+added new
+.BR statfs64 ()
+and
+.BR fstatfs64 ()
+system calls that employ a new structure,
+.IR statfs64 .
+The new structure contains the same fields as the original
+.I statfs
+structure, but the sizes of various fields are increased,
+to accommodate large file sizes.
+The glibc
+.BR statfs ()
+and
+.BR fstatfs ()
+wrapper functions transparently deal with the kernel differences.
+.PP
+LSB has deprecated the library calls
+.BR statfs ()
+and
+.BR fstatfs ()
+and tells us to use
+.BR statvfs (3)
+and
+.BR fstatvfs (3)
+instead.
+.SH NOTES
+The
+.I __fsword_t
+type used for various fields in the
+.I statfs
+structure definition is a glibc internal type,
+not intended for public use.
+This leaves the programmer in a bit of a conundrum when trying to copy
+or compare these fields to local variables in a program.
+Using
+.I "unsigned\ int"
+for such variables suffices on most systems.
+.PP
+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
+including the former is the best choice.
.SH BUGS
From Linux 2.6.38 up to and including Linux 3.1,
.\" broken in commit ff0c7d15f9787b7e8c601533c015295cc68329f8
diff --git a/man2/statx.2 b/man2/statx.2
index c79f3c219..ef35efd98 100644
--- a/man2/statx.2
+++ b/man2/statx.2
@@ -589,12 +589,11 @@ is not a directory or
is relative and
.I dirfd
is a file descriptor referring to a file other than a directory.
-.SH VERSIONS
-.BR statx ()
-was added in Linux 4.11; library support was added in glibc 2.28.
.SH STANDARDS
-.BR statx ()
-is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 4.11,
+glibc 2.28.
.SH SEE ALSO
.BR ls (1),
.BR stat (1),
diff --git a/man2/stime.2 b/man2/stime.2
index fd77385d1..ec0a9d02b 100644
--- a/man2/stime.2
+++ b/man2/stime.2
@@ -59,8 +59,10 @@ Under Linux, the
.B CAP_SYS_TIME
privilege is required.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
-.SH NOTES
+.PP
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 374ddce9d..2719e9ceb 100644
--- a/man2/subpage_prot.2
+++ b/man2/subpage_prot.2
@@ -76,14 +76,13 @@ address space of the process or to a region that consists of huge pages.
.TP
.B ENOMEM
Out of memory.
-.SH VERSIONS
-This system call is provided on the PowerPC architecture
-since Linux 2.6.25.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.6.25 (PowerPC).
+.PP
The system call is provided only if the kernel is configured with
.BR CONFIG_PPC_64K_PAGES .
-No library support is provided.
-.SH STANDARDS
-This system call is Linux-specific.
.SH NOTES
Normal page protections (at the 64-kB page level) also apply;
the subpage protection mechanism is an additional constraint,
diff --git a/man2/swapon.2 b/man2/swapon.2
index db9dc3dff..8f798ef7b 100644
--- a/man2/swapon.2
+++ b/man2/swapon.2
@@ -148,9 +148,9 @@ capability.
Alternatively, the maximum number of swap files are already in use;
see NOTES below.
.SH STANDARDS
-These functions are Linux-specific and should not be used in programs
-intended to be portable.
-The second
+Linux.
+.SH HISTORY
+The
.I swapflags
argument was introduced in Linux 1.3.2.
.SH NOTES
diff --git a/man2/symlink.2 b/man2/symlink.2
index 13b2ed1cc..4475bcb90 100644
--- a/man2/symlink.2
+++ b/man2/symlink.2
@@ -214,29 +214,21 @@ does not support the creation of symbolic links.
.B EROFS
.I linkpath
is on a read-only filesystem.
-.SH VERSIONS
-.BR symlinkat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
.SH STANDARDS
-.BR symlink ():
-SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR symlink ()
+SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional error codes EDQUOT and ENOSYS.
.\" See
.\" .BR open (2)
.\" re multiple files with the same name, and NFS.
-.PP
-.BR symlinkat ():
+.TP
+.BR symlinkat ()
POSIX.1-2008.
-.SH NOTES
-No checking of
-.I target
-is done.
-.PP
-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
-.BR link (2).
+Linux 2.6.16,
+glibc 2.4.
.SS glibc notes
On older kernels where
.BR symlinkat ()
@@ -250,6 +242,15 @@ glibc constructs a pathname based on the symbolic link in
that corresponds to the
.I newdirfd
argument.
+.SH NOTES
+No checking of
+.I target
+is done.
+.PP
+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
+.BR link (2).
.SH SEE ALSO
.BR ln (1),
.BR namei (1),
diff --git a/man2/sync.2 b/man2/sync.2
index 24576ec37..c1257fdc2 100644
--- a/man2/sync.2
+++ b/man2/sync.2
@@ -88,25 +88,6 @@ allocate space at the time of a
system call, and some previous write failed due to insufficient
storage space.
.SH VERSIONS
-.BR syncfs ()
-first appeared in Linux 2.6.39;
-library support was added in glibc 2.14.
-.SH STANDARDS
-.BR sync ():
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.PP
-.BR syncfs ()
-is Linux-specific.
-.SH NOTES
-Since glibc 2.2.2, the Linux prototype for
-.BR sync ()
-is as listed above,
-following the various standards.
-In glibc 2.2.1 and earlier,
-it was "int sync(void)", and
-.BR sync ()
-always returned 0.
-.PP
According to the standard specification (e.g., POSIX.1-2001),
.BR sync ()
schedules the writes, but may return before the actual
@@ -120,6 +101,30 @@ provide the same guarantees as
.BR fsync ()
called on every file in
the system or filesystem respectively.
+.SH STANDARDS
+.TP
+.BR sync ()
+POSIX.1-2008.
+.TP
+.BR syncfs ()
+Linux.
+.SH HISTORY
+.TP
+.BR sync ()
+POSIX.1-2001, SVr4, 4.3BSD.
+.TP
+.BR syncfs ()
+Linux 2.6.39,
+glibc 2.14.
+.PP
+Since glibc 2.2.2, the Linux prototype for
+.BR sync ()
+is as listed above,
+following the various standards.
+In glibc 2.2.1 and earlier,
+it was "int sync(void)", and
+.BR sync ()
+always returned 0.
.PP
In mainline kernel versions prior to Linux 5.8,
.BR syncfs ()
diff --git a/man2/sync_file_range.2 b/man2/sync_file_range.2
index 7557cad44..d633b08ff 100644
--- a/man2/sync_file_range.2
+++ b/man2/sync_file_range.2
@@ -155,12 +155,6 @@ Out of disk space.
refers to something other than a regular file, a block device, or
a directory.
.SH VERSIONS
-.BR sync_file_range ()
-appeared in Linux 2.6.17.
-.SH STANDARDS
-This system call is Linux-specific, and should be avoided
-in portable programs.
-.SH NOTES
.SS sync_file_range2()
Some architectures (e.g., PowerPC, ARM)
need 64-bit arguments to be aligned in a suitable pair of registers.
@@ -188,7 +182,11 @@ system call that orders the arguments suitably:
.PP
The behavior of this system call is otherwise exactly the same as
.BR sync_file_range ().
-.PP
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.6.17.
+.SS sync_file_range2()
A system call with this signature first appeared on the ARM architecture
in Linux 2.6.20, with the name
.BR arm_sync_file_range ().
@@ -199,6 +197,7 @@ glibc transparently wraps
.BR sync_file_range2 ()
under the name
.BR sync_file_range ().
+.SH NOTES
.SH SEE ALSO
.BR fdatasync (2),
.BR fsync (2),
diff --git a/man2/sysctl.2 b/man2/sysctl.2
index 679b20a74..83af5efd4 100644
--- a/man2/sysctl.2
+++ b/man2/sysctl.2
@@ -73,12 +73,12 @@ non-NULL, but allowed zero room in
.B ENOTDIR
.I name
was not found.
-.SH VERSIONS
-This system call first appeared in Linux 1.3.57.
-It was removed in Linux 5.5; glibc support was removed in glibc 2.32.
.SH STANDARDS
-This call is Linux-specific, and should not be used in programs
-intended to be portable.
+Linux.
+.SH HISTORY
+Linux 1.3.57.
+Removed in Linux 5.5, glibc 2.32.
+.PP
It originated in
4.4BSD.
Only Linux has the
diff --git a/man2/sysfs.2 b/man2/sysfs.2
index d2303a7d8..2e51426fe 100644
--- a/man2/sysfs.2
+++ b/man2/sysfs.2
@@ -79,8 +79,10 @@ is out-of-bounds;
.I option
is invalid.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
-.SH NOTES
+.PP
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 2e4035122..69fe280b6 100644
--- a/man2/sysinfo.2
+++ b/man2/sysinfo.2
@@ -93,12 +93,10 @@ is set to indicate the error.
.B EFAULT
.I info
is not a valid address.
-.SH VERSIONS
-.BR sysinfo ()
-first appeared in Linux 0.98.pl6.
.SH STANDARDS
-This function is Linux-specific, and should not be used in programs
-intended to be portable.
+Linux.
+.SH HISTORY
+Linux 0.98.pl6.
.SH NOTES
All of the information provided by this system call is also available via
.I /proc/meminfo
diff --git a/man2/syslog.2 b/man2/syslog.2
index 09c086f18..99403ceb0 100644
--- a/man2/syslog.2
+++ b/man2/syslog.2
@@ -363,9 +363,8 @@ capability).
System call was interrupted by a signal; nothing was read.
(This can be seen only during a trace.)
.SH STANDARDS
-This system call is Linux-specific and should not be used in programs
-intended to be portable.
-.SH NOTES
+Linux.
+.SH HISTORY
From the very start, people noted that it is unfortunate that
a system call and a library routine of the same name are entirely
different animals.
diff --git a/man2/tee.2 b/man2/tee.2
index 6c412a475..35975badf 100644
--- a/man2/tee.2
+++ b/man2/tee.2
@@ -100,13 +100,11 @@ refer to the same pipe.
.TP
.B ENOMEM
Out of memory.
-.SH VERSIONS
-The
-.BR tee ()
-system call first appeared in Linux 2.6.17;
-library support was added in glibc 2.5.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.17,
+glibc 2.5.
.SH NOTES
Conceptually,
.BR tee ()
diff --git a/man2/time.2 b/man2/time.2
index 2be79cf78..65db67a34 100644
--- a/man2/time.2
+++ b/man2/time.2
@@ -47,12 +47,7 @@ wrapper function invokes an implementation provided by the
an invalid address may instead trigger a
.B SIGSEGV
signal.
-.SH STANDARDS
-SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
-.\" Under 4.3BSD, this call is obsoleted by
-.\" .BR gettimeofday (2).
-POSIX does not specify any error conditions.
-.SH NOTES
+.SH VERSIONS
POSIX.1 defines
.I seconds since the Epoch
using a formula that approximates the number of seconds between a
@@ -88,6 +83,17 @@ range.
Applications intended to run after 2038 should use ABIs with
.I time_t
wider than 32 bits.
+.SS C library/kernel differences
+On some architectures, an implementation of
+.BR time ()
+is provided in the
+.BR vdso (7).
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+SVr4, 4.3BSD, C89, POSIX.1-2001.
+.\" Under 4.3BSD, this call is obsoleted by
+.\" .BR gettimeofday (2).
.SH BUGS
Error returns from this system call are indistinguishable from
successful reports that the time is a few seconds
@@ -102,12 +108,6 @@ argument is obsolescent and should always be NULL in new code.
When
.I tloc
is NULL, the call cannot fail.
-.\"
-.SS C library/kernel differences
-On some architectures, an implementation of
-.BR time ()
-is provided in the
-.BR vdso (7).
.SH SEE ALSO
.BR date (1),
.BR gettimeofday (2),
diff --git a/man2/timer_create.2 b/man2/timer_create.2
index 6d49da17f..ba5ad78fb 100644
--- a/man2/timer_create.2
+++ b/man2/timer_create.2
@@ -222,9 +222,51 @@ but the caller did not have the
.B CAP_WAKE_ALARM
capability.
.SH VERSIONS
-This system call is available since Linux 2.6.
+.SS C library/kernel differences
+Part of the implementation of the POSIX timers API is provided by glibc.
+.\" See nptl/sysdeps/unix/sysv/linux/timer_create.c
+In particular:
+.IP \[bu] 3
+Much of the functionality for
+.B SIGEV_THREAD
+is implemented within glibc, rather than the kernel.
+(This is necessarily so,
+since the thread involved in handling the notification is one
+that must be managed by the C library POSIX threads implementation.)
+Although the notification delivered to the process is via a thread,
+internally the NPTL implementation uses a
+.I sigev_notify
+value of
+.B SIGEV_THREAD_ID
+along with a real-time signal that is reserved by the implementation (see
+.BR nptl (7)).
+.IP \[bu]
+The implementation of the default case where
+.I evp
+is NULL is handled inside glibc,
+which invokes the underlying system call with a suitably populated
+.I sigevent
+structure.
+.IP \[bu]
+The timer IDs presented at user level are maintained by glibc,
+which maps these IDs to the timer IDs employed by the kernel.
+.\" See the glibc source file kernel-posix-timers.h for the structure
+.\" that glibc uses to map user-space timer IDs to kernel timer IDs
+.\" The kernel-level timer ID is exposed via siginfo.si_tid.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+Linux 2.6.
+POSIX.1-2001.
+.PP
+Prior to Linux 2.6,
+glibc provided an incomplete user-space implementation
+.RB ( CLOCK_REALTIME
+timers only) using POSIX threads,
+and before glibc 2.17,
+.\" glibc commit 93a78ac437ba44f493333d7e2a4b0249839ce460
+the implementation falls back to this technique on systems
+running kernels older than Linux 2.6.
.SH NOTES
A program may create multiple interval timers using
.BR timer_create ().
@@ -277,48 +319,6 @@ support for POSIX timers is a configurable option that is enabled by default.
Kernel support can be disabled via the
.B CONFIG_POSIX_TIMERS
option.
-.\"
-.SS C library/kernel differences
-Part of the implementation of the POSIX timers API is provided by glibc.
-.\" See nptl/sysdeps/unix/sysv/linux/timer_create.c
-In particular:
-.IP \[bu] 3
-Much of the functionality for
-.B SIGEV_THREAD
-is implemented within glibc, rather than the kernel.
-(This is necessarily so,
-since the thread involved in handling the notification is one
-that must be managed by the C library POSIX threads implementation.)
-Although the notification delivered to the process is via a thread,
-internally the NPTL implementation uses a
-.I sigev_notify
-value of
-.B SIGEV_THREAD_ID
-along with a real-time signal that is reserved by the implementation (see
-.BR nptl (7)).
-.IP \[bu]
-The implementation of the default case where
-.I evp
-is NULL is handled inside glibc,
-which invokes the underlying system call with a suitably populated
-.I sigevent
-structure.
-.IP \[bu]
-The timer IDs presented at user level are maintained by glibc,
-which maps these IDs to the timer IDs employed by the kernel.
-.\" See the glibc source file kernel-posix-timers.h for the structure
-.\" that glibc uses to map user-space timer IDs to kernel timer IDs
-.\" The kernel-level timer ID is exposed via siginfo.si_tid.
-.PP
-The POSIX timers system calls first appeared in Linux 2.6.
-Prior to this,
-glibc provided an incomplete user-space implementation
-.RB ( CLOCK_REALTIME
-timers only) using POSIX threads,
-and before glibc 2.17,
-.\" glibc commit 93a78ac437ba44f493333d7e2a4b0249839ce460
-the implementation falls back to this technique on systems
-running kernels older than Linux 2.6.
.SH EXAMPLES
The program below takes two arguments: a sleep period in seconds,
and a timer frequency in nanoseconds.
diff --git a/man2/timer_delete.2 b/man2/timer_delete.2
index c489d9ec0..7db4ce1fd 100644
--- a/man2/timer_delete.2
+++ b/man2/timer_delete.2
@@ -45,10 +45,11 @@ is set to indicate the error.
.B EINVAL
.I timerid
is not a valid timer ID.
-.SH VERSIONS
-This system call is available since Linux 2.6.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+Linux 2.6.
+POSIX.1-2001.
.SH SEE ALSO
.BR clock_gettime (2),
.BR timer_create (2),
diff --git a/man2/timer_getoverrun.2 b/man2/timer_getoverrun.2
index 3591e5de5..90d9e0040 100644
--- a/man2/timer_getoverrun.2
+++ b/man2/timer_getoverrun.2
@@ -76,10 +76,6 @@ is set to indicate the error.
.I timerid
is not a valid timer ID.
.SH VERSIONS
-This system call is available since Linux 2.6.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
When timer notifications are delivered via signals
.RB ( SIGEV_SIGNAL ),
on Linux it is also possible to obtain the overrun count via the
@@ -96,6 +92,11 @@ POSIX.1 discusses timer overruns only in the context of
timer notifications using signals.
.\" FIXME . Austin bug filed, 11 Feb 09
.\" https://www.austingroupbugs.net/view.php?id=95
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+Linux 2.6.
+POSIX.1-2001.
.SH BUGS
POSIX.1 specifies that if the timer overrun count
is equal to or greater than an implementation-defined maximum,
diff --git a/man2/timer_settime.2 b/man2/timer_settime.2
index c02636554..589da08c5 100644
--- a/man2/timer_settime.2
+++ b/man2/timer_settime.2
@@ -172,10 +172,11 @@ may fail with the following errors:
is negative; or
.I new_value.it_value.tv_nsec
is negative or greater than 999,999,999.
-.SH VERSIONS
-These system calls are available since Linux 2.6.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+Linux 2.6.
+POSIX.1-2001.
.SH EXAMPLES
See
.BR timer_create (2).
diff --git a/man2/timerfd_create.2 b/man2/timerfd_create.2
index 315f3fe35..516e050b3 100644
--- a/man2/timerfd_create.2
+++ b/man2/timerfd_create.2
@@ -468,11 +468,11 @@ falls outside the range zero to 999,999,999).
.\" In older kernel versions, no check was made for invalid flags.
.I flags
is invalid.
-.SH VERSIONS
-These system calls are available since Linux 2.6.25.
-Library support is provided since glibc 2.8.
.SH STANDARDS
-These system calls are Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.25,
+glibc 2.8.
.SH NOTES
Suppose the following scenario for
.B CLOCK_REALTIME
diff --git a/man2/times.2 b/man2/times.2
index 6c4d4ce8e..0c14bd6e9 100644
--- a/man2/times.2
+++ b/man2/times.2
@@ -101,19 +101,25 @@ is set to indicate the error.
.B EFAULT
.I tms
points outside the process's address space.
+.SH VERSIONS
+On Linux,
+the
+.I buf
+argument can be specified as NULL,
+with the result that
+.BR times ()
+just returns a function result.
+However,
+POSIX does not specify this behavior,
+and most
+other UNIX implementations require a non-NULL value for
+.IR buf .
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
POSIX.1-2001,
-POSIX.1-2008,
SVr4,
4.3BSD.
-.SH NOTES
-The number of clock ticks per second can be obtained using:
-.PP
-.in +4n
-.EX
-sysconf(_SC_CLK_TCK);
-.EE
-.in
.PP
In POSIX.1-1996 the symbol \fBCLK_TCK\fP (defined in
.IR <time.h> )
@@ -141,28 +147,6 @@ This nonconformance is rectified in Linux 2.6.9 and later.
.\" or waitpid() returns the process ID of this terminated child.
.PP
On Linux,
-the
-.I buf
-argument can be specified as NULL,
-with the result that
-.BR times ()
-just returns a function result.
-However,
-POSIX does not specify this behavior,
-and most
-other UNIX implementations require a non-NULL value for
-.IR buf .
-.PP
-Note that
-.BR clock (3)
-also returns a value of type
-.IR clock_t ,
-but this value is measured in units of
-.BR CLOCKS_PER_SEC ,
-not the clock ticks used by
-.BR times ().
-.PP
-On Linux,
the \[lq]arbitrary point in the past\[rq]
from which the return value of
.BR times ()
@@ -183,7 +167,7 @@ instead.
.\" .PP
.\" On older systems the number of clock ticks per second is given
.\" by the variable HZ.
-.SS Historical
+.PP
SVr1-3 returns
.I long
and the struct members are of type
@@ -196,6 +180,23 @@ for the struct members,
because it had no type
.I time_t
yet.
+.SH NOTES
+The number of clock ticks per second can be obtained using:
+.PP
+.in +4n
+.EX
+sysconf(_SC_CLK_TCK);
+.EE
+.in
+.PP
+Note that
+.BR clock (3)
+also returns a value of type
+.IR clock_t ,
+but this value is measured in units of
+.BR CLOCKS_PER_SEC ,
+not the clock ticks used by
+.BR times ().
.SH BUGS
A limitation of the Linux system call conventions on some architectures
(notably i386) means that on Linux 2.6 there is a small time window
diff --git a/man2/tkill.2 b/man2/tkill.2
index 05e19e295..d5c55ef52 100644
--- a/man2/tkill.2
+++ b/man2/tkill.2
@@ -107,30 +107,22 @@ For the required permissions, see
.TP
.B ESRCH
No process with the specified thread ID (and thread group ID) exists.
-.SH VERSIONS
-.BR tkill ()
-is supported since Linux 2.4.19 / 2.5.4.
-.BR tgkill ()
-was added in Linux 2.5.75.
-.PP
-Library support for
-.BR tgkill ()
-was added in glibc 2.30.
.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
.BR tkill ()
-and
+Linux 2.4.19 / 2.5.4.
+.TP
.BR tgkill ()
-are Linux-specific and should not be used
-in programs that are intended to be portable.
+Linux 2.5.75,
+glibc 2.30.
.SH NOTES
See the description of
.B CLONE_THREAD
in
.BR clone (2)
for an explanation of thread groups.
-.PP
-Before glibc 2.30, there was also no wrapper function for
-.BR tgkill ().
.SH SEE ALSO
.BR clone (2),
.BR gettid (2),
diff --git a/man2/truncate.2 b/man2/truncate.2
index 8a00ec3ff..703f598b3 100644
--- a/man2/truncate.2
+++ b/man2/truncate.2
@@ -176,25 +176,7 @@ POSIX permits, and portable applications should handle,
either error for this case.
(Linux produces
.BR EINVAL .)
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008,
-4.4BSD, SVr4 (these calls first appeared in 4.2BSD).
-.\" POSIX.1-1996 has
-.\" .BR ftruncate ().
-.\" POSIX.1-2001 also has
-.\" .BR truncate (),
-.\" as an XSI extension.
-.\" .LP
-.\" SVr4 documents additional
-.\" .BR truncate ()
-.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for
-.\" .BR ftruncate ()
-.\" an additional EAGAIN error condition.
-.SH NOTES
-.BR ftruncate ()
-can also be used to set the size of a POSIX shared memory object; see
-.BR shm_open (3).
-.PP
+.SH VERSIONS
The details in DESCRIPTION are for XSI-compliant systems.
For non-XSI-compliant systems, the POSIX standard allows
two behaviors for
@@ -216,6 +198,27 @@ 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
+On some 32-bit architectures,
+the calling signature for these system calls differ,
+for the reasons described in
+.BR syscall (2).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001,
+4.4BSD, SVr4 (first appeared in 4.2BSD).
+.\" POSIX.1-1996 has
+.\" .BR ftruncate ().
+.\" POSIX.1-2001 also has
+.\" .BR truncate (),
+.\" as an XSI extension.
+.\" .LP
+.\" SVr4 documents additional
+.\" .BR truncate ()
+.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for
+.\" .BR ftruncate ()
+.\" an additional EAGAIN error condition.
+.PP
The original Linux
.BR truncate ()
and
@@ -229,11 +232,10 @@ system calls that handle large files.
However, these details can be ignored by applications using glibc, whose
wrapper functions transparently employ the more recent system calls
where they are available.
-.PP
-On some 32-bit architectures,
-the calling signature for these system calls differ,
-for the reasons described in
-.BR syscall (2).
+.SH NOTES
+.BR ftruncate ()
+can also be used to set the size of a POSIX shared memory object; see
+.BR shm_open (3).
.SH BUGS
A header file bug in glibc 2.12 meant that the minimum value of
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=12037
diff --git a/man2/umask.2 b/man2/umask.2
index 541d81c66..07e0b5e76 100644
--- a/man2/umask.2
+++ b/man2/umask.2
@@ -100,7 +100,9 @@ resulting file will be:
This system call always succeeds and the previous value of the mask
is returned.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH NOTES
A child process created via
.BR fork (2)
diff --git a/man2/umount.2 b/man2/umount.2
index fc0e32fee..3defe48ac 100644
--- a/man2/umount.2
+++ b/man2/umount.2
@@ -154,15 +154,25 @@ The kernel could not allocate a free page to copy filenames or data into.
.TP
.B EPERM
The caller does not have the required privileges.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
.B MNT_DETACH
and
.B MNT_EXPIRE
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=10092
are available since glibc 2.11.
-.SH STANDARDS
-These functions are Linux-specific and should not be used in
-programs intended to be portable.
+.PP
+The original
+.BR umount ()
+function was called as \fIumount(device)\fP and would return
+.B ENOTBLK
+when called with something other than a block device.
+In Linux 0.98p4, a call \fIumount(dir)\fP was added, in order to
+support anonymous devices.
+In Linux 2.3.99-pre7, the call \fIumount(device)\fP was removed,
+leaving only \fIumount(dir)\fP (since now devices can be mounted
+in more than one place, so specifying the device does not suffice).
.SH NOTES
.SS umount() and shared mounts
Shared mounts cause any mount activity on a mount, including
@@ -196,17 +206,6 @@ and
prior to
.BR umount ()
being called.
-.SS Historical details
-The original
-.BR umount ()
-function was called as \fIumount(device)\fP and would return
-.B ENOTBLK
-when called with something other than a block device.
-In Linux 0.98p4, a call \fIumount(dir)\fP was added, in order to
-support anonymous devices.
-In Linux 2.3.99-pre7, the call \fIumount(device)\fP was removed,
-leaving only \fIumount(dir)\fP (since now devices can be mounted
-in more than one place, so specifying the device does not suffice).
.SH SEE ALSO
.BR mount (2),
.BR mount_namespaces (7),
diff --git a/man2/uname.2 b/man2/uname.2
index c44f9cf26..4a274a238 100644
--- a/man2/uname.2
+++ b/man2/uname.2
@@ -56,24 +56,10 @@ is set to indicate the error.
.B EFAULT
.I buf
is not valid.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD.
-.PP
+.SH VERSIONS
The
.I domainname
member (the NIS or YP domain name) is a GNU extension.
-.SH NOTES
-The kernel has the name, release, version, and supported machine type built in.
-Conversely, the
-.I nodename
-field is configured by the administrator to match the network
-(this is what the BSD historically calls the "hostname",
-and is set via
-.BR sethostname (2)).
-Similarly, the
-.I domainname
-field is set via
-.BR setdomainname (2).
.PP
The length of the fields in the struct varies.
Some operating systems
@@ -90,13 +76,10 @@ Clearly, it is a bad
idea to use any of these constants; just use sizeof(...).
SVr4 uses 257, "to support Internet hostnames"
\[em] this is the largest value likely to be encountered in the wild.
-.PP
-Part of the utsname information is also accessible via
-.IR /proc/sys/kernel/ { ostype ,
-.IR hostname ,
-.IR osrelease ,
-.IR version ,
-.IR domainname }.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD.
.SS C library/kernel differences
Over time, increases in the size of the
.I utsname
@@ -125,6 +108,25 @@ The glibc
.BR uname ()
wrapper function hides these details from applications,
invoking the most recent version of the system call provided by the kernel.
+.SH NOTES
+The kernel has the name, release, version, and supported machine type built in.
+Conversely, the
+.I nodename
+field is configured by the administrator to match the network
+(this is what the BSD historically calls the "hostname",
+and is set via
+.BR sethostname (2)).
+Similarly, the
+.I domainname
+field is set via
+.BR setdomainname (2).
+.PP
+Part of the utsname information is also accessible via
+.IR /proc/sys/kernel/ { ostype ,
+.IR hostname ,
+.IR osrelease ,
+.IR version ,
+.IR domainname }.
.SH SEE ALSO
.BR uname (1),
.BR getdomainname (2),
diff --git a/man2/unlink.2 b/man2/unlink.2
index 954a19f15..1f66aca8f 100644
--- a/man2/unlink.2
+++ b/man2/unlink.2
@@ -252,20 +252,20 @@ was not specified in
is relative and
.I dirfd
is a file descriptor referring to a file other than a directory.
-.SH VERSIONS
-.BR unlinkat ()
-was added in Linux 2.6.16;
-library support was added in glibc 2.4.
.SH STANDARDS
-.BR unlink ():
-SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR unlink ()
+SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional error
.\" conditions EINTR, EMULTIHOP, ETXTBSY, ENOLINK.
-.PP
-.BR unlinkat ():
+.TP
+.BR unlinkat ()
POSIX.1-2008.
-.SH NOTES
-.SS glibc notes
+Linux 2.6.16,
+glibc 2.4.
+.SS glibc
On older kernels where
.BR unlinkat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/unshare.2 b/man2/unshare.2
index 2c5c0b859..229e065c8 100644
--- a/man2/unshare.2
+++ b/man2/unshare.2
@@ -419,14 +419,10 @@ and the limit on the number of nested user namespaces would be exceeded.
See the discussion of the
.B ENOSPC
error above.
-.SH VERSIONS
-The
-.BR unshare ()
-system call was added in Linux 2.6.16.
.SH STANDARDS
-The
-.BR unshare ()
-system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.16.
.SH NOTES
Not all of the process attributes that can be shared when
a new process is created using
diff --git a/man2/uselib.2 b/man2/uselib.2
index 34365cc84..449e8d577 100644
--- a/man2/uselib.2
+++ b/man2/uselib.2
@@ -56,10 +56,8 @@ The file specified by
is not an executable of a known type;
for example, it does not have the correct magic numbers.
.SH STANDARDS
-.BR uselib ()
-is Linux-specific, and should not be used in programs
-intended to be portable.
-.SH NOTES
+Linux.
+.SH HISTORY
This obsolete system call is not supported by glibc.
No declaration is provided in glibc headers, but, through a quirk of history,
glibc before glibc 2.23 did export an ABI for this system call.
diff --git a/man2/userfaultfd.2 b/man2/userfaultfd.2
index 7a0181f2a..4fe404edd 100644
--- a/man2/userfaultfd.2
+++ b/man2/userfaultfd.2
@@ -632,17 +632,13 @@ The caller is not privileged (does not have the
capability in the initial user namespace), and
.I /proc/sys/vm/unprivileged_userfaultfd
has the value 0.
-.SH VERSIONS
-The
-.BR userfaultfd ()
-system call first appeared in Linux 4.3.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 4.3.
.PP
-The support for hugetlbfs and shared memory areas and
+Support for hugetlbfs and shared memory areas and
non-page-fault events was added in Linux 4.11
-.SH STANDARDS
-.BR userfaultfd ()
-is Linux-specific and should not be used in programs intended to be
-portable.
.SH NOTES
The userfaultfd mechanism can be used as an alternative to
traditional user-space paging techniques based on the use of the
diff --git a/man2/ustat.2 b/man2/ustat.2
index 8a96239a4..b52dea303 100644
--- a/man2/ustat.2
+++ b/man2/ustat.2
@@ -72,13 +72,14 @@ The mounted filesystem referenced by
.I dev
does not support this operation,
or any version of Linux before Linux 1.3.16.
-.SH VERSIONS
-Since glibc 2.28, glibc no longer provides a wrapper for this system call.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
+Removed in glibc 2.28.
.\" SVr4 documents additional error conditions ENOLINK, ECOMM, and EINTR
.\" but has no ENOSYS condition.
-.SH NOTES
+.PP
.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 c364c4390..5edbf97de 100644
--- a/man2/utime.2
+++ b/man2/utime.2
@@ -149,13 +149,14 @@ capability).
.I path
resides on a read-only filesystem.
.SH STANDARDS
-.BR utime ():
-SVr4, POSIX.1-2001.
-POSIX.1-2008 marks
+POSIX.1-2008.
+.SH HISTORY
+.TP
.BR utime ()
-as obsolete.
-.PP
-.BR utimes ():
+SVr4, POSIX.1-2001.
+POSIX.1-2008 marks it as obsolete.
+.TP
+.BR utimes ()
4.3BSD, POSIX.1-2001.
.SH NOTES
Linux does not allow changing the timestamps on an immutable file,
diff --git a/man2/utimensat.2 b/man2/utimensat.2
index 803828e31..9a1fb840d 100644
--- a/man2/utimensat.2
+++ b/man2/utimensat.2
@@ -387,43 +387,6 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR utimensat ()
-was added in Linux 2.6.22;
-glibc support was added with glibc 2.6.
-.PP
-Support for
-.BR futimens ()
-first appeared in glibc 2.6.
-.SH STANDARDS
-.BR futimens ()
-and
-.BR utimensat ()
-are specified in POSIX.1-2008.
-.SH NOTES
-.BR utimensat ()
-obsoletes
-.BR futimesat (2).
-.PP
-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.
-(This is consistent with the historical behavior of
-.BR utime (2)
-and
-.BR utimes (2)
-on Linux.)
-.PP
-If both
-.I tv_nsec
-fields are specified as
-.BR UTIME_OMIT ,
-then the Linux implementation of
-.BR utimensat ()
-succeeds even if the file referred to by
-.I dirfd
-and
-.I pathname
-does not exist.
.SS C library/kernel ABI differences
On Linux,
.BR futimens ()
@@ -455,6 +418,43 @@ disallows passing NULL as the value for
the wrapper function returns the error
.B EINVAL
in this case.
+.SH STANDARDS
+POSIX.1-2008.
+.SH VERSIONS
+.TP
+.BR utimensat ()
+Linux 2.6.22,
+glibc 2.6.
+POSIX.1-2008.
+.TP
+.BR futimens ()
+glibc 2.6.
+POSIX.1-2008.
+.SH NOTES
+.BR utimensat ()
+obsoletes
+.BR futimesat (2).
+.PP
+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.
+(This is consistent with the historical behavior of
+.BR utime (2)
+and
+.BR utimes (2)
+on Linux.)
+.PP
+If both
+.I tv_nsec
+fields are specified as
+.BR UTIME_OMIT ,
+then the Linux implementation of
+.BR utimensat ()
+succeeds even if the file referred to by
+.I dirfd
+and
+.I pathname
+does not exist.
.SH BUGS
Several bugs afflict
.BR utimensat ()
diff --git a/man2/vfork.2 b/man2/vfork.2
index 5e6b8226c..3a65010ca 100644
--- a/man2/vfork.2
+++ b/man2/vfork.2
@@ -134,11 +134,7 @@ The use of
was tricky: for example, not modifying data
in the parent process depended on knowing which variables were
held in a register.
-.SH STANDARDS
-4.3BSD; POSIX.1-2001 (but marked OBSOLETE).
-POSIX.1-2008 removes the specification of
-.BR vfork ().
-.PP
+.SH VERSIONS
The requirements put on
.BR vfork ()
by the standards are weaker than those put on
@@ -149,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.
-.SH NOTES
+.PP
Some consider the semantics of
.BR vfork ()
to be an architectural blemish, and the 4.2BSD man page stated:
@@ -205,44 +201,6 @@ in this scenario requires either committing an amount of memory equal
to the size of the parent process (if strict overcommitting is in force)
or overcommitting memory with the risk that a process is terminated
by the out-of-memory (OOM) killer.
-.\"
-.SS Caveats
-The child process should take care not to modify the memory in unintended ways,
-since such changes will be seen by the parent process once
-the child terminates or executes another program.
-In this regard, signal handlers can be especially problematic:
-if a signal handler that is invoked in the child of
-.BR vfork ()
-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
-When
-.BR vfork ()
-is called in a multithreaded process,
-only the calling thread is suspended until the child terminates
-or executes a new program.
-This means that the child is sharing an address space with other running code.
-This can be dangerous if another thread in the parent process
-changes credentials (using
-.BR setuid (2)
-or similar),
-since there are now two processes with different privilege levels
-running in the same address space.
-As an example of the dangers,
-suppose that a multithreaded program running as root creates a child using
-.BR vfork ().
-After the
-.BR vfork (),
-a thread in the parent process drops the process to an unprivileged user
-in order to run some untrusted code
-(e.g., perhaps via plug-in opened with
-.BR dlopen (3)).
-In this case, attacks are possible where the parent process uses
-.BR mmap (2)
-to map in code that will be executed by the privileged child process.
-.\"
.SS Linux notes
Fork handlers established using
.BR pthread_atfork (3)
@@ -268,7 +226,13 @@ specified as:
CLONE_VM | CLONE_VFORK | SIGCHLD
.EE
.in
-.SS History
+.SH STANDARDS
+None.
+.SH HISTORY
+4.3BSD; POSIX.1-2001 (but marked OBSOLETE).
+POSIX.1-2008 removes the specification of
+.BR vfork ().
+.PP
The
.BR vfork ()
system call appeared in 3.0BSD.
@@ -286,6 +250,44 @@ until Linux 2.2.0-pre6 or so.
Since Linux 2.2.0-pre9 (on i386, somewhat later on
other architectures) it is an independent system call.
Support was added in glibc 2.0.112.
+.\"
+.SH CAVEATS
+The child process should take care not to modify the memory in unintended ways,
+since such changes will be seen by the parent process once
+the child terminates or executes another program.
+In this regard, signal handlers can be especially problematic:
+if a signal handler that is invoked in the child of
+.BR vfork ()
+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
+When
+.BR vfork ()
+is called in a multithreaded process,
+only the calling thread is suspended until the child terminates
+or executes a new program.
+This means that the child is sharing an address space with other running code.
+This can be dangerous if another thread in the parent process
+changes credentials (using
+.BR setuid (2)
+or similar),
+since there are now two processes with different privilege levels
+running in the same address space.
+As an example of the dangers,
+suppose that a multithreaded program running as root creates a child using
+.BR vfork ().
+After the
+.BR vfork (),
+a thread in the parent process drops the process to an unprivileged user
+in order to run some untrusted code
+(e.g., perhaps via plug-in opened with
+.BR dlopen (3)).
+In this case, attacks are possible where the parent process uses
+.BR mmap (2)
+to map in code that will be executed by the privileged child process.
+.\"
.SH BUGS
Details of the signal handling are obscure and differ between systems.
The BSD man page states:
diff --git a/man2/vhangup.2 b/man2/vhangup.2
index 78ece4600..9bf304831 100644
--- a/man2/vhangup.2
+++ b/man2/vhangup.2
@@ -52,8 +52,7 @@ the
.B CAP_SYS_TTY_CONFIG
capability is required.
.SH STANDARDS
-This call is Linux-specific, and should not be used in programs
-intended to be portable.
+Linux.
.SH SEE ALSO
.BR init (1),
.BR capabilities (7)
diff --git a/man2/vm86.2 b/man2/vm86.2
index 9c9102dc3..437f68fa7 100644
--- a/man2/vm86.2
+++ b/man2/vm86.2
@@ -55,5 +55,4 @@ Saved kernel stack exists.
(This is a kernel sanity check; the saved
stack should exist only within vm86 mode itself.)
.SH STANDARDS
-This call is specific to Linux on 32-bit Intel processors,
-and should not be used in programs intended to be portable.
+Linux on 32-bit Intel processors.
diff --git a/man2/vmsplice.2 b/man2/vmsplice.2
index 01ac37b35..569d0ddd1 100644
--- a/man2/vmsplice.2
+++ b/man2/vmsplice.2
@@ -132,13 +132,11 @@ set.
.TP
.B ENOMEM
Out of memory.
-.SH VERSIONS
-The
-.BR vmsplice ()
-system call first appeared in Linux 2.6.17;
-library support was added in glibc 2.5.
.SH STANDARDS
-This system call is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.17,
+glibc 2.5.
.SH NOTES
.BR vmsplice ()
follows the other vectorized read/write type functions when it comes to
diff --git a/man2/wait.2 b/man2/wait.2
index e2dcd59bd..7386dffef 100644
--- a/man2/wait.2
+++ b/man2/wait.2
@@ -460,7 +460,34 @@ or
.I pid
is equal to
.BR INT_MIN .
+.SH VERSIONS
+.SS C library/kernel differences
+.BR wait ()
+is actually a library function that (in glibc) is implemented as a call to
+.BR wait4 (2).
+.PP
+On some architectures, there is no
+.BR waitpid ()
+system call;
+.\" e.g., i386 has the system call, but not x86-64
+instead, this interface is implemented via a C library
+wrapper function that calls
+.BR wait4 (2).
+.PP
+The raw
+.BR waitid ()
+system call takes a fifth argument, of type
+.IR "struct rusage\ *" .
+If this argument is non-NULL,
+then it is used to return resource usage information about the child,
+in the same manner as
+.BR wait4 (2).
+See
+.BR getrusage (2)
+for details.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, 4.3BSD, POSIX.1-2001.
.SH NOTES
A child that terminates, but has not been waited for becomes a "zombie".
@@ -577,30 +604,6 @@ Since Linux 4.7,
the
.B __WALL
flag is automatically implied if the child is being ptraced.
-.SS C library/kernel differences
-.BR wait ()
-is actually a library function that (in glibc) is implemented as a call to
-.BR wait4 (2).
-.PP
-On some architectures, there is no
-.BR waitpid ()
-system call;
-.\" e.g., i386 has the system call, but not x86-64
-instead, this interface is implemented via a C library
-wrapper function that calls
-.BR wait4 (2).
-.PP
-The raw
-.BR waitid ()
-system call takes a fifth argument, of type
-.IR "struct rusage\ *" .
-If this argument is non-NULL,
-then it is used to return resource usage information about the child,
-in the same manner as
-.BR wait4 (2).
-See
-.BR getrusage (2)
-for details.
.SH BUGS
According to POSIX.1-2008, an application calling
.BR waitid ()
diff --git a/man2/wait4.2 b/man2/wait4.2
index a5b38108d..fe0c175f9 100644
--- a/man2/wait4.2
+++ b/man2/wait4.2
@@ -132,6 +132,8 @@ As for
As for
.BR waitpid (2).
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD.
.PP
SUSv1 included a specification of
@@ -140,7 +142,7 @@ SUSv2 included
.BR wait3 (),
but marked it LEGACY;
SUSv3 removed it.
-.SH NOTES
+.PP
Including
.I <sys/time.h>
is not required these days, but increases portability.
diff --git a/man2/write.2 b/man2/write.2
index 9f4a814b6..6160e91fa 100644
--- a/man2/write.2
+++ b/man2/write.2
@@ -226,6 +226,8 @@ catches, blocks or ignores this signal.)
Other errors may occur, depending on the object connected to
.IR fd .
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, 4.3BSD, POSIX.1-2001.
.\" SVr4 documents additional error
.\" conditions EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, or ERANGE.
diff --git a/man2type/open_how.2type b/man2type/open_how.2type
index f42d190a1..90657e1fd 100644
--- a/man2type/open_how.2type
+++ b/man2type/open_how.2type
@@ -46,6 +46,6 @@ Therefore, a user
.I must
zero-fill this structure on initialization.
.SH STANDARDS
-This type is Linux-specific.
+Linux.
.SH SEE ALSO
.BR openat2 (2)
diff --git a/man3/CPU_SET.3 b/man3/CPU_SET.3
index 56b425c5a..46acaa88f 100644
--- a/man3/CPU_SET.3
+++ b/man3/CPU_SET.3
@@ -224,7 +224,9 @@ returns the number of bytes required to store a
CPU set of the specified cardinality.
.PP
The other functions do not return a value.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
The
.BR CPU_ZERO (),
.BR CPU_SET (),
@@ -253,8 +255,6 @@ first appeared in glibc 2.6.
and
.BR CPU_EQUAL_S ()
first appeared in glibc 2.7.
-.SH STANDARDS
-These interfaces are Linux-specific.
.SH NOTES
To duplicate a CPU set, use
.BR memcpy (3).
diff --git a/man3/INFINITY.3 b/man3/INFINITY.3
index 0b4342a62..d90091f9a 100644
--- a/man3/INFINITY.3
+++ b/man3/INFINITY.3
@@ -55,6 +55,8 @@ and
respectively,
that represent a large positive value, possibly positive infinity.
.SH STANDARDS
+C11.
+.SH HISTORY
C99.
.PP
On a glibc system, the macro
diff --git a/man3/MAX.3 b/man3/MAX.3
index a6c429d9b..eb9710912 100644
--- a/man3/MAX.3
+++ b/man3/MAX.3
@@ -27,7 +27,7 @@ possibly converted to a different type (see BUGS).
These macros may raise the "invalid" floating-point exception
when any of the arguments is NaN.
.SH STANDARDS
-These nonstandard macros are present in glibc and the BSDs.
+GNU, BSD.
.SH NOTES
If either of the arguments is of a floating-point type,
you might prefer to use
diff --git a/man3/MB_CUR_MAX.3 b/man3/MB_CUR_MAX.3
index 409d49c48..a1cb3046f 100644
--- a/man3/MB_CUR_MAX.3
+++ b/man3/MB_CUR_MAX.3
@@ -31,7 +31,9 @@ An integer in the range [1,
.BR MB_LEN_MAX ].
The value 1 denotes traditional 8-bit encoded characters.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR MB_LEN_MAX (3),
.BR mblen (3),
diff --git a/man3/MB_LEN_MAX.3 b/man3/MB_LEN_MAX.3
index dd642d0b3..c28bbb150 100644
--- a/man3/MB_LEN_MAX.3
+++ b/man3/MB_LEN_MAX.3
@@ -27,7 +27,9 @@ wide character, in any of the supported locales.
.SH RETURN VALUE
A constant integer greater than zero.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
The entities
.B MB_LEN_MAX
diff --git a/man3/_Generic.3 b/man3/_Generic.3
index db1620f5f..378eb338c 100644
--- a/man3/_Generic.3
+++ b/man3/_Generic.3
@@ -25,7 +25,9 @@ is not evaluated.
This is especially useful for writing type-generic macros,
that will behave differently depending on the type of the argument.
.SH STANDARDS
-C11 and later.
+C11.
+.SH HISTORY
+C11.
.SH EXAMPLES
The following program demonstrates how to write
a replacement for the standard
diff --git a/man3/__ppc_get_timebase.3 b/man3/__ppc_get_timebase.3
index 666658823..ec7204191 100644
--- a/man3/__ppc_get_timebase.3
+++ b/man3/__ppc_get_timebase.3
@@ -36,16 +36,17 @@ Time Base Register.
.BR __ppc_get_timebase_freq ()
returns a 64-bit unsigned integer that represents the frequency at
which the Time Base Register is updated.
-.SH VERSIONS
-GNU C Library support for
-.\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e
+.SH STANDARDS
+GNU.
+.SH HISTORY
+.TP
.BR __ppc_get_timebase ()
-has been provided since glibc 2.16 and
-.\" commit 8ad11b9a9cf1de82bd7771306b42070b91417c11
+.\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e
+glibc 2.16.
+.TP
.BR __ppc_get_timebase_freq ()
-has been available since glibc 2.17.
-.SH STANDARDS
-Both functions are nonstandard GNU extensions.
+.\" commit 8ad11b9a9cf1de82bd7771306b42070b91417c11
+glibc 2.17.
.SH EXAMPLES
The following program will calculate the time, in microseconds, spent
between two calls to
diff --git a/man3/__ppc_set_ppr_med.3 b/man3/__ppc_set_ppr_med.3
index 474b0fdff..4f5afda8a 100644
--- a/man3/__ppc_set_ppr_med.3
+++ b/man3/__ppc_set_ppr_med.3
@@ -83,20 +83,21 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The functions
-.BR __ppc_set_ppr_med (),
-.BR __ppc_set_ppr_low (),
-and
+.SH STANDARDS
+GNU.
+.SH HISTORY
+.TP
+.BR __ppc_set_ppr_med ()
+.TQ
+.BR __ppc_set_ppr_low ()
+.TQ
.BR __ppc_set_ppr_med_low ()
-are provided since glibc 2.18.
-The functions
+glibc 2.18.
+.TP
.BR __ppc_set_ppr_very_low ()
-and
+.TQ
.BR __ppc_set_ppr_med_high ()
-first appeared in glibc 2.23.
-.SH STANDARDS
-These functions are nonstandard GNU extensions.
+glibc 2.23.
.SH NOTES
The functions
.BR __ppc_set_ppr_very_low ()
diff --git a/man3/__ppc_yield.3 b/man3/__ppc_yield.3
index d802fa1f4..52ed3038a 100644
--- a/man3/__ppc_yield.3
+++ b/man3/__ppc_yield.3
@@ -60,10 +60,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions first appeared in glibc 2.18.
.SH STANDARDS
-These functions are nonstandard GNU extensions.
+GNU.
+.SH HISTORY
+glibc 2.18.
.SH SEE ALSO
.BR __ppc_set_ppr_med (3)
.PP
diff --git a/man3/__setfpucw.3 b/man3/__setfpucw.3
index 64efa658c..25542e909 100644
--- a/man3/__setfpucw.3
+++ b/man3/__setfpucw.3
@@ -23,9 +23,10 @@ to the registers of the FPU (floating-point unit) on the i386 architecture.
This was used to control floating-point precision,
rounding and floating-point exceptions.
.SH STANDARDS
-This function was a nonstandard GNU extension.
+GNU.
+.SH HISTORY
+Removed in glibc 2.1.
.SH NOTES
-As of glibc 2.1 this function does not exist anymore.
There are new functions from C99, with prototypes in
.IR <fenv.h> ,
to control FPU rounding modes, like
diff --git a/man3/a64l.3 b/man3/a64l.3
index b3594d4e3..598bef9fe 100644
--- a/man3/a64l.3
+++ b/man3/a64l.3
@@ -83,7 +83,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The value returned by
.BR l64a ()
diff --git a/man3/abort.3 b/man3/abort.3
index b0570585d..c63eace5e 100644
--- a/man3/abort.3
+++ b/man3/abort.3
@@ -69,8 +69,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-SVr4, POSIX.1-2001, POSIX.1-2008, 4.3BSD, C89, C99.
-.SH NOTES
+C11, POSIX.1-2008.
+.SH HISTORY
+SVr4, POSIX.1-2001, 4.3BSD, C89.
+.PP
Up until glibc 2.26,
if the
.BR abort ()
diff --git a/man3/abs.3 b/man3/abs.3
index a1293f385..2c705b801 100644
--- a/man3/abs.3
+++ b/man3/abs.3
@@ -76,10 +76,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99, SVr4, 4.3BSD.
.\" POSIX.1 (1996 edition) requires only the
.\" .BR abs ()
.\" function.
+.PP
C89 only
includes the
.BR abs ()
diff --git a/man3/acos.3 b/man3/acos.3
index 15466bb20..5c28c2f49 100644
--- a/man3/acos.3
+++ b/man3/acos.3
@@ -106,12 +106,14 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+C89, SVr4, 4.3BSD.
.SH SEE ALSO
.BR asin (3),
.BR atan (3),
diff --git a/man3/acosh.3 b/man3/acosh.3
index 4dd3fa477..717c0c376 100644
--- a/man3/acosh.3
+++ b/man3/acosh.3
@@ -110,7 +110,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/addseverity.3 b/man3/addseverity.3
index 0e4e626fc..69505675d 100644
--- a/man3/addseverity.3
+++ b/man3/addseverity.3
@@ -78,16 +78,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR addseverity ()
-is provided since glibc 2.1.
.SH STANDARDS
-This function is not specified in the X/Open Portability Guide
-although the
-.BR fmtmsg (3)
-function is.
-It is available on System V
-systems.
+GNU.
+.SH HISTORY
+glibc 2.1.
+System V.
.SH NOTES
New severity classes can also be added by setting the environment variable
.BR SEV_LEVEL .
diff --git a/man3/adjtime.3 b/man3/adjtime.3
index 1c4a071ce..389af6f02 100644
--- a/man3/adjtime.3
+++ b/man3/adjtime.3
@@ -109,6 +109,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD, System V.
.SH NOTES
The adjustment that
diff --git a/man3/aio_cancel.3 b/man3/aio_cancel.3
index a01909e4e..7a3dfdeb5 100644
--- a/man3/aio_cancel.3
+++ b/man3/aio_cancel.3
@@ -109,12 +109,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_cancel ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH EXAMPLES
See
.BR aio (7).
diff --git a/man3/aio_error.3 b/man3/aio_error.3
index efb04957b..e28fdaa0d 100644
--- a/man3/aio_error.3
+++ b/man3/aio_error.3
@@ -79,12 +79,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_error ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH EXAMPLES
See
.BR aio (7).
diff --git a/man3/aio_fsync.3 b/man3/aio_fsync.3
index 1a12a549f..4138224fc 100644
--- a/man3/aio_fsync.3
+++ b/man3/aio_fsync.3
@@ -98,12 +98,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_fsync ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH SEE ALSO
.BR aio_cancel (3),
.BR aio_error (3),
diff --git a/man3/aio_init.3 b/man3/aio_init.3
index e4ad8c60a..012e58ebd 100644
--- a/man3/aio_init.3
+++ b/man3/aio_init.3
@@ -70,11 +70,9 @@ This field specifies the amount of time in seconds that a
worker thread should wait for further requests before terminating,
after having completed a previous request.
The default value is 1.
-.SH VERSIONS
-The
-.BR aio_init ()
-function is available since glibc 2.1.
.SH STANDARDS
-This function is a GNU extension.
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH SEE ALSO
.BR aio (7)
diff --git a/man3/aio_read.3 b/man3/aio_read.3
index ecdbd1081..59d757545 100644
--- a/man3/aio_read.3
+++ b/man3/aio_read.3
@@ -131,12 +131,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_read ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH NOTES
It is a good idea to zero out the control block before use.
The control block must not be changed while the read operation
diff --git a/man3/aio_return.3 b/man3/aio_return.3
index 4b9179413..1d9210ef8 100644
--- a/man3/aio_return.3
+++ b/man3/aio_return.3
@@ -73,12 +73,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_return ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH EXAMPLES
See
.BR aio (7).
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index 57ef7d344..1bf70135f 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -99,12 +99,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_suspend ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.PP
POSIX doesn't specify the parameters to be
.IR restrict ;
diff --git a/man3/aio_write.3 b/man3/aio_write.3
index 11a302ee4..2f918ecdc 100644
--- a/man3/aio_write.3
+++ b/man3/aio_write.3
@@ -136,12 +136,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR aio_write ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH NOTES
It is a good idea to zero out the control block before use.
The control block must not be changed while the write operation
diff --git a/man3/alloca.3 b/man3/alloca.3
index 1b9ffeead..ddc1d6b4f 100644
--- a/man3/alloca.3
+++ b/man3/alloca.3
@@ -58,10 +58,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function is not in POSIX.1.
-.PP
-.BR alloca ()
-originates from PWB and 32V, and appears in all their derivatives.
+None.
+.SH HISTORY
+PWB, 32V.
.SH NOTES
The
.BR alloca ()
diff --git a/man3/argz_add.3 b/man3/argz_add.3
index f51c4dbfa..81cb2f561 100644
--- a/man3/argz_add.3
+++ b/man3/argz_add.3
@@ -232,7 +232,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are a GNU extension.
+GNU.
.SH BUGS
Argz vectors without a terminating null byte may lead to
Segmentation Faults.
diff --git a/man3/asin.3 b/man3/asin.3
index e2cbfe96e..5e8e93824 100644
--- a/man3/asin.3
+++ b/man3/asin.3
@@ -102,7 +102,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/asinh.3 b/man3/asinh.3
index 33e120fac..5c7837d54 100644
--- a/man3/asinh.3
+++ b/man3/asinh.3
@@ -95,7 +95,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/asprintf.3 b/man3/asprintf.3
index fc3493f3d..5b9f86248 100644
--- a/man3/asprintf.3
+++ b/man3/asprintf.3
@@ -61,12 +61,12 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-These functions are GNU extensions, not in C or POSIX.
-They are also available under *BSD.
+.SH VERSIONS
The FreeBSD implementation sets
.I strp
to NULL on error.
+.SH STANDARDS
+GNU, BSD.
.SH SEE ALSO
.BR free (3),
.BR malloc (3),
diff --git a/man3/assert.3 b/man3/assert.3
index 0e0418e6f..11aa193d4 100644
--- a/man3/assert.3
+++ b/man3/assert.3
@@ -74,7 +74,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, C99, POSIX.1-2001.
+.PP
In C89,
.I expression
is required to be of type
diff --git a/man3/assert_perror.3 b/man3/assert_perror.3
index 12faa292b..ddf6ca730 100644
--- a/man3/assert_perror.3
+++ b/man3/assert_perror.3
@@ -58,7 +58,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This is a GNU extension.
+GNU.
.SH BUGS
The purpose of the assert macros is to help programmers find bugs in
their programs, things that cannot happen unless there was a coding mistake.
diff --git a/man3/atan.3 b/man3/atan.3
index f95bc073c..4c89bcdda 100644
--- a/man3/atan.3
+++ b/man3/atan.3
@@ -87,7 +87,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/atan2.3 b/man3/atan2.3
index e4284d343..b6338dda2 100644
--- a/man3/atan2.3
+++ b/man3/atan2.3
@@ -159,7 +159,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/atanh.3 b/man3/atanh.3
index 1caa364de..9081f5f50 100644
--- a/man3/atanh.3
+++ b/man3/atanh.3
@@ -129,7 +129,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/atexit.3 b/man3/atexit.3
index 363124cc5..32682a337 100644
--- a/man3/atexit.3
+++ b/man3/atexit.3
@@ -75,23 +75,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.SH NOTES
-Functions registered using
-.BR atexit ()
-(and
-.BR on_exit (3))
-are not called if a process terminates abnormally because
-of the delivery of a signal.
-.PP
-If one of the registered functions calls
-.BR _exit (2),
-then any remaining functions are not invoked,
-and the other process termination steps performed by
-.BR exit (3)
-are not performed.
-.PP
+.SH VERSIONS
POSIX.1 says that the result of calling
.\" POSIX.1-2001, POSIX.1-2008
.BR exit (3)
@@ -109,6 +93,24 @@ portable programs should not invoke
.BR exit (3)
inside a function registered using
.BR atexit ().
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, C99, SVr4, 4.3BSD.
+.SH NOTES
+Functions registered using
+.BR atexit ()
+(and
+.BR on_exit (3))
+are not called if a process terminates abnormally because
+of the delivery of a signal.
+.PP
+If one of the registered functions calls
+.BR _exit (2),
+then any remaining functions are not invoked,
+and the other process termination steps performed by
+.BR exit (3)
+are not performed.
.PP
The
.BR atexit ()
diff --git a/man3/atof.3 b/man3/atof.3
index 22d1c50da..1d18c86a3 100644
--- a/man3/atof.3
+++ b/man3/atof.3
@@ -58,7 +58,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, C99, SVr4, 4.3BSD.
.SH SEE ALSO
.BR atoi (3),
.BR atol (3),
diff --git a/man3/atoi.3 b/man3/atoi.3
index 10cc66eba..51e9a78cd 100644
--- a/man3/atoi.3
+++ b/man3/atoi.3
@@ -83,8 +83,16 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
+.SH VERSIONS
+POSIX.1 leaves the return value of
+.BR atoi ()
+on error unspecified.
+On glibc, musl libc, and uClibc, 0 is returned on error.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001, SVr4, 4.3BSD.
+.PP
C89 and
POSIX.1-1996 include the functions
.BR atoi ()
@@ -102,11 +110,6 @@ only.
.\" .BR atoll ()
.\" function is present since glibc 2.0.2, but
.\" not in libc4 or libc5.
-.SH NOTES
-POSIX.1 leaves the return value of
-.BR atoi ()
-on error unspecified.
-On glibc, musl libc, and uClibc, 0 is returned on error.
.SH BUGS
.I errno
is not set on error so there is no way to distinguish between 0 as an
diff --git a/man3/backtrace.3 b/man3/backtrace.3
index 4d23f71f6..157fca076 100644
--- a/man3/backtrace.3
+++ b/man3/backtrace.3
@@ -149,14 +149,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR backtrace (),
-.BR backtrace_symbols (),
-and
-.BR backtrace_symbols_fd ()
-are provided since glibc 2.1.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH NOTES
These functions make some assumptions about how a function's return
address is stored on the stack.
diff --git a/man3/basename.3 b/man3/basename.3
index 6f22bb58c..fdbfa1636 100644
--- a/man3/basename.3
+++ b/man3/basename.3
@@ -128,9 +128,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
There are two different versions of
.BR basename ()
- the POSIX version described above, and the GNU version, which one gets
@@ -155,6 +153,10 @@ With glibc, one gets the POSIX version of
when
.I <libgen.h>
is included, and the GNU version otherwise.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH BUGS
In the glibc implementation,
the POSIX versions of these functions modify the
diff --git a/man3/bcmp.3 b/man3/bcmp.3
index 7bad3387f..9f23894cd 100644
--- a/man3/bcmp.3
+++ b/man3/bcmp.3
@@ -21,9 +21,10 @@ is identical to
.BR memcmp (3);
use it instead.
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD.
-This function is deprecated (marked as LEGACY in POSIX.1-2001);
-POSIX.1-2008 removes the specification of
-.BR bcmp ().
+Marked as LEGACY in POSIX.1-2001;
+removed in POSIX.1-2008.
.SH SEE ALSO
.BR memcmp (3)
diff --git a/man3/bcopy.3 b/man3/bcopy.3
index 49eed122e..cf4dff0ad 100644
--- a/man3/bcopy.3
+++ b/man3/bcopy.3
@@ -54,8 +54,11 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD.
-This function is deprecated (marked as LEGACY in POSIX.1-2001): use
+.PP
+Marked as LEGACY in POSIX.1-2001: use
.BR memcpy (3)
or
.BR memmove (3)
diff --git a/man3/bindresvport.3 b/man3/bindresvport.3
index cf96ca835..2630212ad 100644
--- a/man3/bindresvport.3
+++ b/man3/bindresvport.3
@@ -102,8 +102,7 @@ The
.BR bindresvport ()
function uses a static variable that was not protected by a lock
before glibc 2.17, rendering the function MT-Unsafe.
-.SH STANDARDS
-Not in POSIX.1.
+.SH VERSIONS
Present on the BSDs, Solaris, and many other systems.
.SH NOTES
Unlike some
@@ -111,6 +110,8 @@ Unlike some
implementations,
the glibc implementation ignores any value that the caller supplies in
.IR sin\->sin_port .
+.SH STANDARDS
+BSD.
.SH SEE ALSO
.BR bind (2),
.BR getsockname (2)
diff --git a/man3/bsd_signal.3 b/man3/bsd_signal.3
index 33f264145..3fc3110e2 100644
--- a/man3/bsd_signal.3
+++ b/man3/bsd_signal.3
@@ -76,14 +76,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-4.2BSD, POSIX.1-2001.
-POSIX.1-2008 removes the specification of
-.BR bsd_signal (),
-recommending the use of
-.BR sigaction (2)
-instead.
-.SH NOTES
+.SH VERSIONS
Use of
.BR bsd_signal ()
should be avoided; use
@@ -107,6 +100,14 @@ is a GNU extension;
this type is defined only if the
.B _GNU_SOURCE
feature test macro is defined.
+.SH STANDARDS
+None.
+.SH HISTORY
+4.2BSD, POSIX.1-2001.
+Removed in POSIX.1-2008,
+recommending the use of
+.BR sigaction (2)
+instead.
.SH SEE ALSO
.BR sigaction (2),
.BR signal (2),
diff --git a/man3/bsearch.3 b/man3/bsearch.3
index d27a57475..b0760f72b 100644
--- a/man3/bsearch.3
+++ b/man3/bsearch.3
@@ -78,7 +78,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, C99, SVr4, 4.3BSD.
.SH EXAMPLES
The example below first sorts an array of structures using
.BR qsort (3),
diff --git a/man3/bswap.3 b/man3/bswap.3
index e26e32067..41dad78ed 100644
--- a/man3/bswap.3
+++ b/man3/bswap.3
@@ -24,7 +24,7 @@ These functions return the value of their argument with the bytes reversed.
.SH ERRORS
These functions always succeed.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
.SH EXAMPLES
The program below swaps the bytes of the 8-byte integer supplied as
its command-line argument.
diff --git a/man3/btowc.3 b/man3/btowc.3
index 60270c6fd..8a4db6b6d 100644
--- a/man3/btowc.3
+++ b/man3/btowc.3
@@ -63,7 +63,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
The behavior of
.BR btowc ()
diff --git a/man3/byteorder.3 b/man3/byteorder.3
index b0b112602..c7a97548d 100644
--- a/man3/byteorder.3
+++ b/man3/byteorder.3
@@ -76,7 +76,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR bswap (3),
.BR endian (3),
diff --git a/man3/bzero.3 b/man3/bzero.3
index 1b203fef6..70e076439 100644
--- a/man3/bzero.3
+++ b/man3/bzero.3
@@ -56,21 +56,13 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR explicit_bzero ()
-first appeared in glibc 2.25.
.SH STANDARDS
-The
-.BR bzero ()
-function is deprecated (marked as LEGACY in POSIX.1-2001); use
-.BR memset (3)
-in new programs.
-POSIX.1-2008 removes the specification of
-.BR bzero ().
-The
-.BR bzero ()
-function first appeared in 4.3BSD.
-.PP
+None.
+.SH HISTORY
+.TP
+.BR explicit_bzero ()
+glibc 2.25.
+.IP
The
.BR explicit_bzero ()
function is a nonstandard extension that is also present on some of the BSDs.
@@ -78,6 +70,12 @@ Some other implementations have a similar function, such as
.BR memset_explicit ()
or
.BR memset_s ().
+.TP
+.BR bzero ()
+4.3BSD.
+.IP
+Marked as LEGACY in POSIX.1-2001.
+Removed in POSIX.1-2008.
.SH NOTES
The
.BR explicit_bzero ()
diff --git a/man3/cabs.3 b/man3/cabs.3
index 1cd489aed..042945418 100644
--- a/man3/cabs.3
+++ b/man3/cabs.3
@@ -40,10 +40,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH NOTES
The function is actually an alias for
.I "hypot(a,\ b)"
diff --git a/man3/cacos.3 b/man3/cacos.3
index 554553b59..a32826e98 100644
--- a/man3/cacos.3
+++ b/man3/cacos.3
@@ -50,10 +50,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH EXAMPLES
.\" SRC BEGIN (cacos.c)
.EX
diff --git a/man3/cacosh.3 b/man3/cacosh.3
index 3aa69baba..979bad42a 100644
--- a/man3/cacosh.3
+++ b/man3/cacosh.3
@@ -53,10 +53,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+glibc 2.1.
.SH EXAMPLES
.\" SRC BEGIN (cacosh.c)
.EX
diff --git a/man3/canonicalize_file_name.3 b/man3/canonicalize_file_name.3
index d04be4861..944eb2724 100644
--- a/man3/canonicalize_file_name.3
+++ b/man3/canonicalize_file_name.3
@@ -77,7 +77,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function is a GNU extension.
+GNU.
.SH SEE ALSO
.BR readlink (2),
.BR realpath (3)
diff --git a/man3/carg.3 b/man3/carg.3
index f90873278..758afce92 100644
--- a/man3/carg.3
+++ b/man3/carg.3
@@ -81,10 +81,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR complex (7)
diff --git a/man3/casin.3 b/man3/casin.3
index 04d77918f..17fa10fc8 100644
--- a/man3/casin.3
+++ b/man3/casin.3
@@ -49,10 +49,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR clog (3),
.BR csin (3),
diff --git a/man3/casinh.3 b/man3/casinh.3
index 3aab28abc..ec4e5d0b4 100644
--- a/man3/casinh.3
+++ b/man3/casinh.3
@@ -51,10 +51,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR asinh (3),
.BR cabs (3),
diff --git a/man3/catan.3 b/man3/catan.3
index 244bea87a..3c0cc84da 100644
--- a/man3/catan.3
+++ b/man3/catan.3
@@ -50,10 +50,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH EXAMPLES
.\" SRC BEGIN (catan.c)
.EX
diff --git a/man3/catanh.3 b/man3/catanh.3
index 1f590a65e..c936cc5e2 100644
--- a/man3/catanh.3
+++ b/man3/catanh.3
@@ -52,10 +52,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH EXAMPLES
.\" SRC BEGIN (catanh.c)
.EX
diff --git a/man3/catgets.3 b/man3/catgets.3
index c1c8c8598..988d6aa3a 100644
--- a/man3/catgets.3
+++ b/man3/catgets.3
@@ -67,11 +67,14 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
The
.BR catgets ()
function is available only in libc.so.4.4.4c and above.
+.PP
The Jan 1987 X/Open Portability Guide specifies a more subtle
error return:
.I message
diff --git a/man3/catopen.3 b/man3/catopen.3
index 00cf0fc04..de8ac6c2b 100644
--- a/man3/catopen.3
+++ b/man3/catopen.3
@@ -148,18 +148,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.\" In XPG 1987, Vol. 3 it says:
-.\" .I "The flag argument of catopen is reserved for future use"
-.\" .IR "and should be set to 0" .
-.\"
-.\" It is unclear what the source was for the constants
-.\" .B MCLoadBySet
-.\" and
-.\" .B MCLoadAll
-.\" (see below).
-.SH NOTES
+.SH VERSIONS
The above is the POSIX.1 description.
The glibc value for
.B NL_CAT_LOCALE
@@ -193,6 +182,19 @@ The default path varies, but usually looks at a number of places below
.\" .I /etc/locale
.\" and
.\" .IR /usr/lib/locale .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.\" In XPG 1987, Vol. 3 it says:
+.\" .I "The flag argument of catopen is reserved for future use"
+.\" .IR "and should be set to 0" .
+.\"
+.\" It is unclear what the source was for the constants
+.\" .B MCLoadBySet
+.\" and
+.\" .B MCLoadAll
+.\" (see below).
.SH SEE ALSO
.BR catgets (3),
.BR setlocale (3)
diff --git a/man3/cbrt.3 b/man3/cbrt.3
index 39be019a5..50c3557dc 100644
--- a/man3/cbrt.3
+++ b/man3/cbrt.3
@@ -80,7 +80,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.\" .BR cbrt ()
.\" was a GNU extension. It is now a C99 requirement.
.SH SEE ALSO
diff --git a/man3/ccos.3 b/man3/ccos.3
index 6193a3384..d50811ca2 100644
--- a/man3/ccos.3
+++ b/man3/ccos.3
@@ -47,10 +47,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR cacos (3),
diff --git a/man3/ccosh.3 b/man3/ccosh.3
index 983b22869..2f96be25b 100644
--- a/man3/ccosh.3
+++ b/man3/ccosh.3
@@ -27,10 +27,11 @@ The complex hyperbolic cosine function is defined as:
ccosh(z) = (exp(z)+exp(\-z))/2
.EE
.in
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR cacosh (3),
diff --git a/man3/ceil.3 b/man3/ceil.3
index 3957c514d..d619d4cf8 100644
--- a/man3/ceil.3
+++ b/man3/ceil.3
@@ -74,7 +74,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/cexp.3 b/man3/cexp.3
index 0fc6daf53..3a0a011e5 100644
--- a/man3/cexp.3
+++ b/man3/cexp.3
@@ -48,10 +48,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR cexp2 (3),
diff --git a/man3/cfree.3 b/man3/cfree.3
index f4e3d1f53..ccd2f05cd 100644
--- a/man3/cfree.3
+++ b/man3/cfree.3
@@ -122,15 +122,14 @@ T} Thread safety MT-Safe /* In glibc */
.ad
.sp 1
.SH VERSIONS
-The
-.BR cfree ()
-function was removed
-.\" commit 025b33ae84bb8f15b2748a1d8605dca453fce112
-in glibc 2.26.
-.SH STANDARDS
The 3-argument version of
.BR cfree ()
as used by SCO conforms to the iBCSe2 standard:
Intel386 Binary Compatibility Specification, Edition 2.
+.SH STANDARDS
+None.
+.SH HISTORY
+.\" commit 025b33ae84bb8f15b2748a1d8605dca453fce112
+Removed in glibc 2.26.
.SH SEE ALSO
.BR malloc (3)
diff --git a/man3/cimag.3 b/man3/cimag.3
index 026915ff1..04402b2ed 100644
--- a/man3/cimag.3
+++ b/man3/cimag.3
@@ -48,12 +48,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-These functions were added in glibc 2.1.
-.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-gcc also supports __imag__.
+GCC also supports __imag__.
That is a GNU extension.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR creal (3),
diff --git a/man3/circleq.3 b/man3/circleq.3
index 25c3bf58e..d8bf80302 100644
--- a/man3/circleq.3
+++ b/man3/circleq.3
@@ -238,9 +238,7 @@ they return
returns an initializer that can be assigned to the queue
.IR head .
.SH STANDARDS
-Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
-Present on the BSDs
-(CIRCLEQ macros first appeared in 4.4BSD).
+BSD.
.SH BUGS
.BR CIRCLEQ_FOREACH ()
and
diff --git a/man3/clearenv.3 b/man3/clearenv.3
index 078b447ec..bae57ea6f 100644
--- a/man3/clearenv.3
+++ b/man3/clearenv.3
@@ -62,9 +62,22 @@ T} Thread safety MT-Unsafe const:env
.hy
.ad
.sp 1
-.SH VERSIONS
-Available since glibc 2.0.
.SH STANDARDS
+.TP
+.BR putenv ()
+POSIX.1-2008.
+.TP
+.BR clearenv ()
+None.
+.SH HISTORY
+.TP
+.BR putenv ()
+glibc 2.0.
+POSIX.1-2001.
+.TP
+.BR clearenv ()
+glibc 2.0.
+.PP
Various UNIX variants (DG/UX, HP-UX, QNX, ...).
POSIX.9 (bindings for FORTRAN77).
POSIX.1-1996 did not accept
diff --git a/man3/clock.3 b/man3/clock.3
index 49d92238c..6dfce042a 100644
--- a/man3/clock.3
+++ b/man3/clock.3
@@ -48,23 +48,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+.SH VERSIONS
XSI requires that
.B CLOCKS_PER_SEC
equals 1000000 independent
of the actual resolution.
-.SH NOTES
-The C standard allows for arbitrary values at the start of the program;
-subtract the value returned from a call to
-.BR clock ()
-at the start of the program to get maximum portability.
-.PP
-Note that the time can wrap around.
-On a 32-bit system where
-.B CLOCKS_PER_SEC
-equals 1000000 this function will return the same
-value approximately every 72 minutes.
.PP
On several other implementations,
the value returned by
@@ -84,6 +72,10 @@ The
.BR times (2)
function, which explicitly returns (separate) information about the
caller and its children, may be preferable.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
.PP
In glibc 2.17 and earlier,
.BR clock ()
@@ -95,6 +87,17 @@ since glibc 2.18, it is implemented on top of
(using the
.B CLOCK_PROCESS_CPUTIME_ID
clock).
+.SH NOTES
+The C standard allows for arbitrary values at the start of the program;
+subtract the value returned from a call to
+.BR clock ()
+at the start of the program to get maximum portability.
+.PP
+Note that the time can wrap around.
+On a 32-bit system where
+.B CLOCKS_PER_SEC
+equals 1000000 this function will return the same
+value approximately every 72 minutes.
.SH SEE ALSO
.BR clock_gettime (2),
.BR getrusage (2),
diff --git a/man3/clock_getcpuclockid.3 b/man3/clock_getcpuclockid.3
index 1a5dccb9b..4c249b120 100644
--- a/man3/clock_getcpuclockid.3
+++ b/man3/clock_getcpuclockid.3
@@ -84,12 +84,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR clock_getcpuclockid ()
-function is available since glibc 2.2.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
.SH NOTES
Calling
.BR clock_gettime (2)
diff --git a/man3/clog.3 b/man3/clog.3
index 3eba791c7..2b63a5509 100644
--- a/man3/clog.3
+++ b/man3/clog.3
@@ -61,10 +61,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR cexp (3),
diff --git a/man3/clog10.3 b/man3/clog10.3
index ba3f865da..594cfe73e 100644
--- a/man3/clog10.3
+++ b/man3/clog10.3
@@ -64,10 +64,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions first appeared in glibc 2.1.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
+.SH HISTORY
+glibc 2.1.
+.PP
The identifiers are reserved for future use in C99 and C11.
.SH SEE ALSO
.BR cabs (3),
diff --git a/man3/clog2.3 b/man3/clog2.3
index f147cb029..b3f18171a 100644
--- a/man3/clog2.3
+++ b/man3/clog2.3
@@ -31,6 +31,8 @@ Note that
.I z
close to zero will cause an overflow.
.SH STANDARDS
+None.
+.SH HISTORY
These function names are reserved for future use in C99.
.PP
Not yet in glibc, as at glibc 2.19.
diff --git a/man3/closedir.3 b/man3/closedir.3
index a1c6886c9..da1c27062 100644
--- a/man3/closedir.3
+++ b/man3/closedir.3
@@ -65,7 +65,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR close (2),
.BR opendir (3),
diff --git a/man3/cmsg.3 b/man3/cmsg.3
index 8e7b857b2..ee7ba45e0 100644
--- a/man3/cmsg.3
+++ b/man3/cmsg.3
@@ -160,27 +160,9 @@ For more information on the
.IR msghdr ,
see
.BR recvmsg (2).
-.SH STANDARDS
-This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite,
-the IPv6 advanced API described in RFC\ 2292 and SUSv2.
-.BR CMSG_FIRSTHDR (),
-.BR CMSG_NXTHDR (),
-and
-.BR CMSG_DATA ()
-are specified in POSIX.1-2008.
-.BR CMSG_SPACE ()
-and
-.BR CMSG_LEN ()
-.\" https://www.austingroupbugs.net/view.php?id=978#c3242
-will be included in the next POSIX release (Issue 8).
-.PP
-.BR CMSG_ALIGN ()
-is a Linux extension.
-.SH NOTES
+.SH VERSIONS
For portability, ancillary data should be accessed using only the macros
described here.
-.BR CMSG_ALIGN ()
-is a Linux extension and should not be used in portable programs.
.PP
In Linux,
.BR CMSG_LEN (),
@@ -190,6 +172,30 @@ and
are constant expressions (assuming their argument is constant),
meaning that these values can be used to declare the size of global variables.
This may not be portable, however.
+.SH STANDARDS
+.TP
+.BR CMSG_FIRSTHDR ()
+.TQ
+.BR CMSG_NXTHDR ()
+.TQ
+.BR CMSG_DATA ()
+POSIX.1-2008.
+.TP
+.BR CMSG_SPACE ()
+.TQ
+.BR CMSG_LEN ()
+.TQ
+.BR CMSG_ALIGN ()
+Linux.
+.SH HISTORY
+This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite,
+the IPv6 advanced API described in RFC\ 2292 and SUSv2.
+.PP
+.BR CMSG_SPACE ()
+and
+.BR CMSG_LEN ()
+.\" https://www.austingroupbugs.net/view.php?id=978#c3242
+will be included in the next POSIX release (Issue 8).
.SH EXAMPLES
This code looks for the
.B IP_TTL
diff --git a/man3/confstr.3 b/man3/confstr.3
index b340bdcf0..20a7781e7 100644
--- a/man3/confstr.3
+++ b/man3/confstr.3
@@ -130,7 +130,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The following code fragment determines the path where to find
the POSIX.2 system utilities:
diff --git a/man3/conj.3 b/man3/conj.3
index 941c44536..4cc22f131 100644
--- a/man3/conj.3
+++ b/man3/conj.3
@@ -48,10 +48,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR csqrt (3),
diff --git a/man3/copysign.3 b/man3/copysign.3
index 606cfccbd..1282cf112 100644
--- a/man3/copysign.3
+++ b/man3/copysign.3
@@ -81,14 +81,15 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH VERSIONS
+On architectures where the floating-point formats are not IEEE 754 compliant,
+these functions may treat a negative zero as positive.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
-.\" 4.3BSD.
+C11, POSIX.1-2008.
+.PP
This function is defined in IEC 559 (and the appendix with
recommended functions in IEEE 754/IEEE 854).
-.SH NOTES
-On architectures where the floating-point formats are not IEEE 754 compliant,
-these
-functions may treat a negative zero as positive.
+.SH HISTORY
+C99, POSIX.1-2001, 4.3BSD.
.SH SEE ALSO
.BR signbit (3)
diff --git a/man3/cos.3 b/man3/cos.3
index 69f88044b..d00d7a06f 100644
--- a/man3/cos.3
+++ b/man3/cos.3
@@ -95,7 +95,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/cosh.3 b/man3/cosh.3
index d35b977ea..bdf06f583 100644
--- a/man3/cosh.3
+++ b/man3/cosh.3
@@ -111,7 +111,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/cpow.3 b/man3/cpow.3
index e69d34e8c..2b6c10dcb 100644
--- a/man3/cpow.3
+++ b/man3/cpow.3
@@ -45,10 +45,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR pow (3),
diff --git a/man3/cproj.3 b/man3/cproj.3
index 32dd29165..6292c28dd 100644
--- a/man3/cproj.3
+++ b/man3/cproj.3
@@ -46,11 +46,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
+.PP
In glibc 2.11 and earlier, the implementation does something different
(a
.I stereographic
diff --git a/man3/creal.3 b/man3/creal.3
index 8fe7f5a51..6b8916bd3 100644
--- a/man3/creal.3
+++ b/man3/creal.3
@@ -46,12 +46,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-These functions were added in glibc 2.1.
-.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-The gcc supports also __real__.
+GCC supports also __real__.
That is a GNU extension.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR cimag (3),
diff --git a/man3/crypt.3 b/man3/crypt.3
index a4b37774a..1f3e4792e 100644
--- a/man3/crypt.3
+++ b/man3/crypt.3
@@ -187,11 +187,16 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.BR crypt ():
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+.TP
+.BR crypt ()
+POSIX.1-2008.
+.TP
.BR crypt_r ()
-is a GNU extension.
-.SH NOTES
+GNU.
+.SH HISTORY
+.TP
+.BR crypt ()
+POSIX.1-2001, SVr4, 4.3BSD.
.SS Availability in glibc
The
.BR crypt (),
@@ -217,6 +222,7 @@ for the function prototypes;
otherwise
.I libxcrypt
is an ABI-compatible drop-in replacement.
+.SH NOTES
.SS Features in glibc
The glibc version of this function supports additional
encryption algorithms.
diff --git a/man3/csin.3 b/man3/csin.3
index 3119535ca..fc1ccb2cd 100644
--- a/man3/csin.3
+++ b/man3/csin.3
@@ -47,10 +47,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR casin (3),
diff --git a/man3/csinh.3 b/man3/csinh.3
index b8f5d5a9f..c212f8e28 100644
--- a/man3/csinh.3
+++ b/man3/csinh.3
@@ -47,10 +47,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR casinh (3),
diff --git a/man3/csqrt.3 b/man3/csqrt.3
index b9cf8ba61..e1469ee22 100644
--- a/man3/csqrt.3
+++ b/man3/csqrt.3
@@ -43,10 +43,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR cexp (3),
diff --git a/man3/ctan.3 b/man3/ctan.3
index 9caaf42d6..42e7f78f4 100644
--- a/man3/ctan.3
+++ b/man3/ctan.3
@@ -47,10 +47,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR catan (3),
diff --git a/man3/ctanh.3 b/man3/ctanh.3
index 9eb02dd25..86e645db0 100644
--- a/man3/ctanh.3
+++ b/man3/ctanh.3
@@ -48,10 +48,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR cabs (3),
.BR catanh (3),
diff --git a/man3/ctermid.3 b/man3/ctermid.3
index 96c521d78..681a893ef 100644
--- a/man3/ctermid.3
+++ b/man3/ctermid.3
@@ -61,7 +61,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, Svr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, Svr4.
.SH BUGS
The returned pathname may not uniquely identify the controlling
terminal; it may, for example, be
diff --git a/man3/ctime.3 b/man3/ctime.3
index 31f3e66db..a6021f451 100644
--- a/man3/ctime.3
+++ b/man3/ctime.3
@@ -300,31 +300,77 @@ T}
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001.
-C89 and C99 specify
-.BR asctime (),
-.BR ctime (),
-.BR gmtime (),
-.BR localtime (),
-and
-.BR mktime ().
-POSIX.1-2008 marks
-.BR asctime (),
-.BR asctime_r (),
-.BR ctime (),
-and
-.BR ctime_r ()
-as obsolete,
-recommending the use of
-.BR strftime (3)
-instead.
-.PP
+.SH VERSIONS
POSIX doesn't specify the parameters of
.BR ctime_r ()
to be
.IR restrict ;
that is specific to glibc.
+.PP
+In many implementations, including glibc, a 0 in
+.I tm_mday
+is interpreted as meaning the last day of the preceding month.
+.PP
+According to POSIX.1-2001,
+.BR localtime ()
+is required to behave as though
+.BR tzset (3)
+was called, while
+.BR localtime_r ()
+does not have this requirement.
+.\" See http://thread.gmane.org/gmane.comp.time.tz/2034/
+For portable code,
+.BR tzset (3)
+should be called before
+.BR localtime_r ().
+.SH STANDARDS
+.TP
+.BR asctime ()
+.TQ
+.BR ctime ()
+.TQ
+.BR gmtime ()
+.TQ
+.BR localtime ()
+.TQ
+.BR mktime ()
+C11, POSIX.1-2008.
+.TP
+.BR asctime_r ()
+.TQ
+.BR ctime_r ()
+.TQ
+.BR gmtime_r ()
+.TQ
+.BR localtime_r ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR gmtime ()
+.TQ
+.BR localtime ()
+.TQ
+.BR mktime ()
+C89, POSIX.1-2001.
+.TP
+.BR asctime ()
+.TQ
+.BR ctime ()
+C89, POSIX.1-2001.
+Marked obsolete in POSIX.1-2008 (recommending
+.BR strftime (3)).
+.TP
+.BR gmtime_r ()
+.TQ
+.BR localtime_r ()
+POSIX.1-2001.
+.TP
+.BR asctime_r ()
+.TQ
+.BR ctime_r ()
+POSIX.1-2001.
+Marked obsolete in POSIX.1-2008 (recommending
+.BR strftime (3)).
.SH NOTES
The four functions
.BR asctime (),
@@ -354,23 +400,6 @@ a broken-down time structure and an array of type
Execution of any of the functions may overwrite the information returned
in either of these objects by any of the other functions."
This can occur in the glibc implementation.
-.PP
-In many implementations, including glibc, a 0 in
-.I tm_mday
-is interpreted as meaning the last day of the preceding month.
-.PP
-According to POSIX.1-2001,
-.BR localtime ()
-is required to behave as though
-.BR tzset (3)
-was called, while
-.BR localtime_r ()
-does not have this requirement.
-.\" See http://thread.gmane.org/gmane.comp.time.tz/2034/
-For portable code,
-.BR tzset (3)
-should be called before
-.BR localtime_r ().
.SH SEE ALSO
.BR date (1),
.BR gettimeofday (2),
diff --git a/man3/daemon.3 b/man3/daemon.3
index 44a8ff7e2..dcd57c332 100644
--- a/man3/daemon.3
+++ b/man3/daemon.3
@@ -91,13 +91,9 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-Not in POSIX.1.
+.SH VERSIONS
A similar function appears on the BSDs.
-The
-.BR daemon ()
-function first appeared in 4.4BSD.
-.SH NOTES
+.PP
The glibc implementation can also return \-1 when
.I /dev/null
exists but is not a character device with the expected
@@ -105,6 +101,10 @@ major and minor numbers.
In this case,
.I errno
need not be set.
+.SH STANDARDS
+None.
+.SH HISTORY
+4.4BSD.
.SH BUGS
The GNU C library implementation of this function was taken from BSD,
and does not employ the double-fork technique (i.e.,
diff --git a/man3/des_crypt.3 b/man3/des_crypt.3
index e486d92a5..af57bc6f4 100644
--- a/man3/des_crypt.3
+++ b/man3/des_crypt.3
@@ -23,16 +23,17 @@ Standard C library
.\" .B #include <des_crypt.h>
.B #include <rpc/des_crypt.h>
.PP
-.BI "int ecb_crypt(char *" key ", char " data [. datalen "], \
-unsigned int " datalen ,
-.BI " unsigned int " mode );
-.BI "int cbc_crypt(char *" key ", char " data [. datalen "], \
-unsigned int " datalen ,
-.BI " unsigned int " mode ", char *" ivec );
+.BI "[[deprecated]] int ecb_crypt(char *" key ", char " data [. datalen ],
+.BI " unsigned int " datalen ", \
+unsigned int " mode );
+.BI "[[deprecated]] int cbc_crypt(char *" key ", char " data [. datalen ],
+.BI " unsigned int " datalen ", \
+unsigned int " mode ,
+.BI " char *" ivec );
.PP
-.BI "void des_setparity(char *" key );
+.BI "[[deprecated]] void des_setparity(char *" key );
.PP
-.BI "int DES_FAILED(int " status );
+.BI "[[deprecated]] int DES_FAILED(int " status );
.fi
.SH DESCRIPTION
.BR ecb_crypt ()
@@ -148,22 +149,18 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
+.SH STANDARDS
+None.
+.SH HISTORY
+4.3BSD.
+glibc 2.1.
+Removed in glibc 2.28.
.PP
Because they employ the DES block cipher,
which is no longer considered secure,
-.BR ecb_crypt (),
-.BR ecb_crypt (),
-.BR crypt_r (),
-and
-.BR des_setparity ()
-were removed in glibc 2.28.
+these functions were removed.
Applications should switch to a modern cryptography library, such as
.BR libgcrypt .
-.SH STANDARDS
-4.3BSD.
-Not in POSIX.1.
.SH SEE ALSO
.BR des (1),
.BR crypt (3),
diff --git a/man3/difftime.3 b/man3/difftime.3
index 051800888..60d348977 100644
--- a/man3/difftime.3
+++ b/man3/difftime.3
@@ -47,7 +47,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH NOTES
On a POSIX system,
.I time_t
diff --git a/man3/dirfd.3 b/man3/dirfd.3
index 6c1d33bdf..ea3049886 100644
--- a/man3/dirfd.3
+++ b/man3/dirfd.3
@@ -81,7 +81,8 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
POSIX.1-2008.
-This function was a BSD extension, present in 4.3BSD-Reno, not in 4.2BSD.
+.SH HISTORY
+4.3BSD-Reno (not in 4.2BSD).
.\" It is present in libc5 (since 5.1.2) and in glibc 2.
.SH SEE ALSO
.BR open (2),
diff --git a/man3/div.3 b/man3/div.3
index 29b9493a2..97d19334e 100644
--- a/man3/div.3
+++ b/man3/div.3
@@ -85,8 +85,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-The functions
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, C99, SVr4, 4.3BSD.
+.PP
.BR lldiv ()
and
.BR imaxdiv ()
diff --git a/man3/dl_iterate_phdr.3 b/man3/dl_iterate_phdr.3
index 0b65919bf..101fa0628 100644
--- a/man3/dl_iterate_phdr.3
+++ b/man3/dl_iterate_phdr.3
@@ -200,12 +200,6 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR dl_iterate_phdr ()
-has been supported since glibc 2.2.4.
-.SH STANDARDS
-The
-.BR dl_iterate_phdr ()
-function is not specified in any standard.
Various other systems provide a version of this function,
although details of the returned
.I dl_phdr_info
@@ -217,14 +211,18 @@ On the BSDs and Solaris, the structure includes the fields
and
.I dlpi_phnum
in addition to other implementation-specific fields.
-.SH NOTES
+.PP
Future versions of the C library may add further fields to the
.I dl_phdr_info
structure; in that event, the
.I size
argument provides a mechanism for the callback function to discover
whether it is running on a system with added fields.
-.PP
+.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.2.4.
+.SH NOTES
The first object visited by
.I callback
is the main program.
diff --git a/man3/dladdr.3 b/man3/dladdr.3
index 77b7b9afe..90b770cb8 100644
--- a/man3/dladdr.3
+++ b/man3/dladdr.3
@@ -231,14 +231,17 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+GNU.
+.SH HISTORY
+.TP
.BR dladdr ()
-is present in glibc 2.0 and later.
+glibc 2.0.
+.TP
.BR dladdr1 ()
-first appeared in glibc 2.3.3.
-.SH STANDARDS
-These functions are nonstandard GNU extensions
-that are also present on Solaris.
+glibc 2.3.3.
+.PP
+Solaris.
.SH BUGS
Sometimes, the function pointers you pass to
.BR dladdr ()
diff --git a/man3/dlerror.3 b/man3/dlerror.3
index 3265dfcf3..39e0f7889 100644
--- a/man3/dlerror.3
+++ b/man3/dlerror.3
@@ -48,11 +48,13 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR dlerror ()
-is present in glibc 2.0 and later.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0.
POSIX.1-2001.
+.PP
+SunOS.
.SH NOTES
The message returned by
.BR dlerror ()
@@ -69,8 +71,6 @@ calls.
.\" .in +5
.\" .B "const char *dlerror(void);"
.\" .in
-.SS History
-This function is part of the dlopen API, derived from SunOS.
.SH EXAMPLES
See
.BR dlopen (3).
diff --git a/man3/dlinfo.3 b/man3/dlinfo.3
index 960265faf..5163aeab0 100644
--- a/man3/dlinfo.3
+++ b/man3/dlinfo.3
@@ -218,15 +218,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR dlinfo ()
-first appeared in glibc 2.3.3.
-.SH STANDARDS
-This function is a nonstandard GNU extension.
-.SH NOTES
-This function derives from the Solaris function of the same name
-and also appears on some other systems.
The sets of requests supported by the various implementations
overlaps only partially.
+.SH STANDARDS
+GNU.
+.SH HISTORY
+glibc 2.3.3.
+Solaris.
.SH EXAMPLES
The program below opens a shared objects using
.BR dlopen (3)
diff --git a/man3/dlopen.3 b/man3/dlopen.3
index 3df952650..90c365a65 100644
--- a/man3/dlopen.3
+++ b/man3/dlopen.3
@@ -365,29 +365,32 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
.BR dlopen ()
-and
+.TQ
.BR dlclose ()
-are present in glibc 2.0 and later.
+POSIX.1-2008.
+.TP
.BR dlmopen ()
-first appeared in glibc 2.3.4.
-.SH STANDARDS
-POSIX.1-2001 describes
+.TQ
+.B RTLD_NOLOAD
+.TQ
+.B RTLD_NODELETE
+GNU.
+.TP
+.B RTLD_DEEPBIND
+Solaris.
+.SH HISTORY
+.TP
+.BR dlopen ()
+.TQ
.BR dlclose ()
-and
-.BR dlopen ().
-The
+glibc 2.0.
+POSIX.1-2001.
+.TP
.BR dlmopen ()
-function is a GNU extension.
-.PP
-The
-.BR RTLD_NOLOAD ,
-.BR RTLD_NODELETE ,
-and
-.B RTLD_DEEPBIND
-flags are GNU extensions;
-the first two of these flags are also present on Solaris.
+glibc 2.3.4.
.SH NOTES
.SS dlmopen() and namespaces
A link-map list defines an isolated namespace for the
diff --git a/man3/dlsym.3 b/man3/dlsym.3
index de071d1f0..8a648c6da 100644
--- a/man3/dlsym.3
+++ b/man3/dlsym.3
@@ -120,17 +120,21 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
.BR dlsym ()
-is present in glibc 2.0 and later.
+POSIX.1-2008.
+.TP
.BR dlvsym ()
-first appeared in glibc 2.1.
-.SH STANDARDS
-POSIX.1-2001 describes
-.BR dlsym ().
-The
+GNU.
+.SH HISTORY
+.TP
+.BR dlsym ()
+glibc 2.0.
+POSIX.1-2001.
+.TP
.BR dlvsym ()
-function is a GNU extension.
+glibc 2.1.
.SH NOTES
There are several scenarios when the address of a global symbol is NULL.
For example, a symbol can be placed at zero address by the linker, via
diff --git a/man3/drand48.3 b/man3/drand48.3
index a93b8655e..1d12570e2 100644
--- a/man3/drand48.3
+++ b/man3/drand48.3
@@ -255,7 +255,9 @@ The above
functions record global state information for the random number generator,
so they are not thread-safe.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
.SH SEE ALSO
.BR rand (3),
.BR random (3)
diff --git a/man3/drand48_r.3 b/man3/drand48_r.3
index d34055c16..dff7554e5 100644
--- a/man3/drand48_r.3
+++ b/man3/drand48_r.3
@@ -100,7 +100,7 @@ T} Thread safety MT-Safe race:buffer
.ad
.sp 1
.SH STANDARDS
-These functions are GNU extensions and are not portable.
+GNU.
.SH SEE ALSO
.BR drand48 (3),
.BR rand (3),
diff --git a/man3/duplocale.3 b/man3/duplocale.3
index a069c827f..c8872a091 100644
--- a/man3/duplocale.3
+++ b/man3/duplocale.3
@@ -54,12 +54,10 @@ to indicate the error.
.TP
.B ENOMEM
Insufficient memory to create the duplicate locale object.
-.SH VERSIONS
-The
-.BR duplocale ()
-function were added in glibc 2.3.
.SH STANDARDS
POSIX.1-2008.
+.SH HISTORY
+glibc 2.3.
.SH NOTES
Duplicating a locale can serve the following purposes:
.IP \[bu] 3
diff --git a/man3/dysize.3 b/man3/dysize.3
index f3e1a8888..b0d5455c4 100644
--- a/man3/dysize.3
+++ b/man3/dysize.3
@@ -61,8 +61,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function occurs in SunOS 4.x.
-.SH NOTES
+None.
+.SH HISTORY
+SunOS 4.x.
+.PP
This is a compatibility function only.
Don't use it in new programs.
.\" The SCO version of this function had a year-2000 problem.
diff --git a/man3/ecvt.3 b/man3/ecvt.3
index 1a56ca817..53ad0b351 100644
--- a/man3/ecvt.3
+++ b/man3/ecvt.3
@@ -107,6 +107,8 @@ T} Thread safety MT-Unsafe race:fcvt
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
SVr2;
marked as LEGACY in POSIX.1-2001.
POSIX.1-2008 removes the specifications of
diff --git a/man3/ecvt_r.3 b/man3/ecvt_r.3
index f16ca5794..2046983ba 100644
--- a/man3/ecvt_r.3
+++ b/man3/ecvt_r.3
@@ -91,7 +91,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
.SH NOTES
These functions are obsolete.
Instead,
diff --git a/man3/encrypt.3 b/man3/encrypt.3
index c71a62e6e..d0d35e922 100644
--- a/man3/encrypt.3
+++ b/man3/encrypt.3
@@ -126,28 +126,30 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
+.BR encrypt ()
+.TQ
+.BR setkey ()
+POSIX.1-2008.
+.TP
+.BR encrypt_r ()
+.TQ
+.BR setkey_r ()
+None.
+.SH HISTORY
+Removed in glibc 2.28.
+.PP
Because they employ the DES block cipher,
which is no longer considered secure,
-.BR encrypt (),
-.BR encrypt_r (),
-.BR setkey (),
-and
-.BR setkey_r ()
-were removed in glibc 2.28.
+these functions were removed from glibc.
Applications should switch to a modern cryptography library, such as
.BR libgcrypt .
-.SH STANDARDS
-.BR encrypt (),
-.BR setkey ():
-POSIX.1-2001, POSIX.1-2008, SUS, SVr4.
-.PP
-The functions
-.BR encrypt_r ()
-and
-.BR setkey_r ()
-are GNU extensions.
-.SH NOTES
+.TP
+.BR encrypt ()
+.TQ
+.BR setkey ()
+POSIX.1-2001, SUS, SVr4.
.SS Availability in glibc
See
.BR crypt (3).
diff --git a/man3/end.3 b/man3/end.3
index 6531a0792..2b54bf5be 100644
--- a/man3/end.3
+++ b/man3/end.3
@@ -28,6 +28,8 @@ initialized data segment.
This is the first address past the end of the
uninitialized data segment (also known as the BSS segment).
.SH STANDARDS
+None.
+.SH HISTORY
Although these symbols have long been provided on most UNIX systems,
they are not standardized; use with caution.
.SH NOTES
diff --git a/man3/endian.3 b/man3/endian.3
index 17f72f111..28f8fbee9 100644
--- a/man3/endian.3
+++ b/man3/endian.3
@@ -80,9 +80,6 @@ from big-endian order to host byte order.
The functions with names of the form "le\fInn\fPtoh" convert
from little-endian order to host byte order.
.SH VERSIONS
-These functions were added in glibc 2.9.
-.SH STANDARDS
-These functions are nonstandard.
Similar functions are present on the BSDs,
where the required header file is
.I <sys/endian.h>
@@ -96,7 +93,11 @@ whereby the
component always appears at the end of the function name
(thus, for example, in NetBSD, FreeBSD, and glibc,
the equivalent of OpenBSDs "betoh32" is "be32toh").
-.SH NOTES
+.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.9.
+.PP
These functions are similar to the older
.BR byteorder (3)
family of functions.
diff --git a/man3/envz_add.3 b/man3/envz_add.3
index 3786e023b..c7a4cf182 100644
--- a/man3/envz_add.3
+++ b/man3/envz_add.3
@@ -142,7 +142,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are a GNU extension.
+GNU.
.SH EXAMPLES
.\" SRC BEGIN (envz_add.c)
.EX
diff --git a/man3/erf.3 b/man3/erf.3
index a2a100236..117522805 100644
--- a/man3/erf.3
+++ b/man3/erf.3
@@ -120,7 +120,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/erfc.3 b/man3/erfc.3
index 267dda8dd..a02c528bd 100644
--- a/man3/erfc.3
+++ b/man3/erfc.3
@@ -113,7 +113,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/err.3 b/man3/err.3
index b44b2332f..dc7f43b61 100644
--- a/man3/err.3
+++ b/man3/err.3
@@ -103,14 +103,13 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-These functions are nonstandard BSD extensions.
-.\" .SH HISTORY
-.\" The
-.\" .BR err ()
-.\" and
-.\" .BR warn ()
-.\" functions first appeared in
-.\" 4.4BSD.
+BSD.
+.SH HISTORY
+.TP
+.BR err ()
+.TQ
+.BR warn ()
+4.4BSD.
.SH EXAMPLES
Display the current
.I errno
diff --git a/man3/error.3 b/man3/error.3
index 2df5df0cf..b6ac915dd 100644
--- a/man3/error.3
+++ b/man3/error.3
@@ -160,8 +160,7 @@ After that,
is very much like
.BR error ().
.SH STANDARDS
-These functions and variables are GNU extensions, and should not be
-used in programs intended to be portable.
+GNU.
.SH SEE ALSO
.BR err (3),
.BR errno (3),
diff --git a/man3/ether_aton.3 b/man3/ether_aton.3
index 920a065fa..842cc47c3 100644
--- a/man3/ether_aton.3
+++ b/man3/ether_aton.3
@@ -131,6 +131,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD, SunOS.
.SH BUGS
In glibc 2.2.5 and earlier, the implementation of
diff --git a/man3/euidaccess.3 b/man3/euidaccess.3
index d17590bc0..2ff79e60a 100644
--- a/man3/euidaccess.3
+++ b/man3/euidaccess.3
@@ -69,15 +69,16 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-The
-.BR eaccess ()
-function was added in glibc 2.4.
-.SH STANDARDS
-These functions are nonstandard.
Some other systems have an
.\" e.g., FreeBSD 6.1.
.BR eaccess ()
function.
+.SH STANDARDS
+None.
+.SH HISTORY
+.TP
+.BR eaccess ()
+glibc 2.4.
.SH NOTES
.IR Warning :
Using this function to check a process's permissions on a file before
diff --git a/man3/exec.3 b/man3/exec.3
index d8c0e0712..d770dcadb 100644
--- a/man3/exec.3
+++ b/man3/exec.3
@@ -197,16 +197,6 @@ T} Thread safety MT-Safe env
.ad
.sp 1
.SH VERSIONS
-The
-.BR execvpe ()
-function first appeared in glibc 2.11.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.PP
-The
-.BR execvpe ()
-function is a GNU extension.
-.SH NOTES
The default search path (used when the environment
does not contain the variable \fBPATH\fR)
shows some variation across systems.
@@ -254,6 +244,40 @@ and
upon which they returned.
They now return if any error other than the ones
described above occurs.
+.SH STANDARDS
+.TP
+.B environ
+.TQ
+.BR execl ()
+.TQ
+.BR execlp ()
+.TQ
+.BR execle ()
+.TQ
+.BR execv ()
+.TQ
+.BR execvp ()
+POSIX.1-2008.
+.TP
+.BR execvpe ()
+GNU.
+.SH HISTORY
+.TP
+.B environ
+.TQ
+.BR execl ()
+.TQ
+.BR execlp ()
+.TQ
+.BR execle ()
+.TQ
+.BR execv ()
+.TQ
+.BR execvp ()
+POSIX.1-2001.
+.TP
+.BR execvpe ()
+glibc 2.11.
.SH BUGS
Before glibc 2.24,
.BR execl ()
diff --git a/man3/exit.3 b/man3/exit.3
index d94ac6eb7..05b7fb54d 100644
--- a/man3/exit.3
+++ b/man3/exit.3
@@ -94,7 +94,9 @@ The
function uses a global variable that is not protected,
so it is not thread-safe.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001, SVr4, 4.3BSD.
.SH NOTES
The behavior is undefined if one of the functions registered using
.BR atexit (3)
diff --git a/man3/exp.3 b/man3/exp.3
index d8d49da5e..ce4c29eb4 100644
--- a/man3/exp.3
+++ b/man3/exp.3
@@ -119,7 +119,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/exp10.3 b/man3/exp10.3
index 290d495ca..20a92d227 100644
--- a/man3/exp10.3
+++ b/man3/exp10.3
@@ -66,10 +66,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions first appeared in glibc 2.1.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH BUGS
Before glibc 2.19, the glibc implementation of these functions did not set
.I errno
diff --git a/man3/exp2.3 b/man3/exp2.3
index 574507df6..1d1286b82 100644
--- a/man3/exp2.3
+++ b/man3/exp2.3
@@ -77,10 +77,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/expm1.3 b/man3/expm1.3
index 832660f2f..7720141a4 100644
--- a/man3/expm1.3
+++ b/man3/expm1.3
@@ -126,8 +126,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
-.\" BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+BSD.
.SH BUGS
Before glibc 2.17,
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6778
diff --git a/man3/fabs.3 b/man3/fabs.3
index ccb41d0a6..265b1336a 100644
--- a/man3/fabs.3
+++ b/man3/fabs.3
@@ -78,7 +78,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/fclose.3 b/man3/fclose.3
index 213e36bb7..d454fb7b6 100644
--- a/man3/fclose.3
+++ b/man3/fclose.3
@@ -83,7 +83,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH NOTES
Note that
.BR fclose ()
diff --git a/man3/fcloseall.3 b/man3/fcloseall.3
index e00f1849f..49afea4c7 100644
--- a/man3/fcloseall.3
+++ b/man3/fcloseall.3
@@ -58,7 +58,7 @@ The
.BR fcloseall ()
function does not lock the streams, so it is not thread-safe.
.SH STANDARDS
-This function is a GNU extension.
+GNU.
.SH SEE ALSO
.BR close (2),
.BR fclose (3),
diff --git a/man3/fdim.3 b/man3/fdim.3
index 7eaacb0d7..d503eca66 100644
--- a/man3/fdim.3
+++ b/man3/fdim.3
@@ -84,10 +84,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH BUGS
Before glibc 2.24
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6796
diff --git a/man3/fenv.3 b/man3/fenv.3
index cbaa342fd..e96ff6be0 100644
--- a/man3/fenv.3
+++ b/man3/fenv.3
@@ -274,10 +274,11 @@ T}
.ad
.sp 1
.hy
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99, POSIX.1-2001.
+C11, POSIX.1-2008, IEC 60559 (IEC 559:1989), ANSI/IEEE 854.
+.SH HISTORY
+C99, POSIX.1-2001.
+glibc 2.1.
.SH NOTES
.SS glibc notes
If possible, the GNU C Library defines a macro
diff --git a/man3/ferror.3 b/man3/ferror.3
index 9d9ebe23a..1508eaf49 100644
--- a/man3/ferror.3
+++ b/man3/ferror.3
@@ -88,12 +88,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The functions
-.BR clearerr (),
-.BR feof (),
-and
-.BR ferror ()
-conform to C89, C99, POSIX.1-2001, and POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH NOTES
POSIX.1-2008 specifies
.\"https://www.austingroupbugs.net/view.php?id=401
diff --git a/man3/fexecve.3 b/man3/fexecve.3
index 78d0efee9..2adb1d66b 100644
--- a/man3/fexecve.3
+++ b/man3/fexecve.3
@@ -95,15 +95,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR fexecve ()
-is implemented since glibc 2.3.2.
.SH STANDARDS
POSIX.1-2008.
-This function is not specified in POSIX.1-2001,
-and is not widely available on other systems.
-It is specified in POSIX.1-2008.
-.SH NOTES
+.SH HISTORY
+glibc 2.3.2.
+.PP
On Linux with glibc versions 2.26 and earlier,
.BR fexecve ()
is implemented using the
@@ -120,7 +116,7 @@ system call, then
is implemented using that system call, with the benefit that
.I /proc
does not need to be mounted.
-.PP
+.SH NOTES
The idea behind
.BR fexecve ()
is to allow the caller to verify (checksum) the contents of
diff --git a/man3/fflush.3 b/man3/fflush.3
index 927ff8b2b..327786cef 100644
--- a/man3/fflush.3
+++ b/man3/fflush.3
@@ -91,7 +91,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C89, C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001, POSIX.1-2008.
.PP
POSIX.1-2001 did not specify the behavior for flushing of input streams,
but the behavior is specified in POSIX.1-2008.
diff --git a/man3/ffs.3 b/man3/ffs.3
index bebd16b03..ee1f2a178 100644
--- a/man3/ffs.3
+++ b/man3/ffs.3
@@ -90,17 +90,17 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH VERSIONS
+BSD systems have a prototype in
+.IR <string.h> .
.SH STANDARDS
-.BR ffs ():
+.TP
+.BR ffs ()
POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.PP
-The
+.TP
.BR ffsl ()
-and
+.TQ
.BR ffsll ()
-functions are glibc extensions.
-.SH NOTES
-BSD systems have a prototype in
-.IR <string.h> .
+GNU.
.SH SEE ALSO
.BR memchr (3)
diff --git a/man3/fgetc.3 b/man3/fgetc.3
index 75bb9231b..75dcaeaf6 100644
--- a/man3/fgetc.3
+++ b/man3/fgetc.3
@@ -126,8 +126,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
+.SH NOTES
It is not advisable to mix calls to input functions from the
.I stdio
library with low-level calls to
diff --git a/man3/fgetgrent.3 b/man3/fgetgrent.3
index c3bf60d9b..193e8f737 100644
--- a/man3/fgetgrent.3
+++ b/man3/fgetgrent.3
@@ -106,6 +106,8 @@ T} Thread safety MT-Unsafe race:fgetgrent
.\" race:fgetgrent, however, something about the copyright impeded the
.\" progress.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
.SH SEE ALSO
.BR endgrent (3),
diff --git a/man3/fgetpwent.3 b/man3/fgetpwent.3
index fad2fc0e6..51cf41271 100644
--- a/man3/fgetpwent.3
+++ b/man3/fgetpwent.3
@@ -114,6 +114,8 @@ T} Thread safety MT-Unsafe race:fgetpwent
.\" race:fgetpwent, however, something about the copyright impeded the
.\" progress.
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
.SH SEE ALSO
.BR endpwent (3),
diff --git a/man3/fgetwc.3 b/man3/fgetwc.3
index 4bd326eb5..4d3e58efd 100644
--- a/man3/fgetwc.3
+++ b/man3/fgetwc.3
@@ -84,7 +84,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR fgetwc ()
diff --git a/man3/fgetws.3 b/man3/fgetws.3
index 076061a0e..75ed37aa3 100644
--- a/man3/fgetws.3
+++ b/man3/fgetws.3
@@ -67,7 +67,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR fgetws ()
diff --git a/man3/fileno.3 b/man3/fileno.3
index bf0ec06d5..53d5bde54 100644
--- a/man3/fileno.3
+++ b/man3/fileno.3
@@ -82,9 +82,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The function
-.BR fileno ()
-conforms to POSIX.1-2001 and POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR open (2),
.BR fdopen (3),
diff --git a/man3/flockfile.3 b/man3/flockfile.3
index 01b0cc47d..36d8e79ca 100644
--- a/man3/flockfile.3
+++ b/man3/flockfile.3
@@ -125,7 +125,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.PP
These functions are available when
.B _POSIX_THREAD_SAFE_FUNCTIONS
diff --git a/man3/floor.3 b/man3/floor.3
index 1be5bc094..aee548954 100644
--- a/man3/floor.3
+++ b/man3/floor.3
@@ -73,13 +73,15 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
also conforms to
SVr4, 4.3BSD, C89.
-.SH NOTES
+.PP
SUSv2 and POSIX.1-2001 contain text about overflow (which might set
.I errno
to
diff --git a/man3/fma.3 b/man3/fma.3
index 616a26592..c269e0cc9 100644
--- a/man3/fma.3
+++ b/man3/fma.3
@@ -160,10 +160,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR remainder (3),
.BR remquo (3)
diff --git a/man3/fmax.3 b/man3/fmax.3
index 5001084ec..ca2a33770 100644
--- a/man3/fmax.3
+++ b/man3/fmax.3
@@ -66,10 +66,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR fdim (3),
.BR fmin (3)
diff --git a/man3/fmemopen.3 b/man3/fmemopen.3
index 744865bc7..c623878be 100644
--- a/man3/fmemopen.3
+++ b/man3/fmemopen.3
@@ -164,13 +164,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR fmemopen ()
-was already available in glibc 1.0.x.
.SH STANDARDS
POSIX.1-2008.
-This function is not specified in POSIX.1-2001,
-and is not widely available on other systems.
+.SH HISTORY
+glibc 1.0.x.
+POSIX.1-2008.
.PP
POSIX.1-2008 specifies that \[aq]b\[aq] in
.I mode
@@ -179,12 +177,6 @@ However, Technical Corrigendum 1
.\" http://austingroupbugs.net/view.php?id=396
adjusts the standard to allow implementation-specific treatment for this case,
thus permitting the glibc treatment of \[aq]b\[aq].
-.SH NOTES
-There is no file descriptor associated with the file stream
-returned by this function
-(i.e.,
-.BR fileno (3)
-will return an error if called on the returned stream).
.PP
With glibc 2.22, binary mode (see below) was removed,
many longstanding bugs in the implementation of
@@ -220,6 +212,12 @@ by
Binary mode was removed in glibc 2.22; a \[aq]b\[aq] specified in
.I mode
has no effect.
+.SH NOTES
+There is no file descriptor associated with the file stream
+returned by this function
+(i.e.,
+.BR fileno (3)
+will return an error if called on the returned stream).
.SH BUGS
Before glibc 2.22, if
.I size
diff --git a/man3/fmin.3 b/man3/fmin.3
index d952bf104..06021a4ed 100644
--- a/man3/fmin.3
+++ b/man3/fmin.3
@@ -66,10 +66,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR fdim (3),
.BR fmax (3)
diff --git a/man3/fmod.3 b/man3/fmod.3
index 57546fe32..5e01ca474 100644
--- a/man3/fmod.3
+++ b/man3/fmod.3
@@ -137,7 +137,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/fmtmsg.3 b/man3/fmtmsg.3
index ec964948c..97f74c569 100644
--- a/man3/fmtmsg.3
+++ b/man3/fmtmsg.3
@@ -249,26 +249,26 @@ Since glibc 2.16,
the
.BR fmtmsg ()
function uses a lock to protect the static variable, so it is thread-safe.
-.SH VERSIONS
-.BR fmtmsg ()
-is provided since glibc 2.1.
.SH STANDARDS
-The functions
+.TP
.BR fmtmsg ()
-and
-.BR addseverity (3),
-and environment variables
+.TQ
.B MSGVERB
-and
-.B SEV_LEVEL
-come from System V.
-.PP
-The function
+POSIX.1-2008.
+.SH HISTORY
+.TP
.BR fmtmsg ()
-and the environment variable
+System V.
+POSIX.1-2001 and POSIX.1-2008.
+glibc 2.1.
+.TP
.B MSGVERB
-are described in POSIX.1-2001 and POSIX.1-2008.
-.SH NOTES
+System V.
+POSIX.1-2001 and POSIX.1-2008.
+.TP
+.B SEV_LEVEL
+System V.
+.PP
System V and UnixWare man pages tell us that these functions
have been replaced by "pfmt() and addsev()" or by "pfmt(),
vpfmt(), lfmt(), and vlfmt()", and will be removed later.
diff --git a/man3/fnmatch.3 b/man3/fnmatch.3
index 583f9111e..b0dae22a3 100644
--- a/man3/fnmatch.3
+++ b/man3/fnmatch.3
@@ -122,10 +122,20 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, POSIX.2.
-The
-.BR FNM_FILE_NAME ", " FNM_LEADING_DIR ", and " FNM_CASEFOLD
-flags are GNU extensions.
+.TP
+.BR fnmatch ()
+POSIX.1-2008.
+.TP
+.B FNM_FILE_NAME
+.TQ
+.B FNM_LEADING_DIR
+.TQ
+.B FNM_CASEFOLD
+GNU.
+.SH HISTORY
+.TP
+.BR fnmatch ()
+POSIX.1-2001, POSIX.2.
.SH SEE ALSO
.BR sh (1),
.BR glob (3),
diff --git a/man3/fopen.3 b/man3/fopen.3
index 2cdaa387c..4d9b74d70 100644
--- a/man3/fopen.3
+++ b/man3/fopen.3
@@ -289,12 +289,23 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.BR fopen (),
-.BR freopen ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
-.BR fdopen ():
-POSIX.1-2001, POSIX.1-2008.
+.TP
+.BR fopen ()
+.TQ
+.BR freopen ()
+C11, POSIX.1-2008.
+.TP
+.BR fdopen ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR fopen ()
+.TQ
+.BR freopen ()
+POSIX.1-2001, C89.
+.TP
+.BR fdopen ()
+POSIX.1-2001.
.SH NOTES
.SS glibc notes
The GNU C library allows the following extensions for the string specified in
diff --git a/man3/fopencookie.3 b/man3/fopencookie.3
index 6c82ce6be..36616af12 100644
--- a/man3/fopencookie.3
+++ b/man3/fopencookie.3
@@ -260,7 +260,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function is a nonstandard GNU extension.
+GNU.
.SH EXAMPLES
The program below implements a custom stream whose functionality
is similar (but not identical) to that available via
diff --git a/man3/fpathconf.3 b/man3/fpathconf.3
index ec42d95bb..a36f07930 100644
--- a/man3/fpathconf.3
+++ b/man3/fpathconf.3
@@ -256,7 +256,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
Files with name lengths longer than the value returned for
.I name
diff --git a/man3/fpclassify.3 b/man3/fpclassify.3
index 264090e36..0dd6ead84 100644
--- a/man3/fpclassify.3
+++ b/man3/fpclassify.3
@@ -126,19 +126,21 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.PP
-For
-.BR isinf (),
-the standards merely say that the return value is nonzero
-if and only if the argument has an infinite value.
-.SH NOTES
In glibc 2.01 and earlier,
.BR isinf ()
returns a nonzero value (actually: 1) if
.I x
is positive infinity or negative infinity.
(This is all that C99 requires.)
+.SH NOTES
+For
+.BR isinf (),
+the standards merely say that the return value is nonzero
+if and only if the argument has an infinite value.
.SH SEE ALSO
.BR finite (3),
.BR INFINITY (3),
diff --git a/man3/fpurge.3 b/man3/fpurge.3
index 43d8084a6..c84d9c5f2 100644
--- a/man3/fpurge.3
+++ b/man3/fpurge.3
@@ -68,13 +68,15 @@ T} Thread safety MT-Safe race:stream
.ad
.sp 1
.SH STANDARDS
-These functions are nonstandard and not portable.
-The function
+None.
+.SH HISTORY
+.TP
.BR fpurge ()
-was introduced in 4.4BSD and is not available under Linux.
-The function
+4.4BSD.
+Not available under Linux.
+.TP
.BR __fpurge ()
-was introduced in Solaris, and is present in glibc 2.1.95 and later.
+Solaris, glibc 2.1.95.
.SH NOTES
Usually it is a mistake to want to discard input buffers.
.SH SEE ALSO
diff --git a/man3/fputwc.3 b/man3/fputwc.3
index 4b510c9df..07d0c390f 100644
--- a/man3/fputwc.3
+++ b/man3/fputwc.3
@@ -83,7 +83,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
The behavior of
.BR fputwc ()
diff --git a/man3/fputws.3 b/man3/fputws.3
index 4342e1ae0..cad8e11fc 100644
--- a/man3/fputws.3
+++ b/man3/fputws.3
@@ -58,7 +58,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR fputws ()
diff --git a/man3/fread.3 b/man3/fread.3
index 160ea5f44..7f4dac813 100644
--- a/man3/fread.3
+++ b/man3/fread.3
@@ -98,7 +98,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
.SH EXAMPLES
The program below demonstrates the use of
.BR fread ()
diff --git a/man3/frexp.3 b/man3/frexp.3
index 8a3692710..79aa51342 100644
--- a/man3/frexp.3
+++ b/man3/frexp.3
@@ -97,7 +97,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/fseek.3 b/man3/fseek.3
index 7c211a8de..2a32c7df1 100644
--- a/man3/fseek.3
+++ b/man3/fseek.3
@@ -172,7 +172,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
.SH SEE ALSO
.BR lseek (2),
.BR fseeko (3)
diff --git a/man3/fseeko.3 b/man3/fseeko.3
index fbd58863c..f071f0e1c 100644
--- a/man3/fseeko.3
+++ b/man3/fseeko.3
@@ -91,10 +91,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001, SUSv2.
.SH NOTES
The declarations of these functions can also be obtained by defining
the obsolete
diff --git a/man3/ftime.3 b/man3/ftime.3
index 5e6430f64..a54eb8a82 100644
--- a/man3/ftime.3
+++ b/man3/ftime.3
@@ -77,19 +77,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-Starting with glibc 2.33, the
-.BR ftime ()
-function and the
-.I <sys/timeb.h>
-header have been removed.
-To support old binaries,
-glibc continues to provide a compatibility symbol for
-applications linked against glibc 2.32 and earlier.
.SH STANDARDS
+None.
+.SH HISTORY
+Removed in glibc 2.33.
4.2BSD, POSIX.1-2001.
-POSIX.1-2008 removes the specification of
-.BR ftime ().
+Removed in POSIX.1-2008.
.PP
This function is obsolete.
Don't use it.
diff --git a/man3/ftok.3 b/man3/ftok.3
index 40797d0f4..ec0c0832c 100644
--- a/man3/ftok.3
+++ b/man3/ftok.3
@@ -68,7 +68,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
On some ancient systems, the prototype was:
.PP
diff --git a/man3/fts.3 b/man3/fts.3
index bf17849b9..66b2fcab3 100644
--- a/man3/fts.3
+++ b/man3/fts.3
@@ -782,9 +782,10 @@ T} Thread safety MT-Unsafe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are available in Linux since glibc2.
.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.
4.4BSD.
.SH BUGS
Before glibc 2.23,
diff --git a/man3/ftw.3 b/man3/ftw.3
index 561d27dd9..59931bb3b 100644
--- a/man3/ftw.3
+++ b/man3/ftw.3
@@ -371,28 +371,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR nftw ()
-is available since glibc 2.1.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, SUSv1.
-POSIX.1-2008 marks
-.BR ftw ()
-as obsolete.
-.SH NOTES
-POSIX.1-2008 notes that the results are unspecified if
-.I fn
-does not preserve the current working directory.
-.PP
-The function
-.BR nftw ()
-and the use of \fBFTW_SL\fP with
-.BR ftw ()
-were introduced in SUSv1.
-.PP
In some implementations (e.g., glibc),
.BR ftw ()
-will never use \fBFTW_SL\fP, on other systems \fBFTW_SL\fP occurs only
-for symbolic links that do not point to an existing file,
+will never use \fBFTW_SL\fP; on other systems \fBFTW_SL\fP occurs only
+for symbolic links that do not point to an existing file;
and again on other systems
.BR ftw ()
will use \fBFTW_SL\fP for each symbolic link.
@@ -406,6 +388,24 @@ is passed in
.IR typeflag .
For predictable results, use
.BR nftw ().
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR ftw ()
+POSIX.1-2001, SVr4, SUSv1.
+POSIX.1-2008 marks it as obsolete.
+.TP
+.BR nftw ()
+glibc 2.1.
+POSIX.1-2001, SUSv1.
+.TP
+.B FTW_SL
+POSIX.1-2001, SUSv1.
+.SH NOTES
+POSIX.1-2008 notes that the results are unspecified if
+.I fn
+does not preserve the current working directory.
.SH BUGS
According to POSIX.1-2008, when the
.I typeflag
diff --git a/man3/futimes.3 b/man3/futimes.3
index 3cf660d68..f7794c009 100644
--- a/man3/futimes.3
+++ b/man3/futimes.3
@@ -89,16 +89,20 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+Linux, BSD.
+.SH HISTORY
+.TP
.BR futimes ()
-is available since glibc 2.3.
+glibc 2.3.
+.TP
.BR lutimes ()
-is available since glibc 2.6, and is implemented using the
+glibc 2.6.
+.SH NOTES
+.BR lutimes ()
+is implemented using the
.BR utimensat (2)
-system call, which is supported since Linux 2.6.22.
-.SH STANDARDS
-These functions are not specified in any standard.
-Other than Linux, they are available only on the BSDs.
+system call.
.SH SEE ALSO
.BR utime (2),
.BR utimensat (2),
diff --git a/man3/fwide.3 b/man3/fwide.3
index 867c1dce2..14eeb75bc 100644
--- a/man3/fwide.3
+++ b/man3/fwide.3
@@ -67,7 +67,9 @@ A positive return value means wide-character oriented.
A negative return value means byte oriented.
A return value of zero means undecided.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
Wide-character output to a byte oriented stream can be performed through the
.BR fprintf (3)
diff --git a/man3/gamma.3 b/man3/gamma.3
index 9c9e9ea21..54b8424f7 100644
--- a/man3/gamma.3
+++ b/man3/gamma.3
@@ -84,11 +84,13 @@ T} Thread safety MT-Unsafe race:signgam
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
+SVID 2.
+.PP
Because of historical variations in behavior across systems,
this function is not specified in any recent standard.
-It was documented in SVID 2.
-.SH NOTES
-.SS History
+.PP
4.2BSD had a
.BR gamma ()
that computed
diff --git a/man3/gcvt.3 b/man3/gcvt.3
index ea613e954..b8109839a 100644
--- a/man3/gcvt.3
+++ b/man3/gcvt.3
@@ -70,9 +70,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
Marked as LEGACY in POSIX.1-2001.
-POSIX.1-2008 removes the specification of
-.BR gcvt (),
+POSIX.1-2008 removed it,
recommending the use of
.BR sprintf (3)
instead (though
diff --git a/man3/get_nprocs.3 b/man3/get_nprocs.3
index b34a77e03..092c6affa 100644
--- a/man3/get_nprocs.3
+++ b/man3/get_nprocs.3
@@ -49,7 +49,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
.SH NOTES
The current
.\" glibc 2.15
diff --git a/man3/get_phys_pages.3 b/man3/get_phys_pages.3
index bb57a40c8..78e79f06f 100644
--- a/man3/get_phys_pages.3
+++ b/man3/get_phys_pages.3
@@ -39,8 +39,8 @@ The system could not provide the required information
.I /proc
filesystem was not mounted).
.SH STANDARDS
-These functions are GNU extensions.
-.SH NOTES
+GNU.
+.SH HISTORY
Before glibc 2.23,
these functions obtained the required information by scanning the
.I MemTotal
@@ -51,7 +51,7 @@ fields of
Since glibc 2.23,
these functions obtain the required information by calling
.BR sysinfo (2).
-.PP
+.SH NOTES
The following
.BR sysconf (3)
calls provide a portable means of obtaining the same information as the
diff --git a/man3/getaddrinfo.3 b/man3/getaddrinfo.3
index b98e3616a..5af0709fc 100644
--- a/man3/getaddrinfo.3
+++ b/man3/getaddrinfo.3
@@ -598,25 +598,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-The
-.BR getaddrinfo ()
-function is documented in RFC\ 2553.
-.SH NOTES
-.BR getaddrinfo ()
-supports the
-.IB address % scope-id
-notation for specifying the IPv6 scope-ID.
-.PP
-.BR AI_ADDRCONFIG ,
-.BR AI_ALL ,
-and
-.B AI_V4MAPPED
-are available since glibc 2.3.3.
-.B AI_NUMERICSERV
-is available since glibc 2.3.4.
-.PP
+.SH VERSIONS
According to POSIX.1, specifying
.\" POSIX.1-2001, POSIX.1-2008
.I hints
@@ -627,6 +609,28 @@ The GNU C library instead assumes a value of
.B (AI_V4MAPPED\~|\~AI_ADDRCONFIG)
for this case,
since this value is considered an improvement on the specification.
+.SH STANDARDS
+POSIX.1-2008.
+.TP
+.BR getaddrinfo ()
+RFC\ 2553.
+.SH HISTORY
+POSIX.1-2001.
+.TP
+.B AI_ADDRCONFIG
+.TQ
+.B AI_ALL
+.TQ
+.B AI_V4MAPPED
+glibc 2.3.3.
+.TP
+.B AI_NUMERICSERV
+glibc 2.3.4.
+.SH NOTES
+.BR getaddrinfo ()
+supports the
+.IB address % scope-id
+notation for specifying the IPv6 scope-ID.
.SH EXAMPLES
.\" getnameinfo.3 refers to this example
.\" socket.2 refers to this example
diff --git a/man3/getaddrinfo_a.3 b/man3/getaddrinfo_a.3
index f92a1bea1..525720812 100644
--- a/man3/getaddrinfo_a.3
+++ b/man3/getaddrinfo_a.3
@@ -304,9 +304,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are GNU extensions;
-they first appeared in glibc 2.2.3.
-.SH NOTES
+GNU.
+.SH HISTORY
+glibc 2.2.3.
+.PP
The interface of
.BR getaddrinfo_a ()
was modeled after the
diff --git a/man3/getauxval.3 b/man3/getauxval.3
index 465716ba5..a0e2e5df5 100644
--- a/man3/getauxval.3
+++ b/man3/getauxval.3
@@ -227,12 +227,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR getauxval ()
-function was added in glibc 2.16.
.SH STANDARDS
-This function is a nonstandard glibc extension.
+GNU.
+.SH HISTORY
+glibc 2.16.
.SH NOTES
The primary consumer of the information in the auxiliary vector
is the dynamic linker,
diff --git a/man3/getcontext.3 b/man3/getcontext.3
index c9561fbf4..3a35afca1 100644
--- a/man3/getcontext.3
+++ b/man3/getcontext.3
@@ -157,9 +157,11 @@ T} Thread safety MT-Safe race:ucp
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
SUSv2, POSIX.1-2001.
-POSIX.1-2008 removes the specification of
-.BR getcontext (),
+.PP
+POSIX.1-2008 removes these functions,
citing portability issues, and
recommending that applications be rewritten to use POSIX threads instead.
.SH NOTES
diff --git a/man3/getcwd.3 b/man3/getcwd.3
index e591b439e..6ad829220 100644
--- a/man3/getcwd.3
+++ b/man3/getcwd.3
@@ -203,48 +203,17 @@ T} Thread safety MT-Safe env
.hy
.ad
.sp 1
-.SH STANDARDS
-.BR getcwd ()
-conforms to POSIX.1-2001.
-Note however that POSIX.1-2001 leaves the behavior of
+.SH VERSIONS
+POSIX.1-2001 leaves the behavior of
.BR getcwd ()
unspecified if
.I buf
is NULL.
.PP
-.BR getwd ()
-is present in POSIX.1-2001, but marked LEGACY.
-POSIX.1-2008 removes the specification of
-.BR getwd ().
-Use
-.BR getcwd ()
-instead.
POSIX.1-2001
does not define any errors for
.BR getwd ().
-.PP
-.BR get_current_dir_name ()
-is a GNU extension.
-.SH NOTES
-Under Linux, these functions make use of the
-.BR getcwd ()
-system call (available since Linux 2.1.92).
-On older systems they would query
-.IR /proc/self/cwd .
-If both system call and proc filesystem are missing, a
-generic implementation is called.
-Only in that case can
-these calls fail under Linux with
-.BR EACCES .
-.PP
-These functions are often used to save the location of the current working
-directory for the purpose of returning to it later.
-Opening the current
-directory (".") and calling
-.BR fchdir (2)
-to return is usually a faster and more reliable alternative when sufficiently
-many file descriptors are available, especially on platforms other than Linux.
-.\"
+.SH VERSIONS
.SS C library/kernel differences
On Linux, the kernel provides a
.BR getcwd ()
@@ -282,6 +251,46 @@ functions described in this page
should consider checking whether the returned pathname starts
with '/' or '(' to avoid misinterpreting an unreachable path
as a relative pathname.
+.SH STANDARDS
+.TP
+.BR getcwd ()
+POSIX.1-2008.
+.TP
+.BR get_current_dir_name ()
+GNU.
+.TP
+.BR getwd ()
+None.
+.SH HISTORY
+.TP
+.BR getcwd ()
+POSIX.1-2001.
+.TP
+.BR getwd ()
+POSIX.1-2001, but marked LEGACY.
+Removed in POSIX.1-2008.
+Use
+.BR getcwd ()
+instead.
+.PP
+Under Linux, these functions make use of the
+.BR getcwd ()
+system call (available since Linux 2.1.92).
+On older systems they would query
+.IR /proc/self/cwd .
+If both system call and proc filesystem are missing, a
+generic implementation is called.
+Only in that case can
+these calls fail under Linux with
+.BR EACCES .
+.SH NOTES
+These functions are often used to save the location of the current working
+directory for the purpose of returning to it later.
+Opening the current
+directory (".") and calling
+.BR fchdir (2)
+to return is usually a faster and more reliable alternative when sufficiently
+many file descriptors are available, especially on platforms other than Linux.
.SH BUGS
Since the Linux 2.6.36 change that added "(unreachable)" in the
circumstances described above, the glibc implementation of
diff --git a/man3/getdate.3 b/man3/getdate.3
index bbb144267..b84199898 100644
--- a/man3/getdate.3
+++ b/man3/getdate.3
@@ -201,9 +201,7 @@ T}
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
The POSIX.1 specification for
.BR strptime (3)
contains conversion specifications using the
@@ -217,6 +215,10 @@ In glibc,
is implemented using
.BR strptime (3),
so that precisely the same conversions are supported by both.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The program below calls
.BR getdate ()
diff --git a/man3/getdirentries.3 b/man3/getdirentries.3
index a6ce0e840..6d28b0508 100644
--- a/man3/getdirentries.3
+++ b/man3/getdirentries.3
@@ -71,8 +71,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs, and a few other systems.
+BSD.
+.SH NOTES
Use
.BR opendir (3)
and
diff --git a/man3/getdtablesize.3 b/man3/getdtablesize.3
index cb433c6f0..826fa9a2b 100644
--- a/man3/getdtablesize.3
+++ b/man3/getdtablesize.3
@@ -62,15 +62,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-SVr4, 4.4BSD (the
-.BR getdtablesize ()
-function first appeared in 4.2BSD).
-It is not specified in POSIX.1;
-portable applications should employ
-.I sysconf(_SC_OPEN_MAX)
-instead of this call.
-.SH NOTES
+.SH VERSIONS
The glibc version of
.BR getdtablesize ()
calls
@@ -83,6 +75,15 @@ when that fails.
.\" The libc4 and libc5 versions return
.\" .B OPEN_MAX
.\" (set to 256 since Linux 0.98.4).
+.PP
+Portable applications should employ
+.I sysconf(_SC_OPEN_MAX)
+instead of this call.
+.SH STANDARDS
+None.
+.SH HISTORY
+SVr4, 4.4BSD
+(first appeared in 4.2BSD).
.SH SEE ALSO
.BR close (2),
.BR dup (2),
diff --git a/man3/getentropy.3 b/man3/getentropy.3
index f105a0f68..dc06aa3f5 100644
--- a/man3/getentropy.3
+++ b/man3/getentropy.3
@@ -66,13 +66,11 @@ with random data.
This kernel version does not implement the
.BR getrandom (2)
system call required to implement this function.
-.SH VERSIONS
-The
-.BR getentropy ()
-function first appeared in glibc 2.25.
.SH STANDARDS
-This function is nonstandard.
-It is also present on OpenBSD.
+None.
+.SH HISTORY
+glibc 2.25.
+OpenBSD.
.SH NOTES
The
.BR getentropy ()
diff --git a/man3/getenv.3 b/man3/getenv.3
index 7e4b45542..edf7d9ec8 100644
--- a/man3/getenv.3
+++ b/man3/getenv.3
@@ -93,15 +93,20 @@ T} Thread safety MT-Safe env
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR secure_getenv ()
-first appeared in glibc 2.17.
.SH STANDARDS
-.BR getenv ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.PP
+.TP
+.BR getenv ()
+C11, POSIX.1-2008.
+.TP
+.BR secure_getenv ()
+GNU.
+.SH HISTORY
+.TP
+.BR getenv ()
+POSIX.1-2001, C89, C99, SVr4, 4.3BSD.
+.TP
.BR secure_getenv ()
-is a GNU extension.
+glibc 2.17.
.SH NOTES
The strings in the environment list are of the form \fIname=value\fP.
.PP
diff --git a/man3/getfsent.3 b/man3/getfsent.3
index b8d587124..8d7f84609 100644
--- a/man3/getfsent.3
+++ b/man3/getfsent.3
@@ -91,10 +91,6 @@ while
.BR setfsent ()
returns 1.
Upon failure or end-of-file, these functions return NULL and 0, respectively.
-.\" .SH HISTORY
-.\" The
-.\" .BR getfsent ()
-.\" function appeared in 4.0BSD; the other four functions appeared in 4.3BSD.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
@@ -122,9 +118,8 @@ T}
.hy
.ad
.sp 1
-.SH STANDARDS
-These functions are not in POSIX.1.
-Several operating systems have them, for example,
+.SH VERSIONS
+Several operating systems have these functions, for example,
*BSD, SunOS, Digital UNIX, AIX (which also has a
.BR getfstype ()).
HP-UX has functions of the same names,
@@ -134,6 +129,12 @@ instead of a
.IR "struct fstab" ,
and calls these functions obsolete, superseded by
.BR getmntent (3).
+.SH STANDARDS
+None.
+.SH HISTORY
+The
+.BR getfsent ()
+function appeared in 4.0BSD; the other four functions appeared in 4.3BSD.
.SH NOTES
These functions are not thread-safe.
.PP
diff --git a/man3/getgrent.3 b/man3/getgrent.3
index 6847d2c56..d48ad5b8d 100644
--- a/man3/getgrent.3
+++ b/man3/getgrent.3
@@ -190,7 +190,9 @@ or
are used in parallel in different threads of a program,
then data races could occur.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR fgetgrent (3),
.BR getgrent_r (3),
diff --git a/man3/getgrent_r.3 b/man3/getgrent_r.3
index f2ac1050f..3fef0f399 100644
--- a/man3/getgrent_r.3
+++ b/man3/getgrent_r.3
@@ -141,10 +141,7 @@ or
.BR getgrent_r ()
are used in parallel in different threads of a program,
then data races could occur.
-.SH STANDARDS
-These functions are GNU extensions, done in a style resembling
-the POSIX version of functions like
-.BR getpwnam_r (3).
+.SH VERSIONS
Other systems use the prototype
.PP
.in +4n
@@ -162,6 +159,12 @@ int getgrent_r(struct group *grp, char *buf, int buflen,
FILE **gr_fp);
.EE
.in
+.SH STANDARDS
+GNU.
+.SH HISTORY
+These functions are done in a style resembling
+the POSIX version of functions like
+.BR getpwnam_r (3).
.SH NOTES
The function
.BR getgrent_r ()
diff --git a/man3/getgrnam.3 b/man3/getgrnam.3
index 51ec2d028..390867116 100644
--- a/man3/getgrnam.3
+++ b/man3/getgrnam.3
@@ -220,9 +220,7 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.SH NOTES
+.SH VERSIONS
The formulation given above under "RETURN VALUE" is from POSIX.1.
.\" POSIX.1-2001, POSIX.1-2008
It does not call "not found" an error, hence does not specify what value
@@ -244,6 +242,10 @@ situation: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM, and probably others.
.\" FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM
.\" SunOS 5.8 - gives EBADF
.\" Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR endgrent (3),
.BR fgetgrent (3),
diff --git a/man3/getgrouplist.3 b/man3/getgrouplist.3
index d57532195..470a001c8 100644
--- a/man3/getgrouplist.3
+++ b/man3/getgrouplist.3
@@ -100,10 +100,10 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is present since glibc 2.2.4.
.SH STANDARDS
-This function is nonstandard; it appears on most BSDs.
+None.
+.SH HISTORY
+glibc 2.2.4.
.SH BUGS
Before glibc 2.3.3,
the implementation of this function contains a buffer-overrun bug:
diff --git a/man3/gethostbyname.3 b/man3/gethostbyname.3
index 99eb29728..492e22d69 100644
--- a/man3/gethostbyname.3
+++ b/man3/gethostbyname.3
@@ -381,24 +381,35 @@ or
are used in parallel in different threads of a program,
then data races could occur.
.SH STANDARDS
-POSIX.1-2001 specifies
-.BR gethostbyname (),
-.BR gethostbyaddr (),
-.BR sethostent (),
-.BR endhostent (),
-.BR gethostent (),
-and
-.IR h_errno ;
-.BR gethostbyname (),
-.BR gethostbyaddr (),
-and
+.TP
+.BR sethostent ()
+.TQ
+.BR endhostent ()
+.TQ
+.BR gethostent ()
+POSIX.1-2008.
+.TP
+.BR gethostent_r ()
+GNU.
+.TP
+Others:
+None.
+.SH HISTORY
+.TP
+.BR sethostent ()
+.TQ
+.BR endhostent ()
+.TQ
+.BR gethostent ()
+POSIX.1-2001.
+.TP
+.BR gethostbyname ()
+.TQ
+.BR gethostbyaddr ()
+.TQ
.I h_errno
-are marked obsolescent in that standard.
-POSIX.1-2008 removes the specifications of
-.BR gethostbyname (),
-.BR gethostbyaddr (),
-and
-.IR h_errno ,
+Marked obsolescent in POSIX.1-2001.
+Removed in POSIX.1-2008,
recommending the use of
.BR getaddrinfo (3)
and
diff --git a/man3/gethostid.3 b/man3/gethostid.3
index 13da0523f..4c01bb08f 100644
--- a/man3/gethostid.3
+++ b/man3/gethostid.3
@@ -106,18 +106,7 @@ T}
.hy
.ad
.sp 1
-.SH STANDARDS
-4.2BSD; these functions were dropped in 4.4BSD.
-SVr4 includes
-.BR gethostid ()
-but not
-.BR sethostid ().
-.PP
-POSIX.1-2001 and POSIX.1-2008 specify
-.BR gethostid ()
-but not
-.BR sethostid ().
-.SH NOTES
+.SH VERSIONS
In the glibc implementation, the
.I hostid
is stored in the file
@@ -137,6 +126,19 @@ passes that hostname to
in order to obtain the host's IPv4 address,
and returns a value obtained by bit-twiddling the IPv4 address.
(This value may not be unique.)
+.SH STANDARDS
+.TP
+.BR gethostid ()
+POSIX.1-2008.
+.TP
+.BR sethostid ()
+None.
+.SH HISTORY
+4.2BSD; dropped in 4.4BSD.
+SVr4 and POSIX.1-2001 include
+.BR gethostid ()
+but not
+.BR sethostid ().
.SH BUGS
It is impossible to ensure that the identifier is globally unique.
.SH SEE ALSO
diff --git a/man3/getifaddrs.3 b/man3/getifaddrs.3
index ab1df42c1..d7ffe5261 100644
--- a/man3/getifaddrs.3
+++ b/man3/getifaddrs.3
@@ -160,16 +160,9 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR getifaddrs ()
-function first appeared in glibc 2.3, but before glibc 2.3.3,
-the implementation supported only IPv4 addresses;
-IPv6 support was added in glibc 2.3.3.
-Support of address families other than IPv4 is available only
-on kernels that support netlink.
.SH STANDARDS
-Not in POSIX.1.
+None.
+.SH HISTORY
This function first appeared in BSDi and is
present on the BSD systems, but with slightly different
semantics documented\[em]returning one entry per interface,
@@ -188,6 +181,13 @@ differs on various systems.
.\" appears to be confused and obsolete on this point.
.\" i.e., commonly it still says one of them will be NULL, even if
.\" the ifa_ifu union is already present
+.PP
+.BR getifaddrs ()
+first appeared in glibc 2.3, but before glibc 2.3.3,
+the implementation supported only IPv4 addresses;
+IPv6 support was added in glibc 2.3.3.
+Support of address families other than IPv4 is available only
+on kernels that support netlink.
.SH NOTES
The addresses returned on Linux will usually be the IPv4 and IPv6 addresses
assigned to the interface, but also one
diff --git a/man3/getipnodebyname.3 b/man3/getipnodebyname.3
index ed83ed5d2..3c5f51fc9 100644
--- a/man3/getipnodebyname.3
+++ b/man3/getipnodebyname.3
@@ -238,11 +238,12 @@ This is an array of one or more pointers to network address structures for the
network host.
The array is terminated by a null pointer.
.SH STANDARDS
-RFC\ 2553.
+None.
+.SH HISTORY
.\" Not in POSIX.1-2001.
-.SH NOTES
-These functions were present in glibc 2.1.91-95, but were
-removed again.
+RFC\ 2553.
+.PP
+Present in glibc 2.1.91-95, but removed again.
Several UNIX-like systems support them, but all
call them deprecated.
.SH SEE ALSO
diff --git a/man3/getline.3 b/man3/getline.3
index 9ba0681f1..b3e6ca4fe 100644
--- a/man3/getline.3
+++ b/man3/getline.3
@@ -137,12 +137,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-Both
-.BR getline ()
-and
-.BR getdelim ()
-were originally GNU extensions.
-They were standardized in POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+GNU, POSIX.1-2008.
.SH EXAMPLES
.\" SRC BEGIN (getline.c)
.EX
diff --git a/man3/getloadavg.3 b/man3/getloadavg.3
index 332bb12b8..23faa258e 100644
--- a/man3/getloadavg.3
+++ b/man3/getloadavg.3
@@ -47,11 +47,6 @@ over the last 1, 5, and 15 minutes, respectively.
.SH RETURN VALUE
If the load average was unobtainable, \-1 is returned; otherwise,
the number of samples actually retrieved is returned.
-.\" .SH HISTORY
-.\" The
-.\" BR getloadavg ()
-.\" function appeared in
-.\" 4.3BSD Reno .
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
@@ -69,12 +64,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.2.
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs and Solaris.
-.\" mdoc seems to have a bug - there must be no newline here
+BSD.
+.SH HISTORY
+4.3BSD-Reno, Solaris.
+glibc 2.2.
.SH SEE ALSO
.BR uptime (1),
.BR proc (5)
diff --git a/man3/getlogin.3 b/man3/getlogin.3
index 283a3c7bd..0d9fc59a0 100644
--- a/man3/getlogin.3
+++ b/man3/getlogin.3
@@ -178,29 +178,40 @@ and
.BR getlogin_r ()
call those functions,
so we use race:utent to remind users.
-.SH STANDARDS
+.SH VERSIONS
+OpenBSD has
.BR getlogin ()
and
+.BR setlogin (),
+and a username
+associated with a session, even if it has no controlling terminal.
+.SH STANDARDS
+.TP
+.BR getlogin ()
+.TQ
+.BR getlogin_r ()
+POSIX.1-2008.
+.TP
+.BR cuserid ()
+None.
+.SH STANDARDS
+.TP
+.BR getlogin ()
+.TQ
.BR getlogin_r ():
-POSIX.1-2001, POSIX.1-2008.
-.PP
+POSIX.1-2001.
+OpenBSD.
+.TP
+.BR cuserid ()
+System V, POSIX.1-1988.
+Removed in POSIX.1-1990.
+SUSv2.
+Removed in POSIX.1-2001.
+.IP
System V has a
.BR cuserid ()
function which uses the real
user ID rather than the effective user ID.
-The
-.BR cuserid ()
-function
-was included in the 1988 version of POSIX,
-but removed from the 1990 version.
-It was present in SUSv2, but removed in POSIX.1-2001.
-.PP
-OpenBSD has
-.BR getlogin ()
-and
-.BR setlogin (),
-and a username
-associated with a session, even if it has no controlling terminal.
.SH BUGS
Unfortunately, it is often rather easy to fool
.BR getlogin ().
diff --git a/man3/getmntent.3 b/man3/getmntent.3
index 7e73f5bec..5c0cfde0a 100644
--- a/man3/getmntent.3
+++ b/man3/getmntent.3
@@ -232,13 +232,15 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
The nonreentrant functions are from SunOS 4.1.3.
A routine
.BR getmntent_r ()
was introduced in HP-UX 10, but it returns an
.IR int .
The prototype shown above is glibc-only.
-.SH NOTES
+.PP
System V also has a
.BR getmntent ()
function but the calling sequence
diff --git a/man3/getnameinfo.3 b/man3/getnameinfo.3
index ff9d88d11..6e4331884 100644
--- a/man3/getnameinfo.3
+++ b/man3/getnameinfo.3
@@ -228,11 +228,19 @@ T} Thread safety MT-Safe env locale
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR getnameinfo ()
-is provided since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, RFC\ 2553.
+POSIX.1-2008.
+RFC\ 2553.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
+.PP
+Before glibc 2.2, the
+.I hostlen
+and
+.I servlen
+arguments were typed as
+.IR size_t .
.SH NOTES
In order to assist the programmer in choosing reasonable sizes
for the supplied buffers,
@@ -264,13 +272,6 @@ in recent versions of BIND's
header file.
The latter is a guess based on the services listed
in the current Assigned Numbers RFC.
-.PP
-Before glibc 2.2, the
-.I hostlen
-and
-.I servlen
-arguments were typed as
-.IR size_t .
.SH EXAMPLES
The following code tries to get the numeric hostname and service name,
for a given socket address.
diff --git a/man3/getnetent.3 b/man3/getnetent.3
index 695707967..31799d0df 100644
--- a/man3/getnetent.3
+++ b/man3/getnetent.3
@@ -175,8 +175,10 @@ or
are used in parallel in different threads of a program,
then data races could occur.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
+.PP
Before glibc 2.2, the
.I net
argument of
diff --git a/man3/getnetent_r.3 b/man3/getnetent_r.3
index 3b3927b51..f6e19360f 100644
--- a/man3/getnetent_r.3
+++ b/man3/getnetent_r.3
@@ -143,10 +143,11 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-These functions are GNU extensions.
+.SH VERSIONS
Functions with similar names exist on some other systems,
though typically with different calling signatures.
+.SH STANDARDS
+GNU.
.SH SEE ALSO
.BR getnetent (3),
.BR networks (5)
diff --git a/man3/getopt.3 b/man3/getopt.3
index f887f2dab..b04b52631 100644
--- a/man3/getopt.3
+++ b/man3/getopt.3
@@ -348,11 +348,9 @@ T}
.hy
.ad
.sp 1
-.SH STANDARDS
-.TP
-.BR getopt ():
-POSIX.1-2001, POSIX.1-2008, and POSIX.2,
-provided the environment variable
+.SH VERSIONS
+.BR getopt ()
+conforms to POSIX provided the environment variable
.B POSIXLY_CORRECT
is set.
Otherwise, the elements of \fIargv\fP aren't really
@@ -361,11 +359,24 @@ because these functions permute them.
Nevertheless,
.I const
is used in the prototype to be compatible with other systems.
+.SH STANDARDS
+.TP
+.BR getopt ()
+POSIX.1-2008.
+.TP
+.BR getopt_long ()
+.TQ
+.BR getopt_long_only ()
+GNU.
.IP
The use of \[aq]+\[aq] and \[aq]\-\[aq] in
.I optstring
is a GNU extension.
-.IP
+.SH HISTORY
+.TP
+.BR getopt ()
+POSIX.1-2001, and POSIX.2.
+.PP
On some older implementations,
.BR getopt ()
was declared in
@@ -379,9 +390,6 @@ POSIX.1-1996 marked the use of
for this purpose as LEGACY.
POSIX.1-2001 does not require the declaration to appear in
.IR <stdio.h> .
-.TP
-.BR getopt_long "() and " getopt_long_only ():
-These functions are GNU extensions.
.SH NOTES
A program that scans multiple argument vectors,
or rescans the same vector more than once,
diff --git a/man3/getpass.3 b/man3/getpass.3
index 378580495..0992e167a 100644
--- a/man3/getpass.3
+++ b/man3/getpass.3
@@ -67,10 +67,6 @@ is set to indicate the error, and NULL is returned.
The process does not have a controlling terminal.
.SH FILES
.I /dev/tty
-.\" .SH HISTORY
-.\" A
-.\" .BR getpass ()
-.\" function appeared in Version 7 AT&T UNIX.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
@@ -89,6 +85,9 @@ T} Thread safety MT-Unsafe term
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
+Version 7 AT&T UNIX.
Present in SUSv2, but marked LEGACY.
Removed in POSIX.1-2001.
.SH NOTES
diff --git a/man3/getprotoent.3 b/man3/getprotoent.3
index c22ae344c..84ccdd18f 100644
--- a/man3/getprotoent.3
+++ b/man3/getprotoent.3
@@ -170,7 +170,9 @@ or
are used in parallel in different threads of a program,
then data races could occur.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
.SH SEE ALSO
.BR getnetent (3),
.BR getprotoent_r (3),
diff --git a/man3/getprotoent_r.3 b/man3/getprotoent_r.3
index 438ace484..5bdcdb1b1 100644
--- a/man3/getprotoent_r.3
+++ b/man3/getprotoent_r.3
@@ -133,10 +133,11 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-These functions are GNU extensions.
+.SH VERSIONS
Functions with similar names exist on some other systems,
though typically with different calling signatures.
+.SH STANDARDS
+GNU.
.SH EXAMPLES
The program below uses
.BR getprotobyname_r ()
diff --git a/man3/getpt.3 b/man3/getpt.3
index f3f850724..38cecdf23 100644
--- a/man3/getpt.3
+++ b/man3/getpt.3
@@ -61,14 +61,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR getpt ()
-is provided since glibc 2.1.
-.SH STANDARDS
-.BR getpt ()
-is glibc-specific;
-use
+Use
.BR posix_openpt (3)
instead.
+.SH STANDARDS
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH SEE ALSO
.BR grantpt (3),
.BR posix_openpt (3),
diff --git a/man3/getpw.3 b/man3/getpw.3
index 63df3a796..488434108 100644
--- a/man3/getpw.3
+++ b/man3/getpw.3
@@ -107,6 +107,8 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
SVr2.
.SH BUGS
The
diff --git a/man3/getpwent.3 b/man3/getpwent.3
index dbce51386..10230a1ad 100644
--- a/man3/getpwent.3
+++ b/man3/getpwent.3
@@ -169,11 +169,14 @@ or
.BR endpwent ()
are used in parallel in different threads of a program,
then data races could occur.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+.SH VERSIONS
The
.I pw_gecos
field is not specified in POSIX, but is present on most implementations.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR fgetpwent (3),
.BR getpw (3),
diff --git a/man3/getpwent_r.3 b/man3/getpwent_r.3
index 34f8ec6ce..0e3ed2e27 100644
--- a/man3/getpwent_r.3
+++ b/man3/getpwent_r.3
@@ -144,10 +144,7 @@ or
.BR getpwent_r ()
are used in parallel in different threads of a program,
then data races could occur.
-.SH STANDARDS
-These functions are GNU extensions, done in a style resembling
-the POSIX version of functions like
-.BR getpwnam_r (3).
+.SH VERSIONS
Other systems use the prototype
.PP
.in +4n
@@ -166,6 +163,12 @@ getpwent_r(struct passwd *pwd, char *buf, int buflen,
FILE **pw_fp);
.EE
.in
+.SH STANDARDS
+None.
+.SH HISTORY
+These functions are done in a style resembling
+the POSIX version of functions like
+.BR getpwnam_r (3).
.SH NOTES
The function
.BR getpwent_r ()
diff --git a/man3/getpwnam.3 b/man3/getpwnam.3
index 130110552..e65a6cd35 100644
--- a/man3/getpwnam.3
+++ b/man3/getpwnam.3
@@ -228,11 +228,14 @@ T}
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+.SH VERSIONS
The
.I pw_gecos
field is not specified in POSIX, but is present on most implementations.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH NOTES
The formulation given above under "RETURN VALUE" is from POSIX.1-2001.
It does not call "not found" an error, and hence does not specify what value
diff --git a/man3/getrpcent.3 b/man3/getrpcent.3
index a24de76ce..992612002 100644
--- a/man3/getrpcent.3
+++ b/man3/getrpcent.3
@@ -122,8 +122,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs, Solaris, and many other systems.
+BSD.
+.SH HISTORY
+BSD, Solaris.
.SH BUGS
All information
is contained in a static area
diff --git a/man3/getrpcent_r.3 b/man3/getrpcent_r.3
index 52ab0f7ca..465e6332b 100644
--- a/man3/getrpcent_r.3
+++ b/man3/getrpcent_r.3
@@ -129,10 +129,11 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-These functions are GNU extensions.
+.SH VERSIONS
Functions with similar names exist on some other systems,
though typically with different calling signatures.
+.SH STANDARDS
+GNU.
.SH SEE ALSO
.BR getrpcent (3),
.BR rpc (5)
diff --git a/man3/getrpcport.3 b/man3/getrpcport.3
index 52ea2f0d5..53c9e57f1 100644
--- a/man3/getrpcport.3
+++ b/man3/getrpcport.3
@@ -57,5 +57,6 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs, Solaris, and many other systems.
+BSD.
+.SH HISTORY
+BSD, Solaris.
diff --git a/man3/gets.3 b/man3/gets.3
index 5c3e7b4b2..b07dda31e 100644
--- a/man3/gets.3
+++ b/man3/gets.3
@@ -57,7 +57,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C89, C99, POSIX.1-2001.
+POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.PP
LSB deprecates
.BR gets ().
diff --git a/man3/getservent.3 b/man3/getservent.3
index 29a2d69ba..3a43c299c 100644
--- a/man3/getservent.3
+++ b/man3/getservent.3
@@ -187,7 +187,9 @@ or
are used in parallel in different threads of a program,
then data races could occur.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
.SH SEE ALSO
.BR getnetent (3),
.BR getprotoent (3),
diff --git a/man3/getservent_r.3 b/man3/getservent_r.3
index d8b6ecdcc..4c0652ed3 100644
--- a/man3/getservent_r.3
+++ b/man3/getservent_r.3
@@ -134,10 +134,11 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-These functions are GNU extensions.
+.SH VERSIONS
Functions with similar names exist on some other systems,
though typically with different calling signatures.
+.SH STANDARDS
+GNU.
.SH EXAMPLES
The program below uses
.BR getservbyport_r ()
diff --git a/man3/getspnam.3 b/man3/getspnam.3
index 3014c970b..abcb339c1 100644
--- a/man3/getspnam.3
+++ b/man3/getspnam.3
@@ -309,10 +309,10 @@ or
.BR endspent ()
are used in parallel in different threads of a program,
then data races could occur.
+.SH VERSIONS
+Many other systems provide a similar API.
.SH STANDARDS
-The shadow password database and its associated API are
-not specified in POSIX.1.
-However, many other systems provide a similar API.
+None.
.SH SEE ALSO
.BR getgrnam (3),
.BR getpwnam (3),
diff --git a/man3/getsubopt.3 b/man3/getsubopt.3
index e565a6ece..9aee2321b 100644
--- a/man3/getsubopt.3
+++ b/man3/getsubopt.3
@@ -147,7 +147,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
Since
.BR getsubopt ()
diff --git a/man3/getttyent.3 b/man3/getttyent.3
index c7e0351af..05bf8cc6c 100644
--- a/man3/getttyent.3
+++ b/man3/getttyent.3
@@ -93,8 +93,7 @@ T} Thread safety MT-Unsafe race:ttyent
.ad
.sp 1
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs, and perhaps other systems.
+BSD.
.SH NOTES
Under Linux, the file
.IR /etc/ttys ,
diff --git a/man3/getusershell.3 b/man3/getusershell.3
index 496fb3d9d..d134dc3c4 100644
--- a/man3/getusershell.3
+++ b/man3/getusershell.3
@@ -94,6 +94,8 @@ T} Thread safety MT-Unsafe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD.
.SH SEE ALSO
.BR shells (5)
diff --git a/man3/getutent.3 b/man3/getutent.3
index c7256bce1..f79479715 100644
--- a/man3/getutent.3
+++ b/man3/getutent.3
@@ -196,6 +196,8 @@ or
are used in parallel in different threads of a program,
then data races could occur.
.SH STANDARDS
+None.
+.SH HISTORY
XPG2, SVr4.
.PP
In XPG2 and SVID 2 the function
diff --git a/man3/getutmp.3 b/man3/getutmp.3
index 5f29ef7ad..e50caedc4 100644
--- a/man3/getutmp.3
+++ b/man3/getutmp.3
@@ -52,11 +52,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.1.
.SH STANDARDS
-These functions are nonstandard, but appear on a few other systems,
-such as Solaris and NetBSD.
+None.
+.SH HISTORY
+glibc 2.1.1.
+Solaris, NetBSD.
.SH NOTES
These functions exist primarily for compatibility with other
systems where the
diff --git a/man3/getw.3 b/man3/getw.3
index 46ff12e98..e311b78dc 100644
--- a/man3/getw.3
+++ b/man3/getw.3
@@ -72,8 +72,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
SVr4, SUSv2.
-Not present in POSIX.1.
.SH BUGS
The value returned on error is also a legitimate data value.
.BR ferror (3)
diff --git a/man3/getwchar.3 b/man3/getwchar.3
index 696f2edae..308ebadb0 100644
--- a/man3/getwchar.3
+++ b/man3/getwchar.3
@@ -69,7 +69,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
The behavior of
.BR getwchar ()
diff --git a/man3/glob.3 b/man3/glob.3
index 5fb53ec29..c8b5be332 100644
--- a/man3/glob.3
+++ b/man3/glob.3
@@ -292,7 +292,9 @@ then data races could occur.
calls those functions,
so we use race:utent to remind users.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, POSIX.2.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, POSIX.2.
.SH NOTES
The structure elements
.I gl_pathc
diff --git a/man3/gnu_get_libc_version.3 b/man3/gnu_get_libc_version.3
index af6315d3f..86f0ebeb4 100644
--- a/man3/gnu_get_libc_version.3
+++ b/man3/gnu_get_libc_version.3
@@ -46,10 +46,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions first appeared in glibc 2.1.
.SH STANDARDS
-These functions are glibc-specific.
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH EXAMPLES
When run, the program below will produce output such as the following:
.PP
diff --git a/man3/grantpt.3 b/man3/grantpt.3
index 31706e2b7..a19172a3e 100644
--- a/man3/grantpt.3
+++ b/man3/grantpt.3
@@ -84,14 +84,6 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH VERSIONS
-.BR grantpt ()
-is provided since glibc 2.1.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-This is part of the UNIX 98 pseudoterminal support, see
-.BR pts (4).
-.PP
Many systems implement this function via a set-user-ID helper binary
called "pt_chown".
On Linux systems with a devpts filesystem (present since Linux 2.2),
@@ -103,6 +95,14 @@ so that nothing must be done by
Thus, no such helper binary is required
(and indeed it is configured to be absent during the
glibc build that is typical on many systems).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
+.PP
+This is part of the UNIX 98 pseudoterminal support, see
+.BR pts (4).
.SH SEE ALSO
.BR open (2),
.BR posix_openpt (3),
diff --git a/man3/group_member.3 b/man3/group_member.3
index ed0719190..e82bca9d7 100644
--- a/man3/group_member.3
+++ b/man3/group_member.3
@@ -40,7 +40,7 @@ supplementary group IDs matches
.IR gid ,
and zero otherwise.
.SH STANDARDS
-This function is a nonstandard GNU extension.
+GNU.
.SH SEE ALSO
.BR getgid (2),
.BR getgroups (2),
diff --git a/man3/gsignal.3 b/man3/gsignal.3
index d6450ec39..205f9297e 100644
--- a/man3/gsignal.3
+++ b/man3/gsignal.3
@@ -102,7 +102,9 @@ T} Thread safety MT-Safe sigintr
.ad
.sp 1
.SH STANDARDS
-These functions are available under AIX, DG/UX, HP-UX, SCO, Solaris, Tru64.
+None.
+.SH HISTORY
+AIX, DG/UX, HP-UX, SCO, Solaris, Tru64.
They are called obsolete under most of these systems, and are
broken under
.\" Linux libc and
diff --git a/man3/hsearch.3 b/man3/hsearch.3
index ef50b2c3a..dfd7787c7 100644
--- a/man3/hsearch.3
+++ b/man3/hsearch.3
@@ -235,19 +235,35 @@ T} Thread safety MT-Safe race:htab
.ad
.sp 1
.SH STANDARDS
-The functions
-.BR hcreate (),
-.BR hsearch (),
-and
+.TP
+.BR hcreate ()
+.TQ
+.BR hsearch ()
+.TQ
.BR hdestroy ()
-are from SVr4, and are described in POSIX.1-2001 and POSIX.1-2008.
-.PP
-The functions
-.BR hcreate_r (),
-.BR hsearch_r (),
-and
+POSIX.1-2008.
+.TP
+.BR hcreate_r ()
+.TQ
+.BR hsearch_r ()
+.TQ
+.BR hdestroy_r ()
+GNU.
+.SH HISTORY
+.TP
+.BR hcreate ()
+.TQ
+.BR hsearch ()
+.TQ
+.BR hdestroy ()
+SVr4, POSIX.1-2001.
+.TP
+.BR hcreate_r ()
+.TQ
+.BR hsearch_r ()
+.TQ
.BR hdestroy_r ()
-are GNU extensions.
+GNU.
.SH NOTES
Hash table implementations are usually more efficient when the
table contains enough free space to minimize collisions.
diff --git a/man3/hypot.3 b/man3/hypot.3
index edff250fd..119609b5e 100644
--- a/man3/hypot.3
+++ b/man3/hypot.3
@@ -145,7 +145,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/iconv.3 b/man3/iconv.3
index 1dfa4c619..66f59b8c3 100644
--- a/man3/iconv.3
+++ b/man3/iconv.3
@@ -165,10 +165,11 @@ function is MT-Safe, as long as callers arrange for
mutual exclusion on the
.I cd
argument.
-.SH VERSIONS
-This function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH NOTES
In each series of calls to
.BR iconv (),
diff --git a/man3/iconv_close.3 b/man3/iconv_close.3
index 6f47ca539..4fc291444 100644
--- a/man3/iconv_close.3
+++ b/man3/iconv_close.3
@@ -49,10 +49,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH SEE ALSO
.BR iconv (3),
.BR iconv_open (3)
diff --git a/man3/iconv_open.3 b/man3/iconv_open.3
index f363cd0d4..c6e4b6cdd 100644
--- a/man3/iconv_open.3
+++ b/man3/iconv_open.3
@@ -117,10 +117,11 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001, SUSv2.
.SH SEE ALSO
.BR iconv (1),
.BR iconv (3),
diff --git a/man3/if_nameindex.3 b/man3/if_nameindex.3
index 692b3639f..4453cfd58 100644
--- a/man3/if_nameindex.3
+++ b/man3/if_nameindex.3
@@ -96,17 +96,17 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR if_nameindex ()
-function first appeared in glibc 2.1, but before glibc 2.3.4,
+.SH STANDARDS
+POSIX.1-2008, RFC\ 3493.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
+BSDi.
+.PP
+Before glibc 2.3.4,
the implementation supported only interfaces with IPv4 addresses.
Support of interfaces that don't have IPv4 addresses is available only
on kernels that support netlink.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, RFC\ 3493.
-.PP
-This function first appeared in BSDi.
.SH EXAMPLES
The program below demonstrates the use of the functions described
on this page.
diff --git a/man3/if_nametoindex.3 b/man3/if_nametoindex.3
index 12a274d18..0b20e61f1 100644
--- a/man3/if_nametoindex.3
+++ b/man3/if_nametoindex.3
@@ -92,9 +92,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, RFC\ 3493.
-.PP
-This function first appeared in BSDi.
+POSIX.1-2008, RFC\ 3493.
+.SH HISTORY
+POSIX.1-2001.
+BSDi.
.SH SEE ALSO
.BR getifaddrs (3),
.BR if_nameindex (3),
diff --git a/man3/ilogb.3 b/man3/ilogb.3
index 3e141e323..76266f3ef 100644
--- a/man3/ilogb.3
+++ b/man3/ilogb.3
@@ -128,7 +128,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH BUGS
.\" Bug raised: https://www.sourceware.org/bugzilla/show_bug.cgi?id=6794
Before glibc 2.16, the following bugs existed in the
diff --git a/man3/index.3 b/man3/index.3
index 89ef316a5..7007a0c7e 100644
--- a/man3/index.3
+++ b/man3/index.3
@@ -30,11 +30,10 @@ and
.BR strrchr (3)
instead of these functions.
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD; marked as LEGACY in POSIX.1-2001.
-POSIX.1-2008 removes the specifications of
-.BR index ()
-and
-.BR rindex (),
+Removed in POSIX.1-2008,
recommending
.BR strchr (3)
and
diff --git a/man3/inet.3 b/man3/inet.3
index 3a6f3b0df..8c6912788 100644
--- a/man3/inet.3
+++ b/man3/inet.3
@@ -40,10 +40,11 @@ Standard C library
.PP
.BI "[[deprecated]] char *inet_ntoa(struct in_addr " in );
.PP
-.BI "struct in_addr inet_makeaddr(in_addr_t " net ", in_addr_t " host );
+.BI "[[deprecated]] struct in_addr inet_makeaddr(in_addr_t " net ,
+.BI " in_addr_t " host );
.PP
-.BI "in_addr_t inet_lnaof(struct in_addr " in );
-.BI "in_addr_t inet_netof(struct in_addr " in );
+.BI "[[deprecated]] in_addr_t inet_lnaof(struct in_addr " in );
+.BI "[[deprecated]] in_addr_t inet_netof(struct in_addr " in );
.fi
.PP
.RS -4
@@ -228,16 +229,20 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.BR inet_addr (),
-.BR inet_ntoa ():
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.PP
+.TP
+.BR inet_addr ()
+.TQ
+.BR inet_ntoa ()
+POSIX.1-2008.
+.TP
.BR inet_aton ()
-is not specified in POSIX.1, but is available on most systems.
-.SH NOTES
-On x86 architectures, the host byte order is Least Significant Byte
-first (little endian), whereas the network byte order, as used on the
-Internet, is Most Significant Byte first (big endian).
+None.
+.SH STANDARDS
+.TP
+.BR inet_addr ()
+.TQ
+.BR inet_ntoa ()
+POSIX.1-2001, 4.3BSD.
.PP
.BR inet_lnaof (),
.BR inet_netof (),
@@ -270,6 +275,10 @@ Classful network addresses are now obsolete,
having been superseded by Classless Inter-Domain Routing (CIDR),
which divides addresses into network and host components at
arbitrary bit (rather than byte) boundaries.
+.SH NOTES
+On x86 architectures, the host byte order is Least Significant Byte
+first (little endian), whereas the network byte order, as used on the
+Internet, is Most Significant Byte first (big endian).
.SH EXAMPLES
An example of the use of
.BR inet_aton ()
diff --git a/man3/inet_net_pton.3 b/man3/inet_net_pton.3
index 4eda6e005..0da4030de 100644
--- a/man3/inet_net_pton.3
+++ b/man3/inet_net_pton.3
@@ -132,11 +132,7 @@ The size of the output buffer was insufficient.
.I pres
was not in correct presentation format.
.SH STANDARDS
-The
-.BR inet_net_pton ()
-and
-.BR inet_net_ntop ()
-functions are nonstandard, but widely available.
+None.
.SH NOTES
.SS Input presentation format for inet_net_pton()
The network number may be specified either
diff --git a/man3/inet_ntop.3 b/man3/inet_ntop.3
index 67a514cf7..ed2fad1af 100644
--- a/man3/inet_ntop.3
+++ b/man3/inet_ntop.3
@@ -99,7 +99,10 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
Note that RFC\ 2553 defines a prototype where the last argument
.I size
is of type
diff --git a/man3/inet_pton.3 b/man3/inet_pton.3
index 1169bac28..d51f838fd 100644
--- a/man3/inet_pton.3
+++ b/man3/inet_pton.3
@@ -130,9 +130,7 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
Unlike
.BR inet_aton (3)
and
@@ -151,6 +149,10 @@ four bytes to be explicitly written).
For an interface that handles both IPv6 addresses, and IPv4
addresses in numbers-and-dots notation, see
.BR getaddrinfo (3).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH BUGS
.B AF_INET6
does not recognize IPv4 addresses.
diff --git a/man3/initgroups.3 b/man3/initgroups.3
index e27e2e1f3..f81824a79 100644
--- a/man3/initgroups.3
+++ b/man3/initgroups.3
@@ -92,6 +92,8 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
SVr4, 4.3BSD.
.SH SEE ALSO
.BR getgroups (2),
diff --git a/man3/insque.3 b/man3/insque.3
index cc47c8e76..8793fd272 100644
--- a/man3/insque.3
+++ b/man3/insque.3
@@ -97,9 +97,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On ancient systems,
.\" e.g., SunOS, Linux libc4 and libc5
the arguments of these functions were of type \fIstruct qelem *\fP,
@@ -126,6 +124,10 @@ The above is the POSIX version.
Some systems place them in \fI<string.h>\fP.
.\" Linux libc4 and libc 5 placed them
.\" in \fI<stdlib.h>\fP.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH BUGS
In glibc 2.4 and earlier, it was not possible to specify
.I prev
diff --git a/man3/isalpha.3 b/man3/isalpha.3
index 11101f4dc..000e816d7 100644
--- a/man3/isalpha.3
+++ b/man3/isalpha.3
@@ -227,71 +227,124 @@ T} Thread safety MT-Safe
.ad
.sp 1
.\" FIXME: need a thread-safety statement about the *_l functions
-.SH VERSIONS
-.BR isalnum_l (),
-.BR isalpha_l (),
-.BR isblank_l (),
-.BR iscntrl_l (),
-.BR isdigit_l (),
-.BR isgraph_l (),
-.BR islower_l (),
-.BR isprint_l (),
-.BR ispunct_l (),
-.BR isspace_l (),
-.BR isupper_l (),
-.BR isxdigit_l (),
-and
-.BR isascii_l ()
-are available since glibc 2.3.
.SH STANDARDS
-C89 specifies
-.BR isalnum (),
-.BR isalpha (),
-.BR iscntrl (),
-.BR isdigit (),
-.BR isgraph (),
-.BR islower (),
-.BR isprint (),
-.BR ispunct (),
-.BR isspace (),
-.BR isupper (),
-and
-.BR isxdigit (),
-but not
-.BR isascii ()
-and
-.BR isblank ().
-POSIX.1-2001
-also specifies those functions, and also
+.TP
+.BR isalnum ()
+.TQ
+.BR isalpha ()
+.TQ
+.BR iscntrl ()
+.TQ
+.BR isdigit ()
+.TQ
+.BR isgraph ()
+.TQ
+.BR islower ()
+.TQ
+.BR isprint ()
+.TQ
+.BR ispunct ()
+.TQ
+.BR isspace ()
+.TQ
+.BR isupper ()
+.TQ
+.BR isxdigit ()
+.TQ
+.BR isblank ()
+C11, POSIX.1-2008.
+.TP
.BR isascii ()
-(as an XSI extension)
-and
-.BR isblank ().
-C99 specifies all of the preceding functions, except
-.BR isascii ().
-.PP
-POSIX.1-2008 marks
+.TQ
+.BR isalnum_l ()
+.TQ
+.BR isalpha_l ()
+.TQ
+.BR isblank_l ()
+.TQ
+.BR iscntrl_l ()
+.TQ
+.BR isdigit_l ()
+.TQ
+.BR isgraph_l ()
+.TQ
+.BR islower_l ()
+.TQ
+.BR isprint_l ()
+.TQ
+.BR ispunct_l ()
+.TQ
+.BR isspace_l ()
+.TQ
+.BR isupper_l ()
+.TQ
+.BR isxdigit_l ()
+POSIX.1-2008.
+.TP
+.BR isascii_l ()
+GNU.
+.SH HISTORY
+.TP
+.BR isalnum ()
+.TQ
+.BR isalpha ()
+.TQ
+.BR iscntrl ()
+.TQ
+.BR isdigit ()
+.TQ
+.BR isgraph ()
+.TQ
+.BR islower ()
+.TQ
+.BR isprint ()
+.TQ
+.BR ispunct ()
+.TQ
+.BR isspace ()
+.TQ
+.BR isupper ()
+.TQ
+.BR isxdigit ()
+C89, POSIX.1-2001.
+.TP
+.BR isblank ()
+C99, POSIX.1-2001.
+.TP
.BR isascii ()
-as obsolete,
+POSIX.1-2001 (XSI).
+.IP
+POSIX.1-2008 marks it as obsolete,
noting that it cannot be used portably in a localized application.
-.PP
-POSIX.1-2008 specifies
-.BR isalnum_l (),
-.BR isalpha_l (),
-.BR isblank_l (),
-.BR iscntrl_l (),
-.BR isdigit_l (),
-.BR isgraph_l (),
-.BR islower_l (),
-.BR isprint_l (),
-.BR ispunct_l (),
-.BR isspace_l (),
-.BR isupper_l (),
-and
-.BR isxdigit_l ().
-.PP
+.TP
+.BR isalnum_l ()
+.TQ
+.BR isalpha_l ()
+.TQ
+.BR isblank_l ()
+.TQ
+.BR iscntrl_l ()
+.TQ
+.BR isdigit_l ()
+.TQ
+.BR isgraph_l ()
+.TQ
+.BR islower_l ()
+.TQ
+.BR isprint_l ()
+.TQ
+.BR ispunct_l ()
+.TQ
+.BR isspace_l ()
+.TQ
+.BR isupper_l ()
+.TQ
+.BR isxdigit_l ()
+glibc 2.3.
+POSIX.1-2008.
+.TP
.BR isascii_l ()
-is a GNU extension.
+glibc 2.3.
.SH NOTES
The standards require that the argument
.I c
diff --git a/man3/isatty.3 b/man3/isatty.3
index c2a010f8a..fdde6daef 100644
--- a/man3/isatty.3
+++ b/man3/isatty.3
@@ -63,7 +63,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR fstat (2),
.BR ttyname (3)
diff --git a/man3/isfdtype.3 b/man3/isfdtype.3
index e2fa13e27..6287ff562 100644
--- a/man3/isfdtype.3
+++ b/man3/isfdtype.3
@@ -61,19 +61,17 @@ The
.BR isfdtype ()
function can fail with any of the same errors as
.BR fstat (2).
+.SH VERSIONS
+Portable applications should use
+.BR fstat (2)
+instead.
.SH STANDARDS
-The
-.BR isfdtype ()
-function is not specified in any standard,
-but did appear in the draft POSIX.1g standard.
+None.
+.SH HISTORY
+It appeared in the draft POSIX.1g standard.
It is present on OpenBSD and Tru64 UNIX
(where the required header file in both cases is just
.IR <sys/stat.h> ,
-as shown in the POSIX.1g draft),
-and possibly other systems.
-.SH NOTES
-Portable applications should use
-.BR fstat (2)
-instead.
+as shown in the POSIX.1g draft).
.SH SEE ALSO
.BR fstat (2)
diff --git a/man3/isgreater.3 b/man3/isgreater.3
index cef462b07..87533ea5a 100644
--- a/man3/isgreater.3
+++ b/man3/isgreater.3
@@ -133,13 +133,15 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
-.SH NOTES
+.SH VERSIONS
Not all hardware supports these functions,
and where hardware support isn't provided, they will be emulated by macros.
This will result in a performance penalty.
Don't use these functions if NaN is of no concern for you.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR fpclassify (3),
.BR isnan (3)
diff --git a/man3/iswalnum.3 b/man3/iswalnum.3
index 3fd1f3da8..1eabd151f 100644
--- a/man3/iswalnum.3
+++ b/man3/iswalnum.3
@@ -83,7 +83,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswalnum ()
diff --git a/man3/iswalpha.3 b/man3/iswalpha.3
index e338d22c1..3e61dd3a1 100644
--- a/man3/iswalpha.3
+++ b/man3/iswalpha.3
@@ -84,7 +84,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswalpha ()
diff --git a/man3/iswblank.3 b/man3/iswblank.3
index 21eeb14a2..5c9944f65 100644
--- a/man3/iswblank.3
+++ b/man3/iswblank.3
@@ -77,7 +77,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The behavior of
.BR iswblank ()
diff --git a/man3/iswcntrl.3 b/man3/iswcntrl.3
index 7504c5c0e..09712ebee 100644
--- a/man3/iswcntrl.3
+++ b/man3/iswcntrl.3
@@ -68,7 +68,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswcntrl ()
diff --git a/man3/iswctype.3 b/man3/iswctype.3
index fb6ca5458..6b0476df8 100644
--- a/man3/iswctype.3
+++ b/man3/iswctype.3
@@ -71,7 +71,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswctype ()
diff --git a/man3/iswdigit.3 b/man3/iswdigit.3
index 630208a9b..d05bf6e2c 100644
--- a/man3/iswdigit.3
+++ b/man3/iswdigit.3
@@ -83,7 +83,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswdigit ()
diff --git a/man3/iswgraph.3 b/man3/iswgraph.3
index a02a7796c..8a4386b5f 100644
--- a/man3/iswgraph.3
+++ b/man3/iswgraph.3
@@ -76,7 +76,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswgraph ()
diff --git a/man3/iswlower.3 b/man3/iswlower.3
index f384b28b5..98156ee47 100644
--- a/man3/iswlower.3
+++ b/man3/iswlower.3
@@ -90,7 +90,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswlower ()
diff --git a/man3/iswprint.3 b/man3/iswprint.3
index 5e7c4546a..e9c4c922b 100644
--- a/man3/iswprint.3
+++ b/man3/iswprint.3
@@ -62,7 +62,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswprint ()
diff --git a/man3/iswpunct.3 b/man3/iswpunct.3
index f3a9b1035..921321cfc 100644
--- a/man3/iswpunct.3
+++ b/man3/iswpunct.3
@@ -74,7 +74,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswpunct ()
diff --git a/man3/iswspace.3 b/man3/iswspace.3
index c4ca84c68..2b737e5c6 100644
--- a/man3/iswspace.3
+++ b/man3/iswspace.3
@@ -71,7 +71,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswspace ()
diff --git a/man3/iswupper.3 b/man3/iswupper.3
index 778379f9e..90d677b6f 100644
--- a/man3/iswupper.3
+++ b/man3/iswupper.3
@@ -84,7 +84,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswupper ()
diff --git a/man3/iswxdigit.3 b/man3/iswxdigit.3
index be10101d9..63caf1556 100644
--- a/man3/iswxdigit.3
+++ b/man3/iswxdigit.3
@@ -75,7 +75,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR iswxdigit ()
diff --git a/man3/j0.3 b/man3/j0.3
index c9ee0561e..a81eb46fe 100644
--- a/man3/j0.3
+++ b/man3/j0.3
@@ -159,11 +159,28 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The functions returning
-.I double
-conform to SVr4, 4.3BSD,
-POSIX.1-2001, and POSIX.1-2008.
-The others are nonstandard functions that also exist on the BSDs.
+.TP
+.BR j0 ()
+.TQ
+.BR j1 ()
+.TQ
+.BR jn ()
+POSIX.1-2008.
+.TP
+Others:
+BSD.
+.SH HISTORY
+.TP
+.BR j0 ()
+.TQ
+.BR j1 ()
+.TQ
+.BR jn ()
+SVr4, 4.3BSD,
+POSIX.1-2001, POSIX.1-2008.
+.TP
+Others:
+BSD.
.SH BUGS
There are errors of up to 2e\-16 in the values returned by
.BR j0 (),
diff --git a/man3/killpg.3 b/man3/killpg.3
index dc5a6b0b9..68c008c79 100644
--- a/man3/killpg.3
+++ b/man3/killpg.3
@@ -81,11 +81,7 @@ No process can be found in the process group specified by
.B ESRCH
The process group was given as 0 but the sending process does not
have a process group.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD
-.RB ( killpg ()
-first appeared in 4BSD).
-.SH NOTES
+.SH VERSIONS
There are various differences between the permission checking
in BSD-type systems and System\ V-type systems.
See the POSIX rationale for
@@ -104,6 +100,11 @@ On Linux,
.BR killpg ()
is implemented as a library function that makes the call
.IR "kill(\-pgrp,\ sig)" .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.4BSD
+(first appeared in 4BSD).
.SH SEE ALSO
.BR getpgrp (2),
.BR kill (2),
diff --git a/man3/ldexp.3 b/man3/ldexp.3
index e28456c1f..107ba5c7d 100644
--- a/man3/ldexp.3
+++ b/man3/ldexp.3
@@ -120,7 +120,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/lgamma.3 b/man3/lgamma.3
index c86ac24c1..ae1474236 100644
--- a/man3/lgamma.3
+++ b/man3/lgamma.3
@@ -153,14 +153,41 @@ is raised.
.\" glibc (as at 2.8) also supports an inexact
.\" exception for various cases.
.SH STANDARDS
-The
+.TP
.BR lgamma ()
-functions are specified in C99, POSIX.1-2001, and POSIX.1-2008.
+.TQ
+.BR lgammaf ()
+.TQ
+.BR lgammal ()
+C11, POSIX.1-2008.
+.TP
.I signgam
-is specified in POSIX.1-2001 and POSIX.1-2008, but not in C99.
-The
+POSIX.1-2008.
+.TP
.BR lgamma_r ()
-functions are nonstandard, but present on several other systems.
+.TQ
+.BR lgammaf_r ()
+.TQ
+.BR lgammal_r ()
+None.
+.SH HISTORY
+.TP
+.BR lgamma ()
+.TQ
+.BR lgammaf ()
+.TQ
+.BR lgammal ()
+C99, POSIX.1-2001.
+.TP
+.I signgam
+POSIX.1-2001.
+.TP
+.BR lgamma_r ()
+.TQ
+.BR lgammaf_r ()
+.TQ
+.BR lgammal_r ()
+None.
.SH BUGS
In glibc 2.9 and earlier,
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6777
diff --git a/man3/lio_listio.3 b/man3/lio_listio.3
index 90ccb587a..103e951fd 100644
--- a/man3/lio_listio.3
+++ b/man3/lio_listio.3
@@ -200,12 +200,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR lio_listio ()
-function is available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH NOTES
It is a good idea to zero out the control blocks before use.
The control blocks must not be changed while the I/O operations
diff --git a/man3/list.3 b/man3/list.3
index fb2267905..03f26e0c8 100644
--- a/man3/list.3
+++ b/man3/list.3
@@ -233,9 +233,9 @@ structure, respectively.
returns an initializer that can be assigned to the list
.IR head .
.SH STANDARDS
-Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
-Present on the BSDs
-(LIST macros first appeared in 4.4BSD).
+BSD.
+.SH HISTORY
+4.4BSD.
.SH BUGS
.BR LIST_FOREACH ()
doesn't allow
diff --git a/man3/localeconv.3 b/man3/localeconv.3
index f900fc119..911ff0399 100644
--- a/man3/localeconv.3
+++ b/man3/localeconv.3
@@ -66,7 +66,9 @@ T}
.ad
.sp 1
.SH STANDARDS
-C89, C99.
+C11.
+.SH HISTORY
+C89.
.SH BUGS
The
.BR printf (3)
diff --git a/man3/lockf.3 b/man3/lockf.3
index 4be81f156..83e8b04b6 100644
--- a/man3/lockf.3
+++ b/man3/lockf.3
@@ -161,7 +161,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
.SH SEE ALSO
.BR fcntl (2),
.BR flock (2)
diff --git a/man3/log.3 b/man3/log.3
index bde58d9f7..b58a628db 100644
--- a/man3/log.3
+++ b/man3/log.3
@@ -119,7 +119,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/log10.3 b/man3/log10.3
index 00013ca76..1aa5b8dfa 100644
--- a/man3/log10.3
+++ b/man3/log10.3
@@ -80,7 +80,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/log1p.3 b/man3/log1p.3
index d36219f94..3f15633bc 100644
--- a/man3/log1p.3
+++ b/man3/log1p.3
@@ -129,7 +129,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.\" BSD
.SH BUGS
Before glibc 2.22, the glibc implementation did not set
diff --git a/man3/log2.3 b/man3/log2.3
index 27ed98083..b9360853c 100644
--- a/man3/log2.3
+++ b/man3/log2.3
@@ -78,10 +78,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/logb.3 b/man3/logb.3
index 3fbb9a3f1..009ca5a78 100644
--- a/man3/logb.3
+++ b/man3/logb.3
@@ -112,11 +112,6 @@ These functions do not set
.\" log(), log2(), log10() do set errno
.\" Bug raised: https://www.sourceware.org/bugzilla/show_bug.cgi?id=6793
.\"
-.\" .SH HISTORY
-.\" The
-.\" .BR logb ()
-.\" function occurs in 4.3BSD.
-.\" see IEEE.3 in the 4.3BSD manual
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
@@ -137,7 +132,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+.TP
+.BR logb ()
+4.3BSD
+(see IEEE.3 in the 4.3BSD manual).
.SH SEE ALSO
.BR ilogb (3),
.BR log (3)
diff --git a/man3/login.3 b/man3/login.3
index 396092950..099a9a03d 100644
--- a/man3/login.3
+++ b/man3/login.3
@@ -130,12 +130,8 @@ and
.BR logout ()
calls those functions,
so we use race:utent to remind users.
-.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs.
-.SH NOTES
-Note that the
-member
+.SH VERSIONS
+The member
.I ut_user
of
.I struct utmp
@@ -148,6 +144,8 @@ is defined as an alias for
.I ut_user
in
.IR <utmp.h> .
+.SH STANDARDS
+BSD.
.SH SEE ALSO
.BR getutent (3),
.BR utmp (5)
diff --git a/man3/lrint.3 b/man3/lrint.3
index 87dc6aaec..a013b525b 100644
--- a/man3/lrint.3
+++ b/man3/lrint.3
@@ -99,10 +99,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR ceil (3),
.BR floor (3),
diff --git a/man3/lround.3 b/man3/lround.3
index c2084518c..5bb659d49 100644
--- a/man3/lround.3
+++ b/man3/lround.3
@@ -102,10 +102,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR ceil (3),
.BR floor (3),
diff --git a/man3/lsearch.3 b/man3/lsearch.3
index cb21d5f57..855b1a6ac 100644
--- a/man3/lsearch.3
+++ b/man3/lsearch.3
@@ -85,8 +85,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-Present in libc since libc-4.6.27.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+libc-4.6.27.
.SH BUGS
The naming is unfortunate.
.SH SEE ALSO
diff --git a/man3/makecontext.3 b/man3/makecontext.3
index ad426fa58..c46fb8708 100644
--- a/man3/makecontext.3
+++ b/man3/makecontext.3
@@ -109,17 +109,12 @@ T}
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR makecontext ()
-and
-.BR swapcontext ()
-are provided since glibc 2.1.
.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.1.
SUSv2, POSIX.1-2001.
-POSIX.1-2008 removes the specifications of
-.BR makecontext ()
-and
-.BR swapcontext (),
+Removed in POSIX.1-2008,
citing portability issues, and
recommending that applications be rewritten to use POSIX threads instead.
.SH NOTES
diff --git a/man3/makedev.3 b/man3/makedev.3
index e2ad24284..40903f87b 100644
--- a/man3/makedev.3
+++ b/man3/makedev.3
@@ -61,18 +61,16 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH VERSIONS
+The BSDs expose the definitions for these macros via
+.IR <sys/types.h> .
.SH STANDARDS
-The
-.BR makedev (),
-.BR major (),
-and
-.BR minor ()
-functions are not specified in POSIX.1,
-but are present on many other systems.
-.\" The BSDs, HP-UX, Solaris, AIX, Irix.
+None.
+.SH HISTORY
+BSD, HP-UX, Solaris, AIX, Irix.
.\" The header location is inconsistent:
.\" Could be sys/mkdev.h, sys/sysmacros.h, or sys/types.h.
-.SH NOTES
+.PP
These interfaces are defined as macros.
Since glibc 2.3.3,
they have been aliases for three GNU-specific functions:
@@ -82,11 +80,10 @@ and
.BR gnu_dev_minor ().
The latter names are exported, but the traditional names are more portable.
.PP
-The BSDs expose the definitions for these macros via
-.IR <sys/types.h> .
Depending on the version,
-glibc also exposes definitions for these macros from that
-header file if suitable feature test macros are defined.
+glibc also exposes definitions for these macros from
+.IR <sys/types.h>
+if suitable feature test macros are defined.
However, this behavior was deprecated in glibc 2.25,
.\" glibc commit dbab6577c6684c62bd2521c1c29dc25c3cac966f
and since glibc 2.28,
diff --git a/man3/mallinfo.3 b/man3/mallinfo.3
index 6819f1019..3a7ee0da6 100644
--- a/man3/mallinfo.3
+++ b/man3/mallinfo.3
@@ -150,19 +150,17 @@ would modify the global internal objects with atomics, that make sure
.BR mallinfo ()/
.BR mallinfo2 ()
is safe enough, others modify with non-atomically maybe not.
-.SH VERSIONS
-.\" mallinfo(): Available already in glibc 2.0, possibly earlier
-The
-.BR mallinfo2 ()
-function was added
-.\" commit e3960d1c57e57f33e0e846d615788f4ede73b945
-in glibc 2.33.
.SH STANDARDS
-These functions are not specified by POSIX or the C standards.
-A
+None.
+.SH HISTORY
+.TP
.BR mallinfo ()
-function exists on many System V derivatives,
-and was specified in the SVID.
+glibc 2.0.
+SVID.
+.TP
+.BR mallinfo2 ()
+.\" commit e3960d1c57e57f33e0e846d615788f4ede73b945
+glibc 2.33.
.SH BUGS
.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=208
.\" See the 24 Aug 2011 mail by Paul Pluzhnikov:
diff --git a/man3/malloc.3 b/man3/malloc.3
index 2d6e9818e..ad7eed289 100644
--- a/man3/malloc.3
+++ b/man3/malloc.3
@@ -246,9 +246,33 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
+.BR malloc ()
+.TQ
+.BR free ()
+.TQ
+.BR calloc ()
+.TQ
+.BR realloc ()
+C11, POSIX.1-2008.
+.TP
+.BR reallocarray ()
+None.
+.SH HISTORY
+.TP
+.BR malloc ()
+.TQ
+.BR free ()
+.TQ
+.BR calloc ()
+.TQ
+.BR realloc ()
+POSIX.1-2001, C89.
+.TP
.BR reallocarray ()
-was added in glibc 2.26.
+glibc 2.26.
+OpenBSD 5.6, FreeBSD 11.0.
.PP
.BR malloc ()
and related functions rejected sizes greater than
@@ -259,15 +283,6 @@ starting in glibc 2.30.
preserved
.I errno
starting in glibc 2.33.
-.SH STANDARDS
-.BR malloc (),
-.BR free (),
-.BR calloc (),
-.BR realloc ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
-.BR reallocarray ()
-is a nonstandard extension that first appeared in OpenBSD 5.6 and FreeBSD 11.0.
.SH NOTES
By default, Linux follows an optimistic memory allocation strategy.
This means that when
diff --git a/man3/malloc_get_state.3 b/man3/malloc_get_state.3
index a49b46fa0..23bfa2d8d 100644
--- a/man3/malloc_get_state.3
+++ b/man3/malloc_get_state.3
@@ -89,7 +89,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
.SH NOTES
These functions are useful when using this
.BR malloc (3)
diff --git a/man3/malloc_hook.3 b/man3/malloc_hook.3
index e7091de43..83b213cd5 100644
--- a/man3/malloc_hook.3
+++ b/man3/malloc_hook.3
@@ -81,7 +81,7 @@ points at a function that is called each time after
.BR sbrk (2)
was asked for more memory.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
.SH NOTES
The use of these hook functions is not safe in multithreaded programs,
and they are now deprecated.
diff --git a/man3/malloc_info.3 b/man3/malloc_info.3
index af96c0142..70f5a8e03 100644
--- a/man3/malloc_info.3
+++ b/man3/malloc_info.3
@@ -58,11 +58,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR malloc_info ()
-was added in glibc 2.10.
.SH STANDARDS
-This function is a GNU extension.
+GNU.
+.SH HISTORY
+glibc 2.10.
.SH NOTES
The memory-allocation information is provided as an XML string
(rather than a C structure)
diff --git a/man3/malloc_stats.3 b/man3/malloc_stats.3
index 4dd2d8ca7..fdf471ad8 100644
--- a/man3/malloc_stats.3
+++ b/man3/malloc_stats.3
@@ -52,10 +52,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available already in glibc 2.0, possibly earlier
.SH STANDARDS
-This function is a GNU extension.
+GNU.
+.SH HISTORY
+glibc 2.0.
.SH NOTES
More detailed information about memory allocations in the main arena
can be obtained using
diff --git a/man3/malloc_trim.3 b/man3/malloc_trim.3
index b94fcb5a2..ec9d7d2d4 100644
--- a/man3/malloc_trim.3
+++ b/man3/malloc_trim.3
@@ -59,10 +59,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available already in glibc 2.0, possibly earlier
.SH STANDARDS
-This function is a GNU extension.
+GNU.
+.SH VERSIONS
+glibc 2.0.
.SH NOTES
Only the main heap (using
.BR sbrk (2))
diff --git a/man3/malloc_usable_size.3 b/man3/malloc_usable_size.3
index d63398f01..754b255de 100644
--- a/man3/malloc_usable_size.3
+++ b/man3/malloc_usable_size.3
@@ -49,7 +49,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function is a GNU extension.
+GNU.
.SH NOTES
The value returned by
.BR malloc_usable_size ()
diff --git a/man3/mallopt.3 b/man3/mallopt.3
index f9af38ee2..f43b6d578 100644
--- a/man3/mallopt.3
+++ b/man3/mallopt.3
@@ -435,10 +435,7 @@ On error,
is
.I not
set.
-.\" .SH VERSIONS
-.\" Available already in glibc 2.0, possibly earlier
-.SH STANDARDS
-This function is not specified by POSIX or the C standards.
+.SH VERSIONS
A similar function exists on many System V derivatives,
but the range of values for
.I param
@@ -450,7 +447,10 @@ The SVID defined options
and
.BR M_KEEP ,
but only the first of these is implemented in glibc.
-.\" .SH NOTES
+.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.0.
.SH BUGS
Specifying an invalid value for
.I param
diff --git a/man3/mblen.3 b/man3/mblen.3
index 72ef1dcd0..e02c5f09a 100644
--- a/man3/mblen.3
+++ b/man3/mblen.3
@@ -100,8 +100,15 @@ T} Thread safety MT-Unsafe race
.hy
.ad
.sp 1
+.SH VERSIONS
+The function
+.BR mbrlen (3)
+provides a better interface to the same
+functionality.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mblen ()
@@ -109,10 +116,5 @@ depends on the
.B LC_CTYPE
category of the
current locale.
-.PP
-The function
-.BR mbrlen (3)
-provides a better interface to the same
-functionality.
.SH SEE ALSO
.BR mbrlen (3)
diff --git a/man3/mbrlen.3 b/man3/mbrlen.3
index dd80c57a1..b9613535e 100644
--- a/man3/mbrlen.3
+++ b/man3/mbrlen.3
@@ -119,7 +119,9 @@ T} Thread safety MT-Unsafe race:mbrlen/!ps
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mbrlen ()
diff --git a/man3/mbrtowc.3 b/man3/mbrtowc.3
index b644b709d..6248621a1 100644
--- a/man3/mbrtowc.3
+++ b/man3/mbrtowc.3
@@ -189,7 +189,9 @@ T} Thread safety MT-Unsafe race:mbrtowc/!ps
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mbrtowc ()
diff --git a/man3/mbsinit.3 b/man3/mbsinit.3
index f93d48132..db8d28570 100644
--- a/man3/mbsinit.3
+++ b/man3/mbsinit.3
@@ -102,7 +102,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mbsinit ()
diff --git a/man3/mbsrtowcs.3 b/man3/mbsrtowcs.3
index fc52d661d..1d2b2e1ed 100644
--- a/man3/mbsrtowcs.3
+++ b/man3/mbsrtowcs.3
@@ -142,7 +142,9 @@ T}
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mbsrtowcs ()
diff --git a/man3/mbstowcs.3 b/man3/mbstowcs.3
index 376006fca..8337cb1bd 100644
--- a/man3/mbstowcs.3
+++ b/man3/mbstowcs.3
@@ -109,8 +109,15 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH VERSIONS
+The function
+.BR mbsrtowcs (3)
+provides a better interface to the same
+functionality.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mbstowcs ()
@@ -118,11 +125,6 @@ depends on the
.B LC_CTYPE
category of the
current locale.
-.PP
-The function
-.BR mbsrtowcs (3)
-provides a better interface to the same
-functionality.
.SH EXAMPLES
The program below illustrates the use of
.BR mbstowcs (),
diff --git a/man3/mbtowc.3 b/man3/mbtowc.3
index d2eda1c70..8eb14b717 100644
--- a/man3/mbtowc.3
+++ b/man3/mbtowc.3
@@ -127,8 +127,16 @@ T} Thread safety MT-Unsafe race
.hy
.ad
.sp 1
+.SH VERSIONS
+This function is not multithread safe.
+The function
+.BR mbrtowc (3)
+provides
+a better interface to the same functionality.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR mbtowc ()
@@ -136,12 +144,6 @@ depends on the
.B LC_CTYPE
category of the
current locale.
-.PP
-This function is not multithread safe.
-The function
-.BR mbrtowc (3)
-provides
-a better interface to the same functionality.
.SH SEE ALSO
.BR MB_CUR_MAX (3),
.BR mblen (3),
diff --git a/man3/mcheck.3 b/man3/mcheck.3
index 41868bff7..adf98213a 100644
--- a/man3/mcheck.3
+++ b/man3/mcheck.3
@@ -136,19 +136,19 @@ T}
.hy
.ad
.sp 1
-.SH VERSIONS
-The
+.SH STANDARDS
+GNU.
+.SH HISTORY
+.TP
.BR mcheck_pedantic ()
-and
+.TQ
.BR mcheck_check_all ()
-functions are available since glibc 2.2.
-The
+glibc 2.2.
+.TP
.BR mcheck ()
-and
+.TQ
.BR mprobe ()
-functions are present since at least glibc 2.0
-.SH STANDARDS
-These functions are GNU extensions.
+glibc 2.0.
.SH NOTES
Linking a program with
.I \-lmcheck
diff --git a/man3/memccpy.3 b/man3/memccpy.3
index 0c5b0b81e..5266fc751 100644
--- a/man3/memccpy.3
+++ b/man3/memccpy.3
@@ -70,7 +70,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR bcopy (3),
.BR bstring (3),
diff --git a/man3/memchr.3 b/man3/memchr.3
index 877910c59..e2916dc9a 100644
--- a/man3/memchr.3
+++ b/man3/memchr.3
@@ -113,23 +113,25 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR rawmemchr ()
-first appeared in glibc 2.1.
-.PP
-.BR memrchr ()
-first appeared in glibc 2.2.
.SH STANDARDS
-.BR memchr ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.PP
-The
+.TP
+.BR memchr ()
+C11, POSIX.1-2008.
+.TP
.BR memrchr ()
-function is a GNU extension, available since glibc 2.1.91.
-.PP
-The
+.TQ
+.BR rawmemchr ()
+GNU.
+.SH HISTORY
+.TP
+.BR memchr ()
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.TP
+.BR memrchr ()
+glibc 2.2.
+.TP
.BR rawmemchr ()
-function is a GNU extension, available since glibc 2.1.
+glibc 2.1.
.SH SEE ALSO
.BR bstring (3),
.BR ffs (3),
diff --git a/man3/memcmp.3 b/man3/memcmp.3
index e58719848..5a56f1972 100644
--- a/man3/memcmp.3
+++ b/man3/memcmp.3
@@ -63,8 +63,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.SH NOTES
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.SH CAVEATS
Do not use
.BR memcmp ()
to compare security critical data, such as cryptographic secrets,
diff --git a/man3/memcpy.3 b/man3/memcpy.3
index 77169a27e..c243e9f3b 100644
--- a/man3/memcpy.3
+++ b/man3/memcpy.3
@@ -53,8 +53,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.SH NOTES
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.SH CAVEATS
Failure to observe the requirement that the memory areas
do not overlap has been the source of significant bugs.
(POSIX and the C standards are explicit that employing
diff --git a/man3/memfrob.3 b/man3/memfrob.3
index b3da3dfa5..a75a03276 100644
--- a/man3/memfrob.3
+++ b/man3/memfrob.3
@@ -57,10 +57,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The
-.BR memfrob ()
-function is unique to the
-GNU C Library.
+GNU.
.SH SEE ALSO
.BR bstring (3),
.BR strfry (3)
diff --git a/man3/memmem.3 b/man3/memmem.3
index 7a532ea27..0a81054e6 100644
--- a/man3/memmem.3
+++ b/man3/memmem.3
@@ -58,11 +58,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function is not specified in POSIX.1,
-but is present on a number of other systems,
-including:
+None.
+.SH HISTORY
musl libc 0.9.7;
-FreeBSD 6.0, OpenBSD 5.4, NetBSD, and Illumos.
+FreeBSD 6.0, OpenBSD 5.4, NetBSD, Illumos.
.SH BUGS
.\" This function was broken in Linux libraries up to and including libc 5.0.9;
.\" there the
diff --git a/man3/memmove.3 b/man3/memmove.3
index 8ee7150e2..7745c4e29 100644
--- a/man3/memmove.3
+++ b/man3/memmove.3
@@ -61,7 +61,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH SEE ALSO
.BR bcopy (3),
.BR bstring (3),
diff --git a/man3/mempcpy.3 b/man3/mempcpy.3
index 371d341ae..98c1c6f8d 100644
--- a/man3/mempcpy.3
+++ b/man3/mempcpy.3
@@ -75,11 +75,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR mempcpy ()
-first appeared in glibc 2.1.
.SH STANDARDS
-This function is a GNU extension.
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH EXAMPLES
.EX
void *
diff --git a/man3/memset.3 b/man3/memset.3
index cce27bb95..92764b145 100644
--- a/man3/memset.3
+++ b/man3/memset.3
@@ -53,7 +53,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH SEE ALSO
.BR bstring (3),
.BR bzero (3),
diff --git a/man3/mkdtemp.3 b/man3/mkdtemp.3
index e7aa99efb..a3c28728e 100644
--- a/man3/mkdtemp.3
+++ b/man3/mkdtemp.3
@@ -74,13 +74,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-Available since glibc 2.1.91.
.SH STANDARDS
POSIX.1-2008.
-This function is present on the BSDs.
-.\" As at 2006, this function is being considered for a revision of POSIX.1
-.\" Also in NetBSD 1.4.
+.SH HISTORY
+glibc 2.1.91.
+NetBSD 1.4.
+POSIX.1-2008.
.SH SEE ALSO
.BR mktemp (1),
.BR mkdir (2),
diff --git a/man3/mkfifo.3 b/man3/mkfifo.3
index 32cd31bda..89d0fb2fa 100644
--- a/man3/mkfifo.3
+++ b/man3/mkfifo.3
@@ -181,16 +181,17 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR mkfifoat ()
-was added in glibc 2.4.
It is implemented using
-.BR mknodat (2),
-available since Linux 2.6.16.
+.BR mknodat (2).
.SH STANDARDS
-.BR mkfifo ():
-POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR mkfifoat ():
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR mkfifo ()
+POSIX.1-2001.
+.TP
+.BR mkfifoat ()
+glibc 2.4.
POSIX.1-2008.
.SH SEE ALSO
.BR mkfifo (1),
diff --git a/man3/mkstemp.3 b/man3/mkstemp.3
index 8c699ca15..0b4967ec8 100644
--- a/man3/mkstemp.3
+++ b/man3/mkstemp.3
@@ -189,27 +189,35 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR mkostemp ()
-is available since glibc 2.7.
-.BR mkstemps ()
-and
-.BR mkostemps ()
-are available since glibc 2.11.
.SH STANDARDS
-.BR mkstemp ():
-4.3BSD, POSIX.1-2001.
-.PP
-.BR mkstemps ():
-unstandardized, but appears on several other systems.
+.TP
+.BR mkstemp ()
+POSIX.1-2001.
+.TP
+.BR mkstemps ()
+BSD.
.\" mkstemps() appears to be at least on the BSDs, Mac OS X, Solaris,
.\" and Tru64.
-.PP
+.TP
.BR mkostemp ()
-and
-.BR mkostemps ():
-are glibc extensions.
-.SH NOTES
+.TQ
+.BR mkostemps ()
+GNU.
+.SH HISTORY
+.TP
+.BR mkstemp ()
+4.3BSD, POSIX.1-2001.
+.TP
+.BR mkstemps ()
+glibc 2.11.
+BSD, Mac OS X, Solaris, Tru64.
+.TP
+.BR mkostemp ()
+glibc 2.7.
+.TP
+.BR mkostemps ()
+glibc 2.11.
+.PP
In glibc versions 2.06 and earlier, the file is created with permissions 0666,
that is, read and write for all users.
This old behavior may be
diff --git a/man3/mktemp.3 b/man3/mktemp.3
index a1968ec68..2b5ace8ae 100644
--- a/man3/mktemp.3
+++ b/man3/mktemp.3
@@ -87,9 +87,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD, POSIX.1-2001.
-POSIX.1-2008 removes the specification of
-.BR mktemp ().
+Removed in POSIX.1-2008.
.\" .SH NOTES
.\" The prototype is in
.\" .I <unistd.h>
diff --git a/man3/modf.3 b/man3/modf.3
index 5662b5a06..103b5c2be 100644
--- a/man3/modf.3
+++ b/man3/modf.3
@@ -84,7 +84,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/mpool.3 b/man3/mpool.3
index de6f023a8..1d09060ac 100644
--- a/man3/mpool.3
+++ b/man3/mpool.3
@@ -197,8 +197,7 @@ function may fail and set
for any of the errors specified for the library routine
.BR free (3).
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs.
+BSD.
.SH SEE ALSO
.BR btree (3),
.BR dbopen (3),
diff --git a/man3/mq_close.3 b/man3/mq_close.3
index 76358c53b..c422ec7ec 100644
--- a/man3/mq_close.3
+++ b/man3/mq_close.3
@@ -56,7 +56,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
All open message queues are automatically closed on process termination,
or upon
diff --git a/man3/mq_getattr.3 b/man3/mq_getattr.3
index 754f56c0f..895c4067b 100644
--- a/man3/mq_getattr.3
+++ b/man3/mq_getattr.3
@@ -132,9 +132,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On Linux,
.BR mq_getattr ()
and
@@ -142,6 +140,10 @@ and
are library functions layered on top of the
.BR mq_getsetattr (2)
system call.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The program below can be used to show the default
.I mq_maxmsg
diff --git a/man3/mq_notify.3 b/man3/mq_notify.3
index 697407470..371ae4617 100644
--- a/man3/mq_notify.3
+++ b/man3/mq_notify.3
@@ -170,10 +170,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001.
-.SH NOTES
-.\"
+.SH VERSIONS
.SS C library/kernel differences
In the glibc implementation, the
.BR mq_notify ()
@@ -194,6 +191,10 @@ The implementation involves the use of a raw
.BR netlink (7)
socket and creates a new thread for each notification that is
delivered to the process.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The following program registers a notification request for the
message queue named in its command-line argument.
diff --git a/man3/mq_open.3 b/man3/mq_open.3
index 09a6ff037..8897d5e56 100644
--- a/man3/mq_open.3
+++ b/man3/mq_open.3
@@ -265,9 +265,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
.SS C library/kernel differences
The
.BR mq_open ()
@@ -285,6 +283,10 @@ so the C library function passes
without the preceding slash (i.e.,
.IR name+1 )
to the system call.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH BUGS
Before Linux 2.6.14,
the process umask was not applied to the permissions specified in
diff --git a/man3/mq_receive.3 b/man3/mq_receive.3
index 6be622358..fd49ad879 100644
--- a/man3/mq_receive.3
+++ b/man3/mq_receive.3
@@ -144,14 +144,16 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On Linux,
.BR mq_timedreceive ()
is a system call, and
.BR mq_receive ()
is a library function layered on top of that system call.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR mq_close (3),
.BR mq_getattr (3),
diff --git a/man3/mq_send.3 b/man3/mq_send.3
index ae0bc74d8..3dc05b7a2 100644
--- a/man3/mq_send.3
+++ b/man3/mq_send.3
@@ -151,14 +151,16 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On Linux,
.BR mq_timedsend ()
is a system call, and
.BR mq_send ()
is a library function layered on top of that system call.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR mq_close (3),
.BR mq_getattr (3),
diff --git a/man3/mq_unlink.3 b/man3/mq_unlink.3
index 687fe4342..17e15c145 100644
--- a/man3/mq_unlink.3
+++ b/man3/mq_unlink.3
@@ -58,7 +58,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR mq_close (3),
.BR mq_getattr (3),
diff --git a/man3/mtrace.3 b/man3/mtrace.3
index b9f1c4b36..3713ffedf 100644
--- a/man3/mtrace.3
+++ b/man3/mtrace.3
@@ -88,7 +88,7 @@ T} Thread safety MT-Unsafe
.\" glibc manual says muntrace should have marking locale because it calls
.\" fprintf(), but muntrace does not execute area which cause locale problem.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
.SH NOTES
In normal usage,
.BR mtrace ()
diff --git a/man3/nan.3 b/man3/nan.3
index 24c9b95c9..996e74067 100644
--- a/man3/nan.3
+++ b/man3/nan.3
@@ -85,12 +85,14 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.PP
See also IEC 559 and the appendix with
recommended functions in IEEE 754/IEEE 854.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR isnan (3),
.BR strtod (3),
diff --git a/man3/netlink.3 b/man3/netlink.3
index 4e6709a9f..5da97632b 100644
--- a/man3/netlink.3
+++ b/man3/netlink.3
@@ -76,12 +76,12 @@ is in a form suitable for parsing.
.BR NLMSG_PAYLOAD ()
Return the length of the payload associated with the
.IR nlmsghdr .
-.SH STANDARDS
-These macros are nonstandard Linux extensions.
-.SH NOTES
+.SH VERSIONS
It is often better to use netlink via
.I libnetlink
than via the low-level kernel interface.
+.SH STANDARDS
+Linux.
.SH SEE ALSO
.BR libnetlink (3),
.BR netlink (7)
diff --git a/man3/newlocale.3 b/man3/newlocale.3
index 3ba72a77d..48fbeff6e 100644
--- a/man3/newlocale.3
+++ b/man3/newlocale.3
@@ -182,14 +182,10 @@ is not a string pointer referring to a valid locale.
.TP
.B ENOMEM
Insufficient memory to create a locale object.
-.SH VERSIONS
-The
-.BR newlocale ()
-and
-.BR freelocale ()
-functions first appeared in glibc 2.3.
.SH STANDARDS
POSIX.1-2008.
+.SH HISTORY
+glibc 2.3.
.SH NOTES
Each locale object created by
.BR newlocale ()
diff --git a/man3/nextafter.3 b/man3/nextafter.3
index f4d7d0552..f691aacbf 100644
--- a/man3/nextafter.3
+++ b/man3/nextafter.3
@@ -183,9 +183,12 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.PP
This function is defined in IEC 559 (and the appendix with
recommended functions in IEEE 754/IEEE 854).
+.SH HISTORY
+C99, POSIX.1-2001.
.SH BUGS
In glibc 2.5 and earlier, these functions do not raise an underflow
floating-point
diff --git a/man3/nextup.3 b/man3/nextup.3
index 0adcaac39..7000489a3 100644
--- a/man3/nextup.3
+++ b/man3/nextup.3
@@ -85,13 +85,13 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.24.
.SH STANDARDS
These functions are described in
.I IEEE Std 754-2008 - Standard for Floating-Point Arithmetic
and
.IR "ISO/IEC TS 18661".
+.SH HISTORY
+glibc 2.24.
.SH SEE ALSO
.BR nearbyint (3),
.BR nextafter (3)
diff --git a/man3/nl_langinfo.3 b/man3/nl_langinfo.3
index c684c8a26..63d411745 100644
--- a/man3/nl_langinfo.3
+++ b/man3/nl_langinfo.3
@@ -310,7 +310,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SUSv2.
.SH NOTES
The behavior of
.BR nl_langinfo_l ()
diff --git a/man3/ntp_gettime.3 b/man3/ntp_gettime.3
index dd1b359db..8899b56e9 100644
--- a/man3/ntp_gettime.3
+++ b/man3/ntp_gettime.3
@@ -113,18 +113,20 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
+.SH STANDARDS
+.TP
.BR ntp_gettime ()
-function is available since glibc 2.1.
-The
+NTP Kernel Application Program Interface.
+.TP
.BR ntp_gettimex ()
-function is available since glibc 2.12.
-.SH STANDARDS
+GNU.
+.SH HISTORY
+.TP
.BR ntp_gettime ()
-is described in the NTP Kernel Application Program Interface.
+glibc 2.1.
+.TP
.BR ntp_gettimex ()
-is a GNU extension.
+glibc 2.12.
.SH SEE ALSO
.BR adjtimex (2),
.BR ntp_adjtime (3),
diff --git a/man3/offsetof.3 b/man3/offsetof.3
index 7cfba984d..b234e5ce1 100644
--- a/man3/offsetof.3
+++ b/man3/offsetof.3
@@ -64,7 +64,9 @@ within the given
.IR type ,
in units of bytes.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
.SH EXAMPLES
On a Linux/i386 system, when compiled using the default
.BR gcc (1)
diff --git a/man3/on_exit.3 b/man3/on_exit.3
index d12f92005..f2fbec75d 100644
--- a/man3/on_exit.3
+++ b/man3/on_exit.3
@@ -85,12 +85,14 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function comes from SunOS 4, but is also present in glibc.
-It no longer occurs in Solaris (SunOS 5).
-Portable application should avoid this function, and use the standard
+None.
+.SH HISTORY
+SunOS 4, glibc.
+Removed in Solaris (SunOS 5).
+Use the standard
.BR atexit (3)
instead.
-.SH NOTES
+.SH CAVEATS
By the time
.I function
is executed, stack
diff --git a/man3/open_memstream.3 b/man3/open_memstream.3
index 5a8c18c73..5c3f666b5 100644
--- a/man3/open_memstream.3
+++ b/man3/open_memstream.3
@@ -113,15 +113,15 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR open_memstream ()
-was already available in glibc 1.0.x.
-.BR open_wmemstream ()
-is available since glibc 2.4.
.SH STANDARDS
POSIX.1-2008.
-These functions are not specified in POSIX.1-2001,
-and are not widely available on other systems.
+.SH HISTORY
+.TP
+.BR open_memstream ()
+glibc 1.0.x.
+.TP
+.BR open_wmemstream ()
+glibc 2.4.
.SH NOTES
There is no file descriptor associated with the file stream
returned by these functions
diff --git a/man3/opendir.3 b/man3/opendir.3
index 778da4796..0dcae187f 100644
--- a/man3/opendir.3
+++ b/man3/opendir.3
@@ -107,14 +107,16 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR fdopendir ()
-is available since glibc 2.4.
.SH STANDARDS
+POSIX.1-2008.
+.SH STANDARDS
+.TP
.BR opendir ()
-is present on SVr4, 4.3BSD, and specified in POSIX.1-2001.
+SVr4, 4.3BSD, POSIX.1-2001.
+.TP
.BR fdopendir ()
-is specified in POSIX.1-2008.
+POSIX.1-2008.
+glibc 2.4.
.SH NOTES
Filename entries can be read from a directory stream using
.BR readdir (3).
diff --git a/man3/openpty.3 b/man3/openpty.3
index 84a8100ad..0b1d4632d 100644
--- a/man3/openpty.3
+++ b/man3/openpty.3
@@ -148,9 +148,8 @@ T} Thread safety MT-Unsafe race:ttyname
.ad
.sp 1
.SH STANDARDS
-These are BSD functions, present in glibc.
-They are not standardized in POSIX.
-.SH NOTES
+BSD.
+.SH HISTORY
The
.B const
modifiers were added to the structure pointer arguments of
diff --git a/man3/perror.3 b/man3/perror.3
index 5f87b93fd..75e6aa20e 100644
--- a/man3/perror.3
+++ b/man3/perror.3
@@ -116,38 +116,28 @@ T} Thread safety MT-Safe race:stderr
.hy
.ad
.sp 1
-.SH VERSIONS
-Since glibc 2.32, the declarations of
-.I sys_errlist
-and
-.I sys_nerr
-are no longer exposed by
-.IR <stdio.h> .
.SH STANDARDS
-.BR perror (),
-.IR errno :
-POSIX.1-2001, POSIX.1-2008, C89, C99, 4.3BSD.
-.PP
-The externals
+.TP
+.I errno
+.TQ
+.BR perror ()
+C11, POSIX.1-2008.
+.TP
.I sys_nerr
-and
+.TQ
.I sys_errlist
-derive from BSD, but are not specified in POSIX.1.
-.SH NOTES
-The externals
+BSD.
+.SH HISTORY
+.TP
+.I errno
+.TQ
+.BR perror ()
+POSIX.1-2001, C89, 4.3BSD.
+.TP
.I sys_nerr
-and
+.TQ
.I sys_errlist
-are defined by glibc, but in
-.IR <stdio.h> .
-.\" and only when _BSD_SOURCE is defined.
-.\" When
-.\" .B _GNU_SOURCE
-.\" is defined, the symbols
-.\" .I _sys_nerr
-.\" and
-.\" .I _sys_errlist
-.\" are provided.
+Removed in glibc 2.32.
.SH SEE ALSO
.BR err (3),
.BR errno (3),
diff --git a/man3/popen.3 b/man3/popen.3
index 7d4736ec8..b955f3182 100644
--- a/man3/popen.3
+++ b/man3/popen.3
@@ -165,15 +165,16 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.PP
+.SH VERSIONS
The \[aq]e\[aq] value for
.I type
is a Linux extension.
-.SH NOTES
-.BR Note :
-carefully read Caveats in
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH CAVEATS
+Carefully read Caveats in
.BR system (3).
.SH BUGS
Since the standard input of a command opened for reading shares its seek
diff --git a/man3/posix_fallocate.3 b/man3/posix_fallocate.3
index a9b40fe30..8f3b71422 100644
--- a/man3/posix_fallocate.3
+++ b/man3/posix_fallocate.3
@@ -110,11 +110,11 @@ T}
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR posix_fallocate ()
-is available since glibc 2.1.94.
.SH STANDARDS
-POSIX.1-2001.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.94.
+POSIX.1-2001
.PP
POSIX.1-2008 says that an implementation
.I shall
@@ -138,7 +138,7 @@ was less than 0, and
give the error if
.I len
equals zero.
-.SH NOTES
+.SH CAVEATS
In the glibc implementation,
.BR posix_fallocate ()
is implemented using the
diff --git a/man3/posix_madvise.3 b/man3/posix_madvise.3
index 501295239..06c657afc 100644
--- a/man3/posix_madvise.3
+++ b/man3/posix_madvise.3
@@ -86,12 +86,6 @@ is invalid.
Addresses in the specified range are partially or completely outside
the caller's address space.
.SH VERSIONS
-Support for
-.BR posix_madvise ()
-was added in glibc 2.2.
-.SH STANDARDS
-POSIX.1-2001.
-.SH NOTES
POSIX.1 permits an implementation to generate an error if
.I len
is 0.
@@ -108,6 +102,11 @@ is treated as a no-op, because the corresponding
value,
.BR MADV_DONTNEED ,
has destructive semantics.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
.SH SEE ALSO
.BR madvise (2),
.BR posix_fadvise (2)
diff --git a/man3/posix_memalign.3 b/man3/posix_memalign.3
index 43f621915..9bc6eb9a4 100644
--- a/man3/posix_memalign.3
+++ b/man3/posix_memalign.3
@@ -168,44 +168,43 @@ T} Thread safety MT-Unsafe init
.hy
.ad
.sp 1
-.SH VERSIONS
-The functions
-.BR memalign (),
-.BR valloc (),
-and
+.SH STANDARDS
+.TP
+.BR aligned_alloc ()
+C11.
+.TP
+.BR posix_memalign ()
+POSIX.1-2008.
+.TP
+.BR memalign ()
+.TQ
+.BR valloc ()
+None.
+.TP
.BR pvalloc ()
-have been available since at least glibc 2.0.
-.PP
-The function
+GNU.
+.SH HISTORY
+.TP
.BR aligned_alloc ()
-was added in glibc 2.16.
-.PP
-The function
+glibc 2.16.
+C11.
+.TP
.BR posix_memalign ()
-is available since glibc 2.1.91.
-.SH STANDARDS
-The function
+glibc 2.1.91.
+POSIX.1d, POSIX.1-2001.
+.TP
+.BR memalign ()
+glibc 2.0.
+SunOS 4.1.3.
+.TP
.BR valloc ()
-appeared in 3.0BSD.
-It is documented as being obsolete in 4.3BSD,
+glibc 2.0.
+3.0BSD.
+Documented as obsolete in 4.3BSD,
and as legacy in SUSv2.
-It does not appear in POSIX.1.
-.PP
-The function
+.TP
.BR pvalloc ()
-is a GNU extension.
-.PP
-The function
-.BR memalign ()
-appears in SunOS 4.1.3 but not in 4.4BSD.
-.PP
-The function
-.BR posix_memalign ()
-comes from POSIX.1d and is specified in POSIX.1-2001 and POSIX.1-2008.
-.PP
-The function
-.BR aligned_alloc ()
-is specified in the C11 standard.
+glibc 2.0.
.\"
.SS Headers
Everybody agrees that
diff --git a/man3/posix_openpt.3 b/man3/posix_openpt.3
index 2605b87ec..0560879a0 100644
--- a/man3/posix_openpt.3
+++ b/man3/posix_openpt.3
@@ -71,15 +71,13 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-glibc support for
-.BR posix_openpt ()
-has been provided since glibc 2.2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.1.
+POSIX.1-2001.
.PP
-.BR posix_openpt ()
-is part of the UNIX 98 pseudoterminal support (see
+It is part of the UNIX 98 pseudoterminal support (see
.BR pts (4)).
.SH NOTES
Some older UNIX implementations that support System V
diff --git a/man3/posix_spawn.3 b/man3/posix_spawn.3
index 1a6daaf82..32dc1211c 100644
--- a/man3/posix_spawn.3
+++ b/man3/posix_spawn.3
@@ -508,14 +508,11 @@ In addition, these functions fail if:
.TP
.B ENOSYS
Function not supported on this system.
-.SH VERSIONS
-The
-.BR posix_spawn ()
-and
-.BR posix_spawnp ()
-functions are available since glibc 2.2.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
.\" FIXME . This piece belongs in spawnattr_setflags(3)
.\" The
.\" .B POSIX_SPAWN_USEVFORK
diff --git a/man3/pow.3 b/man3/pow.3
index a1c48c31b..cfa0f9039 100644
--- a/man3/pow.3
+++ b/man3/pow.3
@@ -326,7 +326,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/pow10.3 b/man3/pow10.3
index aeac78286..6af433cae 100644
--- a/man3/pow10.3
+++ b/man3/pow10.3
@@ -48,13 +48,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH STANDARDS
+GNU.
.SH VERSIONS
-These functions were added in glibc 2.1.
-Since glibc 2.27,
+glibc 2.1.
+Removed in glibc 2.27.
.\" glibc commit 5a80d39d0d2587e9bd8e72f19e92eeb2a66fbe9e
-the use of these functions in new programs is no longer supported.
-.SH STANDARDS
-This functions are nonstandard GNU extensions.
.SH SEE ALSO
.BR exp10 (3),
.BR pow (3)
diff --git a/man3/powerof2.3 b/man3/powerof2.3
index 04d58dbf8..65420bfdc 100644
--- a/man3/powerof2.3
+++ b/man3/powerof2.3
@@ -31,7 +31,7 @@ if
is a power of 2 or not,
respectively.
.SH STANDARDS
-This nonstandard macro is present in glibc and the BSDs.
+BSD.
.SH CAVEATS
The arguments may be evaluated more than once.
.PP
diff --git a/man3/printf.3 b/man3/printf.3
index 763b5e2a2..790ebf4d8 100644
--- a/man3/printf.3
+++ b/man3/printf.3
@@ -919,7 +919,70 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
+.BR fprintf ()
+.TQ
+.BR printf ()
+.TQ
+.BR sprintf ()
+.TQ
+.BR vprintf ()
+.TQ
+.BR vfprintf ()
+.TQ
+.BR vsprintf ()
+.TQ
+.BR snprintf ()
+.TQ
+.BR vsnprintf ()
+C11, POSIX.1-2008.
+.TP
+.BR dprintf ()
+.TQ
+.BR vdprintf ()
+GNU, POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR fprintf ()
+.TQ
+.BR printf ()
+.TQ
+.BR sprintf ()
+.TQ
+.BR vprintf ()
+.TQ
+.BR vfprintf ()
+.TQ
+.BR vsprintf ()
+C89, POSIX.1-2001.
+.TP
+.BR snprintf ()
+.TQ
+.BR vsnprintf ()
+SUSv2, C99, POSIX.1-2001.
+.IP
+Concerning the return value of
+.BR snprintf (),
+SUSv2 and C99 contradict each other: when
+.BR snprintf ()
+is called with
+.IR size =0
+then SUSv2 stipulates an unspecified return value less than 1,
+while C99 allows
+.I str
+to be NULL in this case, and gives the return value (as always)
+as the number of characters that would have been written in case
+the output string has been large enough.
+POSIX.1-2001 and later align their specification of
+.BR snprintf ()
+with C99.
+.TP
+.BR dprintf ()
+.TQ
+.BR vdprintf ()
+GNU, POSIX.1-2008.
+.PP
.\" Linux libc4 knows about the five C standard flags.
.\" It knows about the length modifiers \fBh\fP, \fBl\fP, \fBL\fP,
.\" and the conversions
@@ -959,42 +1022,7 @@ of the
.B m
conversion specifier, that is
.IR %#m .
-.SH STANDARDS
-.BR fprintf (),
-.BR printf (),
-.BR sprintf (),
-.BR vprintf (),
-.BR vfprintf (),
-.BR vsprintf ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
-.BR snprintf (),
-.BR vsnprintf ():
-POSIX.1-2001, POSIX.1-2008, C99.
-.PP
-The
-.BR dprintf ()
-and
-.BR vdprintf ()
-functions were originally GNU extensions that were later standardized
-in POSIX.1-2008.
-.PP
-Concerning the return value of
-.BR snprintf (),
-SUSv2 and C99 contradict each other: when
-.BR snprintf ()
-is called with
-.IR size =0
-then SUSv2 stipulates an unspecified return value less than 1,
-while C99 allows
-.I str
-to be NULL in this case, and gives the return value (as always)
-as the number of characters that would have been written in case
-the output string has been large enough.
-POSIX.1-2001 and later align their specification of
-.BR snprintf ()
-with C99.
-.SH NOTES
+.SH CAVEATS
Some programs imprudently rely on code such as the following
.PP
.in +4n
diff --git a/man3/profil.3 b/man3/profil.3
index 69a94fdc2..7791064a3 100644
--- a/man3/profil.3
+++ b/man3/profil.3
@@ -77,7 +77,9 @@ T} Thread safety MT-Unsafe
.ad
.sp 1
.SH STANDARDS
-Similar to a call in SVr4 (but not POSIX.1).
+None.
+.SH HISTORY
+Similar to a call in SVr4.
.SH BUGS
.BR profil ()
cannot be used on a program that also uses
diff --git a/man3/program_invocation_name.3 b/man3/program_invocation_name.3
index 97d787470..94b8866a0 100644
--- a/man3/program_invocation_name.3
+++ b/man3/program_invocation_name.3
@@ -56,12 +56,11 @@ with all text up to and including the final slash (/), if any, removed.
.PP
These variables are automatically initialized by the glibc run-time
startup code.
-.SH STANDARDS
-These variables are GNU extensions, and should not be
-used in programs intended to be portable.
-.SH NOTES
+.SH VERSIONS
The Linux-specific
-.I /proc/[number]/cmdline
+.IR /proc/ pid /cmdline
file provides access to similar information.
+.SH STANDARDS
+GNU.
.SH SEE ALSO
.BR proc (5)
diff --git a/man3/psignal.3 b/man3/psignal.3
index 39aff2a33..f428c0e7c 100644
--- a/man3/psignal.3
+++ b/man3/psignal.3
@@ -93,11 +93,10 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR psiginfo ()
-function was added in glibc 2.10.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.10.
POSIX.1-2008, 4.3BSD.
.SH BUGS
Up to glibc 2.12,
diff --git a/man3/pthread_atfork.3 b/man3/pthread_atfork.3
index 1875bbdb4..42811f85e 100644
--- a/man3/pthread_atfork.3
+++ b/man3/pthread_atfork.3
@@ -65,7 +65,9 @@ handlers are called in the order of registration.
.B ENOMEM
Could not allocate memory to record the fork handler list entry.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
When
.BR fork (2)
diff --git a/man3/pthread_attr_init.3 b/man3/pthread_attr_init.3
index d0919101d..22abc969d 100644
--- a/man3/pthread_attr_init.3
+++ b/man3/pthread_attr_init.3
@@ -77,7 +77,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The
.I pthread_attr_t
diff --git a/man3/pthread_attr_setaffinity_np.3 b/man3/pthread_attr_setaffinity_np.3
index 7cb20eb0f..c095815d7 100644
--- a/man3/pthread_attr_setaffinity_np.3
+++ b/man3/pthread_attr_setaffinity_np.3
@@ -103,11 +103,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are provided since glibc 2.3.4.
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.3.4.
.SH NOTES
In glibc 2.3.3 only,
versions of these functions were provided that did not have a
diff --git a/man3/pthread_attr_setdetachstate.3 b/man3/pthread_attr_setdetachstate.3
index 7f692f698..402d8e01e 100644
--- a/man3/pthread_attr_setdetachstate.3
+++ b/man3/pthread_attr_setdetachstate.3
@@ -85,7 +85,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
See
.BR pthread_create (3)
diff --git a/man3/pthread_attr_setguardsize.3 b/man3/pthread_attr_setguardsize.3
index 01d9af47c..00c65e4ff 100644
--- a/man3/pthread_attr_setguardsize.3
+++ b/man3/pthread_attr_setguardsize.3
@@ -101,10 +101,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are provided since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH NOTES
A guard area consists of virtual memory pages that are protected
to prevent read and write access.
diff --git a/man3/pthread_attr_setinheritsched.3 b/man3/pthread_attr_setinheritsched.3
index 0ed304eb0..98dc2eea1 100644
--- a/man3/pthread_attr_setinheritsched.3
+++ b/man3/pthread_attr_setinheritsched.3
@@ -105,10 +105,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available since glibc 2.0.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0.
+POSIX.1-2001.
.SH BUGS
As at glibc 2.8, if a thread attributes object is initialized using
.BR pthread_attr_init (3),
diff --git a/man3/pthread_attr_setschedparam.3 b/man3/pthread_attr_setschedparam.3
index 834c08905..c4ad066bf 100644
--- a/man3/pthread_attr_setschedparam.3
+++ b/man3/pthread_attr_setschedparam.3
@@ -102,10 +102,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available since glibc 2.0.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+glibc 2.0.
.SH NOTES
See
.BR pthread_attr_setschedpolicy (3)
diff --git a/man3/pthread_attr_setschedpolicy.3 b/man3/pthread_attr_setschedpolicy.3
index df370c208..f727e7bdb 100644
--- a/man3/pthread_attr_setschedpolicy.3
+++ b/man3/pthread_attr_setschedpolicy.3
@@ -94,10 +94,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available since glibc 2.0.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0.
+POSIX.1-2001.
.SH EXAMPLES
See
.BR pthread_setschedparam (3).
diff --git a/man3/pthread_attr_setscope.3 b/man3/pthread_attr_setscope.3
index 6a7dd1840..038661567 100644
--- a/man3/pthread_attr_setscope.3
+++ b/man3/pthread_attr_setscope.3
@@ -116,7 +116,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The
.B PTHREAD_SCOPE_SYSTEM
diff --git a/man3/pthread_attr_setsigmask_np.3 b/man3/pthread_attr_setsigmask_np.3
index 8ba91c430..c005cb5ac 100644
--- a/man3/pthread_attr_setsigmask_np.3
+++ b/man3/pthread_attr_setsigmask_np.3
@@ -86,11 +86,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are provided since glibc 2.32.
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.32.
.SH NOTES
The signal mask attribute determines the signal mask that will be assigned to
a thread created using the thread attributes object
diff --git a/man3/pthread_attr_setstack.3 b/man3/pthread_attr_setstack.3
index be52f85b2..0f883c26c 100644
--- a/man3/pthread_attr_setstack.3
+++ b/man3/pthread_attr_setstack.3
@@ -107,10 +107,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are provided since glibc 2.2.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
.SH NOTES
These functions are provided for applications that must ensure that
a thread's stack is placed in a particular location.
diff --git a/man3/pthread_attr_setstackaddr.3 b/man3/pthread_attr_setstackaddr.3
index a19aeda21..e92e442db 100644
--- a/man3/pthread_attr_setstackaddr.3
+++ b/man3/pthread_attr_setstackaddr.3
@@ -15,8 +15,10 @@ POSIX threads library
.nf
.B #include <pthread.h>
.PP
+.B [[deprecated]]
.BI "int pthread_attr_setstackaddr(pthread_attr_t *" attr \
", void *" stackaddr );
+.B [[deprecated]]
.BI "int pthread_attr_getstackaddr(const pthread_attr_t *restrict " attr ,
.BI " void **restrict " stackaddr );
.fi
@@ -78,11 +80,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are provided since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001 specifies these functions but marks them as obsolete.
-POSIX.1-2008 removes the specification of these functions.
+None.
+.SH HISTORY
+glibc 2.1.
+Marked obsolete in POSIX.1-2001.
+Removed in POSIX.1-2008.
.SH NOTES
.I Do not use these functions!
They cannot be portably used, since they provide no way of specifying
diff --git a/man3/pthread_cancel.3 b/man3/pthread_cancel.3
index a6bd16bd0..231466119 100644
--- a/man3/pthread_cancel.3
+++ b/man3/pthread_cancel.3
@@ -119,11 +119,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available since glibc 2.0
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On Linux, cancelation is implemented using signals.
Under the NPTL threading implementation,
the first real-time signal (i.e., signal 32) is used for this purpose.
@@ -131,6 +127,11 @@ On LinuxThreads, the second real-time signal is used,
if real-time signals are available, otherwise
.B SIGUSR2
is used.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0
+POSIX.1-2001.
.SH EXAMPLES
The program below creates a thread and then cancels it.
The main thread joins with the canceled thread to check
diff --git a/man3/pthread_cleanup_push.3 b/man3/pthread_cleanup_push.3
index 90649b4cf..658b73277 100644
--- a/man3/pthread_cleanup_push.3
+++ b/man3/pthread_cleanup_push.3
@@ -121,12 +121,8 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" SH VERSIONS
-.\" Available since glibc 2.0
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-On Linux, the
+.SH VERSIONS
+On glibc, the
.BR pthread_cleanup_push ()
and
.BR pthread_cleanup_pop ()
@@ -151,6 +147,11 @@ and
.BR pthread_cleanup_pop ()
is undefined.
Portable applications should avoid doing this.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+glibc 2.0.
.SH EXAMPLES
The program below provides a simple example of the use of the functions
described in this page.
diff --git a/man3/pthread_cleanup_push_defer_np.3 b/man3/pthread_cleanup_push_defer_np.3
index e7eb957e5..b14c11a86 100644
--- a/man3/pthread_cleanup_push_defer_np.3
+++ b/man3/pthread_cleanup_push_defer_np.3
@@ -87,11 +87,11 @@ pthread_setcanceltype(oldtype, NULL);
pthread_cleanup_pop(execute);
.EE
.in
-.\" SH VERSIONS
-.\" Available since glibc 2.0
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.0
.SH SEE ALSO
.BR pthread_cancel (3),
.BR pthread_cleanup_push (3),
diff --git a/man3/pthread_create.3 b/man3/pthread_create.3
index 5c872641d..b90bd7494 100644
--- a/man3/pthread_create.3
+++ b/man3/pthread_create.3
@@ -152,7 +152,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
See
.BR pthread_self (3)
diff --git a/man3/pthread_detach.3 b/man3/pthread_detach.3
index 3ccce10b5..946ae3140 100644
--- a/man3/pthread_detach.3
+++ b/man3/pthread_detach.3
@@ -61,7 +61,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
Once a thread has been detached, it can't be joined with
.BR pthread_join (3)
diff --git a/man3/pthread_equal.3 b/man3/pthread_equal.3
index 0e34afe01..8777e682b 100644
--- a/man3/pthread_equal.3
+++ b/man3/pthread_equal.3
@@ -44,7 +44,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The
.BR pthread_equal ()
diff --git a/man3/pthread_exit.3 b/man3/pthread_exit.3
index 2f22a3428..65b36cda5 100644
--- a/man3/pthread_exit.3
+++ b/man3/pthread_exit.3
@@ -72,7 +72,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
Performing a return from the start function of any thread other
than the main thread results in an implicit call to
diff --git a/man3/pthread_getattr_default_np.3 b/man3/pthread_getattr_default_np.3
index a20e9ad13..271df0852 100644
--- a/man3/pthread_getattr_default_np.3
+++ b/man3/pthread_getattr_default_np.3
@@ -76,11 +76,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are available since glibc 2.18.
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in their names.
+.SH HISTORY
+glibc 2.18.
.SH EXAMPLES
The program below uses
.BR pthread_getattr_default_np ()
diff --git a/man3/pthread_getattr_np.3 b/man3/pthread_getattr_np.3
index 59e1d6288..cc397c36d 100644
--- a/man3/pthread_getattr_np.3
+++ b/man3/pthread_getattr_np.3
@@ -92,11 +92,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.2.3.
.SH STANDARDS
-This function is a nonstandard GNU extension;
+GNU;
hence the suffix "_np" (nonportable) in the name.
+.SH HISTORY
+glibc 2.2.3.
.SH EXAMPLES
The program below demonstrates the use of
.BR pthread_getattr_np ().
diff --git a/man3/pthread_getcpuclockid.3 b/man3/pthread_getcpuclockid.3
index 968f9c996..92c4b47a0 100644
--- a/man3/pthread_getcpuclockid.3
+++ b/man3/pthread_getcpuclockid.3
@@ -62,10 +62,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.2.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
.SH NOTES
When
.I thread
diff --git a/man3/pthread_join.3 b/man3/pthread_join.3
index 727845dcf..1cb5ee417 100644
--- a/man3/pthread_join.3
+++ b/man3/pthread_join.3
@@ -95,7 +95,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
After a successful call to
.BR pthread_join (),
diff --git a/man3/pthread_kill.3 b/man3/pthread_kill.3
index c13c88bc8..bce768fda 100644
--- a/man3/pthread_kill.3
+++ b/man3/pthread_kill.3
@@ -66,16 +66,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-Signal dispositions are process-wide:
-if a signal handler is installed,
-the handler will be invoked in the thread
-.IR thread ,
-but if the disposition of the signal is "stop", "continue", or "terminate",
-this action will affect the whole process.
-.PP
+.SH VERSIONS
The glibc implementation of
.BR pthread_kill ()
gives an error
@@ -98,6 +89,17 @@ lifetime has ended produces undefined behavior,
and an attempt to use an invalid thread ID in a call to
.BR pthread_kill ()
can, for example, cause a segmentation fault.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+Signal dispositions are process-wide:
+if a signal handler is installed,
+the handler will be invoked in the thread
+.IR thread ,
+but if the disposition of the signal is "stop", "continue", or "terminate",
+this action will affect the whole process.
.SH SEE ALSO
.BR kill (2),
.BR sigaction (2),
diff --git a/man3/pthread_kill_other_threads_np.3 b/man3/pthread_kill_other_threads_np.3
index 0aee6411e..950e46f96 100644
--- a/man3/pthread_kill_other_threads_np.3
+++ b/man3/pthread_kill_other_threads_np.3
@@ -43,11 +43,18 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available since glibc 2.0
+.SH VERSIONS
+In the NPTL threading implementation,
+.BR pthread_kill_other_threads_np ()
+exists, but does nothing.
+(Nothing needs to be done,
+because the implementation does the right thing during an
+.BR execve (2).)
.SH STANDARDS
-This function is a nonstandard GNU extension;
+GNU;
hence the suffix "_np" (nonportable) in the name.
+.SH HISTORY
+glibc 2.0
.SH NOTES
.BR pthread_kill_other_threads_np ()
is intended to be called just before a thread calls
@@ -57,13 +64,6 @@ This function is designed to address a limitation in the obsolete
LinuxThreads implementation whereby the other threads of an application
are not automatically terminated (as POSIX.1-2001 requires) during
.BR execve (2).
-.PP
-In the NPTL threading implementation,
-.BR pthread_kill_other_threads_np ()
-exists, but does nothing.
-(Nothing needs to be done,
-because the implementation does the right thing during an
-.BR execve (2).)
.SH SEE ALSO
.BR execve (2),
.BR pthread_cancel (3),
diff --git a/man3/pthread_mutex_consistent.3 b/man3/pthread_mutex_consistent.3
index d2a983db1..57bcca162 100644
--- a/man3/pthread_mutex_consistent.3
+++ b/man3/pthread_mutex_consistent.3
@@ -44,19 +44,11 @@ it returns a positive error number to indicate the error.
.TP
.B EINVAL
The mutex is either not robust or is not in an inconsistent state.
-.SH VERSIONS
-.BR pthread_mutex_consistent ()
-was added in glibc 2.12.
.SH STANDARDS
POSIX.1-2008.
-.SH NOTES
-.BR pthread_mutex_consistent ()
-simply informs the implementation that the state (shared data)
-guarded by the mutex has been restored to a consistent state and that
-normal operations can now be performed with the mutex.
-It is the application's responsibility to ensure that the
-shared data has been restored to a consistent state before calling
-.BR pthread_mutex_consistent ().
+.SH HISTORY
+glibc 2.12.
+POSIX.1-2008.
.PP
Before the addition of
.BR pthread_mutex_consistent ()
@@ -73,6 +65,14 @@ was defined:
This GNU-specific API, which first appeared in glibc 2.4,
is nowadays obsolete and should not be used in new programs;
since glibc 2.34 it has been marked as deprecated.
+.SH NOTES
+.BR pthread_mutex_consistent ()
+simply informs the implementation that the state (shared data)
+guarded by the mutex has been restored to a consistent state and that
+normal operations can now be performed with the mutex.
+It is the application's responsibility to ensure that the
+shared data has been restored to a consistent state before calling
+.BR pthread_mutex_consistent ().
.SH EXAMPLES
See
.BR pthread_mutexattr_setrobust (3).
diff --git a/man3/pthread_mutexattr_getpshared.3 b/man3/pthread_mutexattr_getpshared.3
index 8f55ffd12..86056e573 100644
--- a/man3/pthread_mutexattr_getpshared.3
+++ b/man3/pthread_mutexattr_getpshared.3
@@ -72,7 +72,9 @@ is invalid.
.B PTHREAD_PROCESS_SHARED
but the implementation does not support process-shared mutexes.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.ad l
.nh
diff --git a/man3/pthread_mutexattr_init.3 b/man3/pthread_mutexattr_init.3
index 6024048cc..6d8a6411f 100644
--- a/man3/pthread_mutexattr_init.3
+++ b/man3/pthread_mutexattr_init.3
@@ -38,7 +38,9 @@ object are undefined.
On success, these functions return 0.
On error, they return a positive error number.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
Subsequent changes to a mutex attributes object do not affect mutex that
have already been initialized using that object.
diff --git a/man3/pthread_mutexattr_setrobust.3 b/man3/pthread_mutexattr_setrobust.3
index a1205190d..b13ddc8eb 100644
--- a/man3/pthread_mutexattr_setrobust.3
+++ b/man3/pthread_mutexattr_setrobust.3
@@ -121,13 +121,6 @@ or
was passed to
.BR pthread_mutexattr_setrobust ().
.SH VERSIONS
-.BR pthread_mutexattr_getrobust ()
-and
-.BR pthread_mutexattr_setrobust ()
-were added in glibc 2.12.
-.SH STANDARDS
-POSIX.1-2008.
-.SH NOTES
In the Linux implementation,
when using process-shared robust mutexes, a waiting thread also receives the
.B EOWNERDEAD
@@ -138,6 +131,11 @@ POSIX.1 does not specify this detail,
but the same behavior also occurs in at least some
.\" E.g., Solaris, according to its manual page
other implementations.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.12.
+POSIX.1-2008.
.PP
Before the addition of
.BR pthread_mutexattr_getrobust ()
diff --git a/man3/pthread_rwlockattr_setkind_np.3 b/man3/pthread_rwlockattr_setkind_np.3
index 7e750045c..ff9051ce6 100644
--- a/man3/pthread_rwlockattr_setkind_np.3
+++ b/man3/pthread_rwlockattr_setkind_np.3
@@ -110,14 +110,10 @@ returns a nonzero error number.
.B EINVAL
.I pref
specifies an unsupported value.
-.SH VERSIONS
-The
-.BR pthread_rwlockattr_getkind_np ()
-and
-.BR pthread_rwlockattr_setkind_np ()
-functions first appeared in glibc 2.1.
.SH STANDARDS
-These functions are non-standard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.1.
.SH SEE ALSO
.BR pthreads (7)
diff --git a/man3/pthread_self.3 b/man3/pthread_self.3
index 6066a61a6..7f99018af 100644
--- a/man3/pthread_self.3
+++ b/man3/pthread_self.3
@@ -47,7 +47,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
POSIX.1 allows an implementation wide freedom in choosing
the type used to represent a thread ID;
diff --git a/man3/pthread_setaffinity_np.3 b/man3/pthread_setaffinity_np.3
index 9c1483797..ed2bb82d7 100644
--- a/man3/pthread_setaffinity_np.3
+++ b/man3/pthread_setaffinity_np.3
@@ -112,11 +112,18 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are provided since glibc 2.3.4.
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.3.4.
+.PP
+In glibc 2.3.3 only,
+versions of these functions were provided that did not have a
+.I cpusetsize
+argument.
+Instead the CPU set size given to the underlying system calls was always
+.IR sizeof(cpu_set_t) .
.SH NOTES
After a call to
.BR pthread_setaffinity_np (),
@@ -137,13 +144,6 @@ and
.BR sched_getaffinity (2)
system calls.
.PP
-In glibc 2.3.3 only,
-versions of these functions were provided that did not have a
-.I cpusetsize
-argument.
-Instead the CPU set size given to the underlying system calls was always
-.IR sizeof(cpu_set_t) .
-.PP
A new thread created by
.BR pthread_create (3)
inherits a copy of its creator's CPU affinity mask.
diff --git a/man3/pthread_setcancelstate.3 b/man3/pthread_setcancelstate.3
index e44ca91f5..685ed4fb7 100644
--- a/man3/pthread_setcancelstate.3
+++ b/man3/pthread_setcancelstate.3
@@ -122,10 +122,11 @@ T}
.ad
.sp 1
.hy
-.\" .SH VERSIONS
-.\" Available since glibc 2.0
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0
+POSIX.1-2001.
.SH NOTES
For details of what happens when a thread is canceled, see
.BR pthread_cancel (3).
diff --git a/man3/pthread_setconcurrency.3 b/man3/pthread_setconcurrency.3
index 8e44fd711..dcce679af 100644
--- a/man3/pthread_setconcurrency.3
+++ b/man3/pthread_setconcurrency.3
@@ -78,10 +78,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions are available since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH NOTES
The default concurrency level is 0.
.PP
diff --git a/man3/pthread_setname_np.3 b/man3/pthread_setname_np.3
index d5ce530b3..0e326bc5c 100644
--- a/man3/pthread_setname_np.3
+++ b/man3/pthread_setname_np.3
@@ -99,11 +99,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.12.
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.12.
.SH NOTES
.BR pthread_setname_np ()
internally writes to the thread-specific
diff --git a/man3/pthread_setschedparam.3 b/man3/pthread_setschedparam.3
index 59dbbe609..4de5d4cd7 100644
--- a/man3/pthread_setschedparam.3
+++ b/man3/pthread_setschedparam.3
@@ -136,10 +136,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" .SH VERSIONS
-.\" Available since glibc 2.0
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0
+POSIX.1-2001.
.SH NOTES
For a description of the permissions required to, and the effect of,
changing a thread's scheduling policy and priority,
diff --git a/man3/pthread_setschedprio.3 b/man3/pthread_setschedprio.3
index 650a33b6a..caa616825 100644
--- a/man3/pthread_setschedprio.3
+++ b/man3/pthread_setschedprio.3
@@ -77,10 +77,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.3.4.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.3.4.
+POSIX.1-2001.
.SH NOTES
For a description of the permissions required to, and the effect of,
changing a thread's scheduling priority,
diff --git a/man3/pthread_sigmask.3 b/man3/pthread_sigmask.3
index acbc620bf..f91b6d365 100644
--- a/man3/pthread_sigmask.3
+++ b/man3/pthread_sigmask.3
@@ -64,7 +64,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
A new thread inherits a copy of its creator's signal mask.
.PP
diff --git a/man3/pthread_sigqueue.3 b/man3/pthread_sigqueue.3
index 3777609f9..cd2c22926 100644
--- a/man3/pthread_sigqueue.3
+++ b/man3/pthread_sigqueue.3
@@ -89,12 +89,6 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-The
-.BR pthread_sigqueue ()
-function first appeared in glibc 2.11.
-.SH STANDARDS
-This function is a GNU extension.
-.SH NOTES
The glibc implementation of
.BR pthread_sigqueue ()
gives an error
@@ -104,6 +98,10 @@ used internally by the NPTL threading implementation.
See
.BR nptl (7)
for details.
+.SH STANDARDS
+GNU.
+.SH HISTORY
+glibc 2.11.
.SH SEE ALSO
.BR rt_tgsigqueueinfo (2),
.BR sigaction (2),
diff --git a/man3/pthread_spin_init.3 b/man3/pthread_spin_init.3
index 511820fee..450134f97 100644
--- a/man3/pthread_spin_init.3
+++ b/man3/pthread_spin_init.3
@@ -103,9 +103,10 @@ a new spin lock.
.TP
.B ENOMEM
Insufficient memory to initialize the spin lock.
-.SH VERSIONS
-These functions were added in glibc 2.2.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
POSIX.1-2001.
.PP
Support for process-shared spin locks is a POSIX option.
diff --git a/man3/pthread_spin_lock.3 b/man3/pthread_spin_lock.3
index 7a41f203d..37898861a 100644
--- a/man3/pthread_spin_lock.3
+++ b/man3/pthread_spin_lock.3
@@ -82,11 +82,12 @@ fails with the following errors:
.TP
.B EBUSY
The spin lock is currently locked by another thread.
-.SH VERSIONS
-These functions were added in glibc 2.2.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
POSIX.1-2001.
-.SH NOTES
+.SH CAVEATS
Applying any of the functions described on this page to
an uninitialized spin lock results in undefined behavior.
.PP
diff --git a/man3/pthread_testcancel.3 b/man3/pthread_testcancel.3
index 797d38719..b976e1c78 100644
--- a/man3/pthread_testcancel.3
+++ b/man3/pthread_testcancel.3
@@ -52,10 +52,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.\" SH VERSIONS
-.\" Available since glibc 2.0
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.0.
+POSIX.1-2001.
.SH EXAMPLES
See
.BR pthread_cleanup_push (3).
diff --git a/man3/pthread_tryjoin_np.3 b/man3/pthread_tryjoin_np.3
index d816f2e07..d2def80e1 100644
--- a/man3/pthread_tryjoin_np.3
+++ b/man3/pthread_tryjoin_np.3
@@ -110,11 +110,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.3.3.
.SH STANDARDS
-These functions are nonstandard GNU extensions;
+GNU;
hence the suffix "_np" (nonportable) in the names.
+.SH HISTORY
+glibc 2.3.3.
.SH BUGS
The
.BR pthread_timedjoin_np ()
diff --git a/man3/pthread_yield.3 b/man3/pthread_yield.3
index e68cb5325..ec57bdaef 100644
--- a/man3/pthread_yield.3
+++ b/man3/pthread_yield.3
@@ -53,17 +53,17 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-Since glibc 2.34, this function is marked as deprecated.
+On Linux, this function is implemented as a call to
+.BR sched_yield (2).
.SH STANDARDS
-This call is nonstandard, but present on several other systems.
+None.
+.SH HISTORY
+.\" BSD, Tru64, AIX, and Irix.
+Deprecated since glibc 2.34.
Use the standardized
.BR sched_yield (2)
instead.
-.\" e.g., the BSDs, Tru64, AIX, and Irix.
.SH NOTES
-On Linux, this function is implemented as a call to
-.BR sched_yield (2).
-.PP
.BR pthread_yield ()
is intended for use with real-time scheduling policies (i.e.,
.B SCHED_FIFO
diff --git a/man3/ptsname.3 b/man3/ptsname.3
index a4a4222b4..d42ef713f 100644
--- a/man3/ptsname.3
+++ b/man3/ptsname.3
@@ -110,16 +110,18 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR ptsname ()
-is provided since glibc 2.1.
+A version of
+.BR ptsname_r ()
+is documented on Tru64 and HP-UX,
+but on those implementations,
+\-1 is returned on error, with
+.I errno
+set to indicate the error.
+Avoid using this function in portable programs.
.SH STANDARDS
.TP
.BR ptsname ():
-POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR ptsname ()
-is part of the UNIX 98 pseudoterminal support (see
-.BR pts (4)).
+POSIX.1-2008.
.PP
.BR ptsname_r ()
is a Linux extension, that is proposed for inclusion
@@ -127,11 +129,15 @@ is a Linux extension, that is proposed for inclusion
.\" http://austingroupbugs.net/tag_view_page.php?tag_id=8
.\" http://austingroupbugs.net/view.php?id=508
in the next major revision of POSIX.1 (Issue 8).
-A version of this function is documented on Tru64 and HP-UX, but
-on those implementations, \-1 is returned on error, with
-.I errno
-set to indicate the error.
-Avoid using this function in portable programs.
+.SH HISTORY
+.TP
+.BR ptsname ():
+POSIX.1-2001.
+glibc 2.1.
+.PP
+.BR ptsname ()
+is part of the UNIX 98 pseudoterminal support (see
+.BR pts (4)).
.SH SEE ALSO
.BR grantpt (3),
.BR posix_openpt (3),
diff --git a/man3/putenv.3 b/man3/putenv.3
index ed13b693b..59c2ff1cf 100644
--- a/man3/putenv.3
+++ b/man3/putenv.3
@@ -81,8 +81,10 @@ T} Thread safety MT-Unsafe const:env
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.PP
The
.BR putenv ()
function is not required to be reentrant, and the
diff --git a/man3/putgrent.3 b/man3/putgrent.3
index 9f01b19d6..2373de1e6 100644
--- a/man3/putgrent.3
+++ b/man3/putgrent.3
@@ -62,7 +62,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-This function is a GNU extension.
+GNU.
.SH SEE ALSO
.BR fgetgrent (3),
.BR getgrent (3),
diff --git a/man3/putpwent.3 b/man3/putpwent.3
index 615747b3f..7683c5319 100644
--- a/man3/putpwent.3
+++ b/man3/putpwent.3
@@ -86,6 +86,8 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
SVr4.
.SH SEE ALSO
.BR endpwent (3),
diff --git a/man3/puts.3 b/man3/puts.3
index 10a7f0cb7..34e3a6108 100644
--- a/man3/puts.3
+++ b/man3/puts.3
@@ -103,7 +103,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, C99.
.SH BUGS
It is not advisable to mix calls to output functions from the
.I stdio
diff --git a/man3/putwchar.3 b/man3/putwchar.3
index ffc3e847e..f6c7fd750 100644
--- a/man3/putwchar.3
+++ b/man3/putwchar.3
@@ -74,7 +74,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR putwchar ()
diff --git a/man3/qecvt.3 b/man3/qecvt.3
index 7251bd91a..78bcc88c3 100644
--- a/man3/qecvt.3
+++ b/man3/qecvt.3
@@ -93,12 +93,11 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-SVr4.
-Not seen in most common UNIX implementations,
-but occurs in SunOS.
+None.
+.SH HISTORY
+SVr4, SunOS, GNU.
.\" Not supported by libc4 and libc5.
-Supported by glibc.
-.SH NOTES
+.PP
These functions are obsolete.
Instead,
.BR snprintf (3)
diff --git a/man3/qsort.3 b/man3/qsort.3
index e652bcd1f..0801a7eb0 100644
--- a/man3/qsort.3
+++ b/man3/qsort.3
@@ -99,12 +99,17 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR qsort_r ()
-was added in glibc 2.8.
.SH STANDARDS
-.BR qsort ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+.TP
+.BR qsort ()
+C11, POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR qsort ()
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.TP
+.BR qsort_r ()
+glibc 2.8.
.SH NOTES
To compare C strings, the comparison function can call
.BR strcmp (3),
diff --git a/man3/raise.3 b/man3/raise.3
index 82903c118..89afd746e 100644
--- a/man3/raise.3
+++ b/man3/raise.3
@@ -63,8 +63,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.SH NOTES
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
+.PP
Since glibc 2.3.3,
.BR raise ()
is implemented by calling
diff --git a/man3/rand.3 b/man3/rand.3
index 2692bc235..e6cd1fa25 100644
--- a/man3/rand.3
+++ b/man3/rand.3
@@ -133,19 +133,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-The functions
-.BR rand ()
-and
-.BR srand ()
-conform to SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
-The function
-.BR rand_r ()
-is from POSIX.1-2001.
-POSIX.1-2008 marks
-.BR rand_r ()
-as obsolete.
-.SH NOTES
+.SH VERSIONS
The versions of
.BR rand ()
and
@@ -164,6 +152,25 @@ when good randomness is needed.
(Use
.BR random (3)
instead.)
+.SH STANDARDS
+.TP
+.BR rand ()
+.TQ
+.BR srand ()
+C11, POSIX.1-2008.
+.TP
+.BR rand_r ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR rand ()
+.TQ
+.BR srand ()
+SVr4, 4.3BSD, C89, POSIX.1-2001.
+.TP
+.BR rand_r ()
+POSIX.1-2001.
+Obsolete in POSIX.1-2008.
.SH EXAMPLES
POSIX.1-2001 gives the following example of an implementation of
.BR rand ()
diff --git a/man3/random.3 b/man3/random.3
index 7bc300d7b..94f146a13 100644
--- a/man3/random.3
+++ b/man3/random.3
@@ -156,16 +156,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
.SH NOTES
-The
-.BR random ()
-function should not be used in multithreaded programs
-where reproducible behavior is required.
-Use
-.BR random_r (3)
-for that purpose.
-.PP
Random-number generation is a complex topic.
.I Numerical Recipes in C: The Art of Scientific Computing
(William H.\& Press, Brian P.\& Flannery, Saul A.\& Teukolsky,
@@ -178,6 +172,14 @@ in depth, see Chapter 3 (Random Numbers) in Donald E.\& Knuth's
.IR "The Art of Computer Programming" ,
volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts:
Addison-Wesley Publishing Company, 1981.
+.SH CAVEATS
+The
+.BR random ()
+function should not be used in multithreaded programs
+where reproducible behavior is required.
+Use
+.BR random_r (3)
+for that purpose.
.SH BUGS
According to POSIX,
.BR initstate ()
diff --git a/man3/random_r.3 b/man3/random_r.3
index acbff1cd4..b40c67717 100644
--- a/man3/random_r.3
+++ b/man3/random_r.3
@@ -159,7 +159,7 @@ T} Thread safety MT-Safe race:buf
.ad
.sp 1
.SH STANDARDS
-These functions are nonstandard glibc extensions.
+GNU.
.\" These functions appear to be on Tru64, but don't seem to be on
.\" Solaris, HP-UX, or FreeBSD.
.SH BUGS
diff --git a/man3/rcmd.3 b/man3/rcmd.3
index 35168c4c3..c907ec74e 100644
--- a/man3/rcmd.3
+++ b/man3/rcmd.3
@@ -271,20 +271,20 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-The functions
-.BR iruserok_af (),
-.BR rcmd_af (),
-.BR rresvport_af (),
-and
-.BR ruserok_af ()
-functions are provided since glibc 2.2.
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs, Solaris, and many other systems.
-These
-functions appeared in
-4.2BSD.
+BSD.
+.SH HISTORY
+.TP
+.BR iruserok_af ()
+.TQ
+.BR rcmd_af ()
+.TQ
+.BR rresvport_af ()
+.TQ
+.BR ruserok_af ()
+glibc 2.2.
+.PP
+Solaris, 4.2BSD.
The "_af" variants are more recent additions,
and are not present on as wide a range of systems.
.SH BUGS
diff --git a/man3/re_comp.3 b/man3/re_comp.3
index 223bc5434..0ec5e1e04 100644
--- a/man3/re_comp.3
+++ b/man3/re_comp.3
@@ -65,8 +65,10 @@ T} Thread safety MT-Unsafe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD.
-.SH NOTES
+.PP
These functions are obsolete; the functions documented in
.BR regcomp (3)
should be used instead.
diff --git a/man3/readdir.3 b/man3/readdir.3
index 54f1d39c9..cdb03ab33 100644
--- a/man3/readdir.3
+++ b/man3/readdir.3
@@ -209,17 +209,7 @@ It is expected that a future version of POSIX.1
will require that
.BR readdir ()
be thread-safe when concurrently employed on different directory streams.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.SH NOTES
-A directory stream is opened using
-.BR opendir (3).
-.PP
-The order in which filenames are read by successive calls to
-.BR readdir ()
-depends on the filesystem implementation;
-it is unlikely that the names will be sorted in any fashion.
-.PP
+.SH VERSIONS
Only the fields
.I d_name
and (as an XSI extension)
@@ -290,6 +280,18 @@ In such cases, the
field will contain a value that exceeds the size of the glibc
.I dirent
structure shown above.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.SH NOTES
+A directory stream is opened using
+.BR opendir (3).
+.PP
+The order in which filenames are read by successive calls to
+.BR readdir ()
+depends on the filesystem implementation;
+it is unlikely that the names will be sorted in any fashion.
.SH SEE ALSO
.BR getdents (2),
.BR read (2),
diff --git a/man3/readdir_r.3 b/man3/readdir_r.3
index cb4cea710..9b34f991b 100644
--- a/man3/readdir_r.3
+++ b/man3/readdir_r.3
@@ -141,6 +141,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR readdir (3)
diff --git a/man3/realpath.3 b/man3/realpath.3
index 0cb9e54fa..f36d81fd1 100644
--- a/man3/realpath.3
+++ b/man3/realpath.3
@@ -69,10 +69,6 @@ The caller should deallocate this buffer using
.\" Even if we use resolved_path == NULL, then realpath() will still
.\" return ENAMETOOLONG if the resolved pathname would exceed PATH_MAX
.\" bytes -- MTK, Dec 04
-.\" .SH HISTORY
-.\" The
-.\" .BR realpath ()
-.\" function first appeared in 4.4BSD, contributed by Jan-Simon Pendry.
.SH RETURN VALUE
If there is no error,
.BR realpath ()
@@ -137,14 +133,28 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH VERSIONS
+.SS GNU extensions
+If the call fails with either
+.B EACCES
+or
+.B ENOENT
+and
+.I resolved_path
+is not NULL, then the prefix of
+.I path
+that is not readable or does not exist is returned in
+.IR resolved_path .
.SH STANDARDS
-4.4BSD, POSIX.1-2001.
+POSIX.1-2008.
+.SH HISTORY
+4.4BSD, POSIX.1-2001, Solaris.
.PP
POSIX.1-2001 says that the behavior if
.I resolved_path
is NULL is implementation-defined.
POSIX.1-2008 specifies the behavior described in this page.
-.SH NOTES
+.PP
In 4.4BSD and Solaris, the limit on the pathname length is
.B MAXPATHLEN
(found in \fI<sys/param.h>\fP).
@@ -184,17 +194,6 @@ A typical source fragment would be
.\" .BR realpath ()
.\" is given in \fI<unistd.h>\fP in libc4 and libc5,
.\" but in \fI<stdlib.h>\fP everywhere else.
-.SS GNU extensions
-If the call fails with either
-.B EACCES
-or
-.B ENOENT
-and
-.I resolved_path
-is not NULL, then the prefix of
-.I path
-that is not readable or does not exist is returned in
-.IR resolved_path .
.SH BUGS
The POSIX.1-2001 standard version of this function is broken by design,
since it is impossible to determine a suitable size for the output buffer,
diff --git a/man3/regex.3 b/man3/regex.3
index 73cd45956..e8fed5147 100644
--- a/man3/regex.3
+++ b/man3/regex.3
@@ -326,7 +326,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
.EX
#include <stdint.h>
diff --git a/man3/remainder.3 b/man3/remainder.3
index 19ca62544..ab04ae984 100644
--- a/man3/remainder.3
+++ b/man3/remainder.3
@@ -26,15 +26,14 @@ Math library
.nf
.B #include <math.h>
.PP
-/* The C99 versions */
.BI "double remainder(double " x ", double " y );
.BI "float remainderf(float " x ", float " y );
.BI "long double remainderl(long double " x ", long double " y );
.PP
/* Obsolete synonyms */
-.BI "double drem(double " x ", double " y );
-.BI "float dremf(float " x ", float " y );
-.BI "long double dreml(long double " x ", long double " y );
+.BI "[[deprecated]] double drem(double " x ", double " y );
+.BI "[[deprecated]] float dremf(float " x ", float " y );
+.BI "[[deprecated]] long double dreml(long double " x ", long double " y );
.fi
.PP
.RS -4
@@ -175,28 +174,37 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
.\" IEC 60559.
-The functions
-.BR remainder (),
-.BR remainderf (),
-and
+.TP
+.BR remainder ()
+.TQ
+.BR remainderf ()
+.TQ
.BR remainderl ()
-are specified in C99, POSIX.1-2001, and POSIX.1-2008.
-.PP
-The function
+C11, POSIX.1-2008.
+.TP
.BR drem ()
-is from 4.3BSD.
-The
-.I float
-and
-.I "long double"
-variants
+.TQ
.BR dremf ()
-and
+.TQ
.BR dreml ()
-exist on some systems, such as Tru64 and glibc2.
-Avoid the use of these functions in favor of
+None.
+.SH HISTORY
+.\" IEC 60559.
+.TP
.BR remainder ()
-etc.
+.TQ
+.BR remainderf ()
+.TQ
+.BR remainderl ()
+C99, POSIX.1-2001.
+.TP
+.BR drem ()
+4.3BSD.
+.TP
+.BR dremf ()
+.TQ
+.BR dreml ()
+Tru64, glibc2.
.SH BUGS
Before glibc 2.15,
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6779
diff --git a/man3/remove.3 b/man3/remove.3
index a679b8adb..125eb9e55 100644
--- a/man3/remove.3
+++ b/man3/remove.3
@@ -71,7 +71,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, 4.3BSD.
.\" .SH NOTES
.\" Under libc4 and libc5,
.\" .BR remove ()
diff --git a/man3/remquo.3 b/man3/remquo.3
index 8c764c9e0..3b6b803b5 100644
--- a/man3/remquo.3
+++ b/man3/remquo.3
@@ -130,10 +130,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR fmod (3),
.BR logb (3),
diff --git a/man3/resolver.3 b/man3/resolver.3
index b19b89e54..e6a3f318e 100644
--- a/man3/resolver.3
+++ b/man3/resolver.3
@@ -498,6 +498,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD.
.SH SEE ALSO
.BR gethostbyname (3),
diff --git a/man3/rewinddir.3 b/man3/rewinddir.3
index a12541453..3b7ff779e 100644
--- a/man3/rewinddir.3
+++ b/man3/rewinddir.3
@@ -51,7 +51,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR closedir (3),
.BR opendir (3),
diff --git a/man3/rexec.3 b/man3/rexec.3
index b1f219b57..ce0a4cde0 100644
--- a/man3/rexec.3
+++ b/man3/rexec.3
@@ -141,19 +141,15 @@ T} Thread safety MT-Unsafe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR rexec_af ()
-function was added in glibc 2.2.
.SH STANDARDS
-These functions are not in POSIX.1.
-The
+None.
+.SH HISTORY
+.TP
.BR rexec ()
-function first appeared in
-4.2BSD, and is present on the BSDs, Solaris, and many other systems.
-The
+4.2BSD, BSD, Solaris.
+.TP
.BR rexec_af ()
-function is more recent, and less widespread.
+glibc 2.2.
.SH BUGS
The
.BR rexec ()
diff --git a/man3/rint.3 b/man3/rint.3
index ac24c4550..a21212288 100644
--- a/man3/rint.3
+++ b/man3/rint.3
@@ -115,7 +115,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
SUSv2 and POSIX.1-2001 contain text about overflow (which might set
.I errno
diff --git a/man3/round.3 b/man3/round.3
index ebfcc2434..34c0efbf6 100644
--- a/man3/round.3
+++ b/man3/round.3
@@ -76,10 +76,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH NOTES
POSIX.1-2001 contains text about overflow (which might set
.I errno
diff --git a/man3/roundup.3 b/man3/roundup.3
index 92c468703..55c59f9f8 100644
--- a/man3/roundup.3
+++ b/man3/roundup.3
@@ -33,7 +33,7 @@ See CAVEATS.
.SH RETURN VALUE
This macro returns the rounded value.
.SH STANDARDS
-This nonstandard macro is present in glibc and some BSDs.
+None.
.SH CAVEATS
The arguments may be evaluated more than once.
.PP
diff --git a/man3/rpmatch.3 b/man3/rpmatch.3
index 637cd7916..5f5246bb3 100644
--- a/man3/rpmatch.3
+++ b/man3/rpmatch.3
@@ -123,9 +123,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-.BR rpmatch ()
-is not required by any standard,
-but available under the GNU C library, FreeBSD, and AIX.
+None.
+.SH HISTORY
+GNU, FreeBSD, AIX.
.SH BUGS
The
.BR YESEXPR " and " NOEXPR
diff --git a/man3/rtnetlink.3 b/man3/rtnetlink.3
index 460b2b5a5..8050d31d2 100644
--- a/man3/rtnetlink.3
+++ b/man3/rtnetlink.3
@@ -80,7 +80,7 @@ returns the amount of space which will be needed in a message with
.I len
bytes of data.
.SH STANDARDS
-These macros are nonstandard Linux extensions.
+Linux.
.SH BUGS
This manual page is incomplete.
.SH EXAMPLES
diff --git a/man3/scalb.3 b/man3/scalb.3
index a25ca078f..22cab303a 100644
--- a/man3/scalb.3
+++ b/man3/scalb.3
@@ -172,26 +172,19 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
+.TP
.BR scalb ()
-is specified in POSIX.1-2001, but marked obsolescent.
-POSIX.1-2008 removes the specification of
-.BR scalb (),
+4.3BSD.
+Obsolescent in POSIX.1-2001;
+Removed in POSIX.1-2008,
recommending the use of
.BR scalbln (3),
.BR scalblnf (3),
or
.BR scalblnl (3)
instead.
-The
-.BR scalb ()
-function is from 4.3BSD.
-.PP
-.BR scalbf ()
-and
-.BR scalbl ()
-are unstandardized;
-.BR scalbf ()
-is nevertheless present on several other systems
.\" Looking at header files: scalbf() is present on the
.\" BSDs, Tru64, HP-UX 11, Irix 6.5; scalbl() is on HP-UX 11 and Tru64.
.SH BUGS
diff --git a/man3/scalbln.3 b/man3/scalbln.3
index 4a6acc58b..98fec74da 100644
--- a/man3/scalbln.3
+++ b/man3/scalbln.3
@@ -145,11 +145,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
+.SH HISTORY
These functions differ from the obsolete functions described in
.BR scalb (3)
in the type of their second argument.
@@ -158,7 +159,7 @@ of an integral type, while those in
.BR scalb (3)
have a second argument of type
.IR double .
-.PP
+.SH NOTES
If
.B FLT_RADIX
equals 2 (which is usual), then
diff --git a/man3/scandir.3 b/man3/scandir.3
index 83e896442..27359c923 100644
--- a/man3/scandir.3
+++ b/man3/scandir.3
@@ -202,21 +202,29 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
+.BR alphasort ()
+.TQ
+.BR scandir ()
+POSIX.1-2008.
+.TP
.BR versionsort ()
-was added in glibc 2.1.
-.PP
+.TQ
.BR scandirat ()
-was added in glibc 2.15.
-.SH STANDARDS
-.BR alphasort (),
-.BR scandir ():
+GNU.
+.SH HISTORY
+.TP
+.BR alphasort ()
+.TQ
+.BR scandir ()
4.3BSD, POSIX.1-2008.
-.PP
+.TP
.BR versionsort ()
-and
+glibc 2.1.
+.TP
.BR scandirat ()
-are GNU extensions.
+glibc 2.15.
.\" .LP
.\" The functions
.\" .BR scandir ()
diff --git a/man3/scanf.3 b/man3/scanf.3
index 249efab57..78255e882 100644
--- a/man3/scanf.3
+++ b/man3/scanf.3
@@ -136,7 +136,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-These functions conform to C99 and POSIX.1-2001.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR fgets (3),
.BR getline (3),
diff --git a/man3/sched_getcpu.3 b/man3/sched_getcpu.3
index 3bb102935..f116b2dfb 100644
--- a/man3/sched_getcpu.3
+++ b/man3/sched_getcpu.3
@@ -63,11 +63,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-This function is available since glibc 2.6.
.SH STANDARDS
-.BR sched_getcpu ()
-is glibc-specific.
+GNU.
+.SH HISTORY
+glibc 2.6.
.SH NOTES
The call
.PP
diff --git a/man3/seekdir.3 b/man3/seekdir.3
index befc3e6e1..5b5b3e988 100644
--- a/man3/seekdir.3
+++ b/man3/seekdir.3
@@ -67,8 +67,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
+.SH CAVEATS
Up to glibc 2.1.1, the type of the
.I loc
argument was
diff --git a/man3/sem_close.3 b/man3/sem_close.3
index 99c49a552..a7b5a604d 100644
--- a/man3/sem_close.3
+++ b/man3/sem_close.3
@@ -50,7 +50,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
All open named semaphores are automatically closed on process
termination, or upon
diff --git a/man3/sem_destroy.3 b/man3/sem_destroy.3
index 33e9a1a6f..a14f76a2c 100644
--- a/man3/sem_destroy.3
+++ b/man3/sem_destroy.3
@@ -62,7 +62,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
An unnamed semaphore should be destroyed with
.BR sem_destroy ()
diff --git a/man3/sem_getvalue.3 b/man3/sem_getvalue.3
index 2fba639f6..57161cd15 100644
--- a/man3/sem_getvalue.3
+++ b/man3/sem_getvalue.3
@@ -64,7 +64,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The value of the semaphore may already have changed by the time
.BR sem_getvalue ()
diff --git a/man3/sem_init.3 b/man3/sem_init.3
index 0a5157cc5..e1dcc586e 100644
--- a/man3/sem_init.3
+++ b/man3/sem_init.3
@@ -91,8 +91,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
POSIX.1-2001.
-.SH NOTES
+.PP
Bizarrely, POSIX.1-2001 does not specify the value that should
be returned by a successful call to
.BR sem_init ().
diff --git a/man3/sem_open.3 b/man3/sem_open.3
index 9cc33926b..b8f4ada8c 100644
--- a/man3/sem_open.3
+++ b/man3/sem_open.3
@@ -166,7 +166,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR sem_close (3),
.BR sem_getvalue (3),
diff --git a/man3/sem_post.3 b/man3/sem_post.3
index 26fca7bff..9b6b026b9 100644
--- a/man3/sem_post.3
+++ b/man3/sem_post.3
@@ -57,6 +57,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
POSIX.1-2001.
.SH NOTES
.BR sem_post ()
diff --git a/man3/sem_unlink.3 b/man3/sem_unlink.3
index e694fdaf5..6ccb17c0e 100644
--- a/man3/sem_unlink.3
+++ b/man3/sem_unlink.3
@@ -58,7 +58,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR sem_getvalue (3),
.BR sem_open (3),
diff --git a/man3/sem_wait.3 b/man3/sem_wait.3
index 788d687a7..7b61f6dbe 100644
--- a/man3/sem_wait.3
+++ b/man3/sem_wait.3
@@ -131,7 +131,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The (somewhat trivial) program shown below operates on an
unnamed semaphore.
diff --git a/man3/setaliasent.3 b/man3/setaliasent.3
index 6586e5387..0b67451a4 100644
--- a/man3/setaliasent.3
+++ b/man3/setaliasent.3
@@ -127,7 +127,8 @@ T} Thread safety MT-Unsafe
.ad
.sp 1
.SH STANDARDS
-These routines are glibc-specific.
+GNU.
+.SH HISTORY
The NeXT system has similar routines:
.PP
.in +4n
diff --git a/man3/setbuf.3 b/man3/setbuf.3
index b4ba7d8f1..7ee7c56a0 100644
--- a/man3/setbuf.3
+++ b/man3/setbuf.3
@@ -160,12 +160,18 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The
+.TP
+.BR setbuf ()
+.TQ
+.BR setvbuf ()
+C11, POSIX.1-2008.
+.SH HISTORY
+.TP
.BR setbuf ()
-and
+.TQ
.BR setvbuf ()
-functions conform to C89 and C99.
-.SH NOTES
+C89, POSIX.1-2001.
+.SH CAVEATS
POSIX notes
.\" https://www.austingroupbugs.net/view.php?id=397#c799
.\" 0000397: setbuf and errno
diff --git a/man3/setenv.3 b/man3/setenv.3
index d2619fd3b..86b7860f1 100644
--- a/man3/setenv.3
+++ b/man3/setenv.3
@@ -120,13 +120,9 @@ T} Thread safety MT-Unsafe const:env
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
-POSIX.1 does not require
-.BR setenv ()
-or
-.BR unsetenv ()
-to be reentrant.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
.PP
Prior to glibc 2.2.2,
.BR unsetenv ()
@@ -135,6 +131,12 @@ as returning
.IR void ;
more recent glibc versions follow the
POSIX.1-compliant prototype shown in the SYNOPSIS.
+.SH CAVEATS
+POSIX.1 does not require
+.BR setenv ()
+or
+.BR unsetenv ()
+to be reentrant.
.SH BUGS
POSIX.1 specifies that if
.I name
diff --git a/man3/setjmp.3 b/man3/setjmp.3
index a8516590a..138db4ca2 100644
--- a/man3/setjmp.3
+++ b/man3/setjmp.3
@@ -141,14 +141,28 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.BR setjmp (),
-.BR longjmp ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+.TP
+.BR setjmp ()
+.TQ
+.BR longjmp ()
+C11, POSIX.1-2008.
+.TP
+.BR sigsetjmp ()
+.TQ
+.BR siglongjmp ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR setjmp ()
+.TQ
+.BR longjmp ()
+POSIX.1-2001, C89.
+.TP
+.BR sigsetjmp ()
+.TQ
+.BR siglongjmp ()
+POSIX.1-2001.
.PP
-.BR sigsetjmp (),
-.BR siglongjmp ():
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
POSIX does not specify whether
.BR setjmp ()
will save the signal mask
@@ -188,7 +202,7 @@ with calls to
with a nonzero
.I savesigs
argument.
-.PP
+.SH NOTES
.BR setjmp ()
and
.BR longjmp ()
@@ -203,7 +217,7 @@ if you want to portably save and restore signal masks, use
and
.BR siglongjmp ().
See also the discussion of program readability below.
-.PP
+.SH CAVEATS
The compiler may optimize variables into registers, and
.BR longjmp ()
may restore the values of other registers in addition to the
@@ -259,7 +273,7 @@ calls may not even be in the same source code module.
In summary, nonlocal gotos can make programs harder to understand
and maintain, and an alternative should be used if possible.
.\"
-.SS Caveats
+.SS Undefined Behavior
If the function which called
.BR setjmp ()
returns before
diff --git a/man3/setlocale.3 b/man3/setlocale.3
index 1604ad883..cf44d5e85 100644
--- a/man3/setlocale.3
+++ b/man3/setlocale.3
@@ -199,19 +199,49 @@ T} Thread safety MT-Unsafe const:locale env
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
-The C standards specify only the categories
-.BR LC_ALL ,
-.BR LC_COLLATE ,
-.BR LC_CTYPE ,
-.BR LC_MONETARY ,
-.BR LC_NUMERIC ,
-and
-.BR LC_TIME .
-POSIX.1 adds
-.BR LC_MESSAGES .
-The remaining categories are GNU extensions.
+C11, POSIX.1-2008.
+.SS Categories
+.TP
+.B LC_ALL
+.TQ
+.B LC_COLLATE
+.TQ
+.B LC_CTYPE
+.TQ
+.B LC_MONETARY
+.TQ
+.B LC_NUMERIC
+.TQ
+.B LC_TIME
+C11, POSIX.1-2008.
+.TP
+.BR LC_MESSAGES
+POSIX.1-2008.
+.TP
+Others:
+GNU.
+.SH HISTORY
+POSIX.1-2001, C89.
+.SS Categories
+.TP
+.B LC_ALL
+.TQ
+.B LC_COLLATE
+.TQ
+.B LC_CTYPE
+.TQ
+.B LC_MONETARY
+.TQ
+.B LC_NUMERIC
+.TQ
+.B LC_TIME
+C89, POSIX.1-2001.
+.TP
+.BR LC_MESSAGES
+POSIX.1-2001.
+.TP
+Others:
+GNU.
.SH SEE ALSO
.BR locale (1),
.BR localedef (1),
diff --git a/man3/setlogmask.3 b/man3/setlogmask.3
index 01c8e75e4..c5030e7e0 100644
--- a/man3/setlogmask.3
+++ b/man3/setlogmask.3
@@ -74,7 +74,9 @@ T} Thread safety MT-Unsafe race:LogMask
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.\" Note that the description in POSIX.1-2001 is flawed.
.PP
.BR LOG_UPTO ()
diff --git a/man3/setnetgrent.3 b/man3/setnetgrent.3
index 7e324b623..38b492099 100644
--- a/man3/setnetgrent.3
+++ b/man3/setnetgrent.3
@@ -144,8 +144,13 @@ or
.BR endnetgrent ()
are used in parallel in different threads of a program,
then data races could occur.
+.SH VERSIONS
+In the BSD implementation,
+.BR setnetgrent ()
+returns void.
.SH STANDARDS
-These functions are not in POSIX.1, but
+None.
+.SH HISTORY
.BR setnetgrent (),
.BR endnetgrent (),
.BR getnetgrent (),
@@ -155,10 +160,6 @@ are available on most UNIX systems.
.BR getnetgrent_r ()
is not widely available on other systems.
.\" getnetgrent_r() is on Solaris 8 and AIX 5.1, but not the BSDs.
-.SH NOTES
-In the BSD implementation,
-.BR setnetgrent ()
-returns void.
.SH SEE ALSO
.BR sethostent (3),
.BR setprotoent (3),
diff --git a/man3/shm_open.3 b/man3/shm_open.3
index e189f7c55..c888c969c 100644
--- a/man3/shm_open.3
+++ b/man3/shm_open.3
@@ -239,18 +239,6 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH VERSIONS
-These functions are provided in glibc 2.2 and later.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.PP
-POSIX.1-2001 says that the group ownership of a newly created shared
-memory object is set to either the calling process's effective group ID
-or "a system default group ID".
-POSIX.1-2008 says that the group ownership
-may be set to either the calling process's effective group ID
-or, if the object is visible in the filesystem,
-the group ID of the parent directory.
-.SH NOTES
POSIX leaves the behavior of the combination of
.B O_RDONLY
and
@@ -264,6 +252,19 @@ of a dedicated
.BR tmpfs (5)
filesystem that is normally mounted under
.IR /dev/shm .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
+.PP
+POSIX.1-2001 says that the group ownership of a newly created shared
+memory object is set to either the calling process's effective group ID
+or "a system default group ID".
+POSIX.1-2008 says that the group ownership
+may be set to either the calling process's effective group ID
+or, if the object is visible in the filesystem,
+the group ID of the parent directory.
.SH EXAMPLES
The programs below employ POSIX shared memory and POSIX unnamed semaphores
to exchange a piece of data.
diff --git a/man3/siginterrupt.3 b/man3/siginterrupt.3
index e849f6e65..1712bb280 100644
--- a/man3/siginterrupt.3
+++ b/man3/siginterrupt.3
@@ -19,7 +19,7 @@ Standard C library
.nf
.B #include <signal.h>
.PP
-.BI "int siginterrupt(int " sig ", int " flag );
+.BI "[[deprecated]] int siginterrupt(int " sig ", int " flag );
.fi
.PP
.RS -4
@@ -86,10 +86,11 @@ T}
.ad
.sp 1
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
4.3BSD, POSIX.1-2001.
-POSIX.1-2008 marks
-.BR siginterrupt ()
-as obsolete, recommending the use of
+Obsolete in POSIX.1-2008,
+recommending the use of
.BR sigaction (2)
with the
.B SA_RESTART
diff --git a/man3/signbit.3 b/man3/signbit.3
index 281e31ab4..4135da199 100644
--- a/man3/signbit.3
+++ b/man3/signbit.3
@@ -72,7 +72,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
+.PP
This function is defined in IEC 559 (and the appendix with
recommended functions in IEEE 754/IEEE 854).
.SH SEE ALSO
diff --git a/man3/significand.3 b/man3/significand.3
index 350c311e9..164869851 100644
--- a/man3/significand.3
+++ b/man3/significand.3
@@ -67,11 +67,14 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-These functions are nonstandard; the
-.I double
-version is available on a number of other systems.
-.\" .SH HISTORY
-.\" This function came from BSD.
+None.
+.TP
+.BR significand ()
+BSD.
+.SH HISTORY
+.TP
+.BR significand ()
+BSD.
.SH SEE ALSO
.BR ilogb (3),
.BR scalb (3)
diff --git a/man3/sigpause.3 b/man3/sigpause.3
index 78b0608b2..bbe743462 100644
--- a/man3/sigpause.3
+++ b/man3/sigpause.3
@@ -13,9 +13,9 @@ Standard C library
.nf
.B #include <signal.h>
.PP
-.BI "int sigpause(int " sigmask "); /* BSD (but see NOTES) */"
+.BI "[[deprecated]] int sigpause(int " sigmask "); /* BSD (but see NOTES) */"
.PP
-.BI "int sigpause(int " sig "); /* System V / UNIX 95 */"
+.BI "[[deprecated]] int sigpause(int " sig "); /* POSIX.1 / SysV / UNIX 95 */"
.fi
.SH DESCRIPTION
Don't use this function.
@@ -62,29 +62,7 @@ T} Thread safety MT-Safe
.\" glibc manual says /!linux!bsd indicate the preceding marker only applies
.\" when the underlying kernel is neither Linux nor a BSD kernel.
.\" So, it is safe in Linux kernel.
-.SH STANDARDS
-The System V version of
-.BR sigpause ()
-is standardized in POSIX.1-2001.
-It is also specified in POSIX.1-2008, where it is marked obsolete.
-.SH NOTES
-.SS History
-The classical BSD version of this function appeared in 4.2BSD.
-It sets the process's signal mask to
-.IR sigmask .
-UNIX 95 standardized the incompatible System V version of
-this function, which removes only the specified signal
-.I sig
-from the process's signal mask.
-.\" __xpg_sigpause: UNIX 95, spec 1170, SVID, SVr4, XPG
-The unfortunate situation with two incompatible functions with the
-same name was solved by the
-.BR \%sigsuspend (2)
-function, that takes a
-.I "sigset_t\ *"
-argument (instead of an
-.IR int ).
-.SS Linux notes
+.SH VERSIONS
On Linux, this routine is a system call only on the Sparc (sparc64)
architecture.
.PP
@@ -119,6 +97,27 @@ should be amended to use
.\" For the BSD version, one usually uses a zero
.\" .I sigmask
.\" to indicate that no signals are to be blocked.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+Obsoleted in POSIX.1-2008.
+.PP
+The classical BSD version of this function appeared in 4.2BSD.
+It sets the process's signal mask to
+.IR sigmask .
+UNIX 95 standardized the incompatible System V version of
+this function, which removes only the specified signal
+.I sig
+from the process's signal mask.
+.\" __xpg_sigpause: UNIX 95, spec 1170, SVID, SVr4, XPG
+The unfortunate situation with two incompatible functions with the
+same name was solved by the
+.BR \%sigsuspend (2)
+function, that takes a
+.I "sigset_t\ *"
+argument (instead of an
+.IR int ).
.SH SEE ALSO
.BR kill (2),
.BR sigaction (2),
diff --git a/man3/sigqueue.3 b/man3/sigqueue.3
index cfb4bc46d..c2bff7aa3 100644
--- a/man3/sigqueue.3
+++ b/man3/sigqueue.3
@@ -115,20 +115,6 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH VERSIONS
-.BR sigqueue ()
-and the underlying
-.BR rt_sigqueueinfo (2)
-system call first appeared in Linux 2.2.
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-If this function results in the sending of a signal to the process
-that invoked it, and that signal was not blocked by the calling thread,
-and no other threads were willing to handle this signal (either by
-having it unblocked, or by waiting for it using
-.BR sigwait (3)),
-then at least some signal must be delivered to this thread before this
-function returns.
.SS C library/kernel differences
On Linux,
.BR sigqueue ()
@@ -156,6 +142,19 @@ uinfo.si_uid = getuid(); /* Real UID of sender */
uinfo.si_value = val; /* Argument supplied to sigqueue() */
.EE
.in
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+Linux 2.2.
+POSIX.1-2001.
+.SH NOTES
+If this function results in the sending of a signal to the process
+that invoked it, and that signal was not blocked by the calling thread,
+and no other threads were willing to handle this signal (either by
+having it unblocked, or by waiting for it using
+.BR sigwait (3)),
+then at least some signal must be delivered to this thread before this
+function returns.
.SH SEE ALSO
.BR kill (2),
.BR rt_sigqueueinfo (2),
diff --git a/man3/sigset.3 b/man3/sigset.3
index c1eea871b..9e6637ef9 100644
--- a/man3/sigset.3
+++ b/man3/sigset.3
@@ -15,11 +15,11 @@ Standard C library
.PP
.B typedef void (*sighandler_t)(int);
.PP
-.BI "sighandler_t sigset(int " sig ", sighandler_t " disp );
+.BI "[[deprecated]] sighandler_t sigset(int " sig ", sighandler_t " disp );
.PP
-.BI "int sighold(int " sig );
-.BI "int sigrelse(int " sig );
-.BI "int sigignore(int " sig );
+.BI "[[deprecated]] int sighold(int " sig );
+.BI "[[deprecated]] int sigrelse(int " sig );
+.BI "[[deprecated]] int sigignore(int " sig );
.fi
.PP
.RS -4
@@ -171,15 +171,16 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-SVr4, POSIX.1-2001, POSIX.1-2008.
-These functions are obsolete: do not use them in new programs.
-POSIX.1-2008 marks
-.BR sighold (),
-.BR sigignore (),
-.BR sigpause (3),
-.BR sigrelse (),
-and
-.BR sigset ()
+POSIX.1-2008.
+.TP
+.I sighandler_t
+GNU.
+POSIX.1 uses the same type but without a
+.IR typedef .
+.SH HISTORY
+glibc 2.1.
+SVr4, POSIX.1-2001.
+POSIX.1-2008 marks these functions
as obsolete, recommending the use of
.BR sigaction (2),
.BR sigprocmask (2),
@@ -188,14 +189,6 @@ and
.BR sigsuspend (2)
instead.
.SH NOTES
-These functions appeared in glibc 2.1.
-.PP
-The
-.I sighandler_t
-type is a GNU extension; it is used on this page only to make the
-.BR sigset ()
-prototype more easily readable.
-.PP
The
.BR sigset ()
function provides reliable signal handling semantics (as when calling
diff --git a/man3/sigsetops.3 b/man3/sigsetops.3
index b49d87447..089c34256 100644
--- a/man3/sigsetops.3
+++ b/man3/sigsetops.3
@@ -135,18 +135,8 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
-When creating a filled signal set, the glibc
-.BR sigfillset ()
-function does not include the two real-time signals used internally
-by the NPTL threading implementation.
-See
-.BR nptl (7)
-for details.
-.\"
-.SS glibc extensions
+.SH VERSIONS
+.SS GNU
If the
.B _GNU_SOURCE
feature test macro is defined, then \fI<signal.h>\fP
@@ -184,6 +174,18 @@ Both functions return 0 on success, and \-1 on failure.
.PP
These functions are nonstandard (a few other systems provide similar
functions) and their use should be avoided in portable applications.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+When creating a filled signal set, the glibc
+.BR sigfillset ()
+function does not include the two real-time signals used internally
+by the NPTL threading implementation.
+See
+.BR nptl (7)
+for details.
.SH SEE ALSO
.BR sigaction (2),
.BR sigpending (2),
diff --git a/man3/sigvec.3 b/man3/sigvec.3
index 8a0484ca5..6865b9a76 100644
--- a/man3/sigvec.3
+++ b/man3/sigvec.3
@@ -13,13 +13,14 @@ Standard C library
.nf
.B #include <signal.h>
.PP
-.BI "int sigvec(int " sig ", const struct sigvec *" vec ", struct sigvec *" ovec );
+.BI "[[deprecated]] int sigvec(int " sig ", const struct sigvec *" vec ,
+.BI " struct sigvec *" ovec );
.PP
-.BI "int sigmask(int " signum );
+.BI "[[deprecated]] int sigmask(int " signum );
.PP
-.BI "int sigblock(int " mask );
-.BI "int sigsetmask(int " mask );
-.B int siggetmask(void);
+.BI "[[deprecated]] int sigblock(int " mask );
+.BI "[[deprecated]] int sigsetmask(int " mask );
+.B [[deprecated]] int siggetmask(void);
.fi
.PP
.RS -4
@@ -229,19 +230,24 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-Starting with glibc 2.21, the GNU C library no longer exports the
-.BR sigvec ()
-function as part of the ABI.
-(To ensure backward compatibility,
-the glibc symbol versioning scheme continues to export the interface
-to binaries linked against older versions of the library.)
.SH STANDARDS
-All of these functions were in
-4.3BSD, except
-.BR siggetmask (),
-whose origin is unclear.
-These functions are obsolete: do not use them in new programs.
+None.
+.SH HISTORY
+.TP
+.BR sigvec ()
+.TQ
+.BR sigblock ()
+.TQ
+.BR sigmask ()
+.TQ
+.BR sigsetmask ()
+4.3BSD.
+.TP
+.BR siggetmask ()
+Unclear origin.
+.TP
+.BR sigvec ()
+Removed in glibc 2.21.
.SH NOTES
On 4.3BSD, the
.BR signal ()
diff --git a/man3/sigwait.3 b/man3/sigwait.3
index 321a182fe..3f1df3e27 100644
--- a/man3/sigwait.3
+++ b/man3/sigwait.3
@@ -81,9 +81,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
.BR sigwait ()
is implemented using
.BR sigtimedwait (2).
@@ -95,6 +93,10 @@ are used internally by the NPTL threading implementation.
See
.BR nptl (7)
for details.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
See
.BR pthread_sigmask (3).
diff --git a/man3/sin.3 b/man3/sin.3
index 65386e10a..3b403ff3b 100644
--- a/man3/sin.3
+++ b/man3/sin.3
@@ -99,7 +99,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/sincos.3 b/man3/sincos.3
index 7e0f564ac..6e05c9f00 100644
--- a/man3/sincos.3
+++ b/man3/sincos.3
@@ -86,10 +86,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-These functions are GNU extensions.
+GNU.
+.SH HISTORY
+glibc 2.1.
.SH NOTES
To see the performance advantage of
.BR sincos (),
diff --git a/man3/sinh.3 b/man3/sinh.3
index 80eb79a6e..ebb8bbb7e 100644
--- a/man3/sinh.3
+++ b/man3/sinh.3
@@ -115,7 +115,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/sleep.3 b/man3/sleep.3
index 387f87e43..4d2d4e581 100644
--- a/man3/sleep.3
+++ b/man3/sleep.3
@@ -43,9 +43,7 @@ T} Thread safety MT-Unsafe sig:SIGCHLD/linux
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On Linux,
.BR sleep ()
is implemented via
@@ -53,7 +51,7 @@ is implemented via
See the
.BR nanosleep (2)
man page for a discussion of the clock used.
-.SS Portability notes
+.PP
On some systems,
.BR sleep ()
may be implemented using
@@ -66,7 +64,11 @@ mixing calls to
and
.BR sleep ()
is a bad idea.
-.PP
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH CAVEATS
Using
.BR longjmp (3)
from a signal handler or modifying the handling of
diff --git a/man3/slist.3 b/man3/slist.3
index 030972f7a..2aa31865c 100644
--- a/man3/slist.3
+++ b/man3/slist.3
@@ -241,9 +241,9 @@ structure, respectively.
returns an initializer that can be assigned to the list
.IR head .
.SH STANDARDS
-Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
-Present on the BSDs
-(SLIST macros first appeared in 4.4BSD).
+BSD.
+.SH HISTORY
+4.4BSD.
.SH BUGS
.BR SLIST_FOREACH ()
doesn't allow
diff --git a/man3/sockatmark.3 b/man3/sockatmark.3
index b55e4fe95..254145cfc 100644
--- a/man3/sockatmark.3
+++ b/man3/sockatmark.3
@@ -70,11 +70,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR sockatmark ()
-was added in glibc 2.2.4.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.4.
+POSIX.1-2001.
.SH NOTES
If
.BR sockatmark ()
diff --git a/man3/sqrt.3 b/man3/sqrt.3
index 7fb9a58db..010d30561 100644
--- a/man3/sqrt.3
+++ b/man3/sqrt.3
@@ -98,7 +98,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/sscanf.3 b/man3/sscanf.3
index 308bf42c4..4269eda27 100644
--- a/man3/sscanf.3
+++ b/man3/sscanf.3
@@ -558,7 +558,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-These functions conform to C99 and POSIX.1-2001.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.PP
The
.B q
diff --git a/man3/stailq.3 b/man3/stailq.3
index 13a154f07..ddbcccc83 100644
--- a/man3/stailq.3
+++ b/man3/stailq.3
@@ -284,11 +284,7 @@ structure, respectively.
.BR STAILQ_HEAD_INITIALIZER ()
returns an initializer that can be assigned to the queue
.IR head .
-.SH STANDARDS
-Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
-Present on the BSDs
-(STAILQ macros first appeared in 4.4BSD).
-.SH NOTES
+.SH VERSIONS
Some BSDs provide SIMPLEQ instead of STAILQ.
They are identical, but for historical reasons
they were named differently on different BSDs.
@@ -309,6 +305,10 @@ fixes this limitation by allowing
.I var
to safely be removed from the list and freed from within the loop
without interfering with the traversal.
+.SH STANDARDS
+BSD.
+.SH HISTORY
+4.4BSD.
.SH EXAMPLES
.\" SRC BEGIN (stailq.c)
.EX
diff --git a/man3/statvfs.3 b/man3/statvfs.3
index fb2899abc..b1f0e7545 100644
--- a/man3/statvfs.3
+++ b/man3/statvfs.3
@@ -191,9 +191,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.PP
+.SH VERSIONS
Only the
.B ST_NOSUID
and
@@ -210,22 +208,6 @@ and
.BR fstatfs (2)
to support this library call.
.PP
-Before glibc 2.13,
-.\" glibc commit 3cdaa6adb113a088fdfb87aa6d7747557eccc58d
-.BR statvfs ()
-populated the bits of the
-.I f_flag
-field by scanning the mount options shown in
-.IR /proc/mounts .
-However, starting with Linux 2.6.36, the underlying
-.BR statfs (2)
-system call provides the necessary information via the
-.I f_flags
-field, and since glibc 2.13, the
-.BR statvfs ()
-function will use information from that field rather than scanning
-.IR /proc/mounts .
-.PP
The glibc implementations of
.PP
.in +4n
@@ -245,5 +227,25 @@ fields returned by a call to
.BR statvfs ()
with the argument
.IR path .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
+Before glibc 2.13,
+.\" glibc commit 3cdaa6adb113a088fdfb87aa6d7747557eccc58d
+.BR statvfs ()
+populated the bits of the
+.I f_flag
+field by scanning the mount options shown in
+.IR /proc/mounts .
+However, starting with Linux 2.6.36, the underlying
+.BR statfs (2)
+system call provides the necessary information via the
+.I f_flags
+field, and since glibc 2.13, the
+.BR statvfs ()
+function will use information from that field rather than scanning
+.IR /proc/mounts .
.SH SEE ALSO
.BR statfs (2)
diff --git a/man3/stdarg.3 b/man3/stdarg.3
index 3a6601913..59af5d58e 100644
--- a/man3/stdarg.3
+++ b/man3/stdarg.3
@@ -224,16 +224,19 @@ T} Thread safety MT-Safe race:ap
.ad
.sp 1
.SH STANDARDS
-The
-.BR va_start (),
-.BR va_arg (),
-and
+C11, POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR va_start ()
+.TQ
+.BR va_arg ()
+.TQ
.BR va_end ()
-macros conform to C89.
-C99 defines the
+C89, POSIX.1-2001.
+.TP
.BR va_copy ()
-macro.
-.SH BUGS
+C99, POSIX.1-2001.
+.SH CAVEATS
Unlike the historical
.B varargs
macros, the
diff --git a/man3/stdin.3 b/man3/stdin.3
index caa65a40f..e80f48281 100644
--- a/man3/stdin.3
+++ b/man3/stdin.3
@@ -114,14 +114,12 @@ The standard streams are closed by a call to
.BR exit (3)
and by normal program termination.
.SH STANDARDS
-The
-.IR stdin ,
-.IR stdout ,
-and
-.I stderr
-macros conform to C89
-and this standard also stipulates that these three
+C11, POSIX.1-2008.
+.PP
+The standards also stipulate that these three
streams shall be open at program startup.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH NOTES
The stream
.I stderr
diff --git a/man3/stdio.3 b/man3/stdio.3
index 628f9b690..fb99cdd21 100644
--- a/man3/stdio.3
+++ b/man3/stdio.3
@@ -333,9 +333,9 @@ T}
.ad
.hy
.SH STANDARDS
-The
-.I stdio
-library conforms to C89.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH SEE ALSO
.BR close (2),
.BR open (2),
diff --git a/man3/stpncpy.3 b/man3/stpncpy.3
index 70e80195c..8e2af8c77 100644
--- a/man3/stpncpy.3
+++ b/man3/stpncpy.3
@@ -16,10 +16,10 @@ Standard C library
.nf
.B #include <string.h>
.PP
-.BI "char *stpncpy(char " dst "[restrict ." sz "], \
+.BI "char *strncpy(char " dst "[restrict ." sz "], \
const char *restrict " src ,
.BI " size_t " sz );
-.BI "char *strncpy(char " dst "[restrict ." sz "], \
+.BI "char *stpncpy(char " dst "[restrict ." sz "], \
const char *restrict " src ,
.BI " size_t " sz );
.fi
@@ -52,29 +52,29 @@ An implementation of these functions might be:
.in +4n
.EX
char *
-stpncpy(char *restrict dst, const char *restrict src, size_t sz)
+strncpy(char *restrict dst, const char *restrict src, size_t sz)
{
- bzero(dst, sz);
- return mempcpy(dst, src, strnlen(src, sz));
+ stpncpy(dst, src, sz);
+ return dst;
}
char *
-strncpy(char *restrict dst, const char *restrict src, size_t sz)
+stpncpy(char *restrict dst, const char *restrict src, size_t sz)
{
- stpncpy(dst, src, sz);
- return dst;
+ bzero(dst, sz);
+ return mempcpy(dst, src, strnlen(src, sz));
}
.EE
.in
.SH RETURN VALUE
.TP
-.BR stpncpy ()
-returns a pointer to
-one after the last character in the destination character sequence.
-.TP
.BR strncpy ()
returns
.IR dst .
+.TP
+.BR stpncpy ()
+returns a pointer to
+one after the last character in the destination character sequence.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
@@ -95,13 +95,19 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
.TP
+.BR strncpy ()
+C11, POSIX.1-2008.
+.TP
.BR stpncpy ()
POSIX.1-2008.
-.\" Before that, it was a GNU extension.
-.\" It first appeared in glibc 1.07 in 1993.
+.SH STANDARDS
.TP
.BR strncpy ()
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C89, POSIX.1-2001, SVr4, 4.3BSD.
+.TP
+.BR stpncpy ()
+glibc 1.07.
+POSIX.1-2008.
.SH CAVEATS
The name of these functions is confusing.
These functions produce a null-padded character sequence,
@@ -134,14 +140,6 @@ main(void)
char buf2[20];
size_t len;
- if (sizeof(buf1) < strlen("Hello world!"))
- warnx("stpncpy: truncating character sequence");
- p = stpncpy(buf1, "Hello world!", sizeof(buf1));
- len = p \- buf1;
-
- printf("[len = %zu]: ", len);
- printf("%.*s\en", (int) len, buf1); // "Hello world!"
-
if (sizeof(buf2) < strlen("Hello world!"))
warnx("strncpy: truncating character sequence");
strncpy(buf2, "Hello world!", sizeof(buf2));
@@ -150,6 +148,14 @@ main(void)
printf("[len = %zu]: ", len);
printf("%.*s\en", (int) len, buf2); // "Hello world!"
+ if (sizeof(buf1) < strlen("Hello world!"))
+ warnx("stpncpy: truncating character sequence");
+ p = stpncpy(buf1, "Hello world!", sizeof(buf1));
+ len = p \- buf1;
+
+ printf("[len = %zu]: ", len);
+ printf("%.*s\en", (int) len, buf1); // "Hello world!"
+
exit(EXIT_SUCCESS);
}
.EE
diff --git a/man3/strcasecmp.3 b/man3/strcasecmp.3
index 146ecfcbe..7bebe7a53 100644
--- a/man3/strcasecmp.3
+++ b/man3/strcasecmp.3
@@ -77,8 +77,10 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-4.4BSD, POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+4.4BSD, POSIX.1-2001.
+.PP
The
.BR strcasecmp ()
and
diff --git a/man3/strchr.3 b/man3/strchr.3
index 5952009c9..d3d88beeb 100644
--- a/man3/strchr.3
+++ b/man3/strchr.3
@@ -101,16 +101,24 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR strchrnul ()
-was added in glibc 2.1.1.
.SH STANDARDS
-.BR strchr (),
-.BR strrchr ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.PP
+.TP
+.BR strchr ()
+.TQ
+.BR strrchr ()
+C11, POSIX.1-2008.
+.TP
+.BR strchrnul ()
+GNU.
+.SH HISTORY
+.TP
+.BR strchr ()
+.TQ
+.BR strrchr ()
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.TP
.BR strchrnul ()
-is a GNU extension.
+glibc 2.1.1.
.SH SEE ALSO
.BR memchr (3),
.BR string (3),
diff --git a/man3/strcmp.3 b/man3/strcmp.3
index 63de49e18..2a58c37e0 100644
--- a/man3/strcmp.3
+++ b/man3/strcmp.3
@@ -94,9 +94,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.SH NOTES
+.SH VERSIONS
POSIX.1 specifies only that:
.RS
.PP
@@ -114,6 +112,10 @@ the last compared byte in
from the last compared byte in
.IR s1 .
(If the two characters are equal, this difference is 0.)
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH EXAMPLES
The program below can be used to demonstrate the operation of
.BR strcmp ()
diff --git a/man3/strcoll.3 b/man3/strcoll.3
index 6ebbadcb0..56c2fc435 100644
--- a/man3/strcoll.3
+++ b/man3/strcoll.3
@@ -68,7 +68,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH NOTES
In the
.I "POSIX"
diff --git a/man3/strcpy.3 b/man3/strcpy.3
index 02b6fbd8c..03ffeaedc 100644
--- a/man3/strcpy.3
+++ b/man3/strcpy.3
@@ -123,7 +123,16 @@ POSIX.1-2008.
.BR strcpy ()
.TQ
.BR strcat ()
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH STANDARDS
+.TP
+.BR stpcpy ()
+POSIX.1-2008.
+.TP
+.BR strcpy ()
+.TQ
+.BR strcat ()
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH CAVEATS
The strings
.I src
diff --git a/man3/strdup.3 b/man3/strdup.3
index 0e928b909..82d438b5e 100644
--- a/man3/strdup.3
+++ b/man3/strdup.3
@@ -116,15 +116,28 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.\" 4.3BSD-Reno, not (first) 4.3BSD.
+.TP
.BR strdup ()
-conforms to SVr4, 4.3BSD, POSIX.1-2001.
+.TQ
.BR strndup ()
-conforms to POSIX.1-2008.
+POSIX.1-2008.
+.TP
.BR strdupa ()
-and
+.TQ
+.BR strndupa ()
+GNU.
+.SH HISTORY
+.TP
+.BR strdup ()
+SVr4, 4.3BSD-Reno, POSIX.1-2001.
+.TP
+.BR strndup ()
+POSIX.1-2008.
+.TP
+.BR strdupa ()
+.TQ
.BR strndupa ()
-are GNU extensions.
+GNU.
.SH SEE ALSO
.BR alloca (3),
.BR calloc (3),
diff --git a/man3/strerror.3 b/man3/strerror.3
index cd9f46840..1c80449d3 100644
--- a/man3/strerror.3
+++ b/man3/strerror.3
@@ -243,35 +243,24 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR strerror_l ()
-function first appeared in glibc 2.6.
-.PP
-The
-.BR strerrorname_np ()
-and
-.BR strerrordesc_np ()
-functions first appeared in glibc 2.32.
.SH STANDARDS
+.TP
.BR strerror ()
-is specified by POSIX.1-2001, POSIX.1-2008, C89, and C99.
+C11, POSIX.1-2008.
+.TP
.BR strerror_r ()
-is specified by POSIX.1-2001 and POSIX.1-2008.
.\" FIXME . for later review when Issue 8 is one day released...
.\" A future POSIX.1 may remove strerror_r()
.\" http://austingroupbugs.net/tag_view_page.php?tag_id=8
.\" http://austingroupbugs.net/view.php?id=508
-.PP
+.TQ
.BR strerror_l ()
-is specified in POSIX.1-2008.
-.PP
-The GNU-specific functions
-.BR strerror_r (),
-.BR strerrorname_np (),
-and
+POSIX.1-2008.
+.TP
+.BR strerrorname_np ()
+.TQ
.BR strerrordesc_np ()
-are nonstandard extensions.
+GNU.
.PP
POSIX.1-2001 permits
.BR strerror ()
@@ -292,6 +281,22 @@ to
.B EINVAL
if the error number is unknown.
C99 and POSIX.1-2008 require the return value to be non-NULL.
+.SH HISTORY
+.TP
+.BR strerror ()
+POSIX.1-2001, C89.
+.TP
+.BR strerror_r ()
+POSIX.1-2001.
+.TP
+.BR strerror_l ()
+glibc 2.6.
+POSIX.1-2008.
+.TP
+.BR strerrorname_np ()
+.TQ
+.BR strerrordesc_np ()
+glibc 2.32.
.SH NOTES
The GNU C Library uses a buffer of 1024 characters for
.BR strerror ().
diff --git a/man3/strfmon.3 b/man3/strfmon.3
index dc1ce3847..a7f7333a2 100644
--- a/man3/strfmon.3
+++ b/man3/strfmon.3
@@ -163,7 +163,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The call
.PP
diff --git a/man3/strfromd.3 b/man3/strfromd.3
index a6db6922c..6101af75c 100644
--- a/man3/strfromd.3
+++ b/man3/strfromd.3
@@ -174,22 +174,18 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
Note: these attributes are preliminary.
+.SH STANDARDS
+ISO/IEC TS 18661-1.
.SH VERSIONS
-The
-.BR strfromd (),
-.BR strfromf (),
-and
+.TP
+.BR strfromd ()
+.TQ
+.BR strfromf ()
+.TQ
.BR strfroml ()
-functions are available since glibc 2.25.
-.SH STANDARDS
-C99, ISO/IEC TS 18661-1.
+glibc 2.25.
.SH NOTES
-The
-.BR strfromd (),
-.BR strfromf (),
-and
-.BR strfroml ()
-functions take account of the
+These functions take account of the
.B LC_NUMERIC
category of the current locale.
.SH EXAMPLES
diff --git a/man3/strfry.3 b/man3/strfry.3
index 1ba870b8b..f1f539ea0 100644
--- a/man3/strfry.3
+++ b/man3/strfry.3
@@ -52,10 +52,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The
-.BR strfry ()
-function is unique to the
-GNU C Library.
+GNU.
.SH SEE ALSO
.BR memfrob (3),
.BR string (3)
diff --git a/man3/strftime.3 b/man3/strftime.3
index b820abf70..38bb8814b 100644
--- a/man3/strftime.3
+++ b/man3/strftime.3
@@ -541,17 +541,23 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-.BR strftime ():
-SVr4, C89, C99.
-.PD 0
-.PP
-.PD
-.BR strftime_l ():
+.TP
+.BR strftime ()
+C11, POSIX.1-2008.
+.TP
+.BR strftime_l ()
POSIX.1-2008.
-.PP
+.SH HISTORY
+.TP
+.BR strftime ()
+SVr4, C89.
.\" FIXME strftime() is in POSIX.1-2001 and POSIX.1-2008, but the details
.\" in the standards changed across versions. Investigate and
.\" write up.
+.TP
+.BR strftime_l ()
+POSIX.1-2008.
+.PP
There are strict inclusions between the set of conversions
given in ANSI C (unmarked), those given in the Single UNIX Specification
(marked SU), those given in Olson's timezone package (marked TZ),
diff --git a/man3/strlen.3 b/man3/strlen.3
index f8c9bc0c6..ac587a48f 100644
--- a/man3/strlen.3
+++ b/man3/strlen.3
@@ -49,7 +49,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, C11, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH NOTES
In cases where the input buffer may not contain
a terminating null byte,
diff --git a/man3/strncat.3 b/man3/strncat.3
index af5027c09..9a9fa4f4d 100644
--- a/man3/strncat.3
+++ b/man3/strncat.3
@@ -66,7 +66,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH CAVEATS
The name of this function is confusing.
This function has no relation to
diff --git a/man3/strnlen.3 b/man3/strnlen.3
index 528754d8e..9f922f6ca 100644
--- a/man3/strnlen.3
+++ b/man3/strnlen.3
@@ -80,5 +80,7 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2008.
.SH SEE ALSO
.BR strlen (3)
diff --git a/man3/strpbrk.3 b/man3/strpbrk.3
index f81a263af..9d4ac9327 100644
--- a/man3/strpbrk.3
+++ b/man3/strpbrk.3
@@ -55,7 +55,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH SEE ALSO
.BR memchr (3),
.BR strchr (3),
diff --git a/man3/strptime.3 b/man3/strptime.3
index d470d726c..69996f398 100644
--- a/man3/strptime.3
+++ b/man3/strptime.3
@@ -279,7 +279,9 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SUSv2.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SUSv2.
.SH NOTES
In principle, this function does not initialize
.I tm
diff --git a/man3/strsep.3 b/man3/strsep.3
index 103d9b788..6d7c66176 100644
--- a/man3/strsep.3
+++ b/man3/strsep.3
@@ -83,8 +83,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.4BSD.
-.SH NOTES
+.PP
The
.BR strsep ()
function was introduced as a replacement for
diff --git a/man3/strsignal.3 b/man3/strsignal.3
index 77c68037f..03b437ac6 100644
--- a/man3/strsignal.3
+++ b/man3/strsignal.3
@@ -132,29 +132,32 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
+.SH STANDARDS
+.TP
+.BR strsignal ()
+POSIX.1-2008.
+.TP
.BR sigdescr_np ()
-and
+.TQ
.BR sigabbrev_np ()
-first appeared in glibc 2.32.
-.PP
-Starting with glibc 2.32,
-.\" glibc commit b1ccfc061feee9ce616444ded8e1cd5acf9fa97f
-the
+GNU.
+.TP
.I sys_siglist
-symbol is no longer exported by glibc.
-.SH STANDARDS
-.BR strsignal ():
+None.
+.\" glibc commit b1ccfc061feee9ce616444ded8e1cd5acf9fa97f
+.SH HISTORY
+.TP
+.BR strsignal ()
POSIX.1-2008.
-Present on Solaris and the BSDs.
-.PP
+Solaris, BSD.
+.TP
.BR sigdescr_np ()
-and
+.TQ
.BR sigabbrev_np ()
-are GNU extensions.
-.PP
+glibc 2.32.
+.TP
.I sys_siglist
-is nonstandard, but present on many other systems.
+Removed in glibc 2.32.
.SH NOTES
.BR sigdescr_np ()
and
diff --git a/man3/strspn.3 b/man3/strspn.3
index fbb0b4043..941d310d7 100644
--- a/man3/strspn.3
+++ b/man3/strspn.3
@@ -73,7 +73,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH SEE ALSO
.BR memchr (3),
.BR strchr (3),
diff --git a/man3/strstr.3 b/man3/strstr.3
index 2f41cd162..53eee8080 100644
--- a/man3/strstr.3
+++ b/man3/strstr.3
@@ -73,12 +73,19 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-.BR strstr ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
-The
+.TP
+.BR strstr ()
+C11, POSIX.1-2008.
+.TP
+.BR strcasestr ()
+GNU.
+.SH HISTORY
+.TP
+.BR strstr ()
+POSIX.1-2001, C89.
+.TP
.BR strcasestr ()
-function is a nonstandard extension.
+GNU.
.SH SEE ALSO
.BR memchr (3),
.BR memmem (3),
diff --git a/man3/strtod.3 b/man3/strtod.3
index eb1dd650c..9d7ab11a8 100644
--- a/man3/strtod.3
+++ b/man3/strtod.3
@@ -156,21 +156,7 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
-.PP
-.BR strtod ()
-was also described in C89.
-.SH NOTES
-Since
-0 can legitimately be returned
-on both success and failure, the calling program should set
-.I errno
-to 0 before the call,
-and then determine if an error occurred by checking whether
-.I errno
-has a nonzero value after the call.
-.PP
+.SH VERSIONS
In the glibc implementation, the
.I n-char-sequence
that optionally follows "NAN"
@@ -185,6 +171,26 @@ mantissa component of the returned value.
.\" something similar.
.\" C11 says: "An implementation may use the n-char sequence to determine
.\" extra information to be represented in the NaN's significant."
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR strtod ()
+C89, POSIX.1-2001.
+.TP
+.BR strtof ()
+.TQ
+.BR strtold ()
+C99, POSIX.1-2001.
+.SH NOTES
+Since
+0 can legitimately be returned
+on both success and failure, the calling program should set
+.I errno
+to 0 before the call,
+and then determine if an error occurred by checking whether
+.I errno
+has a nonzero value after the call.
.SH EXAMPLES
See the example on the
.BR strtol (3)
diff --git a/man3/strtoimax.3 b/man3/strtoimax.3
index ca2c4dc40..541e7e481 100644
--- a/man3/strtoimax.3
+++ b/man3/strtoimax.3
@@ -60,7 +60,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR imaxabs (3),
.BR imaxdiv (3),
diff --git a/man3/strtok.3 b/man3/strtok.3
index db52fb25c..e99092110 100644
--- a/man3/strtok.3
+++ b/man3/strtok.3
@@ -171,14 +171,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-.TP
-.BR strtok ()
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
-.TP
-.BR strtok_r ()
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
On some implementations,
.\" Tru64, according to its manual page
.I *saveptr
@@ -186,6 +179,20 @@ is required to be NULL on the first call to
.BR strtok_r ()
that is being used to parse
.IR str .
+.SH STANDARDS
+.TP
+.BR strtok ()
+C11, POSIX.1-2008.
+.TP
+.BR strtok_r ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR strtok ()
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.TP
+.BR strtok_r ()
+POSIX.1-2001.
.SH BUGS
Be cautious when using these functions.
If you do use them, note that:
diff --git a/man3/strtol.3 b/man3/strtol.3
index 34eb63414..3c5ddddb3 100644
--- a/man3/strtol.3
+++ b/man3/strtol.3
@@ -160,11 +160,14 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-.BR strtol ():
-POSIX.1-2001, POSIX.1-2008, C89, C99 SVr4, 4.3BSD.
-.PP
-.BR strtoll ():
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR strtol ()
+POSIX.1-2001, C89, SVr4, 4.3BSD.
+.TP
+.BR strtoll ()
+POSIX.1-2001, C99.
.SH NOTES
Since
.BR strtol ()
diff --git a/man3/strtoul.3 b/man3/strtoul.3
index b43a0b1dd..14c72fb77 100644
--- a/man3/strtoul.3
+++ b/man3/strtoul.3
@@ -160,11 +160,14 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-.BR strtoul ():
-POSIX.1-2001, POSIX.1-2008, C89, C99 SVr4.
-.PP
-.BR strtoull ():
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR strtoul ()
+POSIX.1-2001, C89, SVr4.
+.TP
+.BR strtoull ()
+POSIX.1-2001, C99.
.SH NOTES
Since
.BR strtoul ()
diff --git a/man3/strverscmp.3 b/man3/strverscmp.3
index ac06c4d8a..ad781ab9a 100644
--- a/man3/strverscmp.3
+++ b/man3/strverscmp.3
@@ -99,7 +99,7 @@ T} Thread safety MT-Safe
.\" we may call isdigit() in macro, then strverscmp() should not have locale
.\" problem.
.SH STANDARDS
-This function is a GNU extension.
+GNU.
.SH EXAMPLES
The program below can be used to demonstrate the behavior of
.BR strverscmp ().
diff --git a/man3/strxfrm.3 b/man3/strxfrm.3
index 59f96fd94..4c92fea4d 100644
--- a/man3/strxfrm.3
+++ b/man3/strxfrm.3
@@ -77,7 +77,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD.
.SH SEE ALSO
.BR memcmp (3),
.BR setlocale (3),
diff --git a/man3/swab.3 b/man3/swab.3
index 55564efe7..2f7a3236b 100644
--- a/man3/swab.3
+++ b/man3/swab.3
@@ -72,6 +72,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
.SH SEE ALSO
.BR bstring (3)
diff --git a/man3/sysconf.3 b/man3/sysconf.3
index 2650cfa86..a15e1483a 100644
--- a/man3/sysconf.3
+++ b/man3/sysconf.3
@@ -370,7 +370,9 @@ T} Thread safety MT-Safe env
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH BUGS
It is difficult to use
.B ARG_MAX
diff --git a/man3/syslog.3 b/man3/syslog.3
index e971417ac..6fa3a1b3f 100644
--- a/man3/syslog.3
+++ b/man3/syslog.3
@@ -281,14 +281,35 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-The functions
-.BR openlog (),
-.BR closelog (),
-and
+.TP
+.BR syslog ()
+.TQ
+.BR openlog ()
+.TQ
+.BR closelog ()
+POSIX.1-2008.
+.TP
+.BR vsyslog ()
+None.
+.SH HISTORY
+.TP
.BR syslog ()
-(but not
-.BR vsyslog ())
-are specified in SUSv2, POSIX.1-2001, and POSIX.1-2008.
+4.2BSD, SUSv2, POSIX.1-2001.
+.TP
+.BR openlog ()
+.TQ
+.BR closelog ()
+4.3BSD, SUSv2, POSIX.1-2001.
+.\" .SH HISTORY
+.\" 4.3BSD documents
+.\" .BR setlogmask ().
+.TP
+.BR vsyslog ()
+4.3BSD-Reno.
+.\" Of course early v* functions used the
+.\" .I <varargs.h>
+.\" mechanism, which is not compatible with
+.\" .IR <stdarg.h> .
.PP
POSIX.1-2001 specifies only the
.B LOG_USER
@@ -310,22 +331,6 @@ value for
.I option
is not specified by POSIX.1-2001 or POSIX.1-2008, but is available
in most versions of UNIX.
-.\" .SH HISTORY
-.\" A
-.\" .BR syslog ()
-.\" function call appeared in 4.2BSD.
-.\" 4.3BSD documents
-.\" .BR openlog (),
-.\" .BR syslog (),
-.\" .BR closelog (),
-.\" and
-.\" .BR setlogmask ().
-.\" 4.3BSD-Reno also documents
-.\" .BR vsyslog ().
-.\" Of course early v* functions used the
-.\" .I <varargs.h>
-.\" mechanism, which is not compatible with
-.\" .IR <stdarg.h> .
.SH NOTES
The argument
.I ident
diff --git a/man3/system.3 b/man3/system.3
index a66ddfa37..867632bb3 100644
--- a/man3/system.3
+++ b/man3/system.3
@@ -119,7 +119,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89.
.SH NOTES
.BR system ()
provides simplicity and convenience:
diff --git a/man3/sysv_signal.3 b/man3/sysv_signal.3
index c80b1b8ca..aa75609b8 100644
--- a/man3/sysv_signal.3
+++ b/man3/sysv_signal.3
@@ -59,9 +59,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-This function is nonstandard.
-.SH NOTES
+.SH VERSIONS
Use of
.BR sysv_signal ()
should be avoided; use
@@ -86,6 +84,8 @@ this type is defined only if
the
.B _GNU_SOURCE
feature test macro is defined.
+.SH STANDARDS
+None.
.SH SEE ALSO
.BR sigaction (2),
.BR signal (2),
diff --git a/man3/tailq.3 b/man3/tailq.3
index 2474a674c..e57dd6438 100644
--- a/man3/tailq.3
+++ b/man3/tailq.3
@@ -315,10 +315,10 @@ structure, respectively.
returns an initializer that can be assigned to the queue
.IR head .
.SH STANDARDS
-Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
-Present on the BSDs.
-(TAILQ functions first appeared in 4.4BSD).
-.SH BUGS
+BSD.
+.SH HISTORY
+4.4BSD.
+.SH CAVEATS
.BR TAILQ_FOREACH ()
and
.BR TAILQ_FOREACH_REVERSE ()
diff --git a/man3/tan.3 b/man3/tan.3
index ff8de2308..e4afae40d 100644
--- a/man3/tan.3
+++ b/man3/tan.3
@@ -124,7 +124,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/tanh.3 b/man3/tanh.3
index 6846196bc..c9bff10b5 100644
--- a/man3/tanh.3
+++ b/man3/tanh.3
@@ -91,7 +91,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.PP
The variant returning
.I double
diff --git a/man3/tcgetpgrp.3 b/man3/tcgetpgrp.3
index 2c1409f4a..edf50a80f 100644
--- a/man3/tcgetpgrp.3
+++ b/man3/tcgetpgrp.3
@@ -109,15 +109,17 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+.SH VERSIONS
These functions are implemented via the
.B TIOCGPGRP
and
.B TIOCSPGRP
ioctls.
-.SS History
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
The ioctls appeared in 4.2BSD.
The functions are POSIX inventions.
.SH SEE ALSO
diff --git a/man3/tcgetsid.3 b/man3/tcgetsid.3
index b560a884a..9ea42bbda 100644
--- a/man3/tcgetsid.3
+++ b/man3/tcgetsid.3
@@ -61,12 +61,12 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR tcgetsid ()
-is provided since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
+.PP
This function is implemented via the
.B TIOCGSID
.BR ioctl (2),
diff --git a/man3/telldir.3 b/man3/telldir.3
index 42d8b1a7b..60b4f784a 100644
--- a/man3/telldir.3
+++ b/man3/telldir.3
@@ -67,8 +67,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.3BSD.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.3BSD.
+.PP
Up to glibc 2.1.1, the return type of
.BR telldir ()
was
diff --git a/man3/tempnam.3 b/man3/tempnam.3
index 2d46f0960..1b517659d 100644
--- a/man3/tempnam.3
+++ b/man3/tempnam.3
@@ -109,10 +109,10 @@ T} Thread safety MT-Safe env
.ad
.sp 1
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, 4.3BSD, POSIX.1-2001.
-POSIX.1-2008 marks
-.BR tempnam ()
-as obsolete.
+Obsoleted in POSIX.1-2008.
.SH NOTES
Although
.BR tempnam ()
diff --git a/man3/termios.3 b/man3/termios.3
index 2d7fc69a5..05d342c7a 100644
--- a/man3/termios.3
+++ b/man3/termios.3
@@ -1126,23 +1126,59 @@ T} Thread safety MT-Safe
.\" So, it is safety in Linux kernel.
.hy
.SH STANDARDS
-.BR tcgetattr (),
-.BR tcsetattr (),
-.BR tcsendbreak (),
-.BR tcdrain (),
-.BR tcflush (),
-.BR tcflow (),
-.BR cfgetispeed (),
-.BR cfgetospeed (),
-.BR cfsetispeed (),
-and
+.TP
+.BR tcgetattr ()
+.TQ
+.BR tcsetattr ()
+.TQ
+.BR tcsendbreak ()
+.TQ
+.BR tcdrain ()
+.TQ
+.BR tcflush ()
+.TQ
+.BR tcflow ()
+.TQ
+.BR cfgetispeed ()
+.TQ
+.BR cfgetospeed ()
+.TQ
+.BR cfsetispeed ()
+.TQ
.BR cfsetospeed ()
-are specified in POSIX.1-2001.
-.PP
+POSIX.1-2008.
+.TP
.BR cfmakeraw ()
-and
+.TQ
+.BR cfsetspeed ()
+BSD.
+.SH HISTORY
+.TP
+.BR tcgetattr ()
+.TQ
+.BR tcsetattr ()
+.TQ
+.BR tcsendbreak ()
+.TQ
+.BR tcdrain ()
+.TQ
+.BR tcflush ()
+.TQ
+.BR tcflow ()
+.TQ
+.BR cfgetispeed ()
+.TQ
+.BR cfgetospeed ()
+.TQ
+.BR cfsetispeed ()
+.TQ
+.BR cfsetospeed ()
+POSIX.1-2001.
+.TP
+.BR cfmakeraw ()
+.TQ
.BR cfsetspeed ()
-are nonstandard, but available on the BSDs.
+BSD.
.SH NOTES
UNIX\ V7 and several later systems have a list of baud rates
where after the values
diff --git a/man3/tgamma.3 b/man3/tgamma.3
index 298e6f109..9a4c8d1dd 100644
--- a/man3/tgamma.3
+++ b/man3/tgamma.3
@@ -175,10 +175,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH NOTES
This function had to be called "true gamma function"
since there is already a function
diff --git a/man3/timegm.3 b/man3/timegm.3
index b67e1ed36..ed207d93a 100644
--- a/man3/timegm.3
+++ b/man3/timegm.3
@@ -13,7 +13,7 @@ Standard C library
.nf
.B #include <time.h>
.PP
-.BI "time_t timelocal(struct tm *" tm );
+.BI "[[deprecated]] time_t timelocal(struct tm *" tm );
.BI "time_t timegm(struct tm *" tm );
.PP
.fi
@@ -79,9 +79,10 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-These functions are nonstandard GNU extensions
-that are also present on the BSDs.
-.SH NOTES
+BSD.
+.SH HISTORY
+GNU, BSD.
+.PP
The
.BR timelocal ()
function is equivalent to the POSIX standard function
diff --git a/man3/timeradd.3 b/man3/timeradd.3
index 2185edca3..cf23d6cf2 100644
--- a/man3/timeradd.3
+++ b/man3/timeradd.3
@@ -135,8 +135,9 @@ return true (nonzero) or false (0).
.SH ERRORS
No errors are defined.
.SH STANDARDS
-Not in POSIX.1.
-Present on most BSD derivatives.
+None.
+.SH HISTORY
+BSD.
.SH SEE ALSO
.BR gettimeofday (2),
.BR time (7)
diff --git a/man3/tmpfile.3 b/man3/tmpfile.3
index fd39b6e1d..cbb59b9e0 100644
--- a/man3/tmpfile.3
+++ b/man3/tmpfile.3
@@ -77,15 +77,7 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD, SUSv2.
-.SH NOTES
-POSIX.1-2001 specifies:
-an error message may be written to
-.I stdout
-if the stream
-cannot be opened.
-.PP
+.SH VERSIONS
The standard does not specify the directory that
.BR tmpfile ()
will use.
@@ -96,6 +88,16 @@ in
.IR <stdio.h> ,
and if that fails, then the directory
.IR /tmp .
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C89, SVr4, 4.3BSD, SUSv2.
+.SH NOTES
+POSIX.1-2001 specifies:
+an error message may be written to
+.I stdout
+if the stream
+cannot be opened.
.SH SEE ALSO
.BR exit (3),
.BR mkstemp (3),
diff --git a/man3/tmpnam.3 b/man3/tmpnam.3
index 8f9a2af5b..a8e93a083 100644
--- a/man3/tmpnam.3
+++ b/man3/tmpnam.3
@@ -15,8 +15,8 @@ Standard C library
.nf
.B #include <stdio.h>
.PP
-.BI "char *tmpnam(char *" s );
-.BI "char *tmpnam_r(char *" s );
+.BI "[[deprecated]] char *tmpnam(char *" s );
+.BI "[[deprecated]] char *tmpnam_r(char *" s );
.fi
.PP
.RS -4
@@ -106,16 +106,20 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.BR tmpnam ():
-SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
-POSIX.1-2008 marks
+.TP
.BR tmpnam ()
-as obsolete.
-.PP
+C11, POSIX.1-2008.
+.TP
+.BR tmpnam_r ()
+None.
+.SH HISTORY
+.TP
+.BR tmpnam ()
+SVr4, 4.3BSD, C89, POSIX.1-2001.
+Obsolete in POSIX.1-2008.
+.TP
.BR tmpnam_r ()
-is a nonstandard extension that is also available
-.\" Appears to be on Solaris
-on a few other systems.
+Solaris.
.SH NOTES
The
.BR tmpnam ()
diff --git a/man3/toascii.3 b/man3/toascii.3
index e056b23ba..f37562580 100644
--- a/man3/toascii.3
+++ b/man3/toascii.3
@@ -57,10 +57,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, BSD, POSIX.1-2001.
-POSIX.1-2008 marks
-.BR toascii ()
-as obsolete,
+Obsolete in POSIX.1-2008,
noting that it cannot be used portably in a localized application.
.SH BUGS
Many people will be unhappy if you use this function.
diff --git a/man3/toupper.3 b/man3/toupper.3
index 0df8209d9..fa3d68512 100644
--- a/man3/toupper.3
+++ b/man3/toupper.3
@@ -112,12 +112,26 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-.BR toupper (),
-.BR tolower ():
-C89, C99, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
-.PP
-.BR toupper_l (),
-.BR tolower_l ():
+.TP
+.BR toupper ()
+.TQ
+.BR tolower ()
+C11, POSIX.1-2008.
+.TP
+.BR toupper_l ()
+.TQ
+.BR tolower_l ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR toupper ()
+.TQ
+.BR tolower ()
+C89, 4.3BSD, POSIX.1-2001.
+.TP
+.BR toupper_l ()
+.TQ
+.BR tolower_l ()
POSIX.1-2008.
.SH NOTES
The standards require that the argument
diff --git a/man3/towctrans.3 b/man3/towctrans.3
index 6165818df..b8dca62ac 100644
--- a/man3/towctrans.3
+++ b/man3/towctrans.3
@@ -69,7 +69,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR towctrans ()
diff --git a/man3/towlower.3 b/man3/towlower.3
index edc6b573c..64377c761 100644
--- a/man3/towlower.3
+++ b/man3/towlower.3
@@ -102,16 +102,21 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
+.SH STANDARDS
+.TP
+.BR towlower ()
+C11, POSIX.1-2008 (XSI).
+.TP
.BR towlower_l ()
-function first appeared in glibc 2.3.
+POSIX.1-2008.
.SH STANDARDS
-.BR towlower ():
-C99, POSIX.1-2001 (XSI);
-present as an XSI extension in POSIX.1-2008, but marked obsolete.
-.PP
-.BR towlower_l ():
+.TP
+.BR towlower ()
+C99, POSIX.1-2001 (XSI).
+Obsolete in POSIX.1-2008 (XSI).
+.TP
+.BR towlower_l ()
+glibc 2.3.
POSIX.1-2008.
.SH NOTES
The behavior of these functions depends on the
diff --git a/man3/towupper.3 b/man3/towupper.3
index e0a943a2e..7d9aabed9 100644
--- a/man3/towupper.3
+++ b/man3/towupper.3
@@ -101,17 +101,22 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR towupper_l ()
-function first appeared in glibc 2.3.
.SH STANDARDS
-.BR towupper ():
-C99, POSIX.1-2001 (XSI);
-present as an XSI extension in POSIX.1-2008, but marked obsolete.
-.PP
-.BR towupper_l ():
+.TP
+.BR towupper ()
+C11, POSIX.1-2008 (XSI).
+.TP
+.BR towupper_l ()
+POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR towupper ()
+C99, POSIX.1-2001 (XSI).
+Obsolete in POSIX.1-2008 (XSI).
+.TP
+.BR towupper_l ()
POSIX.1-2008.
+glibc 2.3.
.SH NOTES
The behavior of these functions depends on the
.B LC_CTYPE
diff --git a/man3/trunc.3 b/man3/trunc.3
index bb2a125ad..42071922a 100644
--- a/man3/trunc.3
+++ b/man3/trunc.3
@@ -63,10 +63,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-These functions were added in glibc 2.1.
.SH STANDARDS
-C99, POSIX.1-2001, POSIX.1-2008.
+C11, POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+C99, POSIX.1-2001.
.SH NOTES
The integral value returned by these functions may be too large
to store in an integer type
diff --git a/man3/tsearch.3 b/man3/tsearch.3
index 91fc90bbd..35b052886 100644
--- a/man3/tsearch.3
+++ b/man3/tsearch.3
@@ -220,16 +220,34 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR twalk_r ()
-is available since glibc 2.30.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
-The functions
+.TP
+.BR tsearch ()
+.TQ
+.BR tfind ()
+.TQ
+.BR tdelete ()
+.TQ
+.BR twalk ()
+POSIX.1-2008.
+.TP
.BR tdestroy ()
-and
+.TQ
+.BR twalk_r ()
+GNU.
+.SH HISTORY
+.TP
+.BR tsearch ()
+.TQ
+.BR tfind ()
+.TQ
+.BR tdelete ()
+.TQ
+.BR twalk ()
+POSIX.1-2001, POSIX.1-2008, SVr4.
+.TP
.BR twalk_r ()
-are GNU extensions.
+glibc 2.30.
.SH NOTES
.BR twalk ()
takes a pointer to the root, while the other functions
diff --git a/man3/ttyname.3 b/man3/ttyname.3
index 4bd7b15ed..60f9c9cb2 100644
--- a/man3/ttyname.3
+++ b/man3/ttyname.3
@@ -83,7 +83,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, 4.2BSD.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, 4.2BSD.
.SH NOTES
A process that keeps a file descriptor that refers to a
.BR pts (4)
diff --git a/man3/ttyslot.3 b/man3/ttyslot.3
index 358b9d4fa..36946bb94 100644
--- a/man3/ttyslot.3
+++ b/man3/ttyslot.3
@@ -122,14 +122,16 @@ T} Thread safety MT-Unsafe
.hy
.ad
.sp 1
-.SH STANDARDS
-SUSv1; marked as LEGACY in SUSv2; removed in POSIX.1-2001.
-SUSv2 requires \-1 on error.
-.SH NOTES
+.SH VERSIONS
The utmp file is found in various places on various systems, such as
.IR /etc/utmp ,
.IR /var/adm/utmp ,
.IR /var/run/utmp .
+.SH STANDARDS
+None.
+.SH HISTORY
+SUSv1; marked as LEGACY in SUSv2; removed in POSIX.1-2001.
+SUSv2 requires \-1 on error.
.PP
The glibc2 implementation of this function reads the file
.BR _PATH_TTYS ,
diff --git a/man3/tzset.3 b/man3/tzset.3
index 1b44c5a71..d7faf8b98 100644
--- a/man3/tzset.3
+++ b/man3/tzset.3
@@ -227,8 +227,10 @@ T} Thread safety MT-Safe env locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
-.SH NOTES
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.PP
4.3BSD had a function
.BI "char *timezone(" zone ", " dst )
that returned the
diff --git a/man3/ualarm.3 b/man3/ualarm.3
index 50b48efe6..f66d85b3d 100644
--- a/man3/ualarm.3
+++ b/man3/ualarm.3
@@ -84,14 +84,14 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD, POSIX.1-2001.
-POSIX.1-2001 marks
-.BR ualarm ()
-as obsolete.
-POSIX.1-2008 removes the specification of
-.BR ualarm ().
+POSIX.1-2001 marks it as obsolete.
+Removed in POSIX.1-2008.
+.PP
4.3BSD, SUSv2, and POSIX do not define any errors.
-.SH NOTES
+.PP
POSIX.1-2001 does not specify what happens if the
.I usecs
argument is 0.
diff --git a/man3/ulimit.3 b/man3/ulimit.3
index b9dffa7f5..5f7671d87 100644
--- a/man3/ulimit.3
+++ b/man3/ulimit.3
@@ -79,10 +79,10 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
SVr4, POSIX.1-2001.
-POSIX.1-2008 marks
-.BR ulimit ()
-as obsolete.
+POSIX.1-2008 marks it as obsolete.
.SH SEE ALSO
.BR bash (1),
.BR getrlimit (2),
diff --git a/man3/ungetwc.3 b/man3/ungetwc.3
index 43d59f782..924dd99cb 100644
--- a/man3/ungetwc.3
+++ b/man3/ungetwc.3
@@ -91,7 +91,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR ungetwc ()
diff --git a/man3/unlocked_stdio.3 b/man3/unlocked_stdio.3
index 89c761cb3..faab29f06 100644
--- a/man3/unlocked_stdio.3
+++ b/man3/unlocked_stdio.3
@@ -159,16 +159,28 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The four functions
-.BR getc_unlocked (),
-.BR getchar_unlocked (),
-.BR putc_unlocked (),
+.TP
+.BR getc_unlocked ()
+.TQ
+.BR getchar_unlocked ()
+.TQ
+.BR putc_unlocked ()
+.TQ
.BR putchar_unlocked ()
-are in POSIX.1-2001 and POSIX.1-2008.
-.PP
-The nonstandard
-.BR *_unlocked ()
-variants occur on a few UNIX systems, and are available in recent glibc.
+POSIX.1-2008.
+.TP
+Others:
+None.
+.SH HISTORY
+.TP
+.BR getc_unlocked ()
+.TQ
+.BR getchar_unlocked ()
+.TQ
+.BR putc_unlocked ()
+.TQ
+.BR putchar_unlocked ()
+POSIX.1-2001.
.\" E.g., in HP-UX 10.0. In HP-UX 10.30 they are called obsolescent, and
.\" moved to a compatibility library.
.\" Available in HP-UX 10.0: clearerr_unlocked, fclose_unlocked,
@@ -180,7 +192,6 @@ variants occur on a few UNIX systems, and are available in recent glibc.
.\" putchar_unlocked, puts_unlocked, putws_unlocked, putw_unlocked,
.\" putwc_unlocked, putwchar_unlocked, rewind_unlocked, setvbuf_unlocked,
.\" ungetc_unlocked, ungetwc_unlocked.
-They should probably not be used.
.SH SEE ALSO
.BR flockfile (3),
.BR stdio (3)
diff --git a/man3/unlockpt.3 b/man3/unlockpt.3
index c93a3f267..73b6ef8c1 100644
--- a/man3/unlockpt.3
+++ b/man3/unlockpt.3
@@ -74,11 +74,11 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-.BR unlockpt ()
-is provided since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
.SH SEE ALSO
.BR grantpt (3),
.BR posix_openpt (3),
diff --git a/man3/updwtmp.3 b/man3/updwtmp.3
index 44d5bb6b5..c5373e772 100644
--- a/man3/updwtmp.3
+++ b/man3/updwtmp.3
@@ -57,10 +57,7 @@ T} Thread safety MT-Unsafe sig:ALRM timer
.hy
.ad
.sp 1
-.SH STANDARDS
-Not in POSIX.1.
-Present on Solaris, NetBSD, and perhaps other systems.
-.SH NOTES
+.SH VERSIONS
For consistency with the other "utmpx" functions (see
.BR getutxent (3)),
glibc provides (since glibc 2.1):
@@ -78,6 +75,10 @@ This function performs the same task as
but differs in that it takes a
.I utmpx
structure as its last argument.
+.SH STANDARDS
+None.
+.SH HISTORY
+Solaris, NetBSD.
.SH SEE ALSO
.BR getutxent (3),
.BR wtmp (5)
diff --git a/man3/uselocale.3 b/man3/uselocale.3
index a813fdc0a..e9c930077 100644
--- a/man3/uselocale.3
+++ b/man3/uselocale.3
@@ -70,12 +70,11 @@ to indicate the error.
.B EINVAL
.I newloc
does not refer to a valid locale object.
-.SH VERSIONS
-The
-.BR uselocale ()
-function first appeared in glibc 2.3.
.SH STANDARDS
POSIX.1-2008.
+.SH HISTORY
+glibc 2.3.
+POSIX.1-2008.
.SH NOTES
Unlike
.BR setlocale (3),
diff --git a/man3/usleep.3 b/man3/usleep.3
index 07c7e68a5..03804d436 100644
--- a/man3/usleep.3
+++ b/man3/usleep.3
@@ -81,12 +81,13 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
+None.
+.SH HISTORY
4.3BSD, POSIX.1-2001.
-POSIX.1-2001 declares this function obsolete; use
+POSIX.1-2001 declares it obsolete, suggesting
.BR nanosleep (2)
instead.
-POSIX.1-2008 removes the specification of
-.BR usleep ().
+Removed in POSIX.1-2008.
.PP
On the original BSD implementation,
and before glibc 2.2.2, the return type of this function is
@@ -98,7 +99,7 @@ and this is also the prototype used since glibc 2.2.2.
Only the
.B EINVAL
error return is documented by SUSv2 and POSIX.1-2001.
-.SH NOTES
+.SH CAVEATS
The interaction of this function with the
.B SIGALRM
signal, and with other timer functions such as
diff --git a/man3/wcrtomb.3 b/man3/wcrtomb.3
index 01e870737..2f1df9a02 100644
--- a/man3/wcrtomb.3
+++ b/man3/wcrtomb.3
@@ -128,7 +128,9 @@ T} Thread safety MT-Unsafe race:wcrtomb/!ps
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wcrtomb ()
diff --git a/man3/wcscasecmp.3 b/man3/wcscasecmp.3
index 5153a09ad..7f4812b4a 100644
--- a/man3/wcscasecmp.3
+++ b/man3/wcscasecmp.3
@@ -86,14 +86,10 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR wcscasecmp ()
-function is provided since glibc 2.1.
.SH STANDARDS
POSIX.1-2008.
-This function is not specified in POSIX.1-2001,
-and is not widely available on other systems.
+.SH HISTORY
+glibc 2.1.
.SH NOTES
The behavior of
.BR wcscasecmp ()
diff --git a/man3/wcscat.3 b/man3/wcscat.3
index 170c391f2..597b72a1a 100644
--- a/man3/wcscat.3
+++ b/man3/wcscat.3
@@ -63,7 +63,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strcat (3),
.BR wcpcpy (3),
diff --git a/man3/wcschr.3 b/man3/wcschr.3
index daf637509..da39a356d 100644
--- a/man3/wcschr.3
+++ b/man3/wcschr.3
@@ -61,7 +61,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strchr (3),
.BR wcspbrk (3),
diff --git a/man3/wcscmp.3 b/man3/wcscmp.3
index 65cbda96c..7530fae45 100644
--- a/man3/wcscmp.3
+++ b/man3/wcscmp.3
@@ -73,7 +73,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strcmp (3),
.BR wcscasecmp (3),
diff --git a/man3/wcscpy.3 b/man3/wcscpy.3
index fdaf5550f..9cc5f7a28 100644
--- a/man3/wcscpy.3
+++ b/man3/wcscpy.3
@@ -64,7 +64,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strcpy (3),
.BR wcpcpy (3),
diff --git a/man3/wcscspn.3 b/man3/wcscspn.3
index 810c1ec75..e11833673 100644
--- a/man3/wcscspn.3
+++ b/man3/wcscspn.3
@@ -75,7 +75,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strcspn (3),
.BR wcspbrk (3),
diff --git a/man3/wcsdup.3 b/man3/wcsdup.3
index ce52d6dec..fc259fbd0 100644
--- a/man3/wcsdup.3
+++ b/man3/wcsdup.3
@@ -79,9 +79,8 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
POSIX.1-2008.
-This function is not specified in POSIX.1-2001,
-and is not widely available on other systems.
-.\" present in libc5 and glibc 2.0 and later
+.SH HISTORY
+libc5, glibc 2.0.
.SH SEE ALSO
.BR strdup (3),
.BR wcscpy (3)
diff --git a/man3/wcslen.3 b/man3/wcslen.3
index 0d0d22aa9..477053a95 100644
--- a/man3/wcslen.3
+++ b/man3/wcslen.3
@@ -56,7 +56,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
In cases where the input buffer may not contain
a terminating null wide character,
diff --git a/man3/wcsncasecmp.3 b/man3/wcsncasecmp.3
index 13cdcedbd..f474fb09d 100644
--- a/man3/wcsncasecmp.3
+++ b/man3/wcsncasecmp.3
@@ -92,14 +92,10 @@ T} Thread safety MT-Safe locale
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR wcsncasecmp ()
-function is provided since glibc 2.1.
.SH STANDARDS
POSIX.1-2008.
-This function is not specified in POSIX.1-2001,
-and is not widely available on other systems.
+.SH HISTORY
+glibc 2.1.
.SH NOTES
The behavior of
.BR wcsncasecmp ()
diff --git a/man3/wcsncat.3 b/man3/wcsncat.3
index 0b2ccd274..f7bae0881 100644
--- a/man3/wcsncat.3
+++ b/man3/wcsncat.3
@@ -67,7 +67,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strncat (3),
.BR wcscat (3)
diff --git a/man3/wcsncmp.3 b/man3/wcsncmp.3
index 670a8ef68..f3dbc1ede 100644
--- a/man3/wcsncmp.3
+++ b/man3/wcsncmp.3
@@ -88,7 +88,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strncmp (3),
.BR wcsncasecmp (3)
diff --git a/man3/wcsncpy.3 b/man3/wcsncpy.3
index 882650e3d..8f9b07db1 100644
--- a/man3/wcsncpy.3
+++ b/man3/wcsncpy.3
@@ -85,6 +85,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strncpy (3)
diff --git a/man3/wcsnlen.3 b/man3/wcsnlen.3
index 339f6c15f..64a7c4d47 100644
--- a/man3/wcsnlen.3
+++ b/man3/wcsnlen.3
@@ -85,12 +85,10 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
-.SH VERSIONS
-The
-.BR wcsnlen ()
-function is provided since glibc 2.1.
.SH STANDARDS
POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
.SH SEE ALSO
.BR strnlen (3),
.BR wcslen (3)
diff --git a/man3/wcspbrk.3 b/man3/wcspbrk.3
index c89b6df2d..6d557bd1b 100644
--- a/man3/wcspbrk.3
+++ b/man3/wcspbrk.3
@@ -63,7 +63,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strpbrk (3),
.BR wcschr (3),
diff --git a/man3/wcsrchr.3 b/man3/wcsrchr.3
index acb16cae8..ec1973687 100644
--- a/man3/wcsrchr.3
+++ b/man3/wcsrchr.3
@@ -61,7 +61,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strrchr (3),
.BR wcschr (3)
diff --git a/man3/wcsrtombs.3 b/man3/wcsrtombs.3
index 5503b99c5..df094abc2 100644
--- a/man3/wcsrtombs.3
+++ b/man3/wcsrtombs.3
@@ -143,7 +143,9 @@ T}
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wcsrtombs ()
diff --git a/man3/wcsspn.3 b/man3/wcsspn.3
index 7283bfd23..8c62063d0 100644
--- a/man3/wcsspn.3
+++ b/man3/wcsspn.3
@@ -73,7 +73,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strspn (3),
.BR wcscspn (3)
diff --git a/man3/wcsstr.3 b/man3/wcsstr.3
index 454a69a38..175395a97 100644
--- a/man3/wcsstr.3
+++ b/man3/wcsstr.3
@@ -70,7 +70,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR strstr (3),
.BR wcschr (3)
diff --git a/man3/wcstoimax.3 b/man3/wcstoimax.3
index ccf229ebc..566dcdb76 100644
--- a/man3/wcstoimax.3
+++ b/man3/wcstoimax.3
@@ -48,7 +48,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR imaxabs (3),
.BR imaxdiv (3),
diff --git a/man3/wcstok.3 b/man3/wcstok.3
index 4a58f5957..4cbcc3170 100644
--- a/man3/wcstok.3
+++ b/man3/wcstok.3
@@ -94,7 +94,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The original
.I wcs
diff --git a/man3/wcstombs.3 b/man3/wcstombs.3
index f13218d97..39381005a 100644
--- a/man3/wcstombs.3
+++ b/man3/wcstombs.3
@@ -105,8 +105,14 @@ T} Thread safety MT-Safe
.hy
.ad
.sp 1
+.SH VERSIONS
+The function
+.BR wcsrtombs (3)
+provides a better interface to the same functionality.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wcstombs ()
@@ -114,10 +120,6 @@ depends on the
.B LC_CTYPE
category of the
current locale.
-.PP
-The function
-.BR wcsrtombs (3)
-provides a better interface to the same functionality.
.SH SEE ALSO
.BR mblen (3),
.BR mbstowcs (3),
diff --git a/man3/wcswidth.3 b/man3/wcswidth.3
index 6bf797c26..4e9b19062 100644
--- a/man3/wcswidth.3
+++ b/man3/wcswidth.3
@@ -61,7 +61,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The behavior of
.BR wcswidth ()
diff --git a/man3/wctob.3 b/man3/wctob.3
index 9afb512dc..23bfd222a 100644
--- a/man3/wctob.3
+++ b/man3/wctob.3
@@ -64,7 +64,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wctob ()
diff --git a/man3/wctomb.3 b/man3/wctomb.3
index cff05d470..c5c437720 100644
--- a/man3/wctomb.3
+++ b/man3/wctomb.3
@@ -97,8 +97,15 @@ T} Thread safety MT-Unsafe race
.hy
.ad
.sp 1
+.SH VERSIONS
+The function
+.BR wcrtomb (3)
+provides
+a better interface to the same functionality.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wctomb ()
@@ -106,11 +113,6 @@ depends on the
.B LC_CTYPE
category of the
current locale.
-.PP
-The function
-.BR wcrtomb (3)
-provides
-a better interface to the same functionality.
.SH SEE ALSO
.BR MB_CUR_MAX (3),
.BR mblen (3),
diff --git a/man3/wctrans.3 b/man3/wctrans.3
index b88876d21..cacf05ea5 100644
--- a/man3/wctrans.3
+++ b/man3/wctrans.3
@@ -77,7 +77,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wctrans ()
diff --git a/man3/wctype.3 b/man3/wctype.3
index b03c412bc..f2b1429bf 100644
--- a/man3/wctype.3
+++ b/man3/wctype.3
@@ -89,7 +89,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wctype ()
diff --git a/man3/wcwidth.3 b/man3/wcwidth.3
index 31452654f..2bf243b08 100644
--- a/man3/wcwidth.3
+++ b/man3/wcwidth.3
@@ -59,7 +59,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.PP
Note that before glibc 2.2.5, glibc used the prototype
.PP
diff --git a/man3/wmemchr.3 b/man3/wmemchr.3
index dad8051bb..8add6a473 100644
--- a/man3/wmemchr.3
+++ b/man3/wmemchr.3
@@ -65,7 +65,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR memchr (3),
.BR wcschr (3)
diff --git a/man3/wmemcmp.3 b/man3/wmemcmp.3
index 40b3cbcca..9f470209f 100644
--- a/man3/wmemcmp.3
+++ b/man3/wmemcmp.3
@@ -85,7 +85,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR memcmp (3),
.BR wcscmp (3)
diff --git a/man3/wmemcpy.3 b/man3/wmemcpy.3
index 04d43bd5e..e667dd972 100644
--- a/man3/wmemcpy.3
+++ b/man3/wmemcpy.3
@@ -68,7 +68,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR memcpy (3),
.BR wcscpy (3),
diff --git a/man3/wmemmove.3 b/man3/wmemmove.3
index 98376d201..a2aba5b9e 100644
--- a/man3/wmemmove.3
+++ b/man3/wmemmove.3
@@ -65,7 +65,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR memmove (3),
.BR wmemcpy (3)
diff --git a/man3/wmemset.3 b/man3/wmemset.3
index 9d460a48b..385ebf77c 100644
--- a/man3/wmemset.3
+++ b/man3/wmemset.3
@@ -57,6 +57,8 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH SEE ALSO
.BR memset (3)
diff --git a/man3/wordexp.3 b/man3/wordexp.3
index 9350fd63c..1a1f284bb 100644
--- a/man3/wordexp.3
+++ b/man3/wordexp.3
@@ -208,13 +208,11 @@ then data races could occur.
.BR wordexp ()
calls those functions,
so we use race:utent to remind users.
-.SH VERSIONS
-.BR wordexp ()
-and
-.BR wordfree ()
-are provided since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+glibc 2.1.
.SH EXAMPLES
The output of the following example program
is approximately that of "ls [a-c]*.c".
diff --git a/man3/wprintf.3 b/man3/wprintf.3
index a496e76c4..16ffb9e43 100644
--- a/man3/wprintf.3
+++ b/man3/wprintf.3
@@ -226,7 +226,9 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C99.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wprintf ()
diff --git a/man3/y0.3 b/man3/y0.3
index a2c9e2174..861b6f40b 100644
--- a/man3/y0.3
+++ b/man3/y0.3
@@ -224,11 +224,28 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-The functions returning
-.I double
-conform to SVr4, 4.3BSD,
-POSIX.1-2001, POSIX.1-2008.
-The others are nonstandard functions that also exist on the BSDs.
+.TP
+.BR y0 ()
+.TQ
+.BR y1 ()
+.TQ
+.BR yn ()
+POSIX.1-2008.
+.TP
+Others:
+BSD.
+.SH HISTORY
+.TP
+.BR y0 ()
+.TQ
+.BR y1 ()
+.TQ
+.BR yn ()
+SVr4, 4.3BSD,
+POSIX.1-2001.
+.TP
+Others:
+BSD.
.SH BUGS
Before glibc 2.19,
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6807
diff --git a/man3head/printf.h.3head b/man3head/printf.h.3head
index 8f1aa6a37..e432d3cb9 100644
--- a/man3head/printf.h.3head
+++ b/man3head/printf.h.3head
@@ -221,7 +221,9 @@ On error, it should return \-1.
.TP
.B EINVAL
The specifier was not a valid character.
-.SH VERSIONS
+.SH STANDARDS
+GNU.
+.SH HISTORY
.BR \%register_printf_function (3)
is an older function similar to
.BR \%register_printf_specifier (),
@@ -231,8 +233,6 @@ That function can't handle user-defined types.
.BR \%register_printf_specifier ()
superseeds
.BR \%register_printf_function (3).
-.SH STANDARDS
-These nonstandard functions are present in glibc.
.SH EXAMPLES
The following example program registers the 'b' and 'B' specifiers
to print integers in binary format,
diff --git a/man3head/sysexits.h.3head b/man3head/sysexits.h.3head
index 33e23b910..4014b8028 100644
--- a/man3head/sysexits.h.3head
+++ b/man3head/sysexits.h.3head
@@ -185,14 +185,14 @@ Something was found in an unconfigured or misconfigured state.
The numerical values corresponding to the symbolical ones
are given in parenthesis for easy reference.
.SH STANDARDS
-Not in POSIX.1.
-Present on the BSDs.
+BSD.
+.SH HISTORY
The
.I <sysexits.h>
file appeared in 4.0BSD for use by the deliverymail utility,
later renamed to
.BR sendmail (8).
-.SH BUGS
+.SH CAVEATS
The choice of an appropriate exit value is often ambiguous.
.SH SEE ALSO
.BR err (3),
diff --git a/man3type/FILE.3type b/man3type/FILE.3type
index 82000d837..902557511 100644
--- a/man3type/FILE.3type
+++ b/man3type/FILE.3type
@@ -19,8 +19,9 @@ Standard C library
.SH DESCRIPTION
An object type used for streams.
.SH STANDARDS
-C99 and later;
-POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH NOTES
The following header also provides this type:
.IR <wchar.h> .
diff --git a/man3type/aiocb.3type b/man3type/aiocb.3type
index 7bfe97162..945561710 100644
--- a/man3type/aiocb.3type
+++ b/man3type/aiocb.3type
@@ -28,7 +28,9 @@ Standard C library
For further information about this structure, see
.BR aio (7).
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR aio_cancel (3),
.BR aio_error (3),
diff --git a/man3type/blkcnt_t.3type b/man3type/blkcnt_t.3type
index c9bb2ed40..6b7836115 100644
--- a/man3type/blkcnt_t.3type
+++ b/man3type/blkcnt_t.3type
@@ -20,7 +20,9 @@ Standard C library
Used for file block counts.
It is a signed integer type.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following header also provides this type:
.IR <sys/stat.h> .
diff --git a/man3type/blksize_t.3type b/man3type/blksize_t.3type
index 0b1c82bcd..5c0a24e81 100644
--- a/man3type/blksize_t.3type
+++ b/man3type/blksize_t.3type
@@ -20,7 +20,9 @@ Standard C library
Used for file block sizes.
It is a signed integer type.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following header also provides this type:
.IR <sys/stat.h> .
diff --git a/man3type/cc_t.3type b/man3type/cc_t.3type
index ef0d44107..f0c7a490c 100644
--- a/man3type/cc_t.3type
+++ b/man3type/cc_t.3type
@@ -28,6 +28,8 @@ for modes.
.PP
All are unsigned integer types.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR termios (3)
diff --git a/man3type/clock_t.3type b/man3type/clock_t.3type
index b3fdf0346..12da83de9 100644
--- a/man3type/clock_t.3type
+++ b/man3type/clock_t.3type
@@ -24,7 +24,9 @@ Used for system time in clock ticks or
According to POSIX,
it is an integer type or a real-floating type.
.SH STANDARDS
-C99 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH NOTES
The following headers also provide this type:
.I <sys/types.h>
diff --git a/man3type/clockid_t.3type b/man3type/clockid_t.3type
index 092a07c15..97ce86661 100644
--- a/man3type/clockid_t.3type
+++ b/man3type/clockid_t.3type
@@ -14,7 +14,9 @@ Standard C library
Used for clock ID type in the clock and timer functions.
It is defined as an arithmetic type.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following header also provides this type:
.IR <time.h> .
diff --git a/man3type/dev_t.3type b/man3type/dev_t.3type
index 898886b84..0a3df9353 100644
--- a/man3type/dev_t.3type
+++ b/man3type/dev_t.3type
@@ -22,7 +22,9 @@ It is an integer type.
For further details of this type, see
.BR makedev (3).
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following header also provides this type:
.IR <sys/stat.h> .
diff --git a/man3type/div_t.3type b/man3type/div_t.3type
index fa4330709..d62ea2cca 100644
--- a/man3type/div_t.3type
+++ b/man3type/div_t.3type
@@ -48,7 +48,9 @@ is the type of the value returned by the
.BR imaxdiv (3)
function.
.SH STANDARDS
-C99 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR div (3),
.BR imaxdiv (3),
diff --git a/man3type/double_t.3type b/man3type/double_t.3type
index e0f820582..1bf1946eb 100644
--- a/man3type/double_t.3type
+++ b/man3type/double_t.3type
@@ -48,7 +48,9 @@ and
.I double_t
are implementation-defined.
.SH STANDARDS
-C99 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR float.h (0p),
.BR math.h (0p)
diff --git a/man3type/epoll_event.3type b/man3type/epoll_event.3type
index 4e4d34284..4806bca66 100644
--- a/man3type/epoll_event.3type
+++ b/man3type/epoll_event.3type
@@ -33,9 +33,7 @@ The
.I epoll_event
structure specifies data that the kernel should save and
return when the corresponding file descriptor becomes ready.
-.SH STANDARDS
-This type is Linux-specific.
-.SH NOTES
+.SH VERSIONS
.SS C library/kernel differences
The Linux kernel headers also provide this type,
with a slightly different definition:
@@ -50,6 +48,8 @@ struct epoll_event {
};
.EE
.in
+.SH STANDARDS
+Linux.
.SH SEE ALSO
.BR epoll_wait (2),
.BR epoll_ctl (7)
diff --git a/man3type/fenv_t.3type b/man3type/fenv_t.3type
index 086f1d977..9e2202257 100644
--- a/man3type/fenv_t.3type
+++ b/man3type/fenv_t.3type
@@ -28,6 +28,8 @@ represents the floating-point status flags collectively.
For further details see
.BR fenv (3).
.SH STANDARDS
-C99 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH SEE ALSO
.BR fenv (3)
diff --git a/man3type/id_t.3type b/man3type/id_t.3type
index d6bc97b6f..4c76ad2f6 100644
--- a/man3type/id_t.3type
+++ b/man3type/id_t.3type
@@ -40,7 +40,9 @@ It is an integer type that can be used to contain a
or
.IR gid_t .
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following headers also provide
.IR pid_t :
diff --git a/man3type/intN_t.3type b/man3type/intN_t.3type
index 09383cd65..3a1e51518 100644
--- a/man3type/intN_t.3type
+++ b/man3type/intN_t.3type
@@ -156,8 +156,13 @@ for scanning
.I uint8_t
values.
.SH STANDARDS
-C99 and later;
-POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+.PP
+The
+.RB [ U ] INT \fIN\fP _WIDTH
+macros were added in C23.
.SH NOTES
The following header also provides these types:
.IR <inttypes.h> .
diff --git a/man3type/intmax_t.3type b/man3type/intmax_t.3type
index 8c2f9ff0f..e5feb4c56 100644
--- a/man3type/intmax_t.3type
+++ b/man3type/intmax_t.3type
@@ -81,7 +81,9 @@ for printing
.RI [ u ] intmax_t
values.
.SH STANDARDS
-C99 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
The following header also provides these types:
.IR <inttypes.h> .
diff --git a/man3type/intptr_t.3type b/man3type/intptr_t.3type
index 9b614fac6..9481baf91 100644
--- a/man3type/intptr_t.3type
+++ b/man3type/intptr_t.3type
@@ -96,7 +96,9 @@ for scanning
.I uintptr_t
values.
.SH STANDARDS
-C99 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
.SH NOTES
The following header also provides these types:
.IR <inttypes.h> .
diff --git a/man3type/iovec.3type b/man3type/iovec.3type
index 5f3a7e3ef..559883183 100644
--- a/man3type/iovec.3type
+++ b/man3type/iovec.3type
@@ -38,7 +38,9 @@ is limited by
or accessible via the call
.IR sysconf(_SC_IOV_MAX) ).
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following header also provides this type:
.IR <sys/socket.h> .
diff --git a/man3type/itimerspec.3type b/man3type/itimerspec.3type
index 9ed7faafd..5d645e2f7 100644
--- a/man3type/itimerspec.3type
+++ b/man3type/itimerspec.3type
@@ -23,7 +23,7 @@ Describes the initial expiration of a timer,
and its interval,
in seconds and nanoseconds.
.SH STANDARDS
-Linux-specific.
+Linux.
.SH NOTES
The following header also provides this type:
.IR <sys/timerfd.h> .
diff --git a/man3type/lconv.3type b/man3type/lconv.3type
index 7f860b4ab..5c326d7c9 100644
--- a/man3type/lconv.3type
+++ b/man3type/lconv.3type
@@ -46,7 +46,9 @@ Contains members related to the formatting of numeric values.
In the "C" locale, its members have the values
shown in the comments above.
.SH STANDARDS
-C11 and later; POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH SEE ALSO
.BR setlocale (3),
.BR localeconv (3),
diff --git a/man3type/mode_t.3type b/man3type/mode_t.3type
index 2ea1784cc..c90a35fb0 100644
--- a/man3type/mode_t.3type
+++ b/man3type/mode_t.3type
@@ -20,7 +20,9 @@ Standard C library
Used for some file attributes (e.g., file mode).
It is an integer type.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following headers also provide this type:
.IR <fcntl.h> ,
diff --git a/man3type/off_t.3type b/man3type/off_t.3type
index 1e8734fa6..4d4bae143 100644
--- a/man3type/off_t.3type
+++ b/man3type/off_t.3type
@@ -38,24 +38,27 @@ used in glibc.
.I loff_t
is a 64-bit version of the type,
introduced by the Linux kernel.
+.SH STANDARDS
+.TP
+.I off_t
+POSIX.1-2008.
+.TP
+.I off64_t
+GNU and some BSDs.
+.TP
+.I loff_t
+Linux.
.SH VERSIONS
+.TP
+.I off_t
+POSIX.1-2001.
+.PP
.I <aio.h>
and
.I <stdio.h>
define
.I off_t
since POSIX.1-2008.
-.SH STANDARDS
-.PD 0
-.IR off_t :
-POSIX.1-2001 and later.
-.PP
-.IR off64_t :
-Present in glibc and some BSDs.
-.PP
-.IR loff_t :
-Linux-specific.
-.PD
.SH NOTES
On some architectures,
the width of
diff --git a/man3type/ptrdiff_t.3type b/man3type/ptrdiff_t.3type
index a4d41e5e7..093e630bf 100644
--- a/man3type/ptrdiff_t.3type
+++ b/man3type/ptrdiff_t.3type
@@ -40,7 +40,8 @@ for printing
.I ptrdiff_t
values.
.SH STANDARDS
-C99 and later;
-POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH SEE ALSO
.BR size_t (3type)
diff --git a/man3type/regex_t.3type b/man3type/regex_t.3type
index a87c1994a..176d2c7a6 100644
--- a/man3type/regex_t.3type
+++ b/man3type/regex_t.3type
@@ -47,7 +47,11 @@ capable of storing the largest value that can be stored in either an
type or a
.I ssize_t
type.
-.SH VERSIONS
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
Prior to POSIX.1-2008,
the type was
capable of storing the largest value that can be stored in either an
@@ -55,7 +59,5 @@ capable of storing the largest value that can be stored in either an
type or a
.I ssize_t
type.
-.SH STANDARDS
-POSIX.1-2001 and later.
.SH SEE ALSO
.BR regex (3)
diff --git a/man3type/size_t.3type b/man3type/size_t.3type
index 6a71be7a8..97633a976 100644
--- a/man3type/size_t.3type
+++ b/man3type/size_t.3type
@@ -84,9 +84,22 @@ by converting the value to
.I intmax_t
and using its length modifier
.RB ( j ).
-.SH VERSIONS
+.SH STANDARDS
.TP
.I size_t
+C11, POSIX.1-2008.
+.TP
+.I ssize_t
+POSIX.1-2008.
+.PD
+.SH HISTORY
+.TP
+.I size_t
+C89, POSIX.1-2001.
+.TP
+.I ssize_t
+POSIX.1-2001.
+.PP
.IR <aio.h> ,
.IR <glob.h> ,
.IR <grp.h> ,
@@ -99,8 +112,7 @@ and
define
.I size_t
since POSIX.1-2008.
-.TP
-.I ssize_t
+.PP
.IR <aio.h> ,
.IR <mqueue.h> ,
and
@@ -108,15 +120,6 @@ and
define
.I ssize_t
since POSIX.1-2008.
-.SH STANDARDS
-.PD 0
-.IR size_t :
-C99 and later;
-POSIX.1-2001 and later.
-.PP
-.IR ssize_t :
-POSIX.1-2001 and later.
-.PD
.SH NOTES
.TP
.I size_t
diff --git a/man3type/sockaddr.3type b/man3type/sockaddr.3type
index 319a5e552..32c3c5bd0 100644
--- a/man3type/sockaddr.3type
+++ b/man3type/sockaddr.3type
@@ -109,7 +109,9 @@ stored in network byte order.
.I sockaddr_un
Describes a UNIX domain socket address.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
.I socklen_t
is also defined in
diff --git a/man3type/stat.3type b/man3type/stat.3type
index 5f6e07886..c511b4337 100644
--- a/man3type/stat.3type
+++ b/man3type/stat.3type
@@ -116,7 +116,11 @@ This is the file's last status change timestamp
.PP
For further information on the above fields, see
.BR inode (7).
-.SH VERSIONS
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
Old kernels and old standards did not support nanosecond timestamp fields.
Instead, there were three timestamp
.RI fields\[em] st_atime ,
@@ -150,8 +154,6 @@ is defined.
If none of the aforementioned macros are defined,
then the nanosecond values are exposed with names of the form
.IR st_atimensec .
-.SH STANDARDS
-POSIX.1-2001 and later.
.SH NOTES
The following header also provides this type:
.IR <ftw.h> .
diff --git a/man3type/time_t.3type b/man3type/time_t.3type
index 0808236c9..1b9607358 100644
--- a/man3type/time_t.3type
+++ b/man3type/time_t.3type
@@ -45,38 +45,43 @@ It is an unsigned integer type
capable of storing values al least in the range
.RB [ 0 ,
.BR 1000000 ].
-.SH VERSIONS
+.SH STANDARDS
+.TP
+.I time_t
+C11, POSIX.1-2008.
+.TP
+.I suseconds_t
+.TQ
+.I useconds_t
+POSIX.1-2008.
+.PD
+.SH HISTORY
.TP
.I time_t
+C89, POSIX.1-2001.
+.TP
+.I suseconds_t
+.TQ
+.I useconds_t
+POSIX.1-2001.
+.PP
.I <sched.h>
defines
.I time_t
since POSIX.1-2008.
-.TP
-.I suseconds_t
+.PP
POSIX.1-2001 defined
.I useconds_t
in
.I <unistd.h>
too.
-.SH STANDARDS
-.PD 0
-.IR time_t :
-C99 and later;
-POSIX.1-2001 and later.
-.PP
-.IR suseconds_t ,
-.IR useconds_t :
-POSIX.1-2001 and later.
-.PD
.SH NOTES
On some architectures,
the width of
.I time_t
can be controlled with the feature test macro
.BR _TIME_BITS .
-.TP
-.I time_t
+.PP
The following headers also provide
.IR time_t :
.IR <sched.h> ,
@@ -89,8 +94,7 @@ The following headers also provide
.IR <sys/types.h> ,
and
.IR <utime.h> .
-.TP
-.I suseconds_t
+.PP
The following headers also provide
.IR suseconds_t :
.I <sys/select.h>
diff --git a/man3type/timer_t.3type b/man3type/timer_t.3type
index 1f5e8bcae..6470855f7 100644
--- a/man3type/timer_t.3type
+++ b/man3type/timer_t.3type
@@ -20,7 +20,9 @@ Standard C library
Used for timer ID returned by
.BR timer_create (2).
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following header also provides
.IR timer_t :
diff --git a/man3type/timespec.3type b/man3type/timespec.3type
index 53a99de72..b5028a105 100644
--- a/man3type/timespec.3type
+++ b/man3type/timespec.3type
@@ -32,14 +32,15 @@ and
.I long long
on X32.
It can be safely down-cast to any concrete 32-bit integer type for processing.
-.SH STANDARDS
-C11 and later;
-POSIX.1-2001 and later.
.SH VERSIONS
Prior to C23,
.I tv_nsec
was
.IR long .
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following headers also provide this type:
.IR <aio.h> ,
diff --git a/man3type/timeval.3type b/man3type/timeval.3type
index 36a7a4820..c8963ef4a 100644
--- a/man3type/timeval.3type
+++ b/man3type/timeval.3type
@@ -22,7 +22,9 @@ Standard C library
.SH DESCRIPTION
Describes times in seconds and microseconds.
.SH STANDARDS
-POSIX.1-2001 and later.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH NOTES
The following headers also provide this type:
.IR <sys/resource.h> ,
diff --git a/man3type/tm.3type b/man3type/tm.3type
index 79e0cfc25..e203b15e7 100644
--- a/man3type/tm.3type
+++ b/man3type/tm.3type
@@ -75,21 +75,6 @@ UTC doesn't permit double leap seconds,
so it was limited to
.B 60
in C99.
-.SH STANDARDS
-C90 and later;
-POSIX.1-2001 and later.
-.PP
-.I tm_gmtoff
-and
-.I tm_zone
-originate from 4.3BSD-Tahoe (where
-.I tm_zone
-is a
-.IR "char *" ).
-.SH NOTES
-.I tm_sec
-can represent a leap second with the value
-.BR 60 .
.PP
.BR timezone (3),
as a variable, is an XSI extension: some systems provide the V7-compatible
@@ -104,6 +89,22 @@ field provides an alternative (with the opposite sign) for those systems.
points to static storage and may be overridden on subsequent calls to
.BR localtime (3)
and similar functions (however, this never happens under glibc).
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
+.PP
+.I tm_gmtoff
+and
+.I tm_zone
+originate from 4.3BSD-Tahoe (where
+.I tm_zone
+is a
+.IR "char *" ).
+.SH NOTES
+.I tm_sec
+can represent a leap second with the value
+.BR 60 .
.SH SEE ALSO
.BR ctime (3),
.BR strftime (3),
diff --git a/man3type/va_list.3type b/man3type/va_list.3type
index 004860d5c..08b1abfdd 100644
--- a/man3type/va_list.3type
+++ b/man3type/va_list.3type
@@ -28,8 +28,9 @@ and
.BR va_end (3)
to traverse the list of arguments.
.SH STANDARDS
-C99 and later;
-POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH NOTES
The following headers also provide
.IR va_list :
diff --git a/man3type/void.3type b/man3type/void.3type
index ddcbf482f..c8a638a78 100644
--- a/man3type/void.3type
+++ b/man3type/void.3type
@@ -65,8 +65,9 @@ The POSIX requirement about compatibility between
and function pointers was added in
POSIX.1-2008 Technical Corrigendum 1 (2013).
.SH STANDARDS
-C99 and later;
-POSIX.1-2001 and later.
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
.SH SEE ALSO
.BR malloc (3),
.BR memcmp (3),
diff --git a/man4/fuse.4 b/man4/fuse.4
index 0d9ed06ac..64d798bff 100644
--- a/man4/fuse.4
+++ b/man4/fuse.4
@@ -491,7 +491,7 @@ Returned from operations on a
.I /dev/fuse
file descriptor that has not been mounted.
.SH STANDARDS
-The FUSE filesystem is Linux-specific.
+Linux.
.SH NOTES
The following messages are not yet documented in this manual page:
.PP
diff --git a/man5/acct.5 b/man5/acct.5
index 0665dd361..d879dfde0 100644
--- a/man5/acct.5
+++ b/man5/acct.5
@@ -129,13 +129,14 @@ struct acct_v3 {
.EE
.in
.SH VERSIONS
-The
-.I acct_v3
-structure is defined since glibc 2.6.
-.SH STANDARDS
-Process accounting originated on BSD.
Although it is present on most systems, it is not standardized,
and the details vary somewhat between systems.
+.SH STANDARDS
+None.
+.SH HISTORY
+glibc 2.6.
+.PP
+Process accounting originated on BSD.
.SH NOTES
Records in the accounting file are ordered by termination time of
the process.
diff --git a/man5/sysfs.5 b/man5/sysfs.5
index 930c9714b..26effac12 100644
--- a/man5/sysfs.5
+++ b/man5/sysfs.5
@@ -251,14 +251,10 @@ This information is mainly used for debugging.
.TP
.I /sys/power
[To be documented]
-.SH VERSIONS
-The
-.B sysfs
-filesystem first appeared in Linux 2.6.0.
.SH STANDARDS
-The
-.B sysfs
-filesystem is Linux-specific.
+Linux.
+.SH HISTORY
+Linux 2.6.0.
.SH NOTES
This manual page is incomplete, possibly inaccurate, and is the kind
of thing that needs to be updated very often.
diff --git a/man5/utmp.5 b/man5/utmp.5
index d1017f818..eefb8241c 100644
--- a/man5/utmp.5
+++ b/man5/utmp.5
@@ -217,7 +217,7 @@ removed, record-keeping is turned off.
.I /var/run/utmp
.br
.I /var/log/wtmp
-.SH STANDARDS
+.SH VERSIONS
POSIX.1 does not specify a
.I utmp
structure, but rather one named
@@ -242,7 +242,9 @@ Linux defines the
structure to be the same as the
.I utmp
structure.
-.SS Comparison with historical systems
+.SH STANDARDS
+Linux.
+.SH HISTORY
Linux utmp entries conform neither to v7/BSD nor to System V; they are a
mix of the two.
.PP
diff --git a/man7/aio.7 b/man7/aio.7
index 5a9dc4ff1..84613b622 100644
--- a/man7/aio.7
+++ b/man7/aio.7
@@ -139,10 +139,11 @@ field of the
structure was less than 0,
or was greater than the limit returned by the call
.IR sysconf(_SC_AIO_PRIO_DELTA_MAX) .
-.SH VERSIONS
-The POSIX AIO interfaces are provided by glibc since glibc 2.1.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+glibc 2.1.
.SH NOTES
It is a good idea to zero out the control block buffer before use (see
.BR memset (3)).
diff --git a/man7/cgroup_namespaces.7 b/man7/cgroup_namespaces.7
index b1b0c4129..cb7778695 100644
--- a/man7/cgroup_namespaces.7
+++ b/man7/cgroup_namespaces.7
@@ -161,7 +161,7 @@ sh2# \fBcat /proc/self/mountinfo | grep freezer\fP
.in
.\"
.SH STANDARDS
-Namespaces are a Linux-specific feature.
+Linux.
.SH NOTES
Use of cgroup namespaces requires a kernel that is configured with the
.B CONFIG_CGROUPS
diff --git a/man7/credentials.7 b/man7/credentials.7
index 02f8f8aa3..77cb5e0ef 100644
--- a/man7/credentials.7
+++ b/man7/credentials.7
@@ -302,6 +302,7 @@ Process IDs, parent process IDs, process group IDs, and session IDs
are specified in POSIX.1.
The real, effective, and saved set user and groups IDs,
and the supplementary group IDs, are specified in POSIX.1.
+.PP
The filesystem user and group IDs are a Linux extension.
.SH NOTES
Various fields in the
diff --git a/man7/epoll.7 b/man7/epoll.7
index ffb409a51..1e8679946 100644
--- a/man7/epoll.7
+++ b/man7/epoll.7
@@ -574,20 +574,18 @@ event for file descriptor 13 in your batch processing,
you will discover the file descriptor had been
previously removed and there will be no confusion.
.SH VERSIONS
-The
-.B epoll
-API was introduced in Linux kernel 2.5.44.
-.\" Its interface should be finalized in Linux kernel 2.5.66.
-Support was added in glibc 2.3.2.
-.SH STANDARDS
-The
-.B epoll
-API is Linux-specific.
-Some other systems provide similar
-mechanisms, for example, FreeBSD has
+Some other systems provide similar mechanisms;
+for example,
+FreeBSD has
.IR kqueue ,
and Solaris has
.IR /dev/poll .
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 2.5.44.
+.\" Its interface should be finalized in Linux 2.5.66.
+glibc 2.3.2.
.SH NOTES
The set of file descriptors that is being monitored via
an epoll file descriptor can be viewed via the entry for
diff --git a/man7/fanotify.7 b/man7/fanotify.7
index 6ebb98ada..3963e7420 100644
--- a/man7/fanotify.7
+++ b/man7/fanotify.7
@@ -906,12 +906,12 @@ The file descriptor
in the response structure is not valid.
This may occur when a response for the permission event has already been
written.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
The fanotify API was introduced in Linux 2.6.36 and
enabled in Linux 2.6.37.
-Fdinfo support was added in Linux 3.8.
-.SH STANDARDS
-The fanotify API is Linux-specific.
+fdinfo support was added in Linux 3.8.
.SH NOTES
The fanotify API is available only if the kernel was built with the
.B CONFIG_FANOTIFY
diff --git a/man7/feature_test_macros.7 b/man7/feature_test_macros.7
index 4dc9b9594..344c7e47a 100644
--- a/man7/feature_test_macros.7
+++ b/man7/feature_test_macros.7
@@ -765,8 +765,6 @@ POSIX.1 specifies
and
.BR _XOPEN_SOURCE .
.PP
-.B _XOPEN_SOURCE_EXTENDED
-was specified by XPG4v2 (aka SUSv1), but is not present in SUSv2 and later.
.B _FILE_OFFSET_BITS
is not specified by any standard,
but is employed on some other implementations.
@@ -781,6 +779,10 @@ but is employed on some other implementations.
and
.B _THREAD_SAFE
are specific to glibc.
+.SH HISTORY
+.PP
+.B _XOPEN_SOURCE_EXTENDED
+was specified by XPG4v2 (aka SUSv1), but is not present in SUSv2 and later.
.SH NOTES
.I <features.h>
is a Linux/glibc-specific header file.
diff --git a/man7/inode.7 b/man7/inode.7
index c97fb6ab3..dc2c38d1d 100644
--- a/man7/inode.7
+++ b/man7/inode.7
@@ -426,6 +426,10 @@ in that directory can be renamed or deleted only by the owner
of the file, by the owner of the directory, and by a privileged
process.
.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
POSIX.1-1990 did not describe the
.BR S_IFMT ,
.BR S_IFSOCK ,
@@ -441,16 +445,13 @@ constants, but instead specified the use of
the macros
.BR S_ISDIR ()
and so on.
-The
-.B S_IF*
-constants are present in POSIX.1-2001 and later.
.PP
The
.BR S_ISLNK ()
and
.BR S_ISSOCK ()
macros were not in
-POSIX.1-1996, but both are present in POSIX.1-2001;
+POSIX.1-1996;
the former is from SVID 4, the latter from SUSv2.
.PP
UNIX\ V7 (and later systems) had
diff --git a/man7/inotify.7 b/man7/inotify.7
index 4b9fa0200..78ec0317f 100644
--- a/man7/inotify.7
+++ b/man7/inotify.7
@@ -575,7 +575,9 @@ that can be created per real user ID.
.I /proc/sys/fs/inotify/max_user_watches
This specifies an upper limit on the number of watches
that can be created per real user ID.
-.SH VERSIONS
+.SH STANDARDS
+Linux.
+.SH HISTORY
Inotify was merged into Linux 2.6.13.
The required library interfaces were added in glibc 2.4.
.RB ( IN_DONT_FOLLOW ,
@@ -583,8 +585,6 @@ The required library interfaces were added in glibc 2.4.
and
.B IN_ONLYDIR
were added in glibc 2.5.)
-.SH STANDARDS
-The inotify API is Linux-specific.
.SH NOTES
Inotify file descriptors can be monitored using
.BR select (2),
diff --git a/man7/man-pages.7 b/man7/man-pages.7
index 610171e4b..d63f2d8f2 100644
--- a/man7/man-pages.7
+++ b/man7/man-pages.7
@@ -151,6 +151,7 @@ FILES
ATTRIBUTES [Normally only in Sections 2, 3]
VERSIONS [Normally only in Sections 2, 3]
STANDARDS
+HISTORY
NOTES
CAVEATS
BUGS
@@ -341,12 +342,35 @@ See
for further details.
.TP
.B VERSIONS
+A summary of systems where the API performs differently,
+or where there's a similar API.
+.TP
+.B STANDARDS
+A description of any standards or conventions that relate to the function
+or command described by the manual page.
+.IP
+The preferred terms to use for the various standards are listed as
+headings in
+.BR standards (7).
+.IP
+This section should note the current standards to which the API conforms to.
+.IP
+If the API is not governed by any standards but commonly
+exists on other systems, note them.
+If the call is Linux-specific or GNU-specific, note this.
+If it's available in the BSDs, note that.
+.IP
+If this section consists of just a list of standards
+(which it commonly does),
+terminate the list with a period (\[aq].\[aq]).
+.TP
+.B HISTORY
A brief summary of the Linux kernel or glibc versions where a
system call or library function appeared,
or changed significantly in its operation.
.IP
As a general rule, every new interface should
-include a VERSIONS section in its manual page.
+include a HISTORY section in its manual page.
Unfortunately,
many existing manual pages don't include this information
(since there was no policy to do so when they were written).
@@ -362,31 +386,11 @@ The
.BR syscalls (2)
manual page also provides information about kernel versions
in which various system calls first appeared.
-.TP
-.B STANDARDS
-A description of any standards or conventions that relate to the function
-or command described by the manual page.
-.IP
-The preferred terms to use for the various standards are listed as
-headings in
-.BR standards (7).
-.IP
-For a page in Section 2 or 3,
-this section should note the POSIX.1
-version(s) that the call conforms to,
-and also whether the call is specified in C99.
-(Don't worry too much about other standards like SUS, SUSv2, and XPG,
-or the SVr4 and 4.xBSD implementation standards,
-unless the call was specified in those standards,
-but isn't in the current version of POSIX.1.)
-.IP
-If the call is not governed by any standards but commonly
-exists on other systems, note them.
-If the call is Linux-specific, note this.
-.IP
-If this section consists of just a list of standards
-(which it commonly does),
-terminate the list with a period (\[aq].\[aq]).
+.PP
+Old versions of standards should be mentioned here,
+rather than in STANDARDS,
+for example,
+SUS, SUSv2, and XPG, or the SVr4 and 4.xBSD implementation standards.
.TP
.B NOTES
Miscellaneous notes.
diff --git a/man7/mount_namespaces.7 b/man7/mount_namespaces.7
index c40aae96b..b17f86a4c 100644
--- a/man7/mount_namespaces.7
+++ b/man7/mount_namespaces.7
@@ -977,10 +977,10 @@ mount point before the
.BR chroot (1)
was performed).
.\"
-.SH VERSIONS
-Mount namespaces first appeared in Linux 2.4.19.
.SH STANDARDS
-Namespaces are a Linux-specific feature.
+Linux.
+.SH HISTORY
+Linux 2.4.19.
.\"
.SH NOTES
The propagation type assigned to a new mount depends
diff --git a/man7/numa.7 b/man7/numa.7
index f5a314b56..c6ea67514 100644
--- a/man7/numa.7
+++ b/man7/numa.7
@@ -126,7 +126,7 @@ removed from memory by the swapper soon.
.I writeback=<pages>
Number of pages that are currently being written out to disk.
.SH STANDARDS
-No standards govern NUMA interfaces.
+None.
.SH NOTES
The Linux NUMA system calls and
.I /proc
diff --git a/man7/pid_namespaces.7 b/man7/pid_namespaces.7
index d32985485..78d0e0986 100644
--- a/man7/pid_namespaces.7
+++ b/man7/pid_namespaces.7
@@ -370,7 +370,7 @@ in
it is translated into the corresponding PID value in
the receiving process's PID namespace.
.SH STANDARDS
-Namespaces are a Linux-specific feature.
+Linux.
.SH EXAMPLES
See
.BR user_namespaces (7).
diff --git a/man7/queue.7 b/man7/queue.7
index 83851c7a1..128fa8a5a 100644
--- a/man7/queue.7
+++ b/man7/queue.7
@@ -115,8 +115,8 @@ However:
.IP \[bu] 3
The termination condition for traversal is more complex.
.SH STANDARDS
-Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
-Present on the BSDs.
+BSD.
+.SH HISTORY
.I <sys/queue.h>
macros first appeared in 4.4BSD.
.SH NOTES
diff --git a/man7/rtld-audit.7 b/man7/rtld-audit.7
index ca47427c3..c5d4fdddc 100644
--- a/man7/rtld-audit.7
+++ b/man7/rtld-audit.7
@@ -455,12 +455,14 @@ is ignored.
.\" symbol binding should return the value of the 'retval' argument
.\" (not provided by GNU, but equivalent to returning outregs->lrv_eax
.\" on (say) x86-32).
-.SH STANDARDS
-This API is nonstandard, but very similar to the Solaris API,
+.SH VERSIONS
+This API is very similar to the Solaris API
described in the Solaris
.IR "Linker and Libraries Guide" ,
in the chapter
.IR "Runtime Linker Auditing Interface" .
+.SH STANDARDS
+None.
.SH NOTES
Note the following differences from the Solaris dynamic linker
auditing API:
diff --git a/man7/sock_diag.7 b/man7/sock_diag.7
index e75dc4d1a..6dfed2c35 100644
--- a/man7/sock_diag.7
+++ b/man7/sock_diag.7
@@ -617,7 +617,7 @@ and
.B INET_DIAG_SKMEMINFO
were introduced in Linux 3.6.
.SH STANDARDS
-The NETLINK_SOCK_DIAG API is Linux-specific.
+Linux.
.SH EXAMPLES
The following example program prints inode number, peer's inode number,
and name of all UNIX domain sockets in the current namespace.
diff --git a/man7/user_namespaces.7 b/man7/user_namespaces.7
index 737dd54ad..3c376a9f0 100644
--- a/man7/user_namespaces.7
+++ b/man7/user_namespaces.7
@@ -1013,7 +1013,7 @@ they are translated into the corresponding values as per the
receiving process's user and group ID mappings.
.\"
.SH STANDARDS
-Namespaces are a Linux-specific feature.
+Linux.
.\"
.SH NOTES
Over the years, there have been a lot of features that have been added