Make init handle current 2.4.x sysinfo behavior
-Erik
This commit is contained in:
parent
73de6561ca
commit
cbb61c78ae
21
init.c
21
init.c
@ -296,20 +296,17 @@ static int check_free_memory()
|
|||||||
printf("Error checking free memory: %s\n", strerror(errno));
|
printf("Error checking free memory: %s\n", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */
|
||||||
if (info.mem_unit==0) {
|
if (info.mem_unit==0) {
|
||||||
/* Looks like we have a kernel prior to Linux 2.4.x */
|
info.mem_unit=1;
|
||||||
info.mem_unit=1024;
|
|
||||||
info.totalram/=info.mem_unit;
|
|
||||||
info.totalswap/=info.mem_unit;
|
|
||||||
} else {
|
|
||||||
/* Bah. Linux 2.4.x completely changed sysinfo. This can in theory
|
|
||||||
overflow a 32 bit unsigned long, but who puts more then 4GiB ram+swap
|
|
||||||
on an embedded system? */
|
|
||||||
info.mem_unit/=1024;
|
|
||||||
info.totalram*=info.mem_unit;
|
|
||||||
info.totalswap*=info.mem_unit;
|
|
||||||
}
|
}
|
||||||
|
info.mem_unit*=1024;
|
||||||
|
|
||||||
|
/* Note: These values can in theory overflow a 32 bit unsigned long (i.e.
|
||||||
|
* mem >= Gib), but who puts more then 4GiB ram+swap on an embedded
|
||||||
|
* system? */
|
||||||
|
info.totalram/=info.mem_unit;
|
||||||
|
info.totalswap/=info.mem_unit;
|
||||||
return(info.totalram+info.totalswap);
|
return(info.totalram+info.totalswap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
21
init/init.c
21
init/init.c
@ -296,20 +296,17 @@ static int check_free_memory()
|
|||||||
printf("Error checking free memory: %s\n", strerror(errno));
|
printf("Error checking free memory: %s\n", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */
|
||||||
if (info.mem_unit==0) {
|
if (info.mem_unit==0) {
|
||||||
/* Looks like we have a kernel prior to Linux 2.4.x */
|
info.mem_unit=1;
|
||||||
info.mem_unit=1024;
|
|
||||||
info.totalram/=info.mem_unit;
|
|
||||||
info.totalswap/=info.mem_unit;
|
|
||||||
} else {
|
|
||||||
/* Bah. Linux 2.4.x completely changed sysinfo. This can in theory
|
|
||||||
overflow a 32 bit unsigned long, but who puts more then 4GiB ram+swap
|
|
||||||
on an embedded system? */
|
|
||||||
info.mem_unit/=1024;
|
|
||||||
info.totalram*=info.mem_unit;
|
|
||||||
info.totalswap*=info.mem_unit;
|
|
||||||
}
|
}
|
||||||
|
info.mem_unit*=1024;
|
||||||
|
|
||||||
|
/* Note: These values can in theory overflow a 32 bit unsigned long (i.e.
|
||||||
|
* mem >= Gib), but who puts more then 4GiB ram+swap on an embedded
|
||||||
|
* system? */
|
||||||
|
info.totalram/=info.mem_unit;
|
||||||
|
info.totalswap/=info.mem_unit;
|
||||||
return(info.totalram+info.totalswap);
|
return(info.totalram+info.totalswap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user