Save and restore errno around sigprocmask.

This commit is contained in:
David Xu 2003-08-19 03:33:51 +00:00
parent 7a0f4bee0d
commit 6705464db0
2 changed files with 10 additions and 2 deletions

View file

@ -48,6 +48,7 @@ _fork(void)
sigset_t sigset, oldset;
struct pthread *curthread;
pid_t ret;
int errsave;
if (!_kse_isthreaded())
return (__sys_fork());
@ -71,8 +72,11 @@ _fork(void)
_kse_single_thread(curthread);
/* Kernel signal mask is restored in _kse_single_thread */
} else {
if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM)
if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) {
errsave = errno;
__sys_sigprocmask(SIG_SETMASK, &oldset, NULL);
errno = errsave;
}
}
/* Return the process ID: */

View file

@ -48,6 +48,7 @@ _fork(void)
sigset_t sigset, oldset;
struct pthread *curthread;
pid_t ret;
int errsave;
if (!_kse_isthreaded())
return (__sys_fork());
@ -71,8 +72,11 @@ _fork(void)
_kse_single_thread(curthread);
/* Kernel signal mask is restored in _kse_single_thread */
} else {
if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM)
if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) {
errsave = errno;
__sys_sigprocmask(SIG_SETMASK, &oldset, NULL);
errno = errsave;
}
}
/* Return the process ID: */