C言語システムコール-getpagesize

getpagesizeシステムコール

概要

getpagesizeはシステムのメモリ管理におけるページサイズを取得します。

Cライブラリ関数のsysconf(_SC_PAGESIZE)を利用しても、同様の情報を取得できます。


ページサイズとはOSのメモリ管理の単位となります。

「ページ」は固定長のブロックであり、mmapシステムコールで実行されるメモリ割り当てとファイルマッピングの単位です。


なお、getpagesizeで得られるページサイズはシステムのページサイズであり、ハードウェアのページサイズとは異なる場合があります。


サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>

/*!
 * @brief     ページサイズを取得する
 * @return    0:success/-1:failure
 */
static int
get_memory_pagesize(void)
{
    int psize = 0;

    psize = getpagesize();
    if(psize < 0){
        printf("Error: getpagesize() %s\n", strerror(errno));
        return(-1);
    }

    return(psize);
}

int
main(int argc, char *argv[])
{
    int rc = 0;

    if(argc != 1){
        fprintf(stderr, "Usage: %s\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    rc = get_memory_pagesize();
    if(rc < 0) exit(EXIT_FAILURE);

    printf("pagesize = %d(byte/page)\n", rc);

    exit(EXIT_SUCCESS);
}

関連ページ