[klibc] getpagesize / libsysfs broken with 0.148

Hannes Reinecke hare at suse.de
Thu Jul 15 11:51:11 PDT 2004


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.

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

Cheers,

Hannes
-- 
Dr. Hannes Reinecke			hare at suse.de
SuSE Linux AG				S390 & zSeries
Maxfeldstraße 5				+49 911 74053 688
90409 Nürnberg				http://www.suse.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: klibc-0.148-getpagesize.patch
Type: text/x-patch
Size: 384 bytes
Desc: not available
Url : http://www.zytor.com/pipermail/klibc/attachments/20040715/fa176139/klibc-0.148-getpagesize-0001.bin


More information about the klibc mailing list