Avoid unnecessary sigprocmask calls.

This commit is contained in:
Ulrich Drepper 2002-10-11 07:14:39 +00:00
parent 85adacbd99
commit db7ffaa304

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 1997, 1998, 2001 Free Software Foundation, Inc. /* Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -42,7 +42,7 @@ __pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask)
int retval; int retval;
sigset_t savemask; sigset_t savemask;
/* Change nanosecond number to microseconds. This may loose /* Change nanosecond number to microseconds. This might mean losing
precision and therefore the `pselect` should be available. But precision and therefore the `pselect` should be available. But
for now it is hardly found. */ for now it is hardly found. */
if (timeout != NULL) if (timeout != NULL)
@ -51,10 +51,14 @@ __pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask)
/* The setting and restoring of the signal mask and the select call /* The setting and restoring of the signal mask and the select call
should be an atomic operation. This can't be done without kernel should be an atomic operation. This can't be done without kernel
help. */ help. */
__sigprocmask (SIG_SETMASK, sigmask, &savemask); if (sigmask != NULL)
__sigprocmask (SIG_SETMASK, sigmask, &savemask);
retval = __select (nfds, readfds, writefds, exceptfds, retval = __select (nfds, readfds, writefds, exceptfds,
timeout != NULL ? &tval : NULL); timeout != NULL ? &tval : NULL);
__sigprocmask (SIG_SETMASK, &savemask, NULL);
if (sigmask != NULL)
__sigprocmask (SIG_SETMASK, &savemask, NULL);
return retval; return retval;
} }