- cancel_enable = callp->sy_cancel;
-
- if (cancel_enable == _SYSCALL_CANCEL_NONE) {
- uthread->uu_flag |= UT_NOTCANCELPT;
- } else {
- if ((uthread->uu_flag & (UT_CANCELDISABLE | UT_CANCEL | UT_CANCELED)) == UT_CANCEL) {
- if (cancel_enable == _SYSCALL_CANCEL_PRE) {
- /* system call cancelled; return to handle cancellation */
- regs->eax = (long long)EINTR;
- regs->efl |= EFL_CF;
- thread_exception_return();
- /* NOTREACHED */
- } else {
- thread_abort_safely(thread);
- }
- }
- }
-
- funnel_type = (callp->sy_funnel & FUNNEL_MASK);
- if (funnel_type == KERNEL_FUNNEL)
- thread_funnel_set(kernel_flock, TRUE);