summaryrefslogtreecommitdiffstats
path: root/lib/libc_r/uthread
Commit message (Collapse)AuthorAgeFilesLines
* For the amd64 we need to do some extra stack alignment fixups. Otherwisepeter2003-12-033-6/+27
| | | | | | | | | we can end up with some threads with a non-16-byte-aligned stack. This causes some interesting side effects, including general protection faults leading to a SIGBUS when doing floating point or varargs. This should be just a verbose NOP for the other platforms. Approved by: re (scottl)
* If __sys_write() returns 0, allow that to exit the loop in libc_r'sdeischen2003-09-291-2/+2
| | | | | | wrapped version of write(). Submitted by: dan@langille.org
* Add wrapper for kqueue() to keep track of the allocated fd and allow it tomp2003-07-252-0/+54
| | | | | | | be closed. This fixes a file descriptor leak when closing a kqueue() fd. Reviewed by: deischen MFC after: 1 week
* Sanity check fd before using it as an array index.netchild2003-06-091-1/+2
| | | | | Noticed by: ted@NLnetLabs.nl (Ted Lindgreen) Approved by: ru
* Port libc_r to amd64, and turn it back on for amd64. It passes all ofpeter2003-06-021-0/+18
| | | | the same src/lib/libc_r/test/* tests that the other platforms pass.
* Fixed another bug in the threaded close() call; clear theru2003-05-311-0/+4
| | | | | | | | | stale stdio descriptors flags. PR: bin/51535 Submitted by: Enache Adrian <enache@rdslink.ro> Reviewed by: deischen Approved by: re (scottl)
* If an application closes one of its stdio descriptors (0..2),ru2003-05-311-2/+4
| | | | | | | | | | | | | | | | | an excessive close() on one of these descriptors would cause a memory for this descriptor to be allocated in the internal descriptor table. When this descriptor gets used again, e.g. through the call to open() or socket(), the descriptor would be erroneously left in the blocking mode, and the whole application would get stuck on a blocking operation, e.g., in accept(2). Prevent this bug from happening by disallowing close() against non-active descriptors (return -1 and set errno to EBADF in this case). Reviewed by: deischen Approved by: re (scottl)
* Add stub implementations of pthread_[gs]etconcurrency to libc_r andjdp2003-04-202-0/+61
| | | | | | | | | libthr. No changes were made to libpthread by request of deischen, who will soon commit a real implementation for that library. PR: standards/50848 Submitted by: Sergey A. Osokin <osa@freebsd.org.ru> MFC after: 1 week
* - Define a _spinunlock() function so that threading implementations may dojeff2003-03-261-0/+6
| | | | | | 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.
* Fix threaded applications on ia64 that are linked dynamicly. We didmarcel2003-03-051-0/+1
| | | | | | | | | | | | | | | | | not save (restore) the global pointer (GP) in the jmpbuf in setjmp (longjmp) because it's not needed in general. GP is considered a scratch register at callsites and hence is always restored after a call (when it's possible that the call resolves to a symbol in a different loadmodule; otherwise GP does not have to be saved and restored at all), including calls to setjmp/longjmp. There's just one problem with this now that we use setjmp/longjmp for context switching: A new context must have GP defined properly for the thread's entry point. This means that we need to put GP in the jmpbuf and consequently that we have to restore is in longjmp. This automaticly requires us to save it as well. When setjmp/longjmp isn't used for context switching, this can be reverted again.
* Don't cast an int to a pointer type without (possibly) widening themarcel2003-03-051-1/+1
| | | | | | | | | | | integral type to the size of a pointer type when it's known that the cast is valid. On ia64 such casts are generally bad news and has led us (=peter :-) to make such casts fatal. By casting to intptr_t before casting to a pointer type, this now compiles cleanly in LP64 architectures. Note that the final cast has been changed to void* (instead of siginfo_t*) to make it explicit that we're not trying to pass a siginfo_t pointer but rather trying to pass an int when the prototype says it should be a pointer.
* 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>
* Improve pthread_attr_get_np() by enabling it to return thread's real stackphantom2003-02-031-1/+9
| | | | | | address instead of specified by pthread_attr_t passed to pthread_create(). Suggested by: deischen
* Increase the scheduler stack to 4 pages. This should prevent a stackdeischen2003-01-111-1/+1
| | | | | | overflow when dumping thread info (generated by receipt of SIGINFO). Reported by: jmallet
* pthread_attr_get_np() now takes 'pthread_t' (not 'pthread_t *')fjoe2003-01-071-7/+6
| | | | to be consistent with other pthread_XXX functions
* Port libc_r to ia64. We need to do things slightly differentmarcel2003-01-064-0/+44
| | | | | | | | | | | because we have 2 stacks per thread: the regular downward memory stack and the irregular upward register stack. This implementation lets both stacks grow toward each other. An alternative scheme is to have them grow away from each other. The alternate scheme has the advantage that both stack grow toward guard pages. Since libc_r is virtually dead and we really want the *context stuff for thread switching, we don't try to be perfect, just functional.
* Add MD definitions for sparc64. This is based on work by des.tmm2003-01-051-0/+29
|
* Fix typos in comment.deischen2002-12-281-2/+2
| | | | Submitted by: Craig Rodrigues <rodrigc@attbi.com>
* Make accept(), connect(), recvfrom(), recvmsg(), sendmsg(),ru2002-12-196-6/+80
| | | | | | and sendto() cancelation points, as required by POSIX.1-2001. Reviewed by: deischen
* When about to do an execve(), don't reset the O_NONBLOCK flag on any filearchie2002-11-151-0/+4
| | | | | | | | | descriptors that have the close-on-exec flag set, as that will have no effect anyway and might screw something else up if the file descriptor happens to be shared with another process. PR: standards/43335 MFC after: 1 week
* At initialization, override the pthread stub routines in libcdeischen2002-11-1319-136/+245
| | | | | | | | | by filling in the jump table. Convert uses of pthread routines within libc_r to use the internal versions (_pthread_foo instead of pthread_foo). Remove a couple of globals from application namespace.
* Fix bogus return values from libc_r's writev() routine in situations wherearchie2002-11-121-6/+21
| | | | | | | a partial-write is followed by an error. PR: 43335 MFC after: 3 days
* Fix bogus return values from libc_r's write() routine in situations wherearchie2002-11-051-6/+21
| | | | | | | a partial-write is followed by an error. PR: 43335 MFC after: 1 week
* Use the strong symbol'd version of pthread_mutex_init so we don'tdeischen2002-10-311-2/+2
| | | | | | | accidentally call a stub or application provided version of the same routine. Submitted by: dfr
* Hook uthread_attr_get_np.c to buildphantom2002-10-261-0/+1
|
* Add pthread_attr_get_np() function. This is FreeBSD non-portable POSIX threadsphantom2002-10-261-0/+50
| | | | | | | | | extenston function. It supposed to provide facility to get already created thread's attributes. Looks like it's last thing we need to make JDK's Hotspot building without requirement to have source tree. Reviewed by: deischen MFC after: 3 days
* Be more agresive on arguments' checking.phantom2002-10-261-1/+4
| | | | | OK'ed by: deischen MFC after: 3 days
* remove unused __sys_sigaltstack() declarationfjoe2002-10-221-1/+0
| | | | Approved by: deischen
* When dumping thread info, only include the filename and line if we actuallyjmallett2002-10-201-3/+9
| | | | | | | know what file! (Prevents use of NULL). MFC after: 1 day Reviewed by: deischen
* FD locking is not enabled anymore, so the table which contains the ownerjmallett2002-10-171-4/+0
| | | | | | | | of a file descriptor has NULL entries, so don't dereference the table entries to get the owners ever -- don't print the owners when processing a thread_dump request as a result of SIGINFO. Reviewed by: deischen
* fix typo in comments (in preparation for MFC)fjoe2002-10-151-1/+1
| | | | Approved by: deischen
* Dump in $TMPDIR if !setugid, and use mode 0644 instead of 0666.kris2002-10-131-7/+11
| | | | MFC after: 2 weeks
* Once again, remove the i386-specific hacks to save and restoredeischen2002-10-051-9/+0
| | | | | | | | the FPU state on receiving and returning from a signal. The FPU save and restore macros are no longer needed, but remain defined in case we need to use them again (something else breaks). They'll be removed permanently once new syscalls are added to handle the new i386 ucontext size.
* 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.
* Install library-installed signal handlers with the SA_RESTART flagdeischen2002-09-303-3/+3
| | | | set.
* Add back the i386-specific hack to save and restore the FP statedeischen2002-09-302-4/+4
| | | | | | to/from a ucontext when a thread is interrupted by a signal. This will be removed when a proper fix is made in the kernel to save/restore the FP state without breaking the ABI.
* Part of a bandaid to get libc_r on air again.julian2002-09-191-0/+4
| | | | | Submitted by: Dan Eischen (deischen@freebsd.org) Pointy hat for breakage just before going offline: Mini@freebsd.org
* Remove much of the dereferencing of the fd table entries to lookdeischen2002-08-2921-39/+69
| | | | | | | | | | | 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>
* 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
* Fix a bug which prevented the duplication of the standard i/orobert2002-06-231-13/+24
| | | | | | | | | file descriptors in programs linked with libc_r with flags other than the default ones. This kept, inter alia, freopen() from working correctly when reopening standard streams. reviewed by: deischen PR: misc/39377
* Missed in earlier commit -- I did cvs commit src/lib/libc. Oops.rwatson2002-06-144-102/+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
OpenPOWER on IntegriCloud