getpagesize(2) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | STANDARDS | HISTORY | NOTES | SEE ALSO

getpagesize(2)             System Calls Manual            getpagesize(2)

NAME         top

       getpagesize - get memory page size

LIBRARY         top

       Standard C library (libc, -lc)

SYNOPSIS         top

       #include <unistd.h>

       int getpagesize(void);

   Feature Test Macro Requirements for glibc (see
   feature_test_macros(7)):

       getpagesize():
           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

DESCRIPTION         top

       The function 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 mmap(2).

STANDARDS         top

       None.

HISTORY         top

       This call first appeared in 4.2BSD.  SVr4, 4.4BSD, SUSv2.  In
       SUSv2 the getpagesize() call is labeled LEGACY, and in
       POSIX.1-2001 it has been dropped; HP-UX does not have this call.

NOTES         top

       Portable applications should employ sysconf(_SC_PAGESIZE) instead
       of getpagesize():

           #include <unistd.h>
           long sz = sysconf(_SC_PAGESIZE);

       (Most systems allow the synonym _SC_PAGE_SIZE for _SC_PAGESIZE.)

       Whether getpagesize() is present as a Linux system call depends
       on the architecture.  If it is, it returns the kernel symbol
       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 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 getpagesize() returns a statically
       derived value, and does not use a system call.  Things are OK in
       glibc 2.1.

SEE ALSO         top

       mmap(2), sysconf(3)

Linux man-pages (unreleased)     (date)                   getpagesize(2)

Pages that refer to this page: fincore(1)strace(1)mmap2(2)mmap(2)mremap(2)remap_file_pages(2)syscalls(2)numa(3)posix_memalign(3)