| 966 | } |
| 967 | |
| 968 | int |
| 969 | kern_pselect(struct thread *td, int nd, fd_set *in, fd_set *ou, fd_set *ex, |
| 970 | struct timeval *tvp, sigset_t *uset, int abi_nfdbits) |
| 971 | { |
| 972 | int error; |
| 973 | #ifndef FSTACK |
| 974 | if (uset != NULL) { |
| 975 | error = kern_sigprocmask(td, SIG_SETMASK, uset, |
| 976 | &td->td_oldsigmask, 0); |
| 977 | if (error != 0) |
| 978 | return (error); |
| 979 | td->td_pflags |= TDP_OLDMASK; |
| 980 | /* |
| 981 | * Make sure that ast() is called on return to |
| 982 | * usermode and TDP_OLDMASK is cleared, restoring old |
| 983 | * sigmask. |
| 984 | */ |
| 985 | thread_lock(td); |
| 986 | td->td_flags |= TDF_ASTPENDING; |
| 987 | thread_unlock(td); |
| 988 | } |
| 989 | #endif |
| 990 | error = kern_select(td, nd, in, ou, ex, tvp, abi_nfdbits); |
| 991 | return (error); |
| 992 | } |
| 993 | |
| 994 | #ifndef _SYS_SYSPROTO_H_ |
| 995 | struct select_args { |
no test coverage detected