packages: suspend/suspend.spec, suspend/suspend-neverhang.patch (NEW) - rel...

arekm arekm at pld-linux.org
Sun Jun 14 04:41:18 CEST 2009


Author: arekm                        Date: Sun Jun 14 02:41:18 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- rel .3; VT_WAITACTIVE can hang, so don't use it

---- Files affected:
packages/suspend:
   suspend.spec (1.63 -> 1.64) , suspend-neverhang.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/suspend/suspend.spec
diff -u packages/suspend/suspend.spec:1.63 packages/suspend/suspend.spec:1.64
--- packages/suspend/suspend.spec:1.63	Mon Apr  6 16:49:31 2009
+++ packages/suspend/suspend.spec	Sun Jun 14 04:41:12 2009
@@ -16,7 +16,7 @@
 Summary(pl.UTF-8):	Zamrażanie w RAM/Dysku/Jedno i drugie
 Name:		suspend
 Version:	0.8
-Release:	0.%{snap}.2
+Release:	0.%{snap}.3
 License:	GPL v2
 Group:		Applications/System
 # cvs -z3 -d:pserver:anonymous at suspend.cvs.sf.net:/cvsroot/suspend co suspend
@@ -25,6 +25,7 @@
 Patch0:		%{name}-sys-file-range-write.patch
 Patch1:		%{name}-fadvise.patch
 Patch2:		%{name}-diet.patch
+Patch3:		%{name}-neverhang.patch
 URL:		http://sourceforge.net/projects/suspend
 BuildRequires:	autoconf
 BuildRequires:	automake
@@ -84,6 +85,7 @@
 %patch0 -p1
 %patch1 -p2
 %patch2 -p1
+%patch3 -p1
 
 cat >syscalltest.c <<EOF
 #include <stdio.h>
@@ -171,6 +173,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.64  2009/06/14 02:41:12  arekm
+- rel .3; VT_WAITACTIVE can hang, so don't use it
+
 Revision 1.63  2009/04/06 14:49:31  baggins
 - rel 2
 - added initrd package (built with dietlibc by default)

================================================================
Index: packages/suspend/suspend-neverhang.patch
diff -u /dev/null packages/suspend/suspend-neverhang.patch:1.1
--- /dev/null	Sun Jun 14 04:41:18 2009
+++ packages/suspend/suspend-neverhang.patch	Sun Jun 14 04:41:12 2009
@@ -0,0 +1,79 @@
+diff -urN suspend/s2ram-main.c suspend.new/s2ram-main.c
+--- suspend/s2ram-main.c	2007-12-19 16:35:13.000000000 +0100
++++ suspend.new/s2ram-main.c	2009-06-14 04:36:10.797977387 +0200
+@@ -86,8 +86,12 @@
+ 
+ 	/* switch to console 1 first, since we might be in X */
+ 	active_console = fgconsole();
+-	printf("Switching from vt%d to vt1\n", active_console);
+-	chvt(1);
++	printf("Switching from vt%d to vt1", active_console);
++	if (chvt(1))
++		printf("... succeeded\n");
++	else
++		printf("... failed\n");
++
+ 
+ 	ret = s2ram_hacks();
+ 	if (ret)
+@@ -98,8 +102,11 @@
+  out:
+ 	/* if we switched consoles before suspend, switch back */
+ 	if (active_console > 0) {
+-		printf("switching back to vt%d\n", active_console);
+-		chvt(active_console);
++		printf("switching back to vt%d", active_console);
++		if (chvt(active_console))
++			printf("... succeeded\n");
++		else
++			printf("... failed\n");
+ 	}
+ 
+ 	return ret;
+Pliki suspend/syscalltest i suspend.new/syscalltest różnią się
+diff -urN suspend/vt.c suspend.new/vt.c
+--- suspend/vt.c	2007-09-13 21:38:10.000000000 +0200
++++ suspend.new/vt.c	2009-06-14 04:34:11.231322284 +0200
+@@ -85,15 +85,24 @@
+ 	return vtstat.v_active;
+ }
+ 
+-void chvt(int num)
++int chvt(int num)
+ {
+-	int fd = getconsolefd();
+-	if (ioctl(fd, VT_ACTIVATE, num)) {
+-		perror("chvt: VT_ACTIVATE");
+-	}
+-	if (ioctl(fd, VT_WAITACTIVE, num)) {
+-		perror("VT_WAITACTIVE");
++#define	USER_WAIT_SLEEP_US		100000
++#define	USER_WAIT_MAX_ITERATIONS	50
++	int i, fd, active = 0;
++
++	for (i = 0; i < USER_WAIT_MAX_ITERATIONS; i++) {
++		if (fgconsole() == num) {
++			active = 1;
++			break;
++		}
++		fd = getconsolefd();
++		if (ioctl(fd, VT_ACTIVATE, num)) {
++			perror("chvt: VT_ACTIVATE");
++		}
++		usleep(USER_WAIT_SLEEP_US);
+ 	}
++	return active;
+ }
+ 
+ int is_framebuffer(void)
+diff -urN suspend/vt.h suspend.new/vt.h
+--- suspend/vt.h	2006-03-16 22:19:01.000000000 +0100
++++ suspend.new/vt.h	2009-06-14 04:34:20.894655045 +0200
+@@ -5,6 +5,6 @@
+ int open_a_console(const char *fnam);
+ int getconsolefd(void);
+ int fgconsole(void);
+-void chvt(int num);
++int chvt(int num);
+ int is_framebuffer(void);
+ char *get_fbname(void);
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/suspend/suspend.spec?r1=1.63&r2=1.64&f=u



More information about the pld-cvs-commit mailing list