FreeBSD/lib/libthr/thread/thr_syscalls.c
/*
 * Cancellation behavior:
 *   Thread may be canceled at start, but if the system call got some data, 
 *   the thread is not canceled.
 */
Cancellation behavior:
Thread may be canceled at start, but if the system call got some data,
the thread is not canceled.
Cancellation behavior : Thread may be canceled at start but if the system call got some data the thread is not canceled .
static ssize_t
__thr_readv(int fd, const struct iovec *iov, int iovcnt)
{
	struct pthread *curthread;
	ssize_t ret;
	curthread = _get_curthread();
	_thr_cancel_enter(curthread);
	ret = __sys_readv(fd, iov, iovcnt);
	_thr_cancel_leave(curthread, ret == -1);
	return (ret);
}
static ssize_t __thr_readv ( int fd , const struct iovec * iov , int iovcnt ) { struct pthread * curthread ; ssize_t ret ; curthread = _get_curthread ( ) ; _thr_cancel_enter ( curthread ) ; ret = __sys_readv ( fd , iov , iovcnt ) ; _thr_cancel_leave ( curthread , ret == -1 ) ; return ( ret ) ; }
Cancellation behavior:
   Thread may be canceled at start, but if the system call got some data,
   the thread is not canceled.
Cancellation behavior : Thread may be canceled at start but if the system call got some data the thread is not canceled .