8467 Commits

Author SHA1 Message Date
bde
2bd70eb932 Fixed English error in previous commit. Fixed some older English errors.
Removed a redundant clause.
2003-12-11 09:53:25 +00:00
mtm
56a475799e Remove uses of GIANT_LOCK and replace with appropriate thread
and thread list locks.
2003-12-11 08:34:07 +00:00
mikeh
acccb1539f Add reference to standards/55112 for next time SHLIB_MAJOR is bumped.
Suggested by: wollman
2003-12-10 16:33:17 +00:00
green
d4d87e529b Implement seeking to earlier offsets in gzipfs. This allows my loader
to e.g. correctly load all .ko.gz's I've tried, as opposed to messing
up trying to read section headers on some of them.
2003-12-10 16:10:34 +00:00
dds
ecc31f354e Add sticky(8) cross reference.
PR:		docs/60068
Submitted by:	Ken Stailey
MFC after:	2 weeks
2003-12-10 15:08:41 +00:00
grehan
5472a7b2d2 PowerPC-conditional changes:
- include ashldi3.c/ashrdi3.c from libc for UFS 64-bit arith
 - pull in syncicache.c from libc, and define _STANDALONE for
   loader usage
2003-12-10 13:11:03 +00:00
grehan
6a92ab4ec1 - Put manh/manl bitfields into correct-sized integral type.
- remove XXX normalization bit comment, code is correct.
2003-12-10 13:04:42 +00:00
marcel
eb521e2e92 Add a short description of the kse_switchin(2) syscall to the kse
manpage and add a kse_switchin link. While here, list kse_thr_interrupt
before kse_wakeup in the MLINKS variable and the synopsis.
2003-12-10 02:38:51 +00:00
deischen
1f8c5c54fd accept() returns a file descriptor when it succeeds which is very
likely to be non-zero.  When leaving the cancellation point, check
the return value against -1 to see if cancellation should be
checked.  While I'm here, make the same change to connect() just
to be consisitent.

Pointed out by: davidxu
2003-12-09 23:40:27 +00:00
deischen
ed86f0d4d5 Remove an unused struct definition. 2003-12-09 15:18:40 +00:00
deischen
212e86fbe9 Add cancellation points for accept() and connect(). 2003-12-09 15:16:27 +00:00
mtm
e55a5a6e98 Take a stab at fixing some of the macro-nightmare.
PTHREAD_NEW_STATE should work as expected now: a thread
marked PS_RUNNING will get sent a SIGTHR.
Still more cleanups necessary.
2003-12-09 11:20:01 +00:00
mtm
5f32d90edd Fix the wrapper function around signals so that a signal handling
thread on one of the mutex or condition variable queues is removed
from those queues before the real signal handler is called.
2003-12-09 11:12:11 +00:00
mtm
bc6b622cf6 Ugghh, cvs add the functions necessary to lock the global signal action
table.
2003-12-09 11:06:55 +00:00
mtm
3fb7bc9aec o Add a wrapper around sigaction(2), so we can insert our own wrapper
around signals.
o Lock the process global signal action table.
2003-12-09 11:04:36 +00:00
mtm
4e519fdfeb Enable cancellation points around some syscalls. 2003-12-09 11:01:09 +00:00
davidxu
7813286b21 Use mutex instead of low level thread lock to implement spinlock, this
avoids signal to be blocked when otherwise it can be handled.
2003-12-09 02:37:40 +00:00
davidxu
22c52834eb Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename
_thr_leave_cancellation_point to _thr_cancel_leave, add a parameter
to _thr_cancel_leave to indicate whether cancellation point should be
checked, this gives us an option to not check cancallation point if
a syscall successfully returns to avoid any leaks, current I have
creat(), open() and fcntl(F_DUPFD) to not check cancellation point
after they sucessfully returned.

Replace some members in structure kse with bit flags to same some
memory.

Conditionally compile THR_ASSERT to nothing if _PTHREAD_INVARIANTS is
not defined.

Inline some small functions in thr_cancel.c.

Use __predict_false in thr_kern.c for some executed only once code.

Reviewd by: deischen
2003-12-09 02:20:56 +00:00
davidxu
3f57a77355 More reliably check timeout for pthread_mutex_timedlock. 2003-12-09 00:52:28 +00:00
tjr
f9c332bd6a Set __mbrtowc and __wcrtomb correctly when changing to the C/POSIX locale.
Save __mbrtowc and __wcrtomb and restore them when changing back to
the cached locale.

