[klibc] Re: getpagesize / libsysfs broken with 0.148

Daniel Stekloff dsteklof at us.ibm.com
Thu Jul 15 08:53:44 PDT 2004

On Thu, 2004-07-15 at 01:51, 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.
> Naturally, this is not the right fix. The right fix would be to get the 
> values from the kernel headers and/or some magic juju for those machines 
> with variable pagesize.
> It probably would not have been noticed, but as libsysfs insists on 
> doing all reads from sysfs attributes with a length of pagesize, the 
> failures were ... interesting.

Libsysfs reads with length of pagesize because that was a sysfs
limitation. Has sysfs changed? 

There use to be an ifdef klibc around the getpagesize() call but that
seems to have been removed at some point. 



> So in short, udev does _not_ work with klibc until that (or an 
> equivalent) patch is applied.
> Cheers,
> Hannes

More information about the klibc mailing list