Tôi đang làm việc trên mô-đun Linux cho IA64. Vấn đề hiện tại của tôi là trình điều khiển sử dụng các macro PAGE_SIZE và PAGE_SHIFT để phân bổ trang dma. Vấn đề tôi gặp phải là máy biên dịch trình điều khiển không phải là trình điều khiển cần thiết để chạy trình điều khiển. Vì vậy, nếu PAGE_SIZE trên máy biên dịch là 2^14K và máy đích là 2^16K thì trình điều khiển không thành công.Cách nhận kích thước trang hạt nhân linux theo lập trình
Tôi không muốn biến câu hỏi này thành vấn đề 'thực hành tốt nhất' về việc biên dịch mô-đun trên máy không phải là mô-đun đang chạy mô-đun. Tôi hiểu các vấn đề về điều đó. Những gì tôi thấy là hầu hết mọi người sử dụng getpagesize() hoặc sysconf (_SC_PAGE_SIZE). Hai tùy chọn này nằm ngoài các tiêu đề hạt nhân ia64 vì vậy tôi không thể sử dụng chúng. Có cách nào khác mà tôi có thể nhận được thời gian chạy PAGE_SIZE không?
Tùy chọn Tôi đang tìm kiếm tại địa chỉ:
- Đọc một số tập tin trong/proc?
- syscall?
- Chức năng khác cho phép tôi tính toán PAGE_SIZE theo suy luận (ví dụ: ORDER, getpageshift, v.v ...)?
- Khác?
Bạn có nói 'cái PAGE_SIZE' là cấu hình cho kiến trúc IA64, và không cố định? Tôi nghĩ 'PAGE_SIZE' đã được sửa cho một kiến trúc cụ thể (ví dụ: luôn luôn là '4096' cho x86). –
IA64 thực sự hỗ trợ nhiều kích thước trang: http://www.informit.com/articles/article.aspx?p=29961&seqNum=3 – mdiener