8242 Commits

Author SHA1 Message Date
mtm
f04f7ffd82 o We are not required to initialize an invalid rwlock. So axe all that
code and simply return EINVAL (which is allowed by the standard) in
  all those pthread functions that previously initialized it.

o Refactor the pthread_rwlock_[try]rdlock() and pthread_rwlock_[try]wrlock()
  functions. They are now completeley condensed into rwlock_rdlock_common()
  and rwlock_wrlock_common(), respectively.

o If the application tries to destroy an rwlock that is currently
  held by a thread return EBUSY where it previously went ahead and
  freed all resources associated with the lock.

o Refactor _pthread_rwlock_init() to make it look (relatively) sane.

o When obtaining a read lock on an rwlock the check for whether it
  would exceed the maximum allowed read locks should happen *before*
  we obtain the lock.

o The pthread_rwlock_* functions shall *never* return EINTR, so make
  sure to requeue/resuspend the thread if it encounters such an error.

o Make a note that pthread_rwlock_unlock() needs to ensure it holds a
  lock on an rwlock it tries to unlock. It will be implemented in a
  separate commit because it requires some additional rwlock infrastructure.
2004-01-16 07:10:30 +00:00
jhb
ca8db354f6 - Move the code to try to open a single chunk file and prompt for the
associated floppy if needed into a static split_openfile() function.
- Use this function in splitfs_open() to open the first chunk rather
  than using open() directly.  This allows the first chunk to be located
  on a different disk than the actual foo.split file.
2004-01-15 18:38:15 +00:00
jhb
d195426865 Whitespace tweaks to make indentation consistent within this file and even
within a single function.
2004-01-15 18:36:48 +00:00
jhb
4446d36fa6 - Print out line number in a panic message using %d rather than %p. Line
numbers aren't pointers.
- Add a __printflike() attribute to libstand's panic() prototype to catch
  such bogons in the future.
2004-01-15 18:35:32 +00:00
ru
5bec276bea Fixed style of previous commit.
Submitted by:	bde
2004-01-15 17:27:28 +00:00
ru
90d1bd0020 Return ENOTSUP instead of -1. 2004-01-15 16:09:58 +00:00
ru
57b6bbbf56 Have a single set of POSIX threads man pages. The LIBRARY section
of each manpage lists libraries that have corresponding interfaces
implemented.

Prodded by:	threads
Reviewed by:	deischen
2004-01-14 21:44:26 +00:00
ru
8eb3bce250 The libc_r/man/sigwait.3 manpage has been repocopied to libc/sys/sigwait.2.
Reviewed by:	deischen
Repocopy by:	markm
2004-01-14 21:22:10 +00:00
ru
0223333b35 - libc/sys/sem.c was repocopied to libc/gen/sem.c.
- sem_*(3) manpages were repocopied from libc_r.

