OBS User unknown 2007-02-15 17:06:23 +00:00 committed by Git OBS Bridge
parent 6183ffa1b0
commit ae69685720
3 changed files with 12 additions and 386 deletions

View File

@ -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;

View File

@ -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 Thu Dec 14 13:43:12 CET 2006 - werner@suse.de

View File

@ -1,7 +1,7 @@
# #
# spec file for package sysvinit (Version 2.86) # 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 # This file and all modifications and additions to the pristine
# package are under the same license as the package itself. # package are under the same license as the package itself.
# #
@ -17,12 +17,12 @@ Name: sysvinit
%define SCVER 1.08 %define SCVER 1.08
%define SIVER 2.86 %define SIVER 2.86
%define START 0.49 %define START 0.49
License: GNU General Public License (GPL), Other License(s), see package License: GNU General Public License (GPL)
Group: System/Base Group: System/Base
PreReq: coreutils PreReq: coreutils
Autoreqprov: on Autoreqprov: on
Version: 2.86 Version: 2.86
Release: 49 Release: 55
Summary: SysV-Style init Summary: SysV-Style init
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: sysvinit-2.86.tar.bz2 Source: sysvinit-2.86.tar.bz2
@ -35,7 +35,6 @@ Patch: sysvinit-2.86.dif
Patch1: sysvinit-2.86-nfs4pidof.patch Patch1: sysvinit-2.86-nfs4pidof.patch
Patch2: powerd-2.0.2.dif Patch2: powerd-2.0.2.dif
Patch3: killproc-2.12.dif Patch3: killproc-2.12.dif
Patch4: swsusp-for-sysvinit-2.86.diff
Patch5: sysvinit-2.86-sulogin.patch Patch5: sysvinit-2.86-sulogin.patch
Patch6: sysvinit-2.82-startstop.patch Patch6: sysvinit-2.82-startstop.patch
Patch7: sysvinit-2.85-suse.patch Patch7: sysvinit-2.85-suse.patch
@ -79,7 +78,6 @@ Authors:
%patch -P 12 -b .lib64 %patch -P 12 -b .lib64
%patch -P 13 -b .multiline %patch -P 13 -b .multiline
%patch %patch
%patch -P 4 -p 0 -b .swsusp
%patch -P 15 -b .usage %patch -P 15 -b .usage
%patch -P 16 -b .fulltime %patch -P 16 -b .fulltime
pushd ../powerd-%{PDVER} pushd ../powerd-%{PDVER}
@ -176,12 +174,10 @@ popd
rm -f ${RPM_BUILD_ROOT}/usr/lib/libblogger.a rm -f ${RPM_BUILD_ROOT}/usr/lib/libblogger.a
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mesg.1* rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mesg.1*
%ifarch s390 s390x %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/powerd.8*
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man8/detectups.8* rm -f ${RPM_BUILD_ROOT}%{_mandir}/man8/detectups.8*
rm -f ${RPM_BUILD_ROOT}/sbin/powerd rm -f ${RPM_BUILD_ROOT}/sbin/powerd
rm -f ${RPM_BUILD_ROOT}/sbin/detectups rm -f ${RPM_BUILD_ROOT}/sbin/detectups
rm -f ${RPM_BUILD_ROOT}/sbin/swsusp
%endif %endif
chmod 444 ${RPM_BUILD_ROOT}%{_mandir}/man?/* chmod 444 ${RPM_BUILD_ROOT}%{_mandir}/man?/*
@ -209,7 +205,6 @@ rm -rf ${RPM_BUILD_ROOT}
%doc ../powerd-%{PDVER}/FAQ.powerd %doc ../powerd-%{PDVER}/FAQ.powerd
%doc ../powerd-%{PDVER}/powerd.conf.monitor %doc ../powerd-%{PDVER}/powerd.conf.monitor
%doc ../powerd-%{PDVER}/powerd.conf.peer %doc ../powerd-%{PDVER}/powerd.conf.peer
%doc README.swsusp
%endif %endif
%doc contrib/start-stop-daemon.README %doc contrib/start-stop-daemon.README
# %doc contrib/bootlogd.README # %doc contrib/bootlogd.README
@ -234,7 +229,6 @@ rm -rf ${RPM_BUILD_ROOT}
%ifnarch s390 s390x %ifnarch s390 s390x
/sbin/powerd /sbin/powerd
/sbin/detectups /sbin/detectups
/sbin/swsusp
%endif %endif
/sbin/poweroff /sbin/poweroff
/sbin/reboot /sbin/reboot
@ -272,7 +266,6 @@ rm -rf ${RPM_BUILD_ROOT}
%doc %{_mandir}/man8/killproc.8.gz %doc %{_mandir}/man8/killproc.8.gz
%doc %{_mandir}/man8/pidof.8.gz %doc %{_mandir}/man8/pidof.8.gz
%ifnarch s390 s390x %ifnarch s390 s390x
%doc %{_mandir}/man8/swsusp.8.gz
%doc %{_mandir}/man8/powerd.8.gz %doc %{_mandir}/man8/powerd.8.gz
%doc %{_mandir}/man8/detectups.8.gz %doc %{_mandir}/man8/detectups.8.gz
%endif %endif
@ -287,6 +280,9 @@ rm -rf ${RPM_BUILD_ROOT}
%doc %{_mandir}/man8/startpar.8.gz %doc %{_mandir}/man8/startpar.8.gz
%changelog -n sysvinit %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 * Thu Dec 14 2006 - werner@suse.de
- New killproc 2.12 with new option -N better handling for NFS - New killproc 2.12 with new option -N better handling for NFS
based programs which is not to stat(2) the binary with -N based programs which is not to stat(2) the binary with -N