getpagesize(2)

NAZWA
getpagesize - pobiera rozmiar strony pamięci

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <unistd.h>

int getpagesize(void);

    Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

getpagesize():
    Od glibc 2.20:
        _DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
    glibc 2.12 do glibc 2.19:
        _BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
    Przed glibc 2.12:
        _BSD_SOURCE || _XOPEN_SOURCE >= 500

OPIS
Funkcja getpagesize() zwraca liczbę bajtów w stronie pamięci, gdzie „strona” jest blokiem o ustalonej długości, jednostką przypisywania pamięci i mapowania plików dokonywanych przez mmap(2)

STANDARDY
Brak.

HISTORIA
Wywołanie pojawiło się pierwotnie w 4.2BSD. SVr4, 4.4BSD, SUSv2. W SUSv2 funkcja getpagesize() jest oznaczona jako przestarzała, a w POSIX.1-2001 została pominięta. HP-UX nie zawiera tej funkcji.

UWAGI
Przenośne aplikacje powinny używać sysconf(_SC_PAGESIZE) zamiast getpagesize():

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

(Większość systemów dopuszcza również synonim _SC_PAGE_SIZE dla _SC_PAGESIZE).

Obecność getpagesize() jako funkcji systemowej Linuksa zależy od architektury. Jeśli istnieje, zwraca symbol jądra PAGE_SIZE, który zależy od architektury i modelu maszyny. W ogólności, aby mieć jedną dystrybucję binarną dla każdej architektury, używa się plików binarnych, które są zależne od architektury, ale nie od modelu maszyny. Oznacza to, że program użytkownika nie powinien określać PAGE_SIZE podczas kompilacji na podstawie plików nagłówkowych, a używać bieżącej funkcji systemowej, co najmniej dla tych architektur (np. sun4), dla których istnieje zależność PAGE_SIZE od modelu maszyny. W tym miejscu libc4, libc5 i glibc 2.0 zawodzą, gdyż ich getpagesize() zwraca wartość wyliczoną statycznie, a nie korzysta funkcji systemowej. Wszystko jest OK w glibc 2.1.

ZOBACZ TAKŻE
mmap(2), sysconf(3)

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.