Reviewed by:	deischen
Repocopy by:	markm
2004-01-14 20:54:16 +00:00
des
9766be385f Translate from GNU C to ISO C. 2004-01-14 07:47:10 +00:00
ru
7b4183345a bsd.dep.mk,v 1.43 allows us to replace a hack with a solution. 2004-01-13 17:38:42 +00:00
des
ec1fd605cb Add and document ffsl(), fls() and flsl(). 2004-01-13 16:05:47 +00:00
nectar
9a454178d8 Kill whitespace at end of lines. 2004-01-12 13:33:24 +00:00
nectar
6722bb8a10 Fix a bug that could result in a null pointer dereference in
getpwent(3) or getpwuid(3) when using NIS adjunct maps.  The bug was
present in the internal `nis_passwd' function.  The lookup in the
adjunct map used the name passed into `nis_passwd', however no name
was of course supplied by getpwent or getpwuid.  Correctly use the
name from the `struct pwd' that was found instead.

PR:		bin/59962
Submitted by:	Gabriel Gomez <ggomez@fing.edu.uy>
2004-01-12 13:29:54 +00:00
ru
7cefb3fd89 Removed duplicate SRCS. 2004-01-11 17:23:31 +00:00
ru
84581d0fa4 XDR sources are handled by ../xdr/Makefile.inc. 2004-01-11 17:14:54 +00:00
ru
2ca5a258fd Replaced an ugly hack to selectively disable warnings
in contributed sources with just a hack made possible
by bsd.sys.mk,v 1.33.  This is better because it just
nulls out the warning flags rather than adding gcc(1)
specific -w option to CFLAGS.
2004-01-11 10:42:47 +00:00
obrien
c8633d5cb9 Add an ulgy hack so that warnings added by non-zero WARNS values won't be
used with the contrib/ gdtoa sources as they aren't WARNS-clean.

Submitted by:	ru
2004-01-10 21:51:48 +00:00
nectar
c705beed64 Remove now redundant and now conflicting declaration of sysarch(2).
Remove now unnecessary cast.

Reported by:	alpha tinderbox
2004-01-10 18:37:11 +00:00
rwatson
c74cd0c713 Clarify the behavior of ptrace(2) a little bit: the tracing process
must first attach to the traced process.  If the tracing process
exits without detaching, the traced process will be killed rather
than continued.  For the duration of the tracing session, the traced
process is reparented to the tracing process (with resulting expected
behaviors).  It is permissible to trace more than one other process
at a time.  When using waitpid() to monitor the behavior of the traced
process, signals are intercepted: they may optionally then be
forwarded using ptrace().  Signals are generated normally by and for
the process, but also by the tracing facility (SIGTRAP).

Product of:	Suffering
Sponsored by:	DARPA, AFRL
2004-01-10 17:41:04 +00:00
nectar
556ef198b4 We need to discard `const'ness explicitly when invoking sysarch.
Reported by:	sparc64 tinderbox via bde
2004-01-10 15:57:06 +00:00
emax
67356f1515 Change sdp_open_local(3) API. It now takes a path to a control socket
Teach sdpcontrol(8) how to talk to the local SDP server
Update man pages
s/u_int/uint

Reviewed by:	imp (mentor), ru
2004-01-09 22:44:28 +00:00
emax
a67ee2bd6e Prepare libsdp(3) for the upcoming sdpd import
Also while i'm here s/u_int/uint

Reviewed by:	imp (mentor), ru
2004-01-09 18:19:12 +00:00
nectar
11f80dcf0d Provide sysarch(2) prototypes in the MD sysarch.h headers. While I'm
at it, use the ANSI C generic pointer type for the second argument,
thus matching the documentation.

Remove the now extraneous (and now conflicting) function declarations
in various libc sources.  Remove now unnecessary casts.

