summaryrefslogtreecommitdiffstats
path: root/lib/libkse
Commit message (Collapse)AuthorAgeFilesLines
* Remove the %gs restoring hack (already commented out).deischen2003-04-251-6/+1
| | | | | | | Don't install man pages. Temporarily (again) rename the library to libkse. It will be put back to libpthread after more wide-spread testing.
* Remove the i386-specific hack (well, we only run on i386 anyways)deischen2003-04-231-4/+4
| | | | | | to always set %gs when resuming a thread. Install this library as libpthread instead of libkse.
* Protect thread errno from being changed while operatingdeischen2003-04-233-1/+38
| | | | | | | | on behalf of the KSE. Add a kse_reinit function to reinitialize a reused KSE. Submitted by: davidxu
* Set the quantum for scope system threads to 0 (no quantum).deischen2003-04-221-0/+2
|
* Add a working pthread_[gs]etconcurrency. Initial null implementationdeischen2003-04-222-0/+121
| | | | | | | | | provided by Sergey A. Osokin <osa@freebsd.org.ru>. In order to test this on a single CPU machine, you need to: sysctl kern.threads.debug=1 sysctl kern.threads.virtual_cpu=2
* Add a couple asserts to pthread_cond_foo to ensure the (low-level)deischen2003-04-225-21/+72
| | | | | | | | | | | | | | | lock level is 0. Thus far, the threads implementation doesn't use mutexes or condition variables so the lock level should be 0. Save the return value when trying to schedule a new thread and use this to return an error from pthread_create(). Change the max sleep time for an idle KSE to 1 minute from 2 minutes. Maintain a count of the number of KSEs within a KSEG. With these changes scope system threads seem to work, but heavy use of them crash the kernel (supposedly VM bugs).
* Add an i386-specifc hack to always set %gs. There still seemsdeischen2003-04-217-183/+290
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to be instances where the kernel doesn't properly save and/or restore it. Use noupcall and nocompleted flags in the KSE mailbox. These require kernel changes to work which will be committed sometime later. Things still work without the changes. Remove the general kse entry function and use two different functions -- one for scope system threads and one for scope process threads. The scope system function is not yet enabled and we use the same function for all threads at the moment. Keep a copy of the KSE stack for the case that a KSE runs a scope system thread and uses the same stack as the thread (no upcalls are generated, so a separate stack isn't needed). This isn't enabled yet. Use a separate field for the KSE waiting flag. It isn't correct to use the mailbox flags field. The following fixes were provided by David Xu: o Initialize condition variable locks with thread versions of the low-level locking functions instead of the kse versions. o Enable threading before creating the first thread instead of after. o Don't enter critical regions when trying to malloc/free or call functions that malloc/free. o Take the scheduling lock when inheriting thread attributes. o Check the attribute's stack pointer instead of the attributes stack size for null when allocating a thread's stack. o Add a kseg reinit function so we don't have to destroy and then recreate the same lock. o Check the return value of kse_create() and return an appropriate error if it fails. o Don't forget to destroy a thread's locks when freeing it. o Examine the correct flags word for checking to see if a thread is in a synchronization queue. Things should now work on an SMP kernel.
* Remove duplicate $FreeBSD$ id.deischen2003-04-181-3/+1
|
* Sorry folks; I accidentally committed a patch from what I was workingdeischen2003-04-1817-197/+314
| | | | | | on a couple of days ago. This should be the most recent changes. Noticed by: davidxu
* Comment out the addition of -g to CFLAGS. This snuck in fromdeischen2003-04-181-1/+1
| | | | my local version.
* Revamp libpthread so that it has a chance of working in an SMPdeischen2003-04-1873-3625/+5329
| | | | | | | | | | | | | | | | | | | environment. This includes support for multiple KSEs and KSEGs. The ability to create more than 1 KSE via pthread_setconcurrency() is in the works as well as support for PTHREAD_SCOPE_SYSTEM threads. Those should come shortly. There are still some known issues which davidxu and I are working on, but it'll make it easier for us by committing what we have. This library now passes all of the ACE tests that libc_r passes with the exception of one. It also seems to work OK with KDE including konqueror, kwrite, etc. I haven't been able to get mozilla to run due to lack of java plugin, so I'd be interested to see how it works with that. Reviewed by: davidxu
* Add FIFO queueing locking operations based on atomic swap.deischen2003-04-184-7/+370
| | | | | | Modify thread errno for the new libpthread changes. Reviewed by: davidxu
* Add architecture dependent atomic ops (atomic_swap only), KSE specificdeischen2003-04-184-2/+268
| | | | | | | data, and userland versions of [gs]etcontext(). Modify the UTS entry and exit functions to account of FPU validity and format.
* - Define a _spinunlock() function so that threading implementations may dojeff2003-03-261-0/+7
| | | | | | more complicated things than just setting the lock to 0. - Implement stubs for this function in libc and the two threading libraries that are currently in the tree.
* Backout last commit.davidxu2003-03-151-1/+1
| | | | Requested by: jhb
* Fix a bug in rwlock. When a rwlock was locked by reader threads, adavidxu2003-03-141-1/+1
| | | | writter thread can block reader threads to get read lock.
* Fix cut'n'paste errorphantom2003-03-051-1/+1
| | | | Noticed by: julian
* MFlibc_r: add and document pthread_attr_get_np() function.phantom2003-03-032-0/+58
|
* Fix compiling error.davidxu2003-02-261-1/+1
|
* Insert threads interrupted by a signal while running onto the run queue.mini2003-02-232-26/+3
|
* Add signal logic to the build.mini2003-02-231-0/+2
|
* Deliver signals posted via an upcall to the appropriate thread.mini2003-02-176-525/+274
|
* Actually link in the attr_{set,get}stack.alfred2003-02-111-0/+2
|
* Add pthread_attr_getstack() and pthread_attr_setstack().alfred2003-02-102-0/+117
| | | | Submitted by: Craig Rodrigues <rodrigc@attbi.com>
* remove #ifdef _THREAD_SAFEfjoe2003-01-241-2/+0
|
* For now, build and install this as libkse instead of libpthread.deischen2002-12-082-3/+3
| | | | | | | This will avoid any accidental use of an experimental library. Suggested by: rwatson Approved by: re (jhb)
* Schedule spinlocked threads by moving them through the work queue, insteadmini2002-11-241-2/+15
| | | | | | | of the wait queue. Approved by: re (blanket) Stolen from: davidxu
* Get the wall clock time from the KSE mailbox, rather than doing anothermini2002-11-241-2/+2
| | | | syscall.
* In _thread_enter_uts, fix eflags saving bug.davidxu2002-11-221-1/+2
| | | | | | | | In _thread_switch, set current thread pointer in kse mailbox only after all registers copied out of thread mailbox, kernel will do upcall at trap time, if set current thread pointer before loading all registers from thread mailbox, at trap time, the thread mailbox data will be overwritten by kernel, result is junk data is loaded into CPU.
* Fix idle timeout bug, use correct current time of day.davidxu2002-11-201-2/+2
|
* Adjust code for new mailbox format.davidxu2002-11-181-3/+3
| | | | Reviewed by: deischen, mini
* Schedule an idle context to block until timeouts expire without blockingmini2002-11-123-107/+89
| | | | further upcalls.
* Make pthread_sigmask(3) operate on the thread signal mask, not the processmini2002-10-301-1/+27
| | | | signal mask.
* Use KSE to schedule threads.mini2002-10-309-259/+463
|
* Add the 'restrict' type qualifier to the prototypes of `sigaction',robert2002-10-021-1/+1
| | | | | | `sigprocmask', `sigaltstack', and `sigwait' as well as to the prototypes of the apparantly unimplemented functions `sigtimedwait' and `sigwaitinfo'. This complies with IEEE Std 1003.1-2001.
* Zap now-unused SHLIB_MINORpeter2002-09-281-1/+0
|
* Make libpthread KSE aware.mini2002-09-1626-2395/+135
| | | | | Reviewed by: deischen, julian Approved by: -arch
* Mechanically change all libc_r references to libpthread.mini2002-09-164-7/+7
|
* Make the changes needed for libpthread to compile in its new home.mini2002-09-1694-232/+191
| | | | | | | | The new libpthread will provide POSIX threading support using KSE. These files were previously repo-copied from src/lib/libc_r. Reviewed by: deischen Approved by: -arch
* Remove much of the dereferencing of the fd table entries to lookdeischen2002-08-299-19/+23
| | | | | | | | | | | at file flags and replace it with functions that will avoid null pointer checks. MFC to be done by archie ;-) PR: 42100 Reviewed by: archie, robert MFC after: 3 days
* Make the libc_r version of select() set the readable or writablearchie2002-08-291-4/+6
| | | | | | | | | | file descriptor bit if poll() returns POLLERR, POLLHUP, or POLLNVAL. Othewise, it's possible for select() to return successfully but with no bits set. Reviewed by: deischen MFC after: 3 days PR: bin/42175
* When poll(2)'ing for readability or writability of a file descriptorarchie2002-08-291-2/+6
| | | | | | | | on behalf of a thread, we should check the POLLERR, POLLHUP, and POLLNVAL flags as well to wake up the thread in these cases. Suggested by: deischen MFC after: 3 days
* Replace various spelling with FALLTHROUGH which is lint()ablecharnier2002-08-251-1/+1
|
* 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
OpenPOWER on IntegriCloud