[klibc] getpagesize / libsysfs broken with 0.148

H. Peter Anvin hpa at zytor.com
Thu Jul 15 16:57:36 PDT 2004


Hannes Reinecke wrote:
 >
> Hi all,
> 
> the implementation of getpagesize() is broken in klibc.
> 
> klibc uses sysinfo.mem_unit, which linux interpretes as the memory unit 
> all other memory values returned are to be multiplied with.
> So it's perfectly ok for the linux sysinfo() to return a mem_unit of 
> '1', which is does if the memory available for this machine fits into 
> the counter.
> For the unbelievers, have a look in kernel/timer.c:sys_sysinfo().
> 
> As a quick hack I've added a check for mem_unit==1 and reset the 
> page_size to 4096 on those cases.
> 

*SIGH* So much for the claim that there actually existed a sane way to 
get the page size across platforms.  This is particularly nasty because 
of the definition of mmap2().

The kernel headers don't work very well since page size is a 
kernel-compile-time option on some platforms, e.g. MIPS, and dynamic on 
some platforms.

	-hpa



More information about the klibc mailing list