Add in my little patch for 2.4.x to make sysinfo binary compatable (again)
-Erik
This commit is contained in:
parent
afa0662860
commit
c5c5e3d144
77
examples/kernel-patches/2.4.x-revert-sysinfo.patch
Normal file
77
examples/kernel-patches/2.4.x-revert-sysinfo.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
I have a version of free I wrote for BusyBox that uses sysinfo (rather then
|
||||||
|
/proc) to get its information. Under 2.2.x it reports normal stuff, i.e.
|
||||||
|
[andersen@dillweed busybox]$ ./free
|
||||||
|
total used free shared buffers
|
||||||
|
Mem: 127800 124268 3532 16956 7544
|
||||||
|
Swap: 128516 13584 114932
|
||||||
|
Total: 256316 137852 118464
|
||||||
|
|
||||||
|
while under 2.2.0-test1-ac7 it reports wierd numbers (~ #/4096)
|
||||||
|
[andersen@dillweed busybox]$ ./free
|
||||||
|
total used free shared buffers
|
||||||
|
Mem: 30 11 19 0 1
|
||||||
|
Swap: 31 0 31
|
||||||
|
Total: 61 11 50
|
||||||
|
|
||||||
|
After investigating the problem, it turns out that somewhere during 2.3.x the
|
||||||
|
values for memory stored in struct sysinfo changed from being stored as bytes
|
||||||
|
to being units of PAGE_SIZE, but kernel/info.c was never updated to reflect
|
||||||
|
this change in definition.
|
||||||
|
|
||||||
|
Breaking free isn't that big of a deal, but I also use sysinfo in init to check
|
||||||
|
that the box has enough ram from within the init process (and no, mounting
|
||||||
|
/proc from within init and reading /proc/meminfo is not a good solution.
|
||||||
|
BusyBox is often used in embedded systems where /proc is not compiled in).
|
||||||
|
|
||||||
|
The following patch reinstates the traditional sysinfo(2) interface by
|
||||||
|
returning bytes (not units of PAGE_SIZE) for memory values.
|
||||||
|
|
||||||
|
An additional patch suggestion (not included here) would be to eliminate the
|
||||||
|
supurfluous "mem_unit" variable from struct_sysinfo in include/linux/kernel.h
|
||||||
|
and arch/*/mm/init.c.
|
||||||
|
|
||||||
|
-Erik
|
||||||
|
|
||||||
|
--
|
||||||
|
Erik B. Andersen Web: http://www.xmission.com/~andersen/
|
||||||
|
email: andersee@debian.org
|
||||||
|
--This message was written using 73% post-consumer electrons--
|
||||||
|
|
||||||
|
--- linux/kernel/info.c.orig Mon Aug 23 12:15:53 1999
|
||||||
|
+++ linux/kernel/info.c Sun Jun 4 01:13:11 2000
|
||||||
|
@@ -2,6 +2,8 @@
|
||||||
|
* linux/kernel/info.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 1992 Darren Senn
|
||||||
|
+ * Fixed to once again return bytes instead of page counts,
|
||||||
|
+ * June 2000, by Erik Andersen <andersee@debian.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This implements the sysinfo() system call */
|
||||||
|
@@ -10,7 +12,6 @@
|
||||||
|
#include <linux/unistd.h>
|
||||||
|
#include <linux/swap.h>
|
||||||
|
#include <linux/smp_lock.h>
|
||||||
|
-
|
||||||
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
|
asmlinkage long sys_sysinfo(struct sysinfo *info)
|
||||||
|
@@ -31,6 +32,17 @@
|
||||||
|
|
||||||
|
si_meminfo(&val);
|
||||||
|
si_swapinfo(&val);
|
||||||
|
+
|
||||||
|
+ /* These are in units of PAGE_SIZE, but this interface
|
||||||
|
+ * has always returned bytes. Make it return bytes */
|
||||||
|
+ val.totalram*=PAGE_SIZE;
|
||||||
|
+ val.freeram*=PAGE_SIZE;
|
||||||
|
+ val.sharedram*=PAGE_SIZE;
|
||||||
|
+ val.bufferram*=PAGE_SIZE;
|
||||||
|
+ val.totalswap*=PAGE_SIZE;
|
||||||
|
+ val.freeswap*=PAGE_SIZE;
|
||||||
|
+ val.totalhigh*=PAGE_SIZE;
|
||||||
|
+ val.freehigh*=PAGE_SIZE;
|
||||||
|
|
||||||
|
if (copy_to_user(info, &val, sizeof(struct sysinfo)))
|
||||||
|
return -EFAULT;
|
||||||
|
|
@ -1,3 +1,14 @@
|
|||||||
|
I have been asked several times whether the devps patch will go into the
|
||||||
|
mainline Linux kernel. The following emails from Alan Cox and Linux Torvalds
|
||||||
|
make it clear that it is not going to happen. This does not mean this patch
|
||||||
|
had no value -- it does. It just means that those that like it get to apply it
|
||||||
|
themselves...
|
||||||
|
|
||||||
|
-Erik
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
From alan@lxorguk.ukuu.org.uk Thu Apr 13 08:07:22 2000
|
From alan@lxorguk.ukuu.org.uk Thu Apr 13 08:07:22 2000
|
||||||
Return-Path: <alan@lxorguk.ukuu.org.uk>
|
Return-Path: <alan@lxorguk.ukuu.org.uk>
|
||||||
Delivered-To: andersen@dillweed.dsl.xmission.com
|
Delivered-To: andersen@dillweed.dsl.xmission.com
|
||||||
|
Loading…
Reference in New Issue
Block a user