summaryrefslogtreecommitdiffstats
path: root/lib/libkse
Commit message (Collapse)AuthorAgeFilesLines
* Oops, forgot to set the suspended flag for threads that are createddeischen2002-07-091-2/+3
| | | | | | | initially suspended. This was preventing such threads from getting resumed. Reported by: Bill Huey <billh@gnuppy.monkey.org>
* Fix a couple of minor nits that prevented this from compiling.deischen2002-07-021-2/+4
| | | | Pointed out by: julian
* Make sigpending and sigsuspend account for signals that are pending ondeischen2002-06-282-5/+27
| | | | | | the process as well as pending on the current thread. Reported by: Andrew MacIntyre <andymac@bullseye.apana.org.au>
* Add a wrapper for pselect() in order to make it a cancellation point.deischen2002-06-282-0/+55
| | | | Prompted by: wollman
* Missed in earlier commit -- I did cvs commit src/lib/libc. Oops.rwatson2002-06-142-8/+0
|
* Revamp suspend and resume. While I'm here add pthread_suspend_all_np()deischen2002-05-2413-307/+231
| | | | | | | | | | | | | and pthread_resume_all_np(). These suspend and resume all threads except the current thread, respectively. The existing functions pthread_single_np() and pthread_multi_np(), which formerly had no effect, now exhibit the same behaviour and pthread_suspend_all_np() and pthread_resume_all_np(). These functions have been added mostly for the native java port. Don't allow the uthread kernel pipe to use the same descriptors as stdio. Mostily submitted by Oswald Buddenhagen <ossi@kde.org>. Correct some minor style nits.
* Undo namespace pollution by prefixing the globals pthread_guard_default andalfred2002-05-154-26/+29
| | | | | | | | pthread_page_size. Fix a bunch line wrapping. Pointed out by: deischen
* Don't use PAGE_SIZE in userland, instead use getpagesize(), this is toalfred2002-05-134-21/+36
| | | | | | | allow running on other arches when the instructions are supported but the page size granularity is not. Glanced at by: peter
* Use GCC's __attribute__ ((constructor)) mechanism to invoke the pthreadalfred2002-05-112-1/+62
| | | | | | | startup code rather than a static C++ object since c++ seems to be broken. This doesn't seem to work for staticically linked program just yet, I'll give that some more work when I get a chance.
* Make these functions cancellation points like they should be:archie2002-05-025-5/+66
| | | | | | | | poll(2), readv(2), select(2), wait4(2), writev(2). PR: bin/37658 Reviewed by: deischen MFC after: 1 week
* Make sure calls to pthread_cancel() do not take effect if the targetarchie2002-05-021-2/+4
| | | | | | | | thread is already exiting. PR: bin/37614 Reviewed by: deischen MFC after: 1 week
* Usage style sweep: spell "usage" with a small 'u'.des2002-04-221-1/+1
| | | | | Also change one case of blatant __progname abuse (several more remain) This commit does not touch anything in src/{contrib,crypto,gnu}/.
* The GCC developers have made good on their threats against #pragma for 3.1.obrien2002-04-151-1/+2
| | | | | | Use __weak_reference in place of the #pragma. Submitted by: eischen
* Sync SCM ID comments with libc.obrien2002-04-151-7/+9
|
* Return correct number of total bits set in all fd_set's.asmodai2002-04-091-9/+18
| | | | | | | | | | | Change case of POLLNVAL as an error. Remove POLLHUP and POLLERR from one case, their place is most likely amongst read events. PR: 33723 Submitted by: Alexander Litvin <archer@whichever.org> Reviewed by: deischen [Provided a small change to the PR patch as well] MFC after: 4 weeks
* Do not use __progname directly (except in [gs]etprogname(3)).markm2002-03-291-5/+7
| | | | | | Also, make an internal _getprogname() that is used only inside libc. For libc, getprogname(3) is a weak symbol in case a function of the same name is defined in userland.
* Add the ability to recognize old references to keys, and return NULLdeischen2002-03-196-36/+54
| | | | | when old keys are referenced (after pthread_key_delete()) via pthread_getspecific().
* Fix the return code from pthread_rwlock_try[rw|rd]lock() functions;bsd2002-03-151-2/+2
| | | | | | these should return EBUSY when the calling thread would block. MFC after: 2 weeks
* Properly clear the status of a join operation if the joining thread isdeischen2002-03-062-1/+4
| | | | canceled or the joinee is detached.
* Don't rely on <sys/signal.h> to include <sys/ucontext.h>deischen2002-02-171-0/+1
|
* Correct a typo pthread_attr_setscope() function fails unconditionallymaxim2002-02-141-1/+1
| | | | | | | | | due to. PR: misc/30699 Reviewed by: jasone, ru Approved by: jasone, ru MFC after: 1 week
* This has been sitting in my local tree long enough. Remove the usedeischen2002-02-095-268/+167
| | | | | | | | | | | | | | 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
* Use the real function address (instead of function address + 8) for thedeischen2001-12-221-2/+2
| | | | | | | | | 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>
* Fix the retrieval of USRSTACK via sysctl so that it works for 64-bitdeischen2001-12-181-2/+2
| | | | | | archs. This should fix libc_r on alpha. Submitted by: Bernd Walter <ticso@cicely9.cicely.de>
* When cancelling a thread while in a join operation, do not detachdeischen2001-12-161-4/+1
| | | | | | | | 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
* Pull the target thread of a join operation from the correct placedeischen2001-12-151-3/+4
| | | | when cancelling a thread.
* Fix pthread_join so that it works if the target thread exits whiledeischen2001-11-174-10/+32
| | | | | | | the joining thread is in a signal handler. Reported by: Loren James Rittle <rittle@labs.mot.com> MFC after: 1 week
* Make libc_r check the kern.usrstack sysctl instead of using internalpeter2001-10-263-6/+20
| | | | | | | 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.
* Style: sort __sys_foo() prototypes, tabs -> spaces, etc.ru2001-10-261-78/+78
|
* Removed:ru2001-10-262-16/+10
| | | | | | | | | | | | | | | | | | | | | | | | - 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
* Compensate for "Compensate for header dethreading" by backing it out.bde2001-10-101-2/+0
|
* Limit maximum poll interval to 60 seconds. This prevents an overflowdeischen2001-10-071-0/+3
| | | | | | | from occurring when converting from a timeval/timespec to a timeout in milliseconds. Submitted by: dwmalone
* Mark some functions as __printflike() and/or taking const char * argumentskris2001-08-201-0/+3
| | | | | | instead of char *. MFC after: 2 weeks
* Fix logic errors in pthread_cond_wait() and pthread_cond_timedwait() thatjasone2001-08-191-68/+52
| | | | | | could cause deadlock after interruption due to a signal. Reviewed by: deischen
* Fix a bug in canceling joining threads.jasone2001-08-163-2/+18
| | | | | | | Do not detach canceled threads. Reported by: Arno Klaassen <arno@heho.snv.jussieu.fr> Collaboration with: deischen
* Make the name parameter const char *.imp2001-08-111-1/+1
|
* Implement pthread_attr_[gs]etguardsize(). Non-default-size stacks used tojasone2001-07-2012-125/+599
| | | | | | | | 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
* Clear the in thread scheduler flag after jumping to the start ofdeischen2001-06-291-0/+6
| | | | | | a signal handler from the scheduler. MFC after: 1 week
* Fix a race condition in pthread_join(). All of the following must occurjasone2001-06-273-48/+53
| | | | | | | | | | | | 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.
* Add a test for PR 24345.jasone2001-05-202-0/+110
|
* Update the verify script.jasone2001-05-202-201/+162
|
* Don't define _REENTRANT, since the Makefile does so.jasone2001-05-201-2/+0
|
* Fix a typo.jasone2001-05-201-1/+1
|
* Instead of using a join queue for each thread, use a single pointer tojasone2001-05-2010-145/+106
| | | | | | | | | | | 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
* Condition variable waiters are queued in descending priority order, sojasone2001-05-181-9/+2
| | | | | | | | there is no need to wake all waiters to assure that the highest priority thread is run. As the semaphore code is written, there was no correctness problem, but the change improves sem_post() performance. Pointed out by: deischen
* Mark a thread that is suspended while sleeping as interrupted.jasone2001-05-161-1/+3
|
* Properly copy the P_ALTSTACK flag in struct proc::p_flag to the childknu2001-05-071-11/+1
| | | | | | | | | | | | | | | | | | process on fork(2). It is the supposed behavior stated in the manpage of sigaction(2), and Solaris, NetBSD and FreeBSD 3-STABLE correctly do so. The previous fix against libc_r/uthread/uthread_fork.c fixed the problem only for the programs linked with libc_r, so back it out and fix fork(2) itself to help those not linked with libc_r as well. PR: kern/26705 Submitted by: KUROSAWA Takahiro <fwkg7679@mb.infoweb.ne.jp> Tested by: knu, GOTOU Yuuzou <gotoyuzo@notwork.org>, and some other people Not objected by: hackers MFC in: 3 days
* Move the check for a pending signals to after the thread has beendeischen2001-05-042-6/+18
| | | | | | | | | | | | | | | placed in any scheduling queue(s). The process of dispatching signals to a thread can change its state which will attempt to add or remove the thread from any scheduling queue to which it belongs. This can break some assertions if the thread isn't in the queue(s) implied by its state. When adding dispatching a pending signal to a thread, be sure to remove the signal from the threads set of pending signals. PR: 27035 Tested by: brian MFC in: 1 week
* Compenate for header dethreading.markm2001-05-011-0/+2
|
* Typo; fix open() so that it is not a cancellation point when calleddeischen2001-04-181-1/+1
| | | | from libc.
OpenPOWER on IntegriCloud