mirror of
https://github.com/sheumann/hush.git
synced 2024-12-22 14:30:31 +00:00
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:
parent
aaffef4d33
commit
2edf52643d
24
init/halt.c
24
init/halt.c
@ -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
|
|
||||||
}
|
}
|
||||||
|
17
init/init.c
17
init/init.c
@ -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 */
|
||||||
|
@ -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)
|
||||||
|
@ -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:
|
|
||||||
*/
|
|
||||||
|
@ -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:
|
|
||||||
*/
|
|
||||||
|
Loading…
Reference in New Issue
Block a user