| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
canceled or the joinee is detached.
|
|
|
|
|
|
|
| |
leave the descriptor locked, causing other threads to hang
if they happened to access the socket.
MFC after: 5 days
|
| |
|
|
|
|
|
|
|
| |
PR: misc/28947
Reviewed by: jasone, ru
Approved by: jasone, ru
MFC after: 1 week
|
|
|
|
|
|
|
|
|
| |
due to.
PR: misc/30699
Reviewed by: jasone, ru
Approved by: jasone, ru
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of an alternate signal stack for handling signals. Let the kernel
send signals on the stack of the current thread and teach the threads
signal handler how to deliver signals to the current thread if it
needs to. Also, always store a threads context as a jmp_buf. Eventually
this will change to be a ucontext_t or mcontext_t.
Other small nits. Use struct pthread * instead of pthread_t in internal
library routines. The threads code wants struct pthread *, and pthread_t
doesn't necessarily have to be the same.
Reviewed by: jasone
|
|
|
|
|
| |
set in the case of a short write, and I think returning 0 for this
is what was intended.
|
|
|
|
|
|
|
| |
size added to it in order for it to work properly when nbytes != 0.
Reviewed by: alfred
MFC after: 3 days
|
|
|
|
|
|
|
|
|
| |
return address when modifying a jmp_buf to create a new thread context.
Also set t12 with the return address.
This should fix libc_r on alpha.
With much detective work by: Bernd Walter <ticso@cicely.de>
|
|
|
|
|
|
| |
archs. This should fix libc_r on alpha.
Submitted by: Bernd Walter <ticso@cicely9.cicely.de>
|
|
|
|
|
|
|
|
| |
the target thread of the join operation. This allows the cancelled
thread to detach the target thread in its cancellation handler.
This bug was found by Butenhof's cancel_subcontract test.
Reviewed by: jasone
|
|
|
|
| |
when cancelling a thread.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
eventlist == NULL or nevents == 0).
|
|
|
|
|
|
|
| |
the joining thread is in a signal handler.
Reported by: Loren James Rittle <rittle@labs.mot.com>
MFC after: 1 week
|
|
|
|
|
| |
PR: docs/31745
Submitted by: Andrew <andrew@ugh.net.au>
|
|
|
|
|
| |
PR: 31747
Submitted by: <andrew@ugh.net.au>
|
|
|
|
|
|
|
| |
kernel #defines to figure out where the stack is located. This stops
libc_r from exploding when the kernel is compiled with a different
KVM size. IMHO this is all kinda bogus, it would be better to just
check %esp and work from that.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- uthread_signal.c; libc_r does not wrap signal() since 1998/04/29.
- uthread_attr_setprio.c; it was never connected to the build, and
pthread_attr_setprio() does not exist in POSIX.
- uthread_sigblock.c and uthread_sigsetmask.c; these were no-ops
bloating libc_r's space.
pthread_private.h:
- Removed prototypes of non-syscalls: send().
- Removed prototypes of unused syscalls: sigpending(), sigsuspend(),
and select().
- Fixed prototype of fork().
- MFS: Fixed prototypes of <sys/socket.h> syscalls.
Reviewed by: deischen
Approved by: deischen, jasone
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In libc_r, if _FDLOCKS_ENABLED is not defined, there is no guarantee
in many of the sycall wrappers that _thread_fd_table[fd] is
initialized. This causes problems for programs that pass in file
descriptors and execve() another program; when the exec'ed program
tries to do an fcntl() or other syscall on the passed-in fd, it fails.
Add calls to initialize the FD table entry for _thread_fd_lock and
_thread_fd_lock_debug.
Submitted by: Peter S. Housel <housel@acm.org>
|
| |
|
|
|
|
|
|
|
| |
from occurring when converting from a timeval/timespec to a timeout in
milliseconds.
Submitted by: dwmalone
|
| |
|
|
|
|
| |
Submitted by: yar
|
|
|
|
|
|
| |
instead of char *.
MFC after: 2 weeks
|
|
|
|
|
|
| |
could cause deadlock after interruption due to a signal.
Reviewed by: deischen
|
|
|
|
|
|
|
| |
Do not detach canceled threads.
Reported by: Arno Klaassen <arno@heho.snv.jussieu.fr>
Collaboration with: deischen
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Reviewed by: ru
|
|
|
|
|
|
|
|
| |
be malloc()ed, but they are now allocated using mmap(), just as the
default-size stacks are. A separate cache of stacks is kept for
non-default-size stacks.
Collaboration with: deischen
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
a signal handler from the scheduler.
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
|
|
| |
atomically:
1) Search _thread_list for the thread to join.
2) Search _dead_list for the thread to join.
3) Set the running thread as the joiner.
While we're at it, fix a race in the case where multiple threads try to
join on the same thread. POSIX says that the behavior of multiple joiners
is undefined, but the fix is cheap as a result of the other fix.
|
|
|
|
|
| |
Submitted by: Murray S. Kucherawy <msk@sendmail.com>
MFC after: 3 days
|
|
|
|
| |
Obtained from: OpenBSD
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
keep track of a joiner. POSIX only supports a single joiner, so this
simplification is acceptable.
At the same time, make sure to mark a joined thread as detached so that
its resources can be freed.
Reviewed by: deischen
PR: 24345
|
|
|
|
|
| |
PR: docs/27411
Submitted by: David Wimsey <dwimsey@rtci.com>
|