This commit is contained in:
parent
6183ffa1b0
commit
ae69685720
@ -1,376 +0,0 @@
|
||||
--- README.swsusp
|
||||
+++ README.swsusp 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -0,0 +1,5 @@
|
||||
+ This version of sysvinit contains a patch for supporting the
|
||||
+ Software suspend feature for Linux.
|
||||
+ In order to really use it, you need to patch your kernel
|
||||
+ with Gabor Kuti's software-suspend patch:
|
||||
+ http://falcon.sch.bme.hu/~seasons/linux/
|
||||
--- man/halt.8
|
||||
+++ man/halt.8 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -4,7 +4,7 @@
|
||||
.\"}}}
|
||||
.\"{{{ Name
|
||||
.SH NAME
|
||||
-halt, reboot, poweroff \- stop the system.
|
||||
+halt, reboot, poweroff, suspend \- stop the system.
|
||||
.\"}}}
|
||||
.\"{{{ Synopsis
|
||||
.SH SYNOPSIS
|
||||
@@ -31,12 +31,16 @@
|
||||
.RB [ \-f ]
|
||||
.RB [ \-i ]
|
||||
.RB [ \-h ]
|
||||
+.br
|
||||
+.B /sbin/swsusp
|
||||
+.RB [ \-w ]
|
||||
+.RB [ \-d ]
|
||||
.\"}}}
|
||||
.\"{{{ Description
|
||||
.SH DESCRIPTION
|
||||
\fBHalt\fP notes that the system is being brought down in the file
|
||||
-\fI/var/log/wtmp\fP, and then either tells the kernel to halt, reboot or
|
||||
-poweroff the system.
|
||||
+\fI/var/log/wtmp\fP, and then either tells the kernel to halt, reboot, poweroff,
|
||||
+or suspend the system.
|
||||
.PP
|
||||
If \fBhalt\fP or \fBreboot\fP is called when the system is
|
||||
\fInot\fP in runlevel \fB0\fP or \fB6\fP, in other words when it's running
|
||||
--- man/inittab.5
|
||||
+++ man/inittab.5 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -137,6 +137,13 @@
|
||||
the external UPS is almost empty and the power is failing (provided that the
|
||||
external UPS and the monitoring process are able to detect this condition).
|
||||
.\"}}}
|
||||
+.\"{{{ resume
|
||||
+.IP \fBresume\fP
|
||||
+This process will be executed when \fBinit\fP is told by the kernel that
|
||||
+Software Suspend has resumed the machine. This way you may specify userland
|
||||
+programs what can restore hardware states the kernel cannot (for example
|
||||
+svgatextmode and hdparm).
|
||||
+.\"}}}
|
||||
.\"{{{ ctrlaltdel
|
||||
.IP \fBctrlaltdel\fP
|
||||
The process will be executed when \fBinit\fP receives the SIGINT signal.
|
||||
--- man/shutdown.8
|
||||
+++ man/shutdown.8 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -11,7 +11,7 @@
|
||||
.B /sbin/shutdown
|
||||
.RB [ \-t
|
||||
.IR sec ]
|
||||
-.RB [ \-arkhncfFHP ]
|
||||
+.RB [ \-arkhzncfFHP ]
|
||||
.I time
|
||||
.RI [ warning-message ]
|
||||
.\"}}}
|
||||
@@ -71,6 +71,12 @@
|
||||
The use of this option is discouraged, and its results are not always what
|
||||
you'd expect.
|
||||
.\"}}}
|
||||
+.\"{{{ -z
|
||||
+.IP \fB\-z\fP
|
||||
+Shutdown using software suspend. Using this option will not kill processes
|
||||
+but pass the control to the kernel what makes the proper steps to stop and
|
||||
+save processes to swaps. 'Software\ Suspend' needs to be compiled in.
|
||||
+.\"}}}
|
||||
.\"{{{ -f
|
||||
.IP \fB\-f\fP
|
||||
Skip fsck on reboot.
|
||||
--- man/swsusp.8
|
||||
+++ man/swsusp.8 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+.so man8/halt.8
|
||||
--- src/Makefile
|
||||
+++ src/Makefile 2005-10-19 13:54:38.000000000 +0200
|
||||
@@ -52,7 +52,7 @@
|
||||
SBIN += sulogin
|
||||
USRBIN += utmpdump
|
||||
MAN1 += mountpoint.1
|
||||
-MAN8 += sulogin.8
|
||||
+MAN8 += sulogin.8 swsusp.8
|
||||
endif
|
||||
|
||||
BIN_OWNER = root
|
||||
@@ -131,6 +131,7 @@
|
||||
for i in $(USRBIN); do \
|
||||
$(INSTALL) -m 755 $$i $(ROOT)/usr/bin/; \
|
||||
done
|
||||
+ ln -sf halt $(ROOT)/sbin/swsusp
|
||||
ln -sf halt $(ROOT)/sbin/reboot
|
||||
ln -sf halt $(ROOT)/sbin/poweroff
|
||||
ln -sf init $(ROOT)/sbin/telinit
|
||||
--- src/dowall.c
|
||||
+++ src/dowall.c 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
||||
+#include <sched.h>
|
||||
|
||||
static sigjmp_buf jbuf;
|
||||
|
||||
@@ -214,6 +215,7 @@
|
||||
if (tp != NULL) fclose(tp);
|
||||
}
|
||||
endutent();
|
||||
+ sched_yield();
|
||||
|
||||
exit(0);
|
||||
}
|
||||
--- src/halt.c
|
||||
+++ src/halt.c 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -172,6 +172,7 @@
|
||||
int do_ifdown = 0;
|
||||
int do_hddown = 0;
|
||||
int do_poweroff = 0;
|
||||
+ int do_swsusp = 0;
|
||||
int c;
|
||||
char *tm = NULL;
|
||||
|
||||
@@ -185,6 +186,7 @@
|
||||
|
||||
if (!strcmp(progname, "reboot")) do_reboot = 1;
|
||||
if (!strcmp(progname, "poweroff")) do_poweroff = 1;
|
||||
+ if (!strcmp(progname, "swsusp")) do_swsusp = 1;
|
||||
|
||||
/*
|
||||
* Get flags
|
||||
@@ -220,6 +222,14 @@
|
||||
usage();
|
||||
}
|
||||
}
|
||||
+ if(do_swsusp) { /* This implies some flags.. */
|
||||
+ do_sync = 0;
|
||||
+ do_ifdown = 0;
|
||||
+ do_poweroff = 0;
|
||||
+ do_reboot = 0;
|
||||
+ do_hard = 1;
|
||||
+ }
|
||||
+
|
||||
if (argc != optind) usage();
|
||||
|
||||
if (geteuid() != 0) {
|
||||
@@ -264,6 +274,8 @@
|
||||
|
||||
if (do_reboot) {
|
||||
init_reboot(BMAGIC_REBOOT);
|
||||
+ } else if(do_swsusp) {
|
||||
+ init_reboot(BMAGIC_SWSUSP);
|
||||
} else {
|
||||
/*
|
||||
* Turn on hard reboot, CTRL-ALT-DEL will reboot now
|
||||
--- src/init.c
|
||||
+++ src/init.c 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -85,6 +85,10 @@
|
||||
# define CBAUDEX 0
|
||||
#endif
|
||||
|
||||
+#ifndef SIGRESUME
|
||||
+# define SIGRESUME SIGXCPU
|
||||
+#endif
|
||||
+
|
||||
/* Set a signal handler. */
|
||||
#define SETSIG(sa, sig, fun, flags) \
|
||||
do { \
|
||||
@@ -143,7 +147,7 @@
|
||||
/* Macro to see if this is a special action */
|
||||
#define ISPOWER(i) ((i) == POWERWAIT || (i) == POWERFAIL || \
|
||||
(i) == POWEROKWAIT || (i) == POWERFAILNOW || \
|
||||
- (i) == CTRLALTDEL)
|
||||
+ (i) == CTRLALTDEL || (i) == RESUME)
|
||||
|
||||
/* ascii values for the `action' field. */
|
||||
struct actions {
|
||||
@@ -165,6 +169,7 @@
|
||||
{ "initdefault", INITDEFAULT },
|
||||
{ "sysinit", SYSINIT },
|
||||
{ "kbrequest", KBREQUEST },
|
||||
+ { "resume", RESUME },
|
||||
{ NULL, 0 },
|
||||
};
|
||||
|
||||
@@ -1129,6 +1134,7 @@
|
||||
case POWERWAIT:
|
||||
case POWERFAILNOW:
|
||||
case POWEROKWAIT:
|
||||
+ case RESUME:
|
||||
case CTRLALTDEL:
|
||||
if (!(ch->flags & XECUTED)) ch->flags |= WAITING;
|
||||
case KBREQUEST:
|
||||
@@ -1822,6 +1828,22 @@
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Start up userland hwstate restoring.
|
||||
+ */
|
||||
+void do_hwstate_restore(void)
|
||||
+{
|
||||
+ CHILD *ch;
|
||||
+
|
||||
+ /*
|
||||
+ * Tell resume entries to start up
|
||||
+ */
|
||||
+ for (ch = family; ch; ch = ch->next) {
|
||||
+ if (ch->action == RESUME)
|
||||
+ ch->flags &= ~XECUTED;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* Start up powerfail entries.
|
||||
*/
|
||||
static
|
||||
@@ -2318,6 +2340,14 @@
|
||||
int fd;
|
||||
char c;
|
||||
|
||||
+ if (ISMEMBER(got_signals, SIGRESUME)) {
|
||||
+#if DEBUG
|
||||
+ log(L_VB, "got SIGRESUME");
|
||||
+#endif
|
||||
+ do_hwstate_restore();
|
||||
+ DELSET(got_signals, SIGRESUME);
|
||||
+ }
|
||||
+
|
||||
if (ISMEMBER(got_signals, SIGPWR)) {
|
||||
INITDBG(L_VB, "got SIGPWR");
|
||||
/* See _what_ kind of SIGPWR this is. */
|
||||
@@ -2474,6 +2504,7 @@
|
||||
SETSIG(sa, SIGPWR, signal_handler, 0);
|
||||
SETSIG(sa, SIGWINCH, signal_handler, 0);
|
||||
SETSIG(sa, SIGUSR1, signal_handler, 0);
|
||||
+ SETSIG(sa, SIGRESUME,signal_handler, 0);
|
||||
SETSIG(sa, SIGSTOP, stop_handler, SA_RESTART);
|
||||
SETSIG(sa, SIGTSTP, stop_handler, SA_RESTART);
|
||||
SETSIG(sa, SIGCONT, cont_handler, SA_RESTART);
|
||||
--- src/init.h
|
||||
+++ src/init.h 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -53,6 +53,7 @@
|
||||
#define SYSINIT 13
|
||||
#define POWERFAILNOW 14
|
||||
#define KBREQUEST 15
|
||||
+#define RESUME 16
|
||||
|
||||
/* Information about a process in the in-core inittab */
|
||||
typedef struct _child_ {
|
||||
--- src/reboot.h
|
||||
+++ src/reboot.h 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -32,5 +32,9 @@
|
||||
# define BMAGIC_POWEROFF BMAGIC_HALT
|
||||
#endif
|
||||
|
||||
+#ifndef BMAGIC_SWSUSP
|
||||
+# define BMAGIC_SWSUSP 0xd000fce2
|
||||
+#endif
|
||||
+
|
||||
#define init_reboot(magic) reboot(magic)
|
||||
|
||||
--- src/shutdown.c
|
||||
+++ src/shutdown.c 2005-10-19 13:52:54.000000000 +0200
|
||||
@@ -1,10 +1,11 @@
|
||||
/*
|
||||
* shutdown.c Shut the system down.
|
||||
*
|
||||
- * Usage: shutdown [-krhfnc] time [warning message]
|
||||
+ * Usage: shutdown [-krhzfnc] time [warning message]
|
||||
* -k: don't really shutdown, only warn.
|
||||
* -r: reboot after shutdown.
|
||||
* -h: halt after shutdown.
|
||||
+ * -z: shutdown using software suspend.
|
||||
* -f: do a 'fast' reboot (skip fsck).
|
||||
* -F: Force fsck on reboot.
|
||||
* -n: do not go through init but do it ourselves.
|
||||
@@ -113,6 +114,7 @@
|
||||
"\t\t -f: do a 'fast' reboot (skip fsck).\n"
|
||||
"\t\t -F: Force fsck on reboot.\n"
|
||||
"\t\t -n: do not go through \"init\" but go down real fast.\n"
|
||||
+ "\t\t -z: shutdown using software suspend.\n"
|
||||
"\t\t -c: cancel a running shutdown.\n"
|
||||
"\t\t -t secs: delay between warning and kill signal.\n"
|
||||
"\t\t ** the \"time\" argument is mandatory! (try \"now\") **\n");
|
||||
@@ -271,6 +273,7 @@
|
||||
void fastdown()
|
||||
{
|
||||
int do_halt = (down_level[0] == '0');
|
||||
+ int do_swsusp = (down_level[0] == 'z');
|
||||
int i;
|
||||
#if 0
|
||||
char cmd[128];
|
||||
@@ -293,6 +296,8 @@
|
||||
script = REBOOTSCRIPT2;
|
||||
}
|
||||
#endif
|
||||
+ if(do_swsusp)
|
||||
+ init_reboot(BMAGIC_SWSUSP);
|
||||
|
||||
/* First close all files. */
|
||||
for(i = 0; i < 3; i++)
|
||||
@@ -364,7 +369,9 @@
|
||||
int do_halt = (down_level[0] == '0');
|
||||
|
||||
/* Warn for the last time */
|
||||
- warn(0);
|
||||
+ /* I don't want to mess up the later resumed screen */
|
||||
+ if(down_level[0] != 'z')
|
||||
+ warn(0);
|
||||
if (dontshut) {
|
||||
hardsleep(1);
|
||||
stopit(0);
|
||||
@@ -467,7 +474,7 @@
|
||||
halttype = NULL;
|
||||
|
||||
/* Process the options. */
|
||||
- while((c = getopt(argc, argv, "HPacqkrhnfFyt:g:i:")) != EOF) {
|
||||
+ while((c = getopt(argc, argv, "HPacqkrhnzfFyt:g:i:")) != EOF) {
|
||||
switch(c) {
|
||||
case 'H':
|
||||
halttype = "HALT";
|
||||
@@ -499,6 +506,9 @@
|
||||
case 'n': /* Don't switch runlevels. */
|
||||
doself = 1;
|
||||
break;
|
||||
+ case 'z': /* Shutdown using software suspend */
|
||||
+ down_level[0] = 'z';
|
||||
+ break;
|
||||
case 't': /* Delay between TERM and KILL */
|
||||
sltime = optarg;
|
||||
break;
|
||||
@@ -592,6 +602,18 @@
|
||||
}
|
||||
if (message[0]) strcat(message, "\r\n");
|
||||
|
||||
+ if(down_level[0] == 'z') {
|
||||
+ doself = 1;
|
||||
+ if(fastboot) {
|
||||
+ fprintf(stderr, "shutdown: -f option ignored");
|
||||
+ fastboot = 0;
|
||||
+ }
|
||||
+ if(forcefsck) {
|
||||
+ fprintf(stderr, "shutdown: -F option ignored");
|
||||
+ forcefsck = 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* See if we want to run or cancel. */
|
||||
if (cancel) {
|
||||
if (pid <= 0) {
|
||||
@@ -621,7 +643,8 @@
|
||||
}
|
||||
|
||||
/* Extra check. */
|
||||
- if (doself && down_level[0] != '0' && down_level[0] != '6') {
|
||||
+ if (doself && down_level[0] != '0' && down_level[0] != '6' &&
|
||||
+ down_level[0] != 'z') {
|
||||
fprintf(stderr,
|
||||
"shutdown: can use \"-n\" for halt or reboot only.\r\n");
|
||||
exit(1);
|
||||
@@ -638,6 +661,9 @@
|
||||
case '1':
|
||||
strcpy(newstate, "to maintenance mode");
|
||||
break;
|
||||
+ case 'z':
|
||||
+ strcpy(newstate, "for system suspend");
|
||||
+ break;
|
||||
default:
|
||||
sprintf(newstate, "to runlevel %s", down_level);
|
||||
break;
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 14 15:53:00 CET 2007 - werner@suse.de
|
||||
|
||||
- Remove swap supend patch because this is done now by powersave
|
||||
calling hal (bug #241204)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 14 13:43:12 CET 2006 - werner@suse.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package sysvinit (Version 2.86)
|
||||
#
|
||||
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
@ -17,12 +17,12 @@ Name: sysvinit
|
||||
%define SCVER 1.08
|
||||
%define SIVER 2.86
|
||||
%define START 0.49
|
||||
License: GNU General Public License (GPL), Other License(s), see package
|
||||
License: GNU General Public License (GPL)
|
||||
Group: System/Base
|
||||
PreReq: coreutils
|
||||
Autoreqprov: on
|
||||
Version: 2.86
|
||||
Release: 49
|
||||
Release: 55
|
||||
Summary: SysV-Style init
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Source: sysvinit-2.86.tar.bz2
|
||||
@ -35,7 +35,6 @@ Patch: sysvinit-2.86.dif
|
||||
Patch1: sysvinit-2.86-nfs4pidof.patch
|
||||
Patch2: powerd-2.0.2.dif
|
||||
Patch3: killproc-2.12.dif
|
||||
Patch4: swsusp-for-sysvinit-2.86.diff
|
||||
Patch5: sysvinit-2.86-sulogin.patch
|
||||
Patch6: sysvinit-2.82-startstop.patch
|
||||
Patch7: sysvinit-2.85-suse.patch
|
||||
@ -79,7 +78,6 @@ Authors:
|
||||
%patch -P 12 -b .lib64
|
||||
%patch -P 13 -b .multiline
|
||||
%patch
|
||||
%patch -P 4 -p 0 -b .swsusp
|
||||
%patch -P 15 -b .usage
|
||||
%patch -P 16 -b .fulltime
|
||||
pushd ../powerd-%{PDVER}
|
||||
@ -176,12 +174,10 @@ popd
|
||||
rm -f ${RPM_BUILD_ROOT}/usr/lib/libblogger.a
|
||||
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mesg.1*
|
||||
%ifarch s390 s390x
|
||||
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man8/swsusp.8*
|
||||
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man8/powerd.8*
|
||||
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man8/detectups.8*
|
||||
rm -f ${RPM_BUILD_ROOT}/sbin/powerd
|
||||
rm -f ${RPM_BUILD_ROOT}/sbin/detectups
|
||||
rm -f ${RPM_BUILD_ROOT}/sbin/swsusp
|
||||
%endif
|
||||
chmod 444 ${RPM_BUILD_ROOT}%{_mandir}/man?/*
|
||||
|
||||
@ -209,7 +205,6 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%doc ../powerd-%{PDVER}/FAQ.powerd
|
||||
%doc ../powerd-%{PDVER}/powerd.conf.monitor
|
||||
%doc ../powerd-%{PDVER}/powerd.conf.peer
|
||||
%doc README.swsusp
|
||||
%endif
|
||||
%doc contrib/start-stop-daemon.README
|
||||
# %doc contrib/bootlogd.README
|
||||
@ -234,7 +229,6 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%ifnarch s390 s390x
|
||||
/sbin/powerd
|
||||
/sbin/detectups
|
||||
/sbin/swsusp
|
||||
%endif
|
||||
/sbin/poweroff
|
||||
/sbin/reboot
|
||||
@ -272,7 +266,6 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%doc %{_mandir}/man8/killproc.8.gz
|
||||
%doc %{_mandir}/man8/pidof.8.gz
|
||||
%ifnarch s390 s390x
|
||||
%doc %{_mandir}/man8/swsusp.8.gz
|
||||
%doc %{_mandir}/man8/powerd.8.gz
|
||||
%doc %{_mandir}/man8/detectups.8.gz
|
||||
%endif
|
||||
@ -287,6 +280,9 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%doc %{_mandir}/man8/startpar.8.gz
|
||||
|
||||
%changelog -n sysvinit
|
||||
* Wed Feb 14 2007 - werner@suse.de
|
||||
- Remove swap supend patch because this is done now by powersave
|
||||
calling hal (bug #241204)
|
||||
* Thu Dec 14 2006 - werner@suse.de
|
||||
- New killproc 2.12 with new option -N better handling for NFS
|
||||
based programs which is not to stat(2) the binary with -N
|
||||
|
Loading…
x
Reference in New Issue
Block a user