Commit Graph

459 Commits

Author SHA1 Message Date
Peter Wemm
29f2f145e4 For the amd64 we need to do some extra stack alignment fixups. Otherwise
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)
2003-12-03 06:54:40 +00:00
Daniel Eischen
fcd58c1978 If __sys_write() returns 0, allow that to exit the loop in libc_r's
wrapped version of write().

Submitted by:	dan@langille.org
2003-09-29 13:41:26 +00:00
Ruslan Ermilov
959d6c24f6 Get rid of duplicates. 2003-09-14 13:41:59 +00:00
Ruslan Ermilov
fe08efe680 mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
Mark Peek
6fcd700395 Add wrapper for kqueue() to keep track of the allocated fd and allow it to
be closed. This fixes a file descriptor leak when closing a kqueue() fd.

Reviewed by:	deischen
MFC after:	1 week
2003-07-25 17:02:33 +00:00
Daniel Eischen
209afb2603 Remove -D_THREAD_SAFE.
Submitted by:   Craig Rodrigues <rodrigc@crodrigues.org>
2003-07-13 05:35:30 +00:00
Ruslan Ermilov
a5d7d2028e Make libc/${MACHINE_ARCH} include directory not required by Alpha.
Submitted by:	bde
Tested by:	beast
2003-07-02 13:27:54 +00:00
Alexander Kabaev
3867e1fd68 libc/${MACHINE_ARCH} include directory is required by Alpha,
add it to CFLAGS.
2003-07-02 01:52:06 +00:00
Ruslan Ermilov
0b3cbc5c38 Axe AINC.
Submitted by:	bde
2003-07-01 15:07:01 +00:00
Alexander Leidinger
f970961773 Sanity check fd before using it as an array index.
Noticed by:	ted@NLnetLabs.nl (Ted Lindgreen)
Approved by:	ru
2003-06-09 16:45:37 +00:00
Philippe Charnier
ab165955de The .Fn function 2003-06-08 10:13:50 +00:00
Marcel Moolenaar
fee5c3f1f8 Make this compile without warnings on 64-bit architectures:
Don't cast thread_self() to int. Cast to uintptr_t. Pull in the
predefined printf format from <inttypes.h>
2003-06-04 20:38:54 +00:00
Marcel Moolenaar
f10382ac87 Make this compile without warnings on 64-bit architectures:
In recurse(), cast the pointer difference to int to match the format.
The difference is expected to fit in an int.
2003-06-04 20:36:08 +00:00
Mike Makonnen
f833c84a8f If the library is not able to create a thread because resources
don't allow it at the moment, the correct thing to do is try again.
Otherwise, libthr would fail this test because it doesn't allow
an unlimited number of concurrent threads per application.
2003-06-04 08:16:32 +00:00
Peter Wemm
19816dec92 Update for amd64 after repocopy from i386/ 2003-06-02 22:30:59 +00:00
Peter Wemm
3aefe09423 Port libc_r to amd64, and turn it back on for amd64. It passes all of
the same src/lib/libc_r/test/* tests that the other platforms pass.
2003-06-02 22:22:52 +00:00
Robert Watson
778f8875c7 Revert accidental change: don't change the thread library for testing to
libthr.  Oops, sorry about that.

Submitted by:	"Simon L. Nielsen" <simon@nitro.dk>
2003-06-02 00:21:41 +00:00
Robert Watson
0bbe770d6f Include string.h for memset(). 2003-06-01 23:03:49 +00:00
Ruslan Ermilov
61fa6d584f Fixed another bug in the threaded close() call; clear the
stale stdio descriptors flags.

PR:		bin/51535
Submitted by:	Enache Adrian <enache@rdslink.ro>
Reviewed by:	deischen
Approved by:	re (scottl)
2003-05-31 05:23:20 +00:00
Ruslan Ermilov
d635dc4671 If an application closes one of its stdio descriptors (0..2),
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)
2003-05-31 05:20:44 +00:00
Ruslan Ermilov
734ac3b543 mdoc(7) fixes.
Approved by:	re (blanket)
2003-05-24 19:53:08 +00:00
John Polstra
8c0d4b5f92 Add stub implementations of pthread_[gs]etconcurrency to libc_r and
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
2003-04-20 01:53:13 +00:00
Jeff Roberson
cc3521d660 - Define a _spinunlock() function so that threading implementations may do
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.
2003-03-26 04:02:24 +00:00
Philippe Charnier
9d09157a0f The .Fn function. Use .Xr where appropriate. 2003-03-24 16:05:24 +00:00
Marcel Moolenaar
cafd6dbd76 Fix threaded applications on ia64 that are linked dynamicly. We did
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.
2003-03-05 04:39:24 +00:00
Marcel Moolenaar
d4f7f050a8 Don't cast an int to a pointer type without (possibly) widening the
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.
2003-03-05 04:28:08 +00:00
Ruslan Ermilov
4497800cbc Fixed a typo in MLINKS. 2003-02-24 22:59:01 +00:00
Ruslan Ermilov
ace5be682d mdoc(7) police: Scheduled sweep. 2003-02-24 22:53:26 +00:00
Alexey Zelkin
d92bdf427f Enable just committed manual pages, update MLINKS 2003-02-13 22:12:56 +00:00
Alexey Zelkin
597cf12892 Add AUTHORS section 2003-02-13 22:11:19 +00:00
Alexey Zelkin
318d8cfd73 Finally! Document all undocumented functions in libc_r.
Add manual pages for following functions:

. pthread_attr_setcreatesuspend_np(3)
. pthread_main_np(3)
. pthread_multi_np(3)
. pthread_single_np(3)
. pthread_mutexattr_getkind_np(3)
. pthread_mutexattr_setkind_np(3)
. pthread_resume_all_np(3)
. pthread_resume_np(3)
. pthread_set_name_np(3)
. pthread_suspend_all_np(3)
. pthread_suspend_np(3)
. pthread_switch_add_np(3)
. pthread_switch_delete_np(3)

MFC after:	3 days
2003-02-13 22:10:10 +00:00
Alexey Zelkin
c18f0ff70c Break important implementation detail note into IMPLEMENTATION DETAILS
section. Add cross reference to pthread_attr_getstack() function.

MFC after:	1 day
2003-02-13 18:39:06 +00:00
Alexey Zelkin
41dd2d2dfa Add cross reference for pthread_attr_get_np() 2003-02-13 18:36:48 +00:00
Alexey Zelkin
faa19450ec Rehash MLINKS: add missing ones for recently added pthread_attr_{get,set}stack()
functions and remove links for 3 non-existent functions
2003-02-13 18:35:05 +00:00
Alfred Perlstein
969e2ea158 Actually link in the attr_{set,get}stack. 2003-02-11 07:28:28 +00:00
Alfred Perlstein
4e44912c6c Add pthread_attr_getstack() and pthread_attr_setstack().
Submitted by: Craig Rodrigues <rodrigc@attbi.com>
2003-02-10 08:48:04 +00:00
Philippe Charnier
6f673fd1c0 The .Fn function 2003-02-06 11:10:32 +00:00
Alexey Zelkin
f3cf900844 Document additional behaviour of this function (see
rev 1.3 of uthread_attr_get_np.c)
2003-02-03 10:10:40 +00:00
Alexey Zelkin
618a8b4df0 Improve pthread_attr_get_np() by enabling it to return thread's real stack
address instead of specified by pthread_attr_t passed to pthread_create().

Suggested by:	deischen
2003-02-03 10:08:45 +00:00
Max Khon
1746ea2b02 remove #ifdef _THREAD_SAFE 2003-01-24 01:46:30 +00:00
Tim J. Robbins
5b8dbaa1f9 Add a missing word. 2003-01-15 09:48:15 +00:00
Tim J. Robbins
bae7e9ec5e Document the named semaphore functions. This could still use a bit
of polishing.
2003-01-15 03:07:40 +00:00
Tim J. Robbins
74e03642ee Back out previous; sharing semaphores between processes only works
in certain special cases.
2003-01-14 07:14:06 +00:00
Tim J. Robbins
ab099bd309 Sharing semaphores between processes works now, so remove the stale comments
about it always returning EPERM. Document that ENFILE occurs when the
limit on kernel semaphores is reached.
2003-01-14 04:12:33 +00:00
Tim J. Robbins
51f2ddd7af Cross reference sem(4) so users know which kernel options are required
to use these semaphore functions.
2003-01-14 03:39:09 +00:00
Daniel Eischen
c54f72859c Increase the scheduler stack to 4 pages. This should prevent a stack
overflow when dumping thread info (generated by receipt of SIGINFO).

Reported by:	jmallet
2003-01-11 00:43:20 +00:00
Max Khon
f7ed1917e2 pthread_attr_get_np() now takes 'pthread_t' (not 'pthread_t *')
to be consistent with other pthread_XXX functions
2003-01-07 21:43:30 +00:00
Marcel Moolenaar
4b1d654efb Port libc_r to ia64. We need to do things slightly different
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.
2003-01-06 00:56:23 +00:00
Thomas Moestl
54a701f52e Add MD definitions for sparc64. This is based on work by des. 2003-01-05 22:37:03 +00:00
Thomas Moestl
e15d881535 Add an implementation of _atomic_lock for sparc64. This was submitted by
des; I tweaked it slightly by extending the membar and making it match
the style of the rest of the sparc64 assembler code.
2003-01-05 22:23:11 +00:00