summaryrefslogtreecommitdiffstats
path: root/man3type
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:40:15 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:40:15 +0000
commit399644e47874bff147afb19c89228901ac39340e (patch)
tree1c4c0b733f4c16b5783b41bebb19194a9ef62ad1 /man3type
parentInitial commit. (diff)
downloadmanpages-399644e47874bff147afb19c89228901ac39340e.tar.xz
manpages-399644e47874bff147afb19c89228901ac39340e.zip
Adding upstream version 6.05.01.upstream/6.05.01
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man3type')
-rw-r--r--man3type/FILE.3type36
-rw-r--r--man3type/aiocb.3type42
-rw-r--r--man3type/blkcnt_t.3type30
-rw-r--r--man3type/blksize_t.3type30
-rw-r--r--man3type/cc_t.3type35
-rw-r--r--man3type/clock_t.3type37
-rw-r--r--man3type/clockid_t.3type28
-rw-r--r--man3type/dev_t.3type33
-rw-r--r--man3type/div_t.3type58
-rw-r--r--man3type/double_t.3type56
-rw-r--r--man3type/epoll_data.3type1
-rw-r--r--man3type/epoll_data_t.3type1
-rw-r--r--man3type/epoll_event.3type55
-rw-r--r--man3type/fenv_t.3type35
-rw-r--r--man3type/fexcept_t.3type1
-rw-r--r--man3type/float_t.3type1
-rw-r--r--man3type/gid_t.3type1
-rw-r--r--man3type/id_t.3type110
-rw-r--r--man3type/imaxdiv_t.3type1
-rw-r--r--man3type/in6_addr.3type1
-rw-r--r--man3type/in_addr.3type1
-rw-r--r--man3type/in_addr_t.3type1
-rw-r--r--man3type/in_port_t.3type1
-rw-r--r--man3type/int16_t.3type1
-rw-r--r--man3type/int32_t.3type1
-rw-r--r--man3type/int64_t.3type1
-rw-r--r--man3type/int8_t.3type1
-rw-r--r--man3type/intN_t.3type177
-rw-r--r--man3type/intmax_t.3type97
-rw-r--r--man3type/intptr_t.3type107
-rw-r--r--man3type/iovec.3type49
-rw-r--r--man3type/itimerspec.3type33
-rw-r--r--man3type/lconv.3type56
-rw-r--r--man3type/ldiv_t.3type1
-rw-r--r--man3type/lldiv_t.3type1
-rw-r--r--man3type/loff_t.3type1
-rw-r--r--man3type/mode_t.3type40
-rw-r--r--man3type/off64_t.3type1
-rw-r--r--man3type/off_t.3type92
-rw-r--r--man3type/pid_t.3type1
-rw-r--r--man3type/printf_arginfo_size_function.3type1
-rw-r--r--man3type/printf_function.3type1
-rw-r--r--man3type/printf_info.3type1
-rw-r--r--man3type/printf_va_arg_function.3type1
-rw-r--r--man3type/ptrdiff_t.3type47
-rw-r--r--man3type/regex_t.3type1
-rw-r--r--man3type/regmatch_t.3type1
-rw-r--r--man3type/regoff_t.3type1
-rw-r--r--man3type/sa_family_t.3type1
-rw-r--r--man3type/sigevent.3type1
-rw-r--r--man3type/siginfo_t.3type1
-rw-r--r--man3type/sigset_t.3type1
-rw-r--r--man3type/sigval.3type1
-rw-r--r--man3type/size_t.3type181
-rw-r--r--man3type/sockaddr.3type154
-rw-r--r--man3type/sockaddr_in.3type1
-rw-r--r--man3type/sockaddr_in6.3type1
-rw-r--r--man3type/sockaddr_storage.3type1
-rw-r--r--man3type/sockaddr_un.3type1
-rw-r--r--man3type/socklen_t.3type1
-rw-r--r--man3type/speed_t.3type1
-rw-r--r--man3type/ssize_t.3type1
-rw-r--r--man3type/stat.3type162
-rw-r--r--man3type/suseconds_t.3type1
-rw-r--r--man3type/tcflag_t.3type1
-rw-r--r--man3type/time_t.3type109
-rw-r--r--man3type/timer_t.3type34
-rw-r--r--man3type/timespec.3type60
-rw-r--r--man3type/timeval.3type43
-rw-r--r--man3type/tm.3type112
-rw-r--r--man3type/uid_t.3type1
-rw-r--r--man3type/uint16_t.3type1
-rw-r--r--man3type/uint32_t.3type1
-rw-r--r--man3type/uint64_t.3type1
-rw-r--r--man3type/uint8_t.3type1
-rw-r--r--man3type/uintN_t.3type1
-rw-r--r--man3type/uintmax_t.3type1
-rw-r--r--man3type/uintptr_t.3type1
-rw-r--r--man3type/useconds_t.3type1
-rw-r--r--man3type/va_list.3type44
-rw-r--r--man3type/void.3type76
81 files changed, 2307 insertions, 0 deletions
diff --git a/man3type/FILE.3type b/man3type/FILE.3type
new file mode 100644
index 0000000..6edeeb4
--- /dev/null
+++ b/man3type/FILE.3type
@@ -0,0 +1,36 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH FILE 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+FILE \- input/output stream
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.PP
+.BR typedef " /* ... */ " FILE;
+.fi
+.SH DESCRIPTION
+An object type used for streams.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
+.SH NOTES
+The following header also provides this type:
+.IR <wchar.h> .
+.SH SEE ALSO
+.BR fclose (3),
+.BR flockfile (3),
+.BR fopen (3),
+.BR fprintf (3),
+.BR fread (3),
+.BR fscanf (3),
+.BR stdin (3),
+.BR stdio (3)
diff --git a/man3type/aiocb.3type b/man3type/aiocb.3type
new file mode 100644
index 0000000..45739e2
--- /dev/null
+++ b/man3type/aiocb.3type
@@ -0,0 +1,42 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH aiocb 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+aiocb \- asynchronous I/O control block
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <aio.h>
+.PP
+.B struct aiocb {
+.BR " int aio_fildes;" " /* File descriptor */"
+.BR " off_t aio_offset;" " /* File offset */"
+.BR " volatile void *aio_buf;" " /* Location of buffer */"
+.BR " size_t aio_nbytes;" " /* Length of transfer */"
+.BR " int aio_reqprio;" " /* Request priority offset */"
+.BR " struct sigevent aio_sigevent;" " /* Signal number and value */"
+.BR " int aio_lio_opcode;" " /* Operation to be performed */"
+.B };
+.EE
+.SH DESCRIPTION
+For further information about this structure, see
+.BR aio (7).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH SEE ALSO
+.BR aio_cancel (3),
+.BR aio_error (3),
+.BR aio_fsync (3),
+.BR aio_read (3),
+.BR aio_return (3),
+.BR aio_suspend (3),
+.BR aio_write (3),
+.BR lio_listio (3)
diff --git a/man3type/blkcnt_t.3type b/man3type/blkcnt_t.3type
new file mode 100644
index 0000000..5cdacdc
--- /dev/null
+++ b/man3type/blkcnt_t.3type
@@ -0,0 +1,30 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH blkcnt_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+blkcnt_t \- file block counts
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " blkcnt_t;
+.fi
+.SH DESCRIPTION
+Used for file block counts.
+It is a signed integer type.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following header also provides this type:
+.IR <sys/stat.h> .
+.SH SEE ALSO
+.BR stat (3type)
diff --git a/man3type/blksize_t.3type b/man3type/blksize_t.3type
new file mode 100644
index 0000000..5406a88
--- /dev/null
+++ b/man3type/blksize_t.3type
@@ -0,0 +1,30 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH blksize_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+blksize_t \- file block sizes
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " blksize_t;
+.fi
+.SH DESCRIPTION
+Used for file block sizes.
+It is a signed integer type.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following header also provides this type:
+.IR <sys/stat.h> .
+.SH SEE ALSO
+.BR stat (3type)
diff --git a/man3type/cc_t.3type b/man3type/cc_t.3type
new file mode 100644
index 0000000..33d5829
--- /dev/null
+++ b/man3type/cc_t.3type
@@ -0,0 +1,35 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH cc_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+cc_t, speed_t, tcflag_t \- terminal special characters, baud rates, modes
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <termios.h>
+.PP
+.BR typedef " /* ... */ " cc_t;
+.BR typedef " /* ... */ " speed_t;
+.BR typedef " /* ... */ " tcflag_t;
+.fi
+.SH DESCRIPTION
+.I cc_t
+is used for terminal special characters,
+.I speed_t
+for baud rates, and
+.I tcflag_t
+for modes.
+.PP
+All are unsigned integer types.
+.SH STANDARDS
+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
new file mode 100644
index 0000000..e1346e3
--- /dev/null
+++ b/man3type/clock_t.3type
@@ -0,0 +1,37 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH clock_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+clock_t \- system time
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <time.h>
+.PP
+.BR typedef " /* ... */ " clock_t;
+.fi
+.SH DESCRIPTION
+Used for system time in clock ticks or
+.B CLOCKS_PER_SEC
+(defined in
+.IR <time.h> ).
+According to POSIX,
+it is an integer type or a real-floating type.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
+.SH NOTES
+The following headers also provide this type:
+.I <sys/types.h>
+and
+.IR <sys/time.h> .
+.SH SEE ALSO
+.BR times (2),
+.BR clock (3)
diff --git a/man3type/clockid_t.3type b/man3type/clockid_t.3type
new file mode 100644
index 0000000..bc9a3b8
--- /dev/null
+++ b/man3type/clockid_t.3type
@@ -0,0 +1,28 @@
+.TH clockid_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+clockid_t \- clock ID for the clock and timer functions
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " clockid_t;
+.fi
+.SH DESCRIPTION
+Used for clock ID type in the clock and timer functions.
+It is defined as an arithmetic type.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following header also provides this type:
+.IR <time.h> .
+.SH SEE ALSO
+.BR clock_adjtime (2),
+.BR clock_getres (2),
+.BR clock_nanosleep (2),
+.BR timer_create (2),
+.BR clock_getcpuclockid (3)
diff --git a/man3type/dev_t.3type b/man3type/dev_t.3type
new file mode 100644
index 0000000..e4c4ae9
--- /dev/null
+++ b/man3type/dev_t.3type
@@ -0,0 +1,33 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH dev_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+dev_t \- device ID
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " dev_t;
+.fi
+.SH DESCRIPTION
+Used for device IDs.
+It is an integer type.
+For further details of this type, see
+.BR makedev (3).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following header also provides this type:
+.IR <sys/stat.h> .
+.SH SEE ALSO
+.BR mknod (2),
+.BR stat (3type)
diff --git a/man3type/div_t.3type b/man3type/div_t.3type
new file mode 100644
index 0000000..f0bce13
--- /dev/null
+++ b/man3type/div_t.3type
@@ -0,0 +1,58 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH div_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+div_t, ldiv_t, lldiv_t, imaxdiv_t \-
+quotient and remainder of an integer division
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <stdlib.h>
+.PP
+.B typedef struct {
+.BR " int quot;" " /* Quotient */"
+.BR " int rem;" " /* Remainder */"
+.B } div_t;
+.PP
+.B typedef struct {
+.BR " long quot;" " /* Quotient */"
+.BR " long rem;" " /* Remainder */"
+.B } ldiv_t;
+.PP
+.B typedef struct {
+.BR " long long quot;" " /* Quotient */"
+.BR " long long rem;" " /* Remainder */"
+.B } lldiv_t;
+.PP
+.B #include <inttypes.h>
+.PP
+.B typedef struct {
+.BR " intmax_t quot;" " /* Quotient */"
+.BR " intmax_t rem;" " /* Remainder */"
+.B } imaxdiv_t;
+.EE
+.SH DESCRIPTION
+.RI [[ l ] l ] div_t
+is the type of the value returned by the
+.RB [[ l ] l ] div (3)
+function.
+.PP
+.I imaxdiv_t
+is the type of the value returned by the
+.BR imaxdiv (3)
+function.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+.SH SEE ALSO
+.BR div (3),
+.BR imaxdiv (3),
+.BR ldiv (3),
+.BR lldiv (3)
diff --git a/man3type/double_t.3type b/man3type/double_t.3type
new file mode 100644
index 0000000..ca200af
--- /dev/null
+++ b/man3type/double_t.3type
@@ -0,0 +1,56 @@
+'\" t
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH double_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+float_t, double_t \- most efficient floating types
+.SH LIBRARY
+Math library
+.RI ( libm )
+.SH SYNOPSIS
+.nf
+.B #include <math.h>
+.PP
+.BR typedef " /* ... */ " float_t;
+.BR typedef " /* ... */ " double_t;
+.fi
+.SH DESCRIPTION
+The implementation's most efficient floating types at least as wide as
+.I float
+and
+.I double
+respectively.
+Their type depends on the value of the macro
+.B FLT_EVAL_METHOD
+(defined in
+.IR <float.h> ):
+.PP
+.TS
+lB rI rI.
+FLT_EVAL_METHOD float_t double_t
+.T&
+n rI rI.
+_
+0 float double
+1 double double
+2 long double long double
+.TE
+.PP
+For other values of
+.BR FLT_EVAL_METHOD ,
+the types of
+.I float_t
+and
+.I double_t
+are implementation-defined.
+.SH STANDARDS
+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_data.3type b/man3type/epoll_data.3type
new file mode 100644
index 0000000..033a55f
--- /dev/null
+++ b/man3type/epoll_data.3type
@@ -0,0 +1 @@
+.so man3type/epoll_event.3type
diff --git a/man3type/epoll_data_t.3type b/man3type/epoll_data_t.3type
new file mode 100644
index 0000000..033a55f
--- /dev/null
+++ b/man3type/epoll_data_t.3type
@@ -0,0 +1 @@
+.so man3type/epoll_event.3type
diff --git a/man3type/epoll_event.3type b/man3type/epoll_event.3type
new file mode 100644
index 0000000..0a9fa74
--- /dev/null
+++ b/man3type/epoll_event.3type
@@ -0,0 +1,55 @@
+.\" Copyright (c) 2022 by Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH epoll_event 3type 2023-07-08 "Linux man-pages 6.05.01"
+.SH NAME
+epoll_event, epoll_data, epoll_data_t
+\- epoll event
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <sys/epoll.h>
+.PP
+.B struct epoll_event {
+.BR " uint32_t events;" " /* Epoll events */"
+.BR " epoll_data_t data;" " /* User data variable */"
+.B };
+.PP
+.B union epoll_data {
+.B " void *ptr;"
+.B " int fd;"
+.B " uint32_t u32;"
+.B " uint64_t u64;"
+.B };
+.PP
+.B "typedef union epoll_data epoll_data_t;"
+.EE
+.SH DESCRIPTION
+The
+.I epoll_event
+structure specifies data that the kernel should save and
+return when the corresponding file descriptor becomes ready.
+.SH VERSIONS
+.SS C library/kernel differences
+The Linux kernel headers also provide this type,
+with a slightly different definition:
+.PP
+.in +4n
+.EX
+#include <linux/eventpoll.h>
+\&
+struct epoll_event {
+ __poll_t events;
+ __u64 data;
+};
+.EE
+.in
+.SH STANDARDS
+Linux.
+.SH SEE ALSO
+.BR epoll_wait (2),
+.BR epoll_ctl (2)
diff --git a/man3type/fenv_t.3type b/man3type/fenv_t.3type
new file mode 100644
index 0000000..95e036e
--- /dev/null
+++ b/man3type/fenv_t.3type
@@ -0,0 +1,35 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH fenv_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+fenv_t, fexcept_t \- floating-point environment
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <fenv.h>
+.PP
+.BR typedef " /* ... */ " fenv_t;
+.BR typedef " /* ... */ " fexcept_t;
+.fi
+.SH DESCRIPTION
+.I fenv_t
+represents the entire floating-point environment,
+including control modes and status flags.
+.PP
+.I fexcept_t
+represents the floating-point status flags collectively.
+.PP
+For further details see
+.BR fenv (3).
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+.SH SEE ALSO
+.BR fenv (3)
diff --git a/man3type/fexcept_t.3type b/man3type/fexcept_t.3type
new file mode 100644
index 0000000..5bedba0
--- /dev/null
+++ b/man3type/fexcept_t.3type
@@ -0,0 +1 @@
+.so man3type/fenv_t.3type
diff --git a/man3type/float_t.3type b/man3type/float_t.3type
new file mode 100644
index 0000000..104734c
--- /dev/null
+++ b/man3type/float_t.3type
@@ -0,0 +1 @@
+.so man3type/double_t.3type
diff --git a/man3type/gid_t.3type b/man3type/gid_t.3type
new file mode 100644
index 0000000..52bae74
--- /dev/null
+++ b/man3type/gid_t.3type
@@ -0,0 +1 @@
+.so man3type/id_t.3type
diff --git a/man3type/id_t.3type b/man3type/id_t.3type
new file mode 100644
index 0000000..9b30e47
--- /dev/null
+++ b/man3type/id_t.3type
@@ -0,0 +1,110 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH id_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+pid_t, uid_t, gid_t, id_t \- process/user/group identifier
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " pid_t;
+.BR typedef " /* ... */ " uid_t;
+.BR typedef " /* ... */ " gid_t;
+.BR typedef " /* ... */ " id_t;
+.fi
+.SH DESCRIPTION
+.I pid_t
+is a type used for storing process IDs, process group IDs, and session IDs.
+It is a signed integer type.
+.PP
+.I uid_t
+is a type used to hold user IDs.
+It is an integer type.
+.PP
+.I gid_t
+is a type used to hold group IDs.
+It is an integer type.
+.PP
+.I id_t
+is a type used to hold a general identifier.
+It is an integer type that can be used to contain a
+.IR pid_t ,
+.IR uid_t ,
+or
+.IR gid_t .
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following headers also provide
+.IR pid_t :
+.IR <fcntl.h> ,
+.IR <sched.h> ,
+.IR <signal.h> ,
+.IR <spawn.h> ,
+.IR <sys/msg.h> ,
+.IR <sys/sem.h> ,
+.IR <sys/shm.h> ,
+.IR <sys/wait.h> ,
+.IR <termios.h> ,
+.IR <time.h> ,
+.IR <unistd.h> ,
+and
+.IR <utmpx.h> .
+.PP
+The following headers also provide
+.IR uid_t :
+.IR <pwd.h> ,
+.IR <signal.h> ,
+.IR <stropts.h> ,
+.IR <sys/ipc.h> ,
+.IR <sys/stat.h> ,
+and
+.IR <unistd.h> .
+.PP
+The following headers also provide
+.IR gid_t :
+.IR <grp.h> ,
+.IR <pwd.h> ,
+.IR <signal.h> ,
+.IR <stropts.h> ,
+.IR <sys/ipc.h> ,
+.IR <sys/stat.h> ,
+and
+.IR <unistd.h> .
+.PP
+The following header also provides
+.IR id_t :
+.IR <sys/resource.h> .
+.SH SEE ALSO
+.BR chown (2),
+.BR fork (2),
+.BR getegid (2),
+.BR geteuid (2),
+.BR getgid (2),
+.BR getgroups (2),
+.BR getpgid (2),
+.BR getpid (2),
+.BR getppid (2),
+.BR getpriority (2),
+.BR getpwnam (3),
+.BR getresgid (2),
+.BR getresuid (2),
+.BR getsid (2),
+.BR gettid (2),
+.BR getuid (2),
+.BR kill (2),
+.BR pidfd_open (2),
+.BR sched_setscheduler (2),
+.BR waitid (2),
+.BR getgrnam (3),
+.BR sigqueue (3),
+.BR credentials (7)
diff --git a/man3type/imaxdiv_t.3type b/man3type/imaxdiv_t.3type
new file mode 100644
index 0000000..3ab8f34
--- /dev/null
+++ b/man3type/imaxdiv_t.3type
@@ -0,0 +1 @@
+.so man3type/div_t.3type
diff --git a/man3type/in6_addr.3type b/man3type/in6_addr.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/in6_addr.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/in_addr.3type b/man3type/in_addr.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/in_addr.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/in_addr_t.3type b/man3type/in_addr_t.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/in_addr_t.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/in_port_t.3type b/man3type/in_port_t.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/in_port_t.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/int16_t.3type b/man3type/int16_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/int16_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/int32_t.3type b/man3type/int32_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/int32_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/int64_t.3type b/man3type/int64_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/int64_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/int8_t.3type b/man3type/int8_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/int8_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/intN_t.3type b/man3type/intN_t.3type
new file mode 100644
index 0000000..56cd445
--- /dev/null
+++ b/man3type/intN_t.3type
@@ -0,0 +1,177 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH intN_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+intN_t, int8_t, int16_t, int32_t, int64_t,
+uintN_t, uint8_t, uint16_t, uint32_t, uint64_t
+\- fixed-width basic integer types
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stdint.h>
+.PP
+.BR typedef " /* ... */ " int8_t;
+.BR typedef " /* ... */ " int16_t;
+.BR typedef " /* ... */ " int32_t;
+.BR typedef " /* ... */ " int64_t;
+.PP
+.BR typedef " /* ... */ " uint8_t;
+.BR typedef " /* ... */ " uint16_t;
+.BR typedef " /* ... */ " uint32_t;
+.BR typedef " /* ... */ " uint64_t;
+.PP
+.B "#define INT8_WIDTH 8"
+.B "#define INT16_WIDTH 16"
+.B "#define INT32_WIDTH 32"
+.B "#define INT64_WIDTH 64"
+.PP
+.B "#define UINT8_WIDTH 8"
+.B "#define UINT16_WIDTH 16"
+.B "#define UINT32_WIDTH 32"
+.B "#define UINT64_WIDTH 64"
+.PP
+.BR "#define INT8_MAX " "/* 2**(INT8_WIDTH - 1) - 1 */"
+.BR "#define INT16_MAX " "/* 2**(INT16_WIDTH - 1) - 1 */"
+.BR "#define INT32_MAX " "/* 2**(INT32_WIDTH - 1) - 1 */"
+.BR "#define INT64_MAX " "/* 2**(INT64_WIDTH - 1) - 1 */"
+.PP
+.BR "#define INT8_MIN " "/* - 2**(INT8_WIDTH - 1) */"
+.BR "#define INT16_MIN " "/* - 2**(INT16_WIDTH - 1) */"
+.BR "#define INT32_MIN " "/* - 2**(INT32_WIDTH - 1) */"
+.BR "#define INT64_MIN " "/* - 2**(INT64_WIDTH - 1) */"
+.PP
+.BR "#define UINT8_MAX " "/* 2**INT8_WIDTH - 1 */"
+.BR "#define UINT16_MAX " "/* 2**INT16_WIDTH - 1 */"
+.BR "#define UINT32_MAX " "/* 2**INT32_WIDTH - 1 */"
+.BR "#define UINT64_MAX " "/* 2**INT64_WIDTH - 1 */"
+.PP
+.BI "#define INT8_C(" c ") " c " ## " "\fR/* ... */\fP"
+.BI "#define INT16_C(" c ") " c " ## " "\fR/* ... */\fP"
+.BI "#define INT32_C(" c ") " c " ## " "\fR/* ... */\fP"
+.BI "#define INT64_C(" c ") " c " ## " "\fR/* ... */\fP"
+.PP
+.BI "#define UINT8_C(" c ") " c " ## " "\fR/* ... */\fP"
+.BI "#define UINT16_C(" c ") " c " ## " "\fR/* ... */\fP"
+.BI "#define UINT32_C(" c ") " c " ## " "\fR/* ... */\fP"
+.BI "#define UINT64_C(" c ") " c " ## " "\fR/* ... */\fP"
+.fi
+.SH DESCRIPTION
+.IR int N _t
+are
+signed integer types
+of a fixed width of exactly N bits,
+.I N
+being the value specified in its type name.
+They are be capable of storing values in the range
+.RB [ INT \fIN\fP _MIN ,
+.BR INT \fIN\fP _MAX ],
+substituting
+.I N
+by the appropriate number.
+.PP
+.IR uint N _t
+are
+unsigned integer types
+of a fixed width of exactly N bits,
+N being the value specified in its type name.
+They are capable of storing values in the range
+.RB [ 0 ,
+.BR UINT \fIN\fP _MAX ],
+substituting
+.I N
+by the appropriate number.
+.PP
+According to POSIX,
+.RI [ u ] int8_t ,
+.RI [ u ] int16_t ,
+and
+.RI [ u ] int32_t
+are required;
+.RI [ u ] int64_t
+are only required in implementations that provide integer types with width 64;
+and all other types of this form are optional.
+.PP
+The macros
+.RB [ U ] INT \fIN\fP _WIDTH
+expand to the width in bits of these types
+.RI ( N ).
+.PP
+The macros
+.RB [ U ] INT \fIN\fP _MAX
+expand to the maximum value that these types can hold.
+.PP
+The macros
+.BI INT N _MIN
+expand to the minimum value that these types can hold.
+.PP
+The macros
+.RB [ U ] INT \fIN\fP _C ()
+expand their argument to an integer constant of type
+.RI [ u ] int N _t .
+.PP
+The length modifiers for the
+.RI [ u ] int N _t
+types for the
+.BR printf (3)
+family of functions
+are expanded by macros of the forms
+.BR PRId \fIN\fP,
+.BR PRIi \fIN\fP,
+.BR PRIu \fIN\fP,
+and
+.BI PRIx N
+(defined in
+.IR <inttypes.h> );
+resulting for example in
+.B %"PRId64"
+or
+.B %"PRIi64"
+for printing
+.I int64_t
+values.
+The length modifiers for the
+.RI [ u ] int N _t
+types for the
+.BR scanf (3)
+family of functions
+are expanded by macros of the forms
+.BR SCNd \fIN\fP,
+.BR SCNi \fIN\fP,
+.BR SCNu \fIN\fP,
+and
+.BI SCNx N,
+(defined in
+.IR <inttypes.h> );
+resulting for example in
+.B %"SCNu8"
+or
+.B %"SCNx8"
+for scanning
+.I uint8_t
+values.
+.SH STANDARDS
+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> .
+.I <arpa/inet.h>
+also provides
+.I uint16_t
+and
+.IR uint32_t .
+.SH SEE ALSO
+.BR intmax_t (3type),
+.BR intptr_t (3type),
+.BR printf (3)
diff --git a/man3type/intmax_t.3type b/man3type/intmax_t.3type
new file mode 100644
index 0000000..9048e63
--- /dev/null
+++ b/man3type/intmax_t.3type
@@ -0,0 +1,97 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH intmax_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+intmax_t, uintmax_t \- greatest-width basic integer types
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stdint.h>
+.PP
+.BR typedef " /* ... */ " intmax_t;
+.BR typedef " /* ... */ " uintmax_t;
+.PP
+.BR "#define INTMAX_WIDTH " "/* ... */"
+.B "#define UINTMAX_WIDTH INTMAX_WIDTH"
+.PP
+.BR "#define INTMAX_MAX " "/* 2**(INTMAX_WIDTH - 1) - 1 */"
+.BR "#define INTMAX_MIN " "/* - 2**(INTMAX_WIDTH - 1) */"
+.BR "#define UINTMAX_MAX " "/* 2**UINTMAX_WIDTH - 1 */"
+.PP
+.BI "#define INTMAX_C(" c ) " c " ## " \fR/* ... */\fP"
+.BI "#define UINTMAX_C(" c ) " c " ## " \fR/* ... */\fP"
+.fi
+.SH DESCRIPTION
+.I intmax_t
+is a signed integer type
+capable of representing any value of any basic signed integer type
+supported by the implementation.
+It is capable of storing values in the range
+.RB [ INTMAX_MIN ,
+.BR INTMAX_MAX ].
+.PP
+.I uintmax_t
+is an unsigned integer type
+capable of representing any value of any basic unsigned integer type
+supported by the implementation.
+It is capable of storing values in the range
+.RB [ 0 ,
+.BR UINTMAX_MAX ].
+.PP
+The macros
+.RB [ U ] INTMAX_WIDTH
+expand to the width in bits of these types.
+.PP
+The macros
+.RB [ U ] INTMAX_MAX
+expand to the maximum value that these types can hold.
+.PP
+The macro
+.B INTMAX_MIN
+expands to the minimum value that
+.I intmax_t
+can hold.
+.PP
+The macros
+.RB [ U ] INTMAX_C ()
+expand their argument to an integer constant of type
+.RI [ u ] intmax_t .
+.PP
+The length modifier for
+.RI [ u ] intmax_t
+for the
+.BR printf (3)
+and the
+.BR scanf (3)
+families of functions is
+.BR j ;
+resulting commonly in
+.BR %jd ,
+.BR %ji ,
+.BR %ju ,
+or
+.B %jx
+for printing
+.RI [ u ] intmax_t
+values.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+.SH NOTES
+The following header also provides these types:
+.IR <inttypes.h> .
+.SH BUGS
+These types may not be as large as extended integer types, such as
+.I __int128
+.SH SEE ALSO
+.BR int64_t (3type),
+.BR intptr_t (3type),
+.BR printf (3),
+.BR strtoimax (3)
diff --git a/man3type/intptr_t.3type b/man3type/intptr_t.3type
new file mode 100644
index 0000000..1bec12f
--- /dev/null
+++ b/man3type/intptr_t.3type
@@ -0,0 +1,107 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH intptr_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+intptr_t, uintptr_t \- integer types wide enough to hold pointers
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stdint.h>
+.PP
+.BR typedef " /* ... */ " intptr_t;
+.BR typedef " /* ... */ " uintptr_t;
+.PP
+.BR "#define INTPTR_WIDTH" " /* ... */"
+.B #define UINTPTR_WIDTH INTPTR_WIDTH
+.PP
+.BR "#define INTPTR_MAX" " /* 2**(INTPTR_WIDTH \- 1) \- 1 */"
+.BR "#define INTPTR_MIN" " /* \- 2**(INTPTR_WIDTH \- 1) */"
+.BR "#define UINTPTR_MAX" " /* 2**UINTPTR_WIDTH \- 1 */"
+.fi
+.SH DESCRIPTION
+.I intptr_t
+is a signed integer type
+such that any valid
+.RI ( "void *" )
+value can be converted to this type and then converted back.
+It is capable of storing values in the range
+.RB [ INTPTR_MIN ,
+.BR INTPTR_MAX ].
+.PP
+.I uintptr_t
+is an unsigned integer type
+such that any valid
+.RI ( "void *" )
+value can be converted to this type and then converted back.
+It is capable of storing values in the range
+.RB [ 0 ,
+.BR INTPTR_MAX ].
+.PP
+The macros
+.RB [ U ] INTPTR_WIDTH
+expand to the width in bits of these types.
+.PP
+The macros
+.RB [ U ] INTPTR_MAX
+expand to the maximum value that these types can hold.
+.PP
+The macro
+.B INTPTR_MIN
+expands to the minimum value that
+.I intptr_t
+can hold.
+.PP
+The length modifiers for the
+.RI [ u ] intptr_t
+types
+for the
+.BR printf (3)
+family of functions
+are expanded by the macros
+.BR PRIdPTR ,
+.BR PRIiPTR ,
+and
+.B PRIuPTR
+(defined in
+.IR <inttypes.h> );
+resulting commonly in
+.B %"PRIdPTR"
+or
+.B %"PRIiPTR"
+for printing
+.I intptr_t
+values.
+The length modifiers for the
+.IR [ u ] intptr_t
+types
+for the
+.BR scanf (3)
+family of functions
+are expanded by the macros
+.BR SCNdPTR ,
+.BR SCNiPTR ,
+and
+.B SCNuPTR
+(defined in
+.IR <inttypes.h> );
+resulting commonly in
+.B %"SCNuPTR"
+for scanning
+.I uintptr_t
+values.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+.SH NOTES
+The following header also provides these types:
+.IR <inttypes.h> .
+.SH SEE ALSO
+.BR intmax_t (3type),
+.BR void (3)
diff --git a/man3type/iovec.3type b/man3type/iovec.3type
new file mode 100644
index 0000000..c2786f5
--- /dev/null
+++ b/man3type/iovec.3type
@@ -0,0 +1,49 @@
+.\" Copyright (c) 2022 by Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH iovec 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+iovec \- Vector I/O data structure
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <sys/uio.h>
+.PP
+.B struct iovec {
+.BR " void *iov_base;" " /* Starting address */"
+.BR " size_t iov_len;" " /* Size of the memory pointed to by "\c
+.IR iov_base ". */"
+.B };
+.EE
+.SH DESCRIPTION
+Describes a region of memory, beginning at
+.I iov_base
+address and with the size of
+.I iov_len
+bytes.
+System calls use arrays of this structure,
+where each element of the array represents a memory region,
+and the whole array represents a vector of memory regions.
+The maximum number of
+.I iovec
+structures in that array
+is limited by
+.B IOV_MAX
+(defined in
+.IR <limits.h> ,
+or accessible via the call
+.IR sysconf(_SC_IOV_MAX) ).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following header also provides this type:
+.IR <sys/socket.h> .
+.SH SEE ALSO
+.BR process_madvise (2),
+.BR readv (2)
diff --git a/man3type/itimerspec.3type b/man3type/itimerspec.3type
new file mode 100644
index 0000000..7def422
--- /dev/null
+++ b/man3type/itimerspec.3type
@@ -0,0 +1,33 @@
+.\" Copyright (c) 2022 by Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH itimerspec 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+timespec \- interval for a timer with nanosecond precision
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <time.h>
+.PP
+.B struct itimerspec {
+.BR " struct timespec it_interval;" " /* Interval for periodic timer */"
+.BR " struct timespec it_value;" " /* Initial expiration */"
+.B };
+.EE
+.SH DESCRIPTION
+Describes the initial expiration of a timer,
+and its interval,
+in seconds and nanoseconds.
+.SH STANDARDS
+Linux.
+.SH NOTES
+The following header also provides this type:
+.IR <sys/timerfd.h> .
+.SH SEE ALSO
+.BR timerfd_create (2),
+.BR timer_settime (2),
+.BR timespec (3type)
diff --git a/man3type/lconv.3type b/man3type/lconv.3type
new file mode 100644
index 0000000..f36522c
--- /dev/null
+++ b/man3type/lconv.3type
@@ -0,0 +1,56 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH lconv 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+lconv \- numeric formatting information
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <locale.h>
+.PP
+.BR "struct lconv {" " /* Values in the \[dq]C\[dq] locale: */"
+.BR " char *decimal_point;" " /* \[dq].\[dq] */"
+.BR " char *thousands_sep;" " /* \[dq]\[dq] */"
+.BR " char *grouping;" " /* \[dq]\[dq] */"
+.BR " char *mon_decimal_point;" " /* \[dq]\[dq] */"
+.BR " char *mon_thousands_sep;" " /* \[dq]\[dq] */"
+.BR " char *mon_grouping;" " /* \[dq]\[dq] */"
+.BR " char *positive_sign;" " /* \[dq]\[dq] */"
+.BR " char *negative_sign;" " /* \[dq]\[dq] */"
+.BR " char *currency_symbol;" " /* \[dq]\[dq] */"
+.BR " char frac_digits;" " /* CHAR_MAX */"
+.BR " char p_cs_precedes;" " /* CHAR_MAX */"
+.BR " char n_cs_precedes;" " /* CHAR_MAX */"
+.BR " char p_sep_by_space;" " /* CHAR_MAX */"
+.BR " char n_sep_by_space;" " /* CHAR_MAX */"
+.BR " char p_sign_posn;" " /* CHAR_MAX */"
+.BR " char n_sign_posn;" " /* CHAR_MAX */"
+.BR " char *int_curr_symbol;" " /* \[dq]\[dq] */"
+.BR " char int_frac_digits;" " /* CHAR_MAX */"
+.BR " char int_p_cs_precedes;" " /* CHAR_MAX */"
+.BR " char int_n_cs_precedes;" " /* CHAR_MAX */"
+.BR " char int_p_sep_by_space;" " /* CHAR_MAX */"
+.BR " char int_n_sep_by_space;" " /* CHAR_MAX */"
+.BR " char int_p_sign_posn;" " /* CHAR_MAX */"
+.BR " char int_n_sign_posn;" " /* CHAR_MAX */"
+.B };
+.EE
+.SH DESCRIPTION
+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, POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH SEE ALSO
+.BR setlocale (3),
+.BR localeconv (3),
+.BR charsets (7),
+.BR locale (7)
diff --git a/man3type/ldiv_t.3type b/man3type/ldiv_t.3type
new file mode 100644
index 0000000..3ab8f34
--- /dev/null
+++ b/man3type/ldiv_t.3type
@@ -0,0 +1 @@
+.so man3type/div_t.3type
diff --git a/man3type/lldiv_t.3type b/man3type/lldiv_t.3type
new file mode 100644
index 0000000..3ab8f34
--- /dev/null
+++ b/man3type/lldiv_t.3type
@@ -0,0 +1 @@
+.so man3type/div_t.3type
diff --git a/man3type/loff_t.3type b/man3type/loff_t.3type
new file mode 100644
index 0000000..e59af3f
--- /dev/null
+++ b/man3type/loff_t.3type
@@ -0,0 +1 @@
+.so man3type/off_t.3type
diff --git a/man3type/mode_t.3type b/man3type/mode_t.3type
new file mode 100644
index 0000000..7d56100
--- /dev/null
+++ b/man3type/mode_t.3type
@@ -0,0 +1,40 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH mode_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+mode_t \- file attributes
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " mode_t;
+.fi
+.SH DESCRIPTION
+Used for some file attributes (e.g., file mode).
+It is an integer type.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following headers also provide this type:
+.IR <fcntl.h> ,
+.IR <ndbm.h> ,
+.IR <spawn.h> ,
+.IR <sys/ipc.h> ,
+.IR <sys/mman.h> ,
+and
+.IR <sys/stat.h> .
+.SH SEE ALSO
+.BR chmod (2),
+.BR mkdir (2),
+.BR open (2),
+.BR umask (2),
+.BR stat (3type)
diff --git a/man3type/off64_t.3type b/man3type/off64_t.3type
new file mode 100644
index 0000000..e59af3f
--- /dev/null
+++ b/man3type/off64_t.3type
@@ -0,0 +1 @@
+.so man3type/off_t.3type
diff --git a/man3type/off_t.3type b/man3type/off_t.3type
new file mode 100644
index 0000000..b544f66
--- /dev/null
+++ b/man3type/off_t.3type
@@ -0,0 +1,92 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH off_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+off_t, off64_t, loff_t \- file sizes
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " off_t;
+.PP
+.B #define _LARGEFILE64_SOURCE
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " off64_t;
+.PP
+.B #define _GNU_SOURCE
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " loff_t;
+.fi
+.SH DESCRIPTION
+.I off_t
+is used for describing file sizes.
+It is a signed integer type.
+.PP
+.I off64_t
+is a 64-bit version of the type,
+used in glibc.
+.PP
+.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 NOTES
+On some architectures,
+the width of
+.I off_t
+can be controlled with the feature test macro
+.BR _FILE_OFFSET_BITS .
+.PP
+The following headers also provide
+.IR off_t :
+.IR <aio.h> ,
+.IR <fcntl.h> ,
+.IR <stdio.h> ,
+.IR <sys/mman.h> ,
+.IR <sys/stat.h> ,
+and
+.IR <unistd.h> .
+.SH SEE ALSO
+.BR copy_file_range (2),
+.BR llseek (2),
+.BR lseek (2),
+.BR mmap (2),
+.BR posix_fadvise (2),
+.BR pread (2),
+.BR readahead (2),
+.BR sync_file_range (2),
+.BR truncate (2),
+.BR fseeko (3),
+.BR lockf (3),
+.BR lseek64 (3),
+.BR posix_fallocate (3),
+.BR feature_test_macros (7)
diff --git a/man3type/pid_t.3type b/man3type/pid_t.3type
new file mode 100644
index 0000000..52bae74
--- /dev/null
+++ b/man3type/pid_t.3type
@@ -0,0 +1 @@
+.so man3type/id_t.3type
diff --git a/man3type/printf_arginfo_size_function.3type b/man3type/printf_arginfo_size_function.3type
new file mode 100644
index 0000000..ad10bad
--- /dev/null
+++ b/man3type/printf_arginfo_size_function.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/printf_function.3type b/man3type/printf_function.3type
new file mode 100644
index 0000000..ad10bad
--- /dev/null
+++ b/man3type/printf_function.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/printf_info.3type b/man3type/printf_info.3type
new file mode 100644
index 0000000..ad10bad
--- /dev/null
+++ b/man3type/printf_info.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/printf_va_arg_function.3type b/man3type/printf_va_arg_function.3type
new file mode 100644
index 0000000..ad10bad
--- /dev/null
+++ b/man3type/printf_va_arg_function.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/ptrdiff_t.3type b/man3type/ptrdiff_t.3type
new file mode 100644
index 0000000..bb6b404
--- /dev/null
+++ b/man3type/ptrdiff_t.3type
@@ -0,0 +1,47 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH ptrdiff_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+ptrdiff_t \- count of elements or array index
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stddef.h>
+.PP
+.BR typedef " /* ... */ " ptrdiff_t;
+.fi
+.SH DESCRIPTION
+Used for a count of elements, or an array index.
+It is the result of subtracting two pointers.
+It is a signed integer type
+capable of storing values in the range
+.RB [ PTRDIFF_MAX ,
+.BR PTRDIFF_MAX ].
+.PP
+The length modifier for
+.I ptrdiff_t
+for the
+.BR printf (3)
+and the
+.BR scanf (3)
+families of functions is
+.BR t ,
+resulting commonly in
+.B %td
+or
+.B %ti
+for printing
+.I ptrdiff_t
+values.
+.SH STANDARDS
+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
new file mode 100644
index 0000000..c0daaf0
--- /dev/null
+++ b/man3type/regex_t.3type
@@ -0,0 +1 @@
+.so man3/regex.3
diff --git a/man3type/regmatch_t.3type b/man3type/regmatch_t.3type
new file mode 100644
index 0000000..c0daaf0
--- /dev/null
+++ b/man3type/regmatch_t.3type
@@ -0,0 +1 @@
+.so man3/regex.3
diff --git a/man3type/regoff_t.3type b/man3type/regoff_t.3type
new file mode 100644
index 0000000..c0daaf0
--- /dev/null
+++ b/man3type/regoff_t.3type
@@ -0,0 +1 @@
+.so man3/regex.3
diff --git a/man3type/sa_family_t.3type b/man3type/sa_family_t.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/sa_family_t.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/sigevent.3type b/man3type/sigevent.3type
new file mode 100644
index 0000000..db50c0f
--- /dev/null
+++ b/man3type/sigevent.3type
@@ -0,0 +1 @@
+.so man7/system_data_types.7
diff --git a/man3type/siginfo_t.3type b/man3type/siginfo_t.3type
new file mode 100644
index 0000000..db50c0f
--- /dev/null
+++ b/man3type/siginfo_t.3type
@@ -0,0 +1 @@
+.so man7/system_data_types.7
diff --git a/man3type/sigset_t.3type b/man3type/sigset_t.3type
new file mode 100644
index 0000000..db50c0f
--- /dev/null
+++ b/man3type/sigset_t.3type
@@ -0,0 +1 @@
+.so man7/system_data_types.7
diff --git a/man3type/sigval.3type b/man3type/sigval.3type
new file mode 100644
index 0000000..db50c0f
--- /dev/null
+++ b/man3type/sigval.3type
@@ -0,0 +1 @@
+.so man7/system_data_types.7
diff --git a/man3type/size_t.3type b/man3type/size_t.3type
new file mode 100644
index 0000000..9df433a
--- /dev/null
+++ b/man3type/size_t.3type
@@ -0,0 +1,181 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH size_t 3type 2023-03-31 "Linux man-pages 6.05.01"
+.SH NAME
+size_t, ssize_t \- count of bytes
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stddef.h>
+.PP
+.BR typedef " /* ... */ " size_t;
+.PP
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " ssize_t;
+.fi
+.SH DESCRIPTION
+.TP
+.I size_t
+Used for a count of bytes.
+It is the result of the
+.IR sizeof ()
+operator.
+It is an unsigned integer type
+capable of storing values in the range
+.RB [ 0 ,
+.BR SIZE_MAX ].
+.TP
+.I ssize_t
+Used for a count of bytes or an error indication.
+It is a signed integer type
+capable of storing values at least in the range
+.RB [ \-1 ,
+.BR SSIZE_MAX ].
+.SS Use with printf(3) and scanf(3)
+.TP
+.I size_t
+The length modifier for
+.I size_t
+for the
+.BR printf (3)
+and the
+.BR scanf (3)
+families of functions is
+.BR z ,
+resulting commonly in
+.B %zu
+or
+.B %zx
+for printing
+.I size_t
+values.
+.TP
+.I ssize_t
+glibc and most other implementations provide a length modifier for
+.I ssize_t
+for the
+.BR printf (3)
+and the
+.BR scanf (3)
+families of functions,
+which is
+.BR z ;
+resulting commonly in
+.B %zd
+or
+.B %zi
+for printing
+.I ssize_t
+values.
+Although
+.B z
+works for
+.I ssize_t
+on most implementations,
+portable POSIX programs should avoid using it\[em]for example,
+by converting the value to
+.I intmax_t
+and using its length modifier
+.RB ( j ).
+.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> ,
+.IR <iconv.h> ,
+.IR <mqueue.h> ,
+.IR <pwd.h> ,
+.IR <signal.h> ,
+and
+.I <sys/socket.h>
+define
+.I size_t
+since POSIX.1-2008.
+.PP
+.IR <aio.h> ,
+.IR <mqueue.h> ,
+and
+.I <sys/socket.h>
+define
+.I ssize_t
+since POSIX.1-2008.
+.SH NOTES
+.TP
+.I size_t
+The following headers also provide
+.IR size_t :
+.IR <aio.h> ,
+.IR <glob.h> ,
+.IR <grp.h> ,
+.IR <iconv.h> ,
+.IR <monetary.h> ,
+.IR <mqueue.h> ,
+.IR <ndbm.h> ,
+.IR <pwd.h> ,
+.IR <regex.h> ,
+.IR <search.h> ,
+.IR <signal.h> ,
+.IR <stdio.h> ,
+.IR <stdlib.h> ,
+.IR <string.h> ,
+.IR <strings.h> ,
+.IR <sys/mman.h> ,
+.IR <sys/msg.h> ,
+.IR <sys/sem.h> ,
+.IR <sys/shm.h> ,
+.IR <sys/socket.h> ,
+.IR <sys/types.h> ,
+.IR <sys/uio.h> ,
+.IR <time.h> ,
+.IR <unistd.h> ,
+.IR <wchar.h> ,
+and
+.IR <wordexp.h> .
+.TP
+.I ssize_t
+The following headers also provide
+.IR ssize_t :
+.IR <aio.h> ,
+.IR <monetary.h> ,
+.IR <mqueue.h> ,
+.IR <stdio.h> ,
+.IR <sys/msg.h> ,
+.IR <sys/socket.h> ,
+.IR <sys/uio.h> ,
+and
+.IR <unistd.h> .
+.SH SEE ALSO
+.BR read (2),
+.BR readlink (2),
+.BR readv (2),
+.BR recv (2),
+.BR send (2),
+.BR write (2),
+.BR fread (3),
+.BR fwrite (3),
+.BR memcmp (3),
+.BR memcpy (3),
+.BR memset (3),
+.BR offsetof (3),
+.BR ptrdiff_t (3type)
diff --git a/man3type/sockaddr.3type b/man3type/sockaddr.3type
new file mode 100644
index 0000000..dacc9ad
--- /dev/null
+++ b/man3type/sockaddr.3type
@@ -0,0 +1,154 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH sockaddr 3type 2023-04-22 "Linux man-pages 6.05.01"
+.SH NAME
+sockaddr, sockaddr_storage, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t,
+in_addr, in6_addr, in_addr_t, in_port_t,
+\- socket address
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <sys/socket.h>
+.PP
+.B struct sockaddr {
+.BR " sa_family_t sa_family;" " /* Address family */"
+.BR " char sa_data[];" " /* Socket address */"
+.B };
+.PP
+.B struct sockaddr_storage {
+.BR " sa_family_t ss_family;" " /* Address family */"
+.B };
+.PP
+.BR typedef " /* ... */ " socklen_t;
+.BR typedef " /* ... */ " sa_family_t;
+.PP
+.EE
+.SS Internet domain sockets
+.EX
+.B #include <netinet/in.h>
+.PP
+.B struct sockaddr_in {
+.BR " sa_family_t sin_family;" " /* " AF_INET " */"
+.BR " in_port_t sin_port;" " /* Port number */"
+.BR " struct in_addr sin_addr;" " /* IPv4 address */"
+.B };
+.PP
+.B struct sockaddr_in6 {
+.BR " sa_family_t sin6_family;" " /* " AF_INET6 " */"
+.BR " in_port_t sin6_port;" " /* Port number */"
+.BR " uint32_t sin6_flowinfo;" " /* IPv6 flow info */"
+.BR " struct in6_addr sin6_addr;" " /* IPv6 address */"
+.BR " uint32_t sin6_scope_id;" " /* Set of interfaces for a scope */"
+.B };
+.PP
+.B struct in_addr {
+.B " in_addr_t s_addr;"
+.B };
+.PP
+.B struct in6_addr {
+.B " uint8_t s6_addr[16];"
+.B };
+.PP
+.B typedef uint32_t in_addr_t;
+.B typedef uint16_t in_port_t;
+.EE
+.SS UNIX domain sockets
+.EX
+.B #include <sys/un.h>
+.PP
+.B struct sockaddr_un {
+.BR " sa_family_t sun_family;" " /* Address family */"
+.BR " char sun_path[];" " /* Socket pathname */"
+.B };
+.EE
+.SH DESCRIPTION
+.TP
+.I sockaddr
+Describes a socket address.
+.TP
+.I sockaddr_storage
+A structure at least as large as any other
+.IR sockaddr_ *
+address structures.
+It's aligned so that a pointer to it can be cast
+as a pointer to other
+.IR sockaddr_ *
+structures and used to access its fields.
+.TP
+.I socklen_t
+Describes the length of a socket address.
+This is an integer type of at least 32 bits.
+.TP
+.I sa_family_t
+Describes a socket's protocol family.
+This is an unsigned integer type.
+.SS Internet domain sockets
+.TP
+.I sockaddr_in
+Describes an IPv4 Internet domain socket address.
+The
+.I sin_port
+and
+.I sin_addr
+members are stored in network byte order.
+.TP
+.I sockaddr_in6
+Describes an IPv6 Internet domain socket address.
+The
+.I sin6_addr.s6_addr
+array is used to contain a 128-bit IPv6 address,
+stored in network byte order.
+.SS UNIX domain sockets
+.TP
+.I sockaddr_un
+Describes a UNIX domain socket address.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.PP
+.I socklen_t
+was invented by POSIX.
+See also
+.BR accept (2).
+.PP
+These structures were invented before modern ISO C strict-aliasing rules.
+If aliasing rules are applied strictly,
+these structures would be extremely difficult to use
+without invoking Undefined Behavior.
+POSIX Issue 8 will fix this by requiring that implementations
+make sure that these structures
+can be safely used as they were designed.
+.SH NOTES
+.I socklen_t
+is also defined in
+.IR <netdb.h> .
+.PP
+.I sa_family_t
+is also defined in
+.I <netinet/in.h>
+and
+.IR <sys/un.h> .
+.SH SEE ALSO
+.BR accept (2),
+.BR bind (2),
+.BR connect (2),
+.BR getpeername (2),
+.BR getsockname (2),
+.BR getsockopt (2),
+.BR sendto (2),
+.BR setsockopt (2),
+.BR socket (2),
+.BR socketpair (2),
+.BR getaddrinfo (3),
+.BR gethostbyaddr (3),
+.BR getnameinfo (3),
+.BR htonl (3),
+.BR ipv6 (7),
+.BR socket (7)
diff --git a/man3type/sockaddr_in.3type b/man3type/sockaddr_in.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/sockaddr_in.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/sockaddr_in6.3type b/man3type/sockaddr_in6.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/sockaddr_in6.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/sockaddr_storage.3type b/man3type/sockaddr_storage.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/sockaddr_storage.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/sockaddr_un.3type b/man3type/sockaddr_un.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/sockaddr_un.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/socklen_t.3type b/man3type/socklen_t.3type
new file mode 100644
index 0000000..39e914c
--- /dev/null
+++ b/man3type/socklen_t.3type
@@ -0,0 +1 @@
+.so man3type/sockaddr.3type
diff --git a/man3type/speed_t.3type b/man3type/speed_t.3type
new file mode 100644
index 0000000..26cfd01
--- /dev/null
+++ b/man3type/speed_t.3type
@@ -0,0 +1 @@
+.so man3type/cc_t.3type
diff --git a/man3type/ssize_t.3type b/man3type/ssize_t.3type
new file mode 100644
index 0000000..c8d4408
--- /dev/null
+++ b/man3type/ssize_t.3type
@@ -0,0 +1 @@
+.so man3type/size_t.3type
diff --git a/man3type/stat.3type b/man3type/stat.3type
new file mode 100644
index 0000000..6630641
--- /dev/null
+++ b/man3type/stat.3type
@@ -0,0 +1,162 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH stat 3type 2023-05-03 "Linux man-pages 6.05.01"
+.SH NAME
+stat \- file status
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <sys/stat.h>
+.PP
+.B struct stat {
+.BR " dev_t st_dev;" " /* ID of device containing file */"
+.BR " ino_t st_ino;" " /* Inode number */"
+.BR " mode_t st_mode;" " /* File type and mode */"
+.BR " nlink_t st_nlink;" " /* Number of hard links */"
+.BR " uid_t st_uid;" " /* User ID of owner */"
+.BR " gid_t st_gid;" " /* Group ID of owner */"
+.BR " dev_t st_rdev;" " /* Device ID (if special file) */"
+.BR " off_t st_size;" " /* Total size, in bytes */"
+.BR " blksize_t st_blksize;" " /* Block size for filesystem I/O */"
+.BR " blkcnt_t st_blocks;" " /* Number of 512 B blocks allocated */"
+\&
+ /* Since POSIX.1-2008, this structure supports nanosecond
+ precision for the following timestamp fields.
+ For the details before POSIX.1-2008, see VERSIONS. */
+\&
+.BR " struct timespec st_atim;" " /* Time of last access */"
+.BR " struct timespec st_mtim;" " /* Time of last modification */"
+.BR " struct timespec st_ctim;" " /* Time of last status change */"
+\&
+.BR "#define st_atime st_atim.tv_sec" " /* Backward compatibility */"
+.B "#define st_mtime st_mtim.tv_sec"
+.B "#define st_ctime st_ctim.tv_sec"
+.B };
+.EE
+.PP
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+.IR st_atim ,
+.IR st_mtim ,
+.IR st_ctim :
+.nf
+ Since glibc 2.12:
+ _POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700
+ glibc 2.19 and earlier:
+ _BSD_SOURCE || _SVID_SOURCE
+.fi
+.SH DESCRIPTION
+Describes information about a file.
+.PP
+The fields are as follows:
+.TP
+.I st_dev
+This field describes the device on which this file resides.
+(The
+.BR major (3)
+and
+.BR minor (3)
+macros may be useful to decompose the device ID in this field.)
+.TP
+.I st_ino
+This field contains the file's inode number.
+.TP
+.I st_mode
+This field contains the file type and mode.
+See
+.BR inode (7)
+for further information.
+.TP
+.I st_nlink
+This field contains the number of hard links to the file.
+.TP
+.I st_uid
+This field contains the user ID of the owner of the file.
+.TP
+.I st_gid
+This field contains the ID of the group owner of the file.
+.TP
+.I st_rdev
+This field describes the device that this file (inode) represents.
+.TP
+.I st_size
+This field gives the size of the file (if it is a regular
+file or a symbolic link) in bytes.
+The size of a symbolic link is the length of the pathname
+it contains, without a terminating null byte.
+.TP
+.I st_blksize
+This field gives the "preferred" block size for efficient filesystem I/O.
+.TP
+.I st_blocks
+This field indicates the number of blocks allocated to the file,
+in 512-byte units.
+(This may be smaller than
+.IR st_size /512
+when the file has holes.)
+.TP
+.I st_atime
+This is the time of the last access of file data.
+.TP
+.I st_mtime
+This is the time of last modification of file data.
+.TP
+.I st_ctime
+This is the file's last status change timestamp
+(time of last change to the inode).
+.PP
+For further information on the above fields, see
+.BR inode (7).
+.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 ,
+.IR st_mtime ,
+and
+.IR st_ctime \[em]typed
+as
+.I time_t
+that recorded timestamps with one-second precision.
+.PP
+Since Linux 2.5.48, the
+.I stat
+structure supports nanosecond resolution for the three file timestamp fields.
+The nanosecond components of each timestamp are available
+via names of the form
+.IR st_atim.tv_nsec ,
+if suitable test macros are defined.
+Nanosecond timestamps were standardized in POSIX.1-2008,
+and, starting with glibc 2.12,
+glibc exposes the nanosecond component names if
+.B _POSIX_C_SOURCE
+is defined with the value 200809L or greater, or
+.B _XOPEN_SOURCE
+is defined with the value 700 or greater.
+Up to and including glibc 2.19,
+the definitions of the nanoseconds components are also defined if
+.B _BSD_SOURCE
+or
+.B _SVID_SOURCE
+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 NOTES
+The following header also provides this type:
+.IR <ftw.h> .
+.SH SEE ALSO
+.BR stat (2),
+.BR inode (7)
diff --git a/man3type/suseconds_t.3type b/man3type/suseconds_t.3type
new file mode 100644
index 0000000..7f430e1
--- /dev/null
+++ b/man3type/suseconds_t.3type
@@ -0,0 +1 @@
+.so man3type/time_t.3type
diff --git a/man3type/tcflag_t.3type b/man3type/tcflag_t.3type
new file mode 100644
index 0000000..26cfd01
--- /dev/null
+++ b/man3type/tcflag_t.3type
@@ -0,0 +1 @@
+.so man3type/cc_t.3type
diff --git a/man3type/time_t.3type b/man3type/time_t.3type
new file mode 100644
index 0000000..2b087e5
--- /dev/null
+++ b/man3type/time_t.3type
@@ -0,0 +1,109 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH time_t 3type 2023-03-31 "Linux man-pages 6.05.01"
+.SH NAME
+time_t, suseconds_t, useconds_t \- integer time
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <time.h>
+.PP
+.BR typedef " /* ... */ " time_t;
+.PP
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " suseconds_t;
+.BR typedef " /* ... */ " useconds_t;
+.fi
+.SH DESCRIPTION
+.TP
+.I time_t
+Used for time in seconds.
+According to POSIX,
+it is an integer type.
+.\" In POSIX.1-2001, the type was specified as being either an integer
+.\" type or a real-floating type. However, existing implementations
+.\" used an integer type, and POSIX.1-2008 tightened the specification
+.\" to reflect this.
+.TP
+.I suseconds_t
+Used for time in microseconds.
+It is a signed integer type
+capable of storing values at least in the range
+.RB [ \-1 ,
+.BR 1000000 ].
+.TP
+.I useconds_t
+Used for time in microseconds.
+It is an unsigned integer type
+capable of storing values at least in the range
+.RB [ 0 ,
+.BR 1000000 ].
+.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.
+.PP
+POSIX.1-2001 defined
+.I useconds_t
+in
+.I <unistd.h>
+too.
+.SH NOTES
+On some architectures,
+the width of
+.I time_t
+can be controlled with the feature test macro
+.BR _TIME_BITS .
+.PP
+The following headers also provide
+.IR time_t :
+.IR <sched.h> ,
+.IR <sys/msg.h> ,
+.IR <sys/select.h> ,
+.IR <sys/sem.h> ,
+.IR <sys/shm.h> ,
+.IR <sys/stat.h> ,
+.IR <sys/time.h> ,
+.IR <sys/types.h> ,
+and
+.IR <utime.h> .
+.PP
+The following headers also provide
+.IR suseconds_t :
+.I <sys/select.h>
+and
+.IR <sys/time.h> .
+.SH SEE ALSO
+.BR stime (2),
+.BR time (2),
+.BR ctime (3),
+.BR difftime (3),
+.BR usleep (3),
+.BR timeval (3type)
diff --git a/man3type/timer_t.3type b/man3type/timer_t.3type
new file mode 100644
index 0000000..8341ec1
--- /dev/null
+++ b/man3type/timer_t.3type
@@ -0,0 +1,34 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH timer_t 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+timer_t \- timer ID
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.PP
+.BR typedef " /* ... */ " timer_t;
+.fi
+.SH DESCRIPTION
+Used for timer ID returned by
+.BR timer_create (2).
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following header also provides
+.IR timer_t :
+.IR <time.h> .
+.SH SEE ALSO
+.BR timer_create (2),
+.BR timer_delete (2),
+.BR timer_getoverrun (2),
+.BR timer_settime (2)
diff --git a/man3type/timespec.3type b/man3type/timespec.3type
new file mode 100644
index 0000000..213c131
--- /dev/null
+++ b/man3type/timespec.3type
@@ -0,0 +1,60 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH timespec 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+timespec \- time in seconds and nanoseconds
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <time.h>
+.PP
+.B struct timespec {
+.BR " time_t tv_sec;" " /* Seconds */"
+.RB " /* ... */" " tv_nsec;" \
+" /* Nanoseconds [" 0 ", " 999\[aq]999\[aq]999 "] */"
+.B };
+.EE
+.SH DESCRIPTION
+Describes times in seconds and nanoseconds.
+.PP
+.I tv_nsec
+is of an implementation-defined signed type
+capable of holding the specified range.
+Under glibc, this is usually
+.IR long ,
+and
+.I long long
+on X32.
+It can be safely down-cast to any concrete 32-bit integer type for processing.
+.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> ,
+.IR <mqueue.h> ,
+.IR <sched.h> ,
+.IR <signal.h> ,
+.IR <sys/select.h> ,
+and
+.IR <sys/stat.h> .
+.SH SEE ALSO
+.BR clock_gettime (2),
+.BR clock_nanosleep (2),
+.BR nanosleep (2),
+.BR timerfd_gettime (2),
+.BR timer_gettime (2),
+.BR time_t (3type),
+.BR timeval (3type)
diff --git a/man3type/timeval.3type b/man3type/timeval.3type
new file mode 100644
index 0000000..97f450d
--- /dev/null
+++ b/man3type/timeval.3type
@@ -0,0 +1,43 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH timeval 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+timeval \- time in seconds and microseconds
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <sys/time.h>
+.PP
+.B struct timeval {
+.BR " time_t tv_sec;" " /* Seconds */"
+.BR " suseconds_t tv_usec;" " /* Microseconds */"
+.B };
+.EE
+.SH DESCRIPTION
+Describes times in seconds and microseconds.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+The following headers also provide this type:
+.IR <sys/resource.h> ,
+.IR <sys/select.h> ,
+and
+.IR <utmpx.h> .
+.SH SEE ALSO
+.BR gettimeofday (2),
+.BR select (2),
+.BR utimes (2),
+.BR adjtime (3),
+.BR futimes (3),
+.BR timeradd (3),
+.BR suseconds_t (3type),
+.BR time_t (3type),
+.BR timespec (3type)
diff --git a/man3type/tm.3type b/man3type/tm.3type
new file mode 100644
index 0000000..42cd1e3
--- /dev/null
+++ b/man3type/tm.3type
@@ -0,0 +1,112 @@
+.\" Copyright (c) 2022 by Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH tm 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+tm \- broken-down time
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.EX
+.B #include <time.h>
+.PP
+.B struct tm {
+.BR " int tm_sec;" " /* Seconds [" 0 ", " 60 "] */"
+.BR " int tm_min;" " /* Minutes [" 0 ", " 59 "] */"
+.BR " int tm_hour;" " /* Hour [" 0 ", " 23 "] */"
+.BR " int tm_mday;" " /* Day of the month [" 1 ", " 31 "] */"
+.BR " int tm_mon;" \
+" /* Month [" 0 ", " 11 "] (January = " 0 ") */"
+.BR " int tm_year;" " /* Year minus " 1900 " */"
+.BR " int tm_wday;" \
+" /* Day of the week [" 0 ", " 6 "] (Sunday = " 0 ") */"
+.BR " int tm_yday;" \
+" /* Day of the year [" 0 ", " 365 "] (Jan/01 = " 0 ") */"
+.BR " int tm_isdst;" " /* Daylight savings flag */"
+.PP
+.BR " long tm_gmtoff;" " /* Seconds East of UTC */"
+.BR " const char *tm_zone;" " /* Timezone abbreviation */"
+.B };
+.EE
+.PP
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+.IR tm_gmtoff ,
+.IR tm_zone :
+.nf
+.\" Guarded with __USE_MISC:
+ Since glibc 2.20:
+ _DEFAULT_SOURCE
+ glibc 2.20 and earlier:
+ _BSD_SOURCE
+.fi
+.SH DESCRIPTION
+Describes time, broken down into distinct components.
+.PP
+.I tm_isdst
+describes whether daylight saving time is in effect at the time described.
+The value is positive if daylight saving time is in effect,
+zero if it is not,
+and negative if the information is not available.
+.PP
+.I tm_gmtoff
+is the difference, in seconds,
+of the timezone represented by this broken-down time and UTC
+(this is the additive inverse of
+.BR timezone (3)).
+.PP
+.I tm_zone
+is the equivalent of
+.BR tzname (3)
+for the timezone represented by this broken-down time.
+.SH VERSIONS
+In C90,
+.I tm_sec
+could represent values in the range
+.RB [ 0 ", " 61 ],
+which could represent a double leap second.
+UTC doesn't permit double leap seconds,
+so it was limited to
+.B 60
+in C99.
+.PP
+.BR timezone (3),
+as a variable, is an XSI extension: some systems provide the V7-compatible
+.\" FreeBSD
+.BR timezone (3)
+function.
+The
+.I tm_gmtoff
+field provides an alternative (with the opposite sign) for those systems.
+.PP
+.I tm_zone
+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),
+.BR strptime (3),
+.BR time (7)
diff --git a/man3type/uid_t.3type b/man3type/uid_t.3type
new file mode 100644
index 0000000..52bae74
--- /dev/null
+++ b/man3type/uid_t.3type
@@ -0,0 +1 @@
+.so man3type/id_t.3type
diff --git a/man3type/uint16_t.3type b/man3type/uint16_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/uint16_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/uint32_t.3type b/man3type/uint32_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/uint32_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/uint64_t.3type b/man3type/uint64_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/uint64_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/uint8_t.3type b/man3type/uint8_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/uint8_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/uintN_t.3type b/man3type/uintN_t.3type
new file mode 100644
index 0000000..a0d1a82
--- /dev/null
+++ b/man3type/uintN_t.3type
@@ -0,0 +1 @@
+.so man3type/intN_t.3type
diff --git a/man3type/uintmax_t.3type b/man3type/uintmax_t.3type
new file mode 100644
index 0000000..497d4ac
--- /dev/null
+++ b/man3type/uintmax_t.3type
@@ -0,0 +1 @@
+.so man3type/intmax_t.3type
diff --git a/man3type/uintptr_t.3type b/man3type/uintptr_t.3type
new file mode 100644
index 0000000..6a55bc9
--- /dev/null
+++ b/man3type/uintptr_t.3type
@@ -0,0 +1 @@
+.so man3type/intptr_t.3type
diff --git a/man3type/useconds_t.3type b/man3type/useconds_t.3type
new file mode 100644
index 0000000..7f430e1
--- /dev/null
+++ b/man3type/useconds_t.3type
@@ -0,0 +1 @@
+.so man3type/time_t.3type
diff --git a/man3type/va_list.3type b/man3type/va_list.3type
new file mode 100644
index 0000000..3549829
--- /dev/null
+++ b/man3type/va_list.3type
@@ -0,0 +1,44 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH va_list 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+va_list \- variable argument list
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <stdarg.h>
+.PP
+.BR typedef " /* ... */ " va_list;
+.fi
+.SH DESCRIPTION
+Used by functions with a varying number of arguments of varying types.
+The function must declare an object of type
+.I va_list
+which is used by the macros
+.BR va_start (3),
+.BR va_arg (3),
+.BR va_copy (3),
+and
+.BR va_end (3)
+to traverse the list of arguments.
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
+.SH NOTES
+The following headers also provide
+.IR va_list :
+.I <stdio.h>
+and
+.IR <wchar.h> .
+.SH SEE ALSO
+.BR va_start (3),
+.BR va_arg (3),
+.BR va_copy (3),
+.BR va_end (3)
diff --git a/man3type/void.3type b/man3type/void.3type
new file mode 100644
index 0000000..45907e9
--- /dev/null
+++ b/man3type/void.3type
@@ -0,0 +1,76 @@
+.\" Copyright (c) 2020-2022 by Alejandro Colomar <alx@kernel.org>
+.\" and Copyright (c) 2020 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\"
+.TH void 3type 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+void \- abstract type
+.SH SYNOPSIS
+.nf
+.B void *
+.fi
+.SH DESCRIPTION
+A pointer to any object type may be converted to a pointer to
+.I void
+and back.
+POSIX further requires that any pointer,
+including pointers to functions,
+may be converted to a pointer to
+.I void
+and back.
+.PP
+Conversions from and to any other pointer type are done implicitly,
+not requiring casts at all.
+Note that this feature prevents any kind of type checking:
+the programmer should be careful not to convert a
+.I void *
+value to a type incompatible to that of the underlying data,
+because that would result in undefined behavior.
+.PP
+This type is useful in function parameters and return value
+to allow passing values of any type.
+The function will typically use some mechanism to know
+the real type of the data being passed via a pointer to
+.IR void .
+.PP
+A value of this type can't be dereferenced,
+as it would give a value of type
+.IR void ,
+which is not possible.
+Likewise, pointer arithmetic is not possible with this type.
+However, in GNU C, pointer arithmetic is allowed
+as an extension to the standard;
+this is done by treating the size of a
+.I void
+or of a function as 1.
+A consequence of this is that
+.I sizeof
+is also allowed on
+.I void
+and on function types, and returns 1.
+.SS Use with printf(3) and scanf(3)
+The conversion specifier for
+.I void *
+for the
+.BR printf (3)
+and the
+.BR scanf (3)
+families of functions is
+.BR p .
+.SH VERSIONS
+The POSIX requirement about compatibility between
+.I void *
+and function pointers was added in
+POSIX.1-2008 Technical Corrigendum 1 (2013).
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C89, POSIX.1-2001.
+.SH SEE ALSO
+.BR malloc (3),
+.BR memcmp (3),
+.BR memcpy (3),
+.BR memset (3),
+.BR intptr_t (3type)