Reported by:	perky
2003-12-08 23:52:22 +00:00
deischen
e2ed712394 Go back to using rev 1.18 where thread locks are used instead of KSE
locks for [libc] spinlock implementation.  This was previously backed
out because it exposed a bug in ia64 implementation.

OK'd by:	marcel
2003-12-08 13:33:20 +00:00
fjoe
ab0bce9d34 Make msdosfs long filenames matching case insensitive again.
PR:		59765
Submitted by:	Ryuichiro Imura <imura@ryu16.org>
2003-12-08 08:32:20 +00:00
marcel
4b6eafd82f Simplify the contexts created by the kernel and remove the related
flags. We now create asynchronous contexts or syscall contexts only.
Syscall contexts differ from the minimal ABI dictated contexts by
having the scratch registers saved and restored because that's where
we keep the syscall arguments and syscall return values.
Since this change affects KSE, have it use kse_switchin(2) for the
"new" syscall context.
2003-12-07 20:47:33 +00:00
murray
93b87ff9b0 Add support for timeout: and attempts: resolver options.
Submitted by:	Paul Vixie <paul@vix.com> / ISC
MFC After:	1 week
2003-12-07 12:32:24 +00:00
tjr
11f17fd074 Split multibyte(3) into separate manual pages for each function.
Instead of just deleting it, turn the original page into a general
overview of the multibyte character conversion functions, somewhat
similar to stdio(3).
2003-12-07 06:33:52 +00:00
tjr
412df50614 Split the documentation for localeconv() off into a separate manual page. 2003-12-07 06:00:00 +00:00
tjr
9ef7fe6cd5 Fix prototype for getchar_unlocked(). 2003-12-07 05:12:51 +00:00
obrien
23ad917e96 Update with the 4.9 pam modules, and add pam_opieaccess.so to the mix.
Approved by:	re(scottl)
2003-12-07 03:02:27 +00:00
obrien
95a0e9c9d5 Update with the 4.9 pam modules, and add pam_opieaccess.so to the mix.
Approved by:	re(scottl)
2003-12-07 02:38:01 +00:00
obrien
8d932005f6 Update with the 4.9 libraries, and add libdevstat.so.2 libmp.so.3
libskey.so.2 libusbhid.so.0 libutil.so.3 libvgl.so.2 to the mix.

Approved by:	re(scottl)
2003-12-07 02:11:19 +00:00
peter
bf613741f0 Apply a second fix for stack alignment with libkse. This time, enter the
UTS with the stack correctly aligned.  Also, while here, use an indirect
jump rather than the pushq/ret hack.

This fixes threaded apps that use floating point for me, although
it hasn't solved all the problems.  It is an improvement though.
Preservation of the 128 byte red zone hasn't been resolved yet.

Approved by:  re (scottl)
2003-12-05 01:41:43 +00:00
peter
b339dae7c2 "Fix" makecontext() so that the C code begins execution with its
ABI-required stack alignment.  C code expects that the push of the
return address disturbed the 16 byte alignment and it will take corrective
measures to fix it before making another call.  Of course, if its wrong
to start with, then all hell breaks loose.  Essentially we "fix" this
by making the stack alignment odd to start with.

This was one of the things that broke on libkse with apps that use
floating point/varargs/etc.

Approved by:  re (scottl)
2003-12-05 01:36:44 +00:00
peter
976bb368f6 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
mtm
9449459c17 Use dynamic instead of static LDT allocation.
Approved by: re (scottl)
2003-12-02 16:00:26 +00:00
dg
da88330aaa Fixed a bug in sendfile(2) where the sent data would be corrupted due
to sendfile(2) being erroneously automatically restarted after a signal
is delivered. Fixed by converting ERESTART to EINTR prior to exiting.

Updated manual page to indicate the potential EINTR error, its cause
and consequences.

Approved by: re@freebsd.org
2003-12-01 22:12:50 +00:00
davidxu
639818d0f3 Eliminate two pushl by using call instruction directly, this really
helps branch predict a lot for INTEL P4.

Approved by: re (scottl)
2003-11-29 14:25:43 +00:00
davidxu
2cc3179bff 1.Macro optimizing KSE_LOCK_ACQUIRE and THR_LOCK_ACQUIRE to use static fall
through branch predict as suggested in INTEL IA32 optimization guide.

2.Allocate siginfo arrary separately to avoid pthread to be allocated at
2K boundary, which hits L1 address alias problem and causes context
switch to be slow down.

3.Simplify context switch code by removing redundant code, code size is
reduced, so it is expected to run faster.

Reviewed by: deischen
Approved by: re (scottl)
2003-11-29 14:22:29 +00:00
davidxu
e9f088c469 Remove surplus mmap() call for stack guard page in init_private, it is done
in init_main_thread. Also don't initialize lock and lockuser again for initial
thread, it is already done by _thr_alloc().

