Nếu bạn gặp khó khăn trong việc lấy thông tin của page trong system, bạn có thể làm 1 số cách sau:

CÁCH 1:
Trong tiêu chuẩn của POSIX, hàm sysconf() được cung cấp cho phép người sử dụng lấy kích thước page của từng hệ thống máy khác nhau.
Hàm sysconf() được khai báo như sau:
C Code:
  1. #include <unistd.h>
  2.  
  3. long sysconf(int name);
Hàm trả về giá trị của name.
Nếu name không hợp lệ thì hàm sysconf() trả về giá trị -1 và lỗi được trả về với errno = EINVAL.
Tuy nhiên, cũng có một số trường hợp có name là -1 vì thế để xác định lỗi chính xác nên xóa giá trị của error trước khi sử dụng.

POSIX định nghĩa kích thước của một page là _SC_PAGESIZE hay _SC_PAGE_SIZE.
Vì vậy lấy giá trị kích thước của một page được sử dụng như sau:
C Code:
  1. long page_size = sysconf(_SC_PAGESIZE);

CÁCH 2:
Sử dụng hàm getpagesize(). Hàm đựoc khai báo như sau:
C Code:
  1. #include <unistd.h>
  2.  
  3. int getpagesize(void);

vì thế lấy kích thước của một page rất đơn giản:

C Code:
  1. int page_size = getpagesize();

Cách sử dụng đơn giản hơn sysconf() ở trên nhưng hàm này bị bỏ đi ở nhiều hệ thống Unix và bị loại khỏi tiêu chuẩn POSIX năm 2001.
Vì thế chỉ nên sử dụng hàm này nếu bạn đảm bảo hệ thống của bạn có cung cấp.

CÁCH 3:
Sử dụng macro PAGE_SIZE.
C Code:
  1. #include <asm/page.h>
  2.  
  3. int page_size = PAGE_SIZE;

Nhưng vấn đề là macro này chỉ đếm kích thước của page ở compile-time chứ không phải runtime trong khi ứng dụng cần xử lý page ở runtime và macro này không được xuất ra không gian của user (user space) thành ra rất là khó.

Trong 3 cách trên, tùy thuộc vào mục đích và hệ thống mà bạn sử dụng mà chọn một cách đo kich thước của page cho hợp lý. Tuy nhiên, cách 1 là hữu hiệu nhất trong mọi trường hợp. Và khuyên bạn nên sử dụng cách 1.