Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Feb 2010 13:51:11 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r204307 - head/lib/libc/gen
Message-ID:  <201002251351.o1PDpBUR028304@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Thu Feb 25 13:51:11 2010
New Revision: 204307
URL: http://svn.freebsd.org/changeset/base/204307

Log:
  Make pause(3) implementation not depended on the legacy sigcompat.c
  interfaces. Do not block rt signals during and after pause(3) calls.
  Use private libc namespace to call proper methods.
  
  MFC after:	1 week

Modified:
  head/lib/libc/gen/pause.c

Modified: head/lib/libc/gen/pause.c
==============================================================================
--- head/lib/libc/gen/pause.c	Thu Feb 25 13:28:05 2010	(r204306)
+++ head/lib/libc/gen/pause.c	Thu Feb 25 13:51:11 2010	(r204307)
@@ -33,8 +33,10 @@ static char sccsid[] = "@(#)pause.c	8.1 
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "namespace.h"
 #include <signal.h>
 #include <unistd.h>
+#include "un-namespace.h"
 
 /*
  * Backwards compatible pause.
@@ -42,7 +44,11 @@ __FBSDID("$FreeBSD$");
 int
 __pause(void)
 {
-	return sigpause(sigblock(0L));
+	sigset_t oset;
+
+	if (_sigprocmask(SIG_BLOCK, NULL, &oset) == -1)
+		return (-1);
+	return (_sigsuspend(&oset));
 }
 __weak_reference(__pause, pause);
 __weak_reference(__pause, _pause);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002251351.o1PDpBUR028304>