Reviewed by:	bde
2004-01-09 16:52:09 +00:00
nectar
9b32167d5f It was reported that when using nss_ldap, getgrent(3) would behave
incorrectly when encountering `large' groups (many members and/or many
long member names).  The reporter tracked this down to the glibc NSS
module compatibility code (nss_compat.c): it would prematurely record
that a NSS module was finished iterating through its database in some
cases.

Two aspects are corrected:

1. nss_compat.c recorded that a NSS module was finished iterating
   whenever the module reported something other than SUCCESS.  The
   correct logic is to continue iteration when the module reports
   either SUCCESS or RETURN.  The __nss_compat_getgrent_r and
   __nss_compat_getpwent_r routines are updated to reflect this.

2. An internal helper macro __nss_compat_result is used to map glibc
   NSS status codes to BSD NSS status codes (e.g. NSS_STATUS_SUCCESS ->
   NS_SUCCESS).  It provided the obvious mapping.

   When a NSS routine is called with a too-small buffer, the
   convention in the BSD NSS code is to report RETURN.  (This is used
   to implement reentrant APIs such as getpwnam_r(3).)  However, the
   convention in glibc for this case is to set errno = ERANGE and
   overload TRYAGAIN.  __nss_compat_result is updated to handle this
   case.

PR:		bin/60287
Reported by:	Lachlan O'Dea <odela01@ca.com>
2004-01-09 13:43:49 +00:00
deischen
47d6f075e0 MFlibpthread: Add a simple work-around for deadlocking on recursive
readlocks on a rwlock while there are writers waiting.
2004-01-08 15:39:12 +00:00
deischen
b5d5c1e2e6 Add a simple work-around for deadlocking on recursive read locks
on a rwlock while there are writers waiting.  We normally favor
writers but when a reader already has at least one other read lock,
we favor the reader.  We don't track all the rwlocks owned by a
thread, nor all the threads that own a rwlock -- we just keep
a count of all the read locks owned by a thread.

PR:	24641
2004-01-08 15:37:09 +00:00
nectar
42a056d4f8 Adjust for brain outage that affected the previous commit.
Submitted by:	Stefan Farfeleder <stefan@fafoe.narf.at>
2004-01-06 20:29:40 +00:00
nectar
e87a51f854 Add required headers. 2004-01-06 19:40:28 +00:00
nectar
3caa6a8523 Add required headers and function declarations. 2004-01-06 19:28:07 +00:00
nectar
34b6220e44 Remove unused variables. Add required headers and function
declarations.
2004-01-06 18:53:26 +00:00
nectar
0614df8c40 Use ANSI C function definition for _mcount' and remove static'
prototype from header file.

Discussed with:	bde, maybe one year ago
2004-01-06 18:49:54 +00:00
nectar
9f90d04060 Add missing declaration. 2004-01-06 18:45:58 +00:00
nectar
cdff4028d6 Work around a `warning: zero-length printf format string'. 2004-01-06 18:45:13 +00:00
nectar
d76901e917 Avoid undefined behavior:
foo[i] = bar[++i];  /* Which operator [] will be evaluated first? */
2004-01-06 18:43:31 +00:00
nectar
a455b2e93e Make intentions explicit with additional parenthesis. 2004-01-06 18:32:24 +00:00
nectar
c281d0e2ea Remove unused variables and function declarations. Add missing headers. 2004-01-06 18:26:15 +00:00
davidxu
f3e2bcfe4c Kernel now supports per-thread sigaltstack, follow the change to
enable sigaltstack for scope system thread.
2004-01-03 02:40:27 +00:00
davidxu
32583a78cf Return error code in errno, not in return value. 2004-01-02 00:38:42 +00:00
davidxu
abb0f21d58 Fix a typo. 2004-01-02 00:27:30 +00:00
deischen
15847c4488 Reenable signals for threads after joining.
Submitted by:	Marc Olzheim <marcolz@stack.nl>
2003-12-31 13:41:54 +00:00
ru
af0a846800 Removed MLINKS to nonimplemented/nonexistent functions. 2003-12-30 17:13:20 +00:00
ru
00755078ab Merge from libc_r: document pthread_attr_[gs]etstack(). 2003-12-30 17:08:23 +00:00
ru
c387e07b72 Pull revision 1.13 from libpthread/man/pthread_mutex_init.3:
- Remove error code that can't be returned (and original description
  was not proper English)

PR:		docs/57434
2003-12-30 15:44:16 +00:00
ru
67877ecd48 Pull some changes (mostly cosmetic) from libc_r manpages
in preparation for the merge.
2003-12-30 14:59:10 +00:00
mtm
81dc42d3d9 o Implement pthread_mutex_timedlock(), which does not block indefinitely on
a mutex locked by another thread.
o document it: pthread_mutex_timedlock(3)
2003-12-30 08:44:55 +00:00
mtm
d4f59be550 Make it possible for the library to specify a timeout value when
waiting on a locked mutex. This involves passing a struct timespec
from the pthread mutex locking interfaces all the way down to the
function that suspends the thread until the mutex is released.
The timeout is assumed to be an absolute time (i.e. not relative to
the current time).

Also, in _thread_suspend() make the passed in timespec const.
2003-12-30 08:34:57 +00:00
davidxu
d6b72f0aa3 Forgot to commit this file for last commit. :( 2003-12-29 23:33:51 +00:00
davidxu
8d750bfb1b Implement sigaltstack() as per-threaded. Current only scope process thread
is supported, for scope system process, kernel signal bits need to be
changed.

Reviewed by: deischen
Tested on  : i386 amd64 ia64
2003-12-29 23:21:09 +00:00
maxim
aef221ac80 Describe kern.ipc.nsfbufsused and kern.ipc.nsfbufspeak.
Reviewed by:	silby
2003-12-29 12:29:37 +00:00