[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