How to get linux kernel page size programmatically
Try using the getconf
utility, which will allow you to retrieve the page size easily.
getconf PAGESIZE
One approximate method is to read /proc/meminfo
and check Mapped
size ( on mine its 52544 kB as of now ) and then check nr_mapped
in /proc/vmstat
( on mine its 131136 as of now ). Finally PAGE_SIZE = Mapped/nr_mapped
. Sometimes this gives you an accurate value ( as in the current example I've quoted ) and sometimes its approximate but very close.
Hope this helps!
One way to find the page size is to obtain it from smaps for a process.
For example:
cd /proc/1
grep -i pagesize smaps
KernelPageSize: 4 kB
MMUPageSize: 4 kB
If you are trying to build a kernel module, you will need to have at least the kernel headers that are configured for the kernel the module will run on. Those will define the page size macros you need. If you don't have the correctly configured headers, the kernel will refuse to load your module.
And there is nothing wrong with compiling a module on one machine to run on another, even if it's a different architecture. You just need to build against the correct kernel source.