Получить доступные размеры страниц памяти
#include <sys/mman.h>int getpagesizes( size_t pagesize[],int nelem );int getpagesizes64( uint64_t pagesize[],int nelem );
NULL
, или массив, где функции могут хранить доступные размеры страниц памяти.libc
Функции getpagesizes() и getpagesizes64() получают доступные размеры страниц памяти и хранят до nelem такимх размеров в массиве pagesize. Программное обеспечение, которое хочет оптимизировать использование больших страниц, может использовать эти функции для определения доступных размеров.
При использовании getpagesizes64(), некоторые размеры страниц памяти будут иметь установленный бит _SYS_GETPAGESIZES_HIGHUSAGE
(определенный в <sys/sysmsg.h>
), чтобы указать, что они доступны только при сопоставлении объектов, отмеченных флагом SHMCTL_HIGHUSAGE
. Эти размеры страниц памяти не включены в список, предоставляемый getpagesizes().
При передаче NULL
в pagesize и 0
в nelem, данные функции возвращают число доступных размеров страниц памяти.
Число записанных в массив элементов. Если возникла ошибка функция возвращает -1
, код ошибки записывается в errno.
NULL
. #include <stdio.h>#include <stdlib.h>#include <sys/mman.h>int main( void ){size_t *pagesizes;int i, num_found;num_found = getpagesizes( NULL, 0 );if ( num_found <= 0 ){printf( "num_found is %d\n", num_found );return (EXIT_FAILURE);}pagesizes = (size_t *)malloc( num_found * sizeof( size_t ) );if ( pagesizes == NULL ){perror( "malloc()" );return (EXIT_FAILURE);}num_found = getpagesizes( pagesizes, NUM_SIZES );printf( "Found %d sizes:\n", num_found );for ( i = 0; i < num_found; i++ ){printf( " %d\n", pagesizes[i] );}return (EXIT_SUCCESS);}
getpagesizes() — Unix; getpagesizes64() — ЗОСРВ «Нейтрино»
Предыдущий раздел: Описание API системной библиотеки