Why have a separate CONFIG_INIT_SWAPON when we already have CONFIG_SWAPONOFF?

This commit is contained in:
Rob Landley 2005-08-30 18:50:37 +00:00
parent 7a8f6792f3
commit c3386a4304
2 changed files with 14 additions and 72 deletions

View File

@ -35,14 +35,6 @@ config CONFIG_FEATURE_INIT_COREDUMPS
core file sizes. If this option is disabled, processes core file sizes. If this option is disabled, processes
will not generate any core files. will not generate any core files.
config CONFIG_FEATURE_INIT_SWAPON
bool " Should init run swapon if short on memory?"
default y
depends on CONFIG_INIT
help
If the system has less than one megabyte of total memory, init
will run '/sbin/swapon -a' to add swap memory.
config CONFIG_FEATURE_INIT_SCTTY config CONFIG_FEATURE_INIT_SCTTY
bool " Support running commands with a controlling-tty?" bool " Support running commands with a controlling-tty?"
default n default n

View File

@ -308,37 +308,6 @@ static void set_term(int fd)
tcsetattr(fd, TCSANOW, &tty); tcsetattr(fd, TCSANOW, &tty);
} }
#ifdef CONFIG_FEATURE_INIT_SWAPON
/* How much memory does this machine have?
Units are kBytes to avoid overflow on 4GB machines */
static unsigned int check_free_memory(void)
{
struct sysinfo info;
unsigned int result, u, s = 10;
if (sysinfo(&info) != 0) {
bb_perror_msg("Error checking free memory");
return -1;
}
/* Kernels 2.0.x and 2.2.x return info.mem_unit==0 with values in bytes.
* Kernels 2.4.0 return info.mem_unit in bytes. */
u = info.mem_unit;
if (u == 0)
u = 1;
while ((u & 1) == 0 && s > 0) {
u >>= 1;
s--;
}
result = (info.totalram >> s) + (info.totalswap >> s);
if (((unsigned long long)result * (unsigned long long)u) > UINT_MAX) {
return(UINT_MAX);
} else {
return(result * u);
}
}
#endif /* CONFIG_FEATURE_INIT_SWAPON */
static void console_init(void) static void console_init(void)
{ {
int fd; int fd;
@ -918,38 +887,6 @@ static void delete_init_action(struct init_action *action)
} }
} }
#ifdef CONFIG_FEATURE_INIT_SWAPON
/* Make sure there is enough memory to do something useful. *
* Calls "swapon -a" if needed so be sure /etc/fstab is present... */
static void check_memory(void)
{
struct stat statBuf;
if (check_free_memory() > 1000)
return;
#if !defined(__UCLIBC__) || defined(__ARCH_HAS_MMU__)
if (stat("/etc/fstab", &statBuf) == 0) {
/* swapon -a requires /proc typically */
new_init_action(SYSINIT, "/bin/mount -t proc proc /proc", "");
/* Try to turn on swap */
new_init_action(SYSINIT, "/sbin/swapon -a", "");
run_actions(SYSINIT); /* wait and removing */
if (check_free_memory() < 1000)
goto goodnight;
} else
goto goodnight;
return;
#endif
goodnight:
message(CONSOLE, "Sorry, your computer does not have enough memory.");
loop_forever();
}
#else
# define check_memory()
#endif /* CONFIG_FEATURE_INIT_SWAPON */
/* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined, /* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined,
* then parse_inittab() simply adds in some default * then parse_inittab() simply adds in some default
* actions(i.e., runs INIT_SCRIPT and then starts a pair * actions(i.e., runs INIT_SCRIPT and then starts a pair
@ -1149,7 +1086,20 @@ extern int init_main(int argc, char **argv)
message(MAYBE_CONSOLE | LOG, "init started: %s", bb_msg_full_version); message(MAYBE_CONSOLE | LOG, "init started: %s", bb_msg_full_version);
/* Make sure there is enough memory to do something useful. */ /* Make sure there is enough memory to do something useful. */
check_memory(); if (ENABLE_SWAPONOFF) {
struct sysinfo info;
if (!sysinfo(&info) &&
(info.mem_unit ? : 1) * (long long)info.totalram < MEGABYTE)
{
message(CONSOLE,"Low memory: forcing swapon.");
/* swapon -a requires /proc typically */
new_init_action(SYSINIT, "/bin/mount -t proc proc /proc", "");
/* Try to turn on swap */
new_init_action(SYSINIT, "/sbin/swapon -a", "");
run_actions(SYSINIT); /* wait and removing */
}
}
/* Check if we are supposed to be in single user mode */ /* Check if we are supposed to be in single user mode */
if (argc > 1 && (!strcmp(argv[1], "single") || if (argc > 1 && (!strcmp(argv[1], "single") ||