summaryrefslogtreecommitdiffstats
path: root/man2/getpagesize.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/getpagesize.2')
-rw-r--r--man2/getpagesize.289
1 files changed, 89 insertions, 0 deletions
diff --git a/man2/getpagesize.2 b/man2/getpagesize.2
new file mode 100644
index 0000000..6f3b54b
--- /dev/null
+++ b/man2/getpagesize.2
@@ -0,0 +1,89 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH getpagesize 2 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+getpagesize \- get memory page size
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <unistd.h>
+.PP
+.B int getpagesize(void);
+.fi
+.PP
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+.BR getpagesize ():
+.nf
+ Since glibc 2.20:
+ _DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
+ glibc 2.12 to glibc 2.19:
+ _BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
+ Before glibc 2.12:
+ _BSD_SOURCE || _XOPEN_SOURCE >= 500
+.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
+.fi
+.SH DESCRIPTION
+The function
+.BR getpagesize ()
+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 STANDARDS
+None.
+.SH HISTORY
+This call first appeared in 4.2BSD.
+SVr4, 4.4BSD, SUSv2.
+In SUSv2 the
+.BR getpagesize ()
+call is labeled LEGACY, and in POSIX.1-2001
+it has been dropped;
+HP-UX does not have this call.
+.SH NOTES
+Portable applications should employ
+.I sysconf(_SC_PAGESIZE)
+instead of
+.BR getpagesize ():
+.PP
+.in +4n
+.EX
+#include <unistd.h>
+long sz = sysconf(_SC_PAGESIZE);
+.EE
+.in
+.PP
+(Most systems allow the synonym
+.B _SC_PAGE_SIZE
+for
+.BR _SC_PAGESIZE .)
+.PP
+Whether
+.BR getpagesize ()
+is present as a Linux system call depends on the architecture.
+If it is, it returns the kernel symbol
+.BR PAGE_SIZE ,
+whose value depends on the architecture and machine model.
+Generally, one uses binaries that are dependent on the architecture but not
+on the machine model, in order to have a single binary
+distribution per architecture.
+This means that a user program
+should not find
+.B PAGE_SIZE
+at compile time from a header file,
+but use an actual system call, at least for those architectures
+(like sun4) where this dependency exists.
+Here glibc 2.0 fails because its
+.BR getpagesize ()
+returns a statically derived value, and does not use a system call.
+Things are OK in glibc 2.1.
+.SH SEE ALSO
+.BR mmap (2),
+.BR sysconf (3)