Reviewed by: deischen
Approved by: re (scottl)
2003-11-29 14:10:02 +00:00
obrien
944490ab4b Update with the 4.9 libraries, and add libdevstat.so.2 libmp.so.3
libskey.so.2 libusbhid.so.0 libutil.so.3 libvgl.so.2 to the mix.

Approved by: scottl
2003-11-29 03:29:18 +00:00
marcel
769360c440 Do not adjust to the pagesize at runtime. Besides for the one-time
initialization overhead, there's a problem in that we never call
imalloc() and thus malloc_init() for zero-sized allocations. As a
result, malloc(0) returns NULL when it's the first or only malloc in
the program. Any non-zero allocation will initialize the malloc code
with the side-effect that subsequent zero-sized allocations return a
non-NULL pointer. This is because the pointer we return for zero-
sized allocations is calculated from malloc_pageshift, which needs
to be initialized at runtime on ia64.

The result of the inconsistent behaviour described above is that
configure scripts failed the test for a GNU compatible malloc. This
resulted in a lot of broken ports.

Other, even simpler, solutions were possible as well:
1.  initialize malloc_pageshift with some non-zero value (say 13 for
    8KB pages) and keep the runtime adjustment.
2.  Stop using malloc_pageshift to calculate ZEROSIZEPTR.

Removal of the runtime adjustment was chosen because then ia64 is the
same as any other platform. It is not to say that using a page size
obtained at runtime is bad per se. It's that there's currently a high
level of gratuity for its existence and the moment it causes problems
is the moment you need to get rid of it. Hence, it's not unthinkable
that this commit is (partially) reverted some time in the future when
we do have a good reason for it and a good way to achieve it.

Approved by: re@ (rwatson)
Reported by: kris (portmgr@) -- may the ports be with you
2003-11-28 18:03:22 +00:00
tjr
ab50de63d8 Replace out of date struct statfs definition with a reference to statfs(2).
Approved by:	re
2003-11-21 01:30:28 +00:00
dds
36934d35fe Fix problem where initgroups would silently truncate groups with
more than NGROUP elements without providing the opportunity to
setgroups to fail and correctly return error and set errno.

MFC after:	2 weeks
2003-11-19 15:51:26 +00:00
dds
3a434d3212 Documented missing EINVAL errno value
kern_prot.c:
if (ngrp > NGROUPS)
	return (EINVAL);

MFC after:	2 weeks
2003-11-19 13:05:50 +00:00
jake
3b85e0cc9c Install the user trap handlers that libc provides from a constructor, so
that they will be installed before application constructors are invoked.
Its possible to link applications such that this fails, application code
is invoked before they are installed, but, well, Don't Do That.

Approved by:	re (jhb)
2003-11-18 14:21:41 +00:00
rwatson
36df19adf8 Staticize label_default_head to prevent it from leaking out of mac.c.
Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-17 19:48:35 +00:00
marcel
69f4b4a520 Declare crc32 static. There's a copy in libz that conflicts for the
crunched binary.

Found by: make release
2003-11-17 05:47:42 +00:00
nectar
72e88767d2 Baby steps. Set WARNS=1 for libc. 2003-11-17 04:20:02 +00:00
nectar
2736f7d1fc Detect range errors when using the %s specifier. Previously, LONG_MAX
was rejected as a range error, while any values less than LONG_MIN
were silently substituted with LONG_MIN.  Furthermore, on some
platforms `time_t' has less range than `long' (e.g. alpha), which may
give incorrect results when parsing some strings.
2003-11-17 04:19:15 +00:00
rwatson
750050e6cb Update mac_set.3 to account for new behavior of mac_set_fd() in the
context of sockets, and document EINVAL as a possible failure mode
based on the object selected, not just the label provided.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-16 20:21:21 +00:00
rwatson
67feac6f9a Implement mac_get_peer(3) using getsockopt() with SOL_SOCKET and
SO_PEERLABEL.  This provides an interface to query the label of a
socket peer without embedding implementation details of mac_t in
the application.  Previously, sizeof(*mac_t) had to be specified
by an application when performing getsockopt().

Document mac_get_peer(3), and expand documentation of the other
mac_get(3) functions.  Note that it's possible to get EINVAL back
from mac_get_fd(3) when pointing it at an inappropriate object.

NOTE: mac_get_fd() and mac_set_fd() support for sockets will
follow shortly, so the documentation is slightly ahead of the
code.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-16 20:18:24 +00:00