getpagesizes(), getpagesizes64()

Получить доступные размеры страниц памяти

Прототип:

#include <sys/mman.h>
int getpagesizes( size_t pagesize[],
int nelem );
int getpagesizes64( uint64_t pagesize[],
int nelem );

Аргументы:

pagesize
NULL, или массив, где функции могут хранить доступные размеры страниц памяти.
nelem
Количество элементов в массиве.

Библиотека:

libc

Описание:

Функции getpagesizes() и getpagesizes64() получают доступные размеры страниц памяти и хранят до nelem такимх размеров в массиве pagesize. Программное обеспечение, которое хочет оптимизировать использование больших страниц, может использовать эти функции для определения доступных размеров.

При использовании getpagesizes64(), некоторые размеры страниц памяти будут иметь установленный бит _SYS_GETPAGESIZES_HIGHUSAGE (определенный в <sys/sysmsg.h>), чтобы указать, что они доступны только при сопоставлении объектов, отмеченных флагом SHMCTL_HIGHUSAGE. Эти размеры страниц памяти не включены в список, предоставляемый getpagesizes().

При передаче NULL в pagesize и 0 в nelem, данные функции возвращают число доступных размеров страниц памяти.

Возвращаемое значение:

Число записанных в массив элементов. Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

EINVAL
Значение аргумента nelem отрицательно, либо же положительно, но pagesize равен 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() — ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

getpagesize()




Предыдущий раздел: Описание API системной библиотеки