linux-um archives
 help / color / mirror / Atom feed
* [uml-devel] [patch 1/1] uml: replace pause with sigsuspend
@ 2005-05-16 18:01 blaisorblade
  2005-05-17 10:14 ` Bodo Stroesser
  0 siblings, 1 reply; 6+ messages in thread
From: blaisorblade @ 2005-05-16 18:01 UTC (permalink / raw)
  To: jdike; +Cc: user-mode-linux-devel, blaisorblade


Replace pause with sigsuspend, to avoid needing to set an empty handler for SIGWINCH.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
---

 linux-2.6.git-paolo/arch/um/drivers/chan_user.c |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)

diff -puN arch/um/drivers/chan_user.c~uml-replace-pause-with-sigsuspend arch/um/drivers/chan_user.c
--- linux-2.6.git/arch/um/drivers/chan_user.c~uml-replace-pause-with-sigsuspend	2005-05-16 08:07:30.000000000 +0200
+++ linux-2.6.git-paolo/arch/um/drivers/chan_user.c	2005-05-16 08:08:10.000000000 +0200
@@ -67,10 +67,6 @@ error:
  * it (see below for how we make sure to exit only on SIGWINCH).
  */
 
-static void winch_handler(int sig)
-{
-}
-
 struct winch_data {
 	int pty_fd;
 	int pipe_fd;
@@ -93,14 +89,11 @@ static int winch_thread(void *arg)
 		printk("winch_thread : failed to write synchronization "
 		       "byte, err = %d\n", -count);
 
-	/* We are not using SIG_IGN on purpose, so don't fix it as I thought to
-	 * do! If using SIG_IGN, the pause() call below would not stop on
-	 * SIGWINCH. */
-
-	signal(SIGWINCH, winch_handler);
 	sigfillset(&sigs);
 	sigdelset(&sigs, SIGWINCH);
-	/* Block anything else than SIGWINCH. */
+	/* Block anything else than SIGWINCH. XXX: Actually, this may be removed
+	 * maybe, due to sigsuspend below, which replaces the signal mask, but
+	 * let's keep it.*/
 	if(sigprocmask(SIG_SETMASK, &sigs, NULL) < 0){
 		printk("winch_thread : sigprocmask failed, errno = %d\n", 
 		       errno);
@@ -130,7 +123,7 @@ static int winch_thread(void *arg)
 	while(1){
 		/* This will be interrupted by SIGWINCH only, since other signals
 		 * are blocked.*/
-		pause();
+		sigsuspend(&sigs);
 
 		count = os_write_file(pipe_fd, &c, sizeof(c));
 		if(count != sizeof(c))
_


-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-05-19 13:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-16 18:01 [uml-devel] [patch 1/1] uml: replace pause with sigsuspend blaisorblade
2005-05-17 10:14 ` Bodo Stroesser
2005-05-18 15:18   ` Blaisorblade
2005-05-18 19:19     ` Bodo Stroesser
2005-05-19 13:35       ` Blaisorblade
2005-05-19 13:39         ` Bodo Stroesser

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox