The whole "init is sometimes pid 3" thing is silly. Init is pid 1, anything

else is a kernel bug.  Both 2.4 and 2.6 should get this right now.  This
should fix the bug IraquiGeek is seeing (although killall still needs to
be fixed.)
This commit is contained in:
Rob Landley 2006-01-22 02:41:51 +00:00
parent aaffef4d33
commit 2edf52643d
5 changed files with 9 additions and 127 deletions

View File

@ -4,20 +4,7 @@
* *
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/ */
#include <signal.h> #include <signal.h>
@ -37,12 +24,5 @@ extern int halt_main(int argc, char **argv)
sleep(atoi(delay)); sleep(atoi(delay));
} }
#ifndef CONFIG_INIT return ENABLE_INIT ? kill(1,SIGUSR1) : bb_shutdown_system(RB_HALT_SYSTEM);
#ifndef RB_HALT_SYSTEM
#define RB_HALT_SYSTEM 0xcdef0123
#endif
return(bb_shutdown_system(RB_HALT_SYSTEM));
#else
return kill_init(SIGUSR1);
#endif
} }

View File

@ -6,20 +6,7 @@
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* Adjusted by so many folks, it's impossible to keep track. * Adjusted by so many folks, it's impossible to keep track.
* *
* This program is free software; you can redistribute it and/or modify * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/ */
/* Turn this on to disable all the dangerous /* Turn this on to disable all the dangerous
@ -1033,7 +1020,7 @@ extern int init_main(int argc, char **argv)
int status; int status;
if (argc > 1 && !strcmp(argv[1], "-q")) { if (argc > 1 && !strcmp(argv[1], "-q")) {
return kill_init(SIGHUP); return kill(1,SIGHUP);
} }
#ifndef DEBUG_INIT #ifndef DEBUG_INIT
/* Expect to be invoked as init with PID=1 or be invoked as linuxrc */ /* Expect to be invoked as init with PID=1 or be invoked as linuxrc */

View File

@ -4,20 +4,7 @@
* *
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/ */
#include <signal.h> #include <signal.h>
@ -29,22 +16,6 @@
#include "busybox.h" #include "busybox.h"
#include "init_shared.h" #include "init_shared.h"
extern int kill_init(int sig)
{
#ifdef CONFIG_FEATURE_INITRD
/* don't assume init's pid == 1 */
long *pid = find_pid_by_name("init");
if (!pid || *pid<=0) {
pid = find_pid_by_name("linuxrc");
if (!pid || *pid<=0)
bb_error_msg_and_die("no process killed");
}
return(kill(*pid, sig));
#else
return(kill(1, sig));
#endif
}
#ifndef CONFIG_INIT #ifndef CONFIG_INIT
const char * const bb_shutdown_format = "\r%s\n"; const char * const bb_shutdown_format = "\r%s\n";
extern int bb_shutdown_system(unsigned long magic) extern int bb_shutdown_system(unsigned long magic)

View File

@ -4,20 +4,7 @@
* *
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/ */
#include <signal.h> #include <signal.h>
@ -37,20 +24,5 @@ extern int poweroff_main(int argc, char **argv)
sleep(atoi(delay)); sleep(atoi(delay));
} }
#ifndef CONFIG_INIT return ENABLE_INIT ? kill(1,SIGUSR2) : bb_shutdown_system(RB_POWER_OFF);
#ifndef RB_POWER_OFF
#define RB_POWER_OFF 0x4321fedc
#endif
return(bb_shutdown_system(RB_POWER_OFF));
#else
return kill_init(SIGUSR2);
#endif
} }
/*
Local Variables:
c-file-style: "linux"
c-basic-offset: 4
tab-width: 4
End:
*/

View File

@ -4,20 +4,7 @@
* *
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/ */
#include <signal.h> #include <signal.h>
@ -37,20 +24,5 @@ extern int reboot_main(int argc, char **argv)
sleep(atoi(delay)); sleep(atoi(delay));
} }
#ifndef CONFIG_INIT return ENABLE_INIT ? kill(1,SIGTERM) : bb_shutdown_system(RB_AUTOBOOT);
#ifndef RB_AUTOBOOT
#define RB_AUTOBOOT 0x01234567
#endif
return(bb_shutdown_system(RB_AUTOBOOT));
#else
return kill_init(SIGTERM);
#endif
} }
/*
Local Variables:
c-file-style: "linux"
c-basic-offset: 4
tab-width: 4
End:
*/