#include <sys/reboot.h>
#include <sys/sysinfo.h> /* For check_free_memory() */
#ifdef BB_SYSLOGD
-#include <sys/syslog.h>
+# include <sys/syslog.h>
#endif
#include <sys/sysmacros.h>
#include <sys/types.h>
#include <termios.h>
#include <unistd.h>
+
+#if defined BB_FEATURE_INIT_COREDUMPS
+/*
+ * When a file named CORE_ENABLE_FLAG_FILE exists, setrlimit is called
+ * before processes are spawned to set core file size as unlimited.
+ * This is for debugging only. Don't use this is production, unless
+ * you want core dumps lying about....
+ */
+#define CORE_ENABLE_FLAG_FILE "/.init_enable_core"
+#include <sys/resource.h>
+#include <sys/time.h>
+#endif
+
#ifndef KERNEL_VERSION
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
#endif
cmd[i] = NULL;
}
+#if defined BB_FEATURE_INIT_COREDUMPS
+ {
+ struct stat sb;
+ if (stat (CORE_ENABLE_FLAG_FILE, &sb) == 0) {
+ struct rlimit limit;
+ limit.rlim_cur = RLIM_INFINITY;
+ limit.rlim_max = RLIM_INFINITY;
+ setrlimit(RLIMIT_CORE, &limit);
+ }
+ }
+#endif
+
/* Now run it. The new program will take over this PID,
* so nothing further in init.c should be run. */
execve(cmd[0], cmd, environment);
close(1);
close(2);
set_term(0);
+ chdir("/");
setsid();
/* Make sure PATH is set to something sane */
* of "askfirst" shells */
parse_inittab();
}
-
+
/* Fix up argv[0] to be certain we claim to be init */
strncpy(argv[0], "init", strlen(argv[0])+1);
if (argc > 1)