From 772e3426a7b6f5200cb1029d41308b8b666cdbab Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 28 Jan 2003 09:08:07 +0000 Subject: Update. 2003-01-28 Ulrich Drepper * sysdeps/unix/common/pause.c (do_pause): New function. Split from __libc_pause. Implement using sigsuspend. (__libc_pause): Call do_pause to do the real work. * sysdeps/posix/sigpause.c (do_sigpause): Check range of sig_or_mask parameter is is_sig != 0. --- sysdeps/unix/common/pause.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'sysdeps/unix/common') diff --git a/sysdeps/unix/common/pause.c b/sysdeps/unix/common/pause.c index 508a3e0b53..14b87e44d0 100644 --- a/sysdeps/unix/common/pause.c +++ b/sysdeps/unix/common/pause.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1996, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1996, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,16 +22,28 @@ /* Suspend the process until a signal arrives. This always returns -1 and sets errno to EINTR. */ +static void +do_pause (void) +{ + sigset_t set; + + sigemptyset (&set); + + __sigsuspend (&set); +} int __libc_pause (void) { if (SINGLE_THREAD_P) - return __sigpause (__sigblock (0), 0); + { + do_pause (); + return -1; + } int oldtype = LIBC_CANCEL_ASYNC (); - int result = __sigpause (__sigblock (0), 0); + (void) do_pause (); LIBC_CANCEL_RESET (oldtype); - return result; + return -1; } weak_alias (__libc_pause, pause) -- cgit v1.2.3