freebsd-nq/lib/libc_r/uthread
Alfred Perlstein a9ee9c593d Fix a number of subtle and evil bugs in the libc_r wrapping of sendfile(2).
o) Since we unwrap the sendfile syscall, check the return value of
   writev(2) to see if it didn't complete all the data.
   Previously if only a partial writev() succeeded, it would proceed
   to sendfile(2) even though the headers weren't completely sent.

o) Properly adjust the "bytes to send" to take into account sendfile(2)'s
   behaviour of counting the headers against the bytes to be transfered
   from the file.

o) Correct the problem where EAGAIN was being returned from _sys_sendfile(2)
   however the wrapper didn't update the 'sent bytes' parameter to take into
   account for it.  This is because sendfile can return EAGAIN even though
   it has actually transfered data.

Special thanks to Justin Erenkrantz <jerenkrantz@apache.org> for bringing
this to my attention and giving an excellent way to reproduce the problem.

PR: kern/32684
MFC After: 1 week
2001-12-12 08:02:24 +00:00
..
Makefile.inc Removed: 2001-10-26 17:46:36 +00:00
pthread_private.h Fix pthread_join so that it works if the target thread exits while 2001-11-17 14:28:39 +00:00
uthread_accept.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_acl_aclcheck_fd.c Instead of using a join queue for each thread, use a single pointer to 2001-05-20 23:08:33 +00:00
uthread_acl_delete_fd.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_acl_get_fd.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_acl_set_fd.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_aio_suspend.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_destroy.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getdetachstate.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getguardsize.c Implement pthread_attr_[gs]etguardsize(). Non-default-size stacks used to 2001-07-20 04:23:11 +00:00
uthread_attr_getinheritsched.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getschedparam.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getschedpolicy.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getscope.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getstackaddr.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_getstacksize.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_init.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setcreatesuspend_np.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setdetachstate.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setguardsize.c Implement pthread_attr_[gs]etguardsize(). Non-default-size stacks used to 2001-07-20 04:23:11 +00:00
uthread_attr_setinheritsched.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setschedparam.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setschedpolicy.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setscope.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setstackaddr.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_attr_setstacksize.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_autoinit.cc Change REGENTS -> AUTHOR in the copyright. 2000-01-06 12:16:16 +00:00
uthread_bind.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_cancel.c Fix a bug in canceling joining threads. 2001-08-16 06:31:32 +00:00
uthread_cap_get_fd.c Add thread safety wrappers for the posix1e syscalls that deal with file 2001-04-04 18:10:25 +00:00
uthread_cap_set_fd.c Add thread safety wrappers for the posix1e syscalls that deal with file 2001-04-04 18:10:25 +00:00
uthread_clean.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_close.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_cond.c Fix logic errors in pthread_cond_wait() and pthread_cond_timedwait() that 2001-08-19 20:05:42 +00:00
uthread_condattr_destroy.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_condattr_init.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_connect.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_creat.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_create.c Implement pthread_attr_[gs]etguardsize(). Non-default-size stacks used to 2001-07-20 04:23:11 +00:00
uthread_detach.c Instead of using a join queue for each thread, use a single pointer to 2001-05-20 23:08:33 +00:00
uthread_dup2.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_dup.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_equal.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_execve.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_exit.c Fix pthread_join so that it works if the target thread exits while 2001-11-17 14:28:39 +00:00
uthread_fchflags.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_fchmod.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_fchown.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_fcntl.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_fd.c In the words of the submitter: 2001-10-21 18:23:50 +00:00
uthread_file.c Remove (int) file descriptor locking. It should be up to the 2001-02-11 22:07:32 +00:00
uthread_find_thread.c Fix a race condition in pthread_join(). All of the following must occur 2001-06-27 11:41:15 +00:00
uthread_flock.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_fork.c Implement pthread_attr_[gs]etguardsize(). Non-default-size stacks used to 2001-07-20 04:23:11 +00:00
uthread_fpathconf.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_fstat.c Compensate for "Compensate for header dethreading" by backing it out. 2001-10-10 17:48:44 +00:00
uthread_fstatfs.c Compensate for "Compensate for header dethreading" by backing it out. 2001-10-10 17:48:44 +00:00
uthread_fsync.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_gc.c Implement pthread_attr_[gs]etguardsize(). Non-default-size stacks used to 2001-07-20 04:23:11 +00:00
uthread_getdirentries.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_getpeername.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_getprio.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_getschedparam.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_getsockname.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_getsockopt.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_info.c Make the name parameter const char *. 2001-08-11 05:16:00 +00:00
uthread_init.c Make libc_r check the kern.usrstack sysctl instead of using internal 2001-10-26 21:19:22 +00:00
uthread_ioctl.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_jmp.c Compensate for "Compensate for header dethreading" by backing it out. 2001-10-10 17:48:44 +00:00
uthread_join.c Fix pthread_join so that it works if the target thread exits while 2001-11-17 14:28:39 +00:00
uthread_kern.c Limit maximum poll interval to 60 seconds. This prevents an overflow 2001-10-07 02:34:43 +00:00
uthread_kevent.c Prevent infinite loop, when kevent(2) is called wihout eventlist (i.e. 2001-12-08 00:53:37 +00:00
uthread_kill.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_listen.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_main_np.c Add a leading underscore to the pthread_main_np function name, and 2001-04-03 22:25:39 +00:00
uthread_mattr_init.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_mattr_kind_np.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_msync.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_multi_np.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_mutex_prioceiling.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_mutex_protocol.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_mutex.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_mutexattr_destroy.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_nanosleep.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_once.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_open.c Typo; fix open() so that it is not a cancellation point when called 2001-04-18 12:42:11 +00:00
uthread_pause.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_pipe.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_poll.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_priority_queue.c Add weak definitions for wrapped system calls. In general: 2001-01-24 13:03:38 +00:00
uthread_read.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_readv.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_recvfrom.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_recvmsg.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_resume_np.c Instead of using a join queue for each thread, use a single pointer to 2001-05-20 23:08:33 +00:00
uthread_rwlock.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_rwlockattr.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_select.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_self.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sem.c Condition variable waiters are queued in descending priority order, so 2001-05-18 00:36:05 +00:00
uthread_sendfile.c Fix a number of subtle and evil bugs in the libc_r wrapping of sendfile(2). 2001-12-12 08:02:24 +00:00
uthread_sendmsg.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sendto.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_seterrno.c Add weak definitions for wrapped system calls. In general: 2001-01-24 13:03:38 +00:00
uthread_setprio.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_setschedparam.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_setsockopt.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_shutdown.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sig.c Fix pthread_join so that it works if the target thread exits while 2001-11-17 14:28:39 +00:00
uthread_sigaction.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sigmask.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sigpending.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sigprocmask.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sigsuspend.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sigwait.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_single_np.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_sleep.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_socket.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_socketpair.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_spec.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_spinlock.c Add weak definitions for wrapped system calls. In general: 2001-01-24 13:03:38 +00:00
uthread_stack.c Make libc_r check the kern.usrstack sysctl instead of using internal 2001-10-26 21:19:22 +00:00
uthread_suspend_np.c Instead of using a join queue for each thread, use a single pointer to 2001-05-20 23:08:33 +00:00
uthread_switch_np.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_system.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_tcdrain.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_vfork.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_wait4.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_wait.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_waitpid.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_write.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_writev.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00
uthread_yield.c To be consistent, use the __weak_reference macro from <sys/cdefs.h> 2001-04-10 04:19:21 +00:00