Commit Graph

60 Commits

Author SHA1 Message Date
ed
0fa239bbd7 Implement LIST_PREV().
Regular LISTs have been implemented in such a way that the prev-pointer
does not point to the previous element, but to the next-pointer stored
in the previous element. This is done to simplify LIST_REMOVE(). This
macro can be implemented without knowing the address of the list head.

Unfortunately this makes it harder to implement LIST_PREV(), which is
why this macro was never here. Still, it is possible to implement this
macro. If the prev-pointer points to the list head, we return NULL.
Otherwise we simply subtract the offset of the prev-pointer within the
structure.

It's not as efficient as traversing forward of course, but in practice
it shouldn't be that bad. In almost all use cases, people will want to
compare the value returned by LIST_PREV() against NULL, so an optimizing
compiler will not emit code that does more branching than TAILQs.

While there, make the code a bit more readable by introducing
__member2struct(). This makes STAILQ_LAST() far more readable.

MFC after:	1 month
2012-09-12 21:03:48 +00:00
davidxu
20f511dcbd Add manual pages for clock_getcpuclockid and pthread_getcpuclockid. 2012-08-21 09:18:28 +00:00
kevlo
f0596397a6 Add offsetof.3 man page
Obtained from:	OpenBSD
2012-02-08 08:42:17 +00:00
ed
cbd2bf6e79 Add missing \.
While sorting the MLINKS by name, I forgot to re-add it.
2011-12-27 13:01:10 +00:00
ed
f175ea262c Add manual page for atomic operations. 2011-12-27 12:58:54 +00:00
mdf
5e42f0aa77 Note that the _SWAP operation is supported for all list/queue types.
Also place STAILQ_REMOVE_HEAD in alphabetical order.  Lastly, document
the _SWAP macros.

PR:		kern/143033
MFC after:	1 week
2011-05-13 15:49:23 +00:00
jkim
365538a229 Introduce a non-portable function pthread_getthreadid_np(3) to retrieve
calling thread's unique integral ID, which is similar to AIX function of
the same name.  Bump __FreeBSD_version to note its introduction.

Reviewed by:	kib
2011-02-07 21:26:46 +00:00
davidxu
4b5fe92932 Make a link for pthread_timedjoin_np. 2010-09-11 09:26:36 +00:00
jilles
e54eb58dbf Document clock and pshared condvar attributes.
Note: clock accepts CLOCK_VIRTUAL and CLOCK_PROF too, but this seems broken
as it simply waits for the difference of the current and given value of the
clock as if it were CLOCK_MONOTONIC. So document only CLOCK_REALTIME and
CLOCK_MONOTONIC as allowed.

MFC after:	1 week
2010-05-09 14:21:34 +00:00
delphij
6761d75fb4 Add a set of manual pages for pthread[_attr]_[sg]etaffinity(3).
Reviewed by:	davidxu
MFC after:	2 weeks
2010-01-09 12:31:11 +00:00
ed
3779b68747 Rename the queue macros I introduced last year.
Last year I added SLIST_REMOVE_NEXT and STAILQ_REMOVE_NEXT, to remove
entries behind an element in the list, using O(1) time. I recently
discovered NetBSD also has a similar macro, called SLIST_REMOVE_AFTER.
In my opinion this approach is a lot better:

- It doesn't have the unused first argument of the list pointer. I added
  this, mainly because OpenBSD also had it.

- The _AFTER suffix makes a lot more sense, because it is related to
  SLIST_INSERT_AFTER. _NEXT is only used to iterate through the list.

The reason why I want to rename this now, is to make sure we don't
release a major version with the badly named macros.
2009-05-27 19:28:04 +00:00
ed
3b64cecd5c Several documentation fixups related to device minor/major numbers:
- Document the minor(3), major(3) and makedev(3) macro's. They also
  apply to umajor() and uminor() in the kernel, but hopefully we'll sort
  that out one day.

- Briefly dev2unit() inside the make_dev(9) manual page, since this is
  now the preferred macro to obtain character device unit numbers inside
  the kernel.

- Remove the device_ids(9) manual page. It contains highly inaccurate
  information, such as a description of the nonexistent major().
2008-09-28 20:15:45 +00:00
ed
d5f58395c3 Introduce REMOVE_NEXT() macro's for SLIST and STAILQ.
Even though single linked lists allow items to be removed at constant time
(when the previous element is known), the queue macro's don't allow this.
Implement new REMOVE_NEXT() macro's. Because the REMOVE() macro's also
contain the same code, make it call REMOVE_NEXT().

The OpenBSD version of SLIST_REMOVE_NEXT() needs a reference to the list
head, even though it is unused. We'd better mimic this. The STAILQ version
also needs a reference to the list. This means the prototypes of both
macro's are the same.

Approved by:	philip (mentor)
PR:		kern/121117
2008-05-22 14:40:03 +00:00
ru
0f0375e36a Remove options MK_LIBKSE and DEFAULT_THREAD_LIB now that we no longer
build libkse.  This should fix WITHOUT_LIBTHR builds as a side effect.
2008-03-29 17:44:40 +00:00
jasone
369f1c40ef Install manpage links for RB_PREV and RB_FOREACH_REVERSE. 2008-03-07 22:29:53 +00:00
obrien
a1598920aa Tweak the handling of "WITHOUT_LIBPTHREAD". Also remove the accidental
treatment of 'LIBKSE' as an "old style" knob.

Submitted by:	ru
Approved by:	re(kensmith)
2007-10-09 23:31:11 +00:00
obrien
eb3f6a9e74 Repo copy libpthreads to libkse.
This introduces the WITHOUT_LIBKSE nob,
and changes WITHOUT_LIBPTHREADS to mean with neither threading libs.
Approved by:	re(kensmith)
2007-10-09 13:42:34 +00:00
ru
6e2dfd0e20 Removed libc_r build support. 2006-09-30 11:32:46 +00:00
maxim
553cc2593a o Add pthread_yield.3 man page.
PR:		docs/100083
Reviewed by:	deischen, ru
Obtained from:	OpenBSD
MFC after:	2 weeks
2006-09-18 18:07:49 +00:00
ru
388e590f95 Reimplementation of world/kernel build options. For details, see:
http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html

The src.conf(5) manpage is to follow in a few days.

Brought to you by:	imp, jhb, kris, phk, ru (all bugs are mine)
2006-03-17 18:54:44 +00:00
jasone
3c01b0047d Add the RB_PROTOTYPE_STATIC and RB_GENERATE_STATIC macros.
Approved by:	markm (mentor)
2006-01-19 07:20:20 +00:00
maxim
92d869103c o Sort MLINKS. 2006-01-11 21:28:55 +00:00
jasone
3c55fbecc5 Add the RB_NFIND() macro, which is useful for red-black tree searches
for which there may not be an exact match.

Reviewed by:	glebius, julian
Approved by:	markm (mentor)
2006-01-11 15:48:36 +00:00
davidxu
da6fd2f691 Add siginfo. 2005-12-13 00:28:09 +00:00
keramida
9d94798f19 Add a manpage for pthread_atfork(3). This copies a lot of the text of
the Open Group manpage for pthread_atfork(), available online at:

http://www.opengroup.org/onlinepubs/009695399/functions/pthread_atfork.html

which should be ok, since Daniel Eischen had mailed me about Open
Group manpages and the fact that they have granted permission to
FreeBSD to use their material.  Any differences from the OG text are
my changes to the original manpage text submitted by Alex Vasylenko:

- In an effort to clean up the part that describes hooks and their
  calling order, I used a list instead of a single paragraph for all the three
  types of fork() hooks.
- After a short discussion with Dima Dorfman a long long time ago in a
  far away galaxy, I changed the RETURN VALUES section to look more
  like the rest of the pthread_xxx.3 manpages.

PR:		docs/68201
Submitted by:	Alex Vasylenko <lxv@omut.org>
2005-05-18 16:23:11 +00:00
das
a84bfd6e04 Remove fpsetsticky(). This was added for SysV compatibility, but due
to mistakes from day 1, it has always had semantics inconsistent with
SVR4 and its successors.  In particular, given argument M:

- On Solaris and FreeBSD/{alpha,sparc64}, it clobbers the old flags
  and *sets* the new flag word to M.  (NetBSD, too?)
- On FreeBSD/{amd64,i386}, it *clears* the flags that are specified in M
  and leaves the remaining flags unchanged (modulo a small bug on amd64.)
- On FreeBSD/ia64, it is not implemented.

There is no way to fix fpsetsticky() to DTRT for both old FreeBSD apps
and apps ported from other operating systems, so the best approach
seems to be to kill the function and fix any apps that break.  I
couldn't find any ports that use it, and any such ports would already
be broken on FreeBSD/ia64 and Linux anyway.

By the way, the routine has always been undocumented in FreeBSD,
except for an MLINK to a manpage that doesn't describe it.  This
manpage has stated since 5.3-RELEASE that the functions it describes
are deprecated, so that must mean that functions that it is *supposed*
to describe but doesn't are even *more* deprecated.  ;-)

Note that fpresetsticky() has been retained on FreeBSD/i386.  As far
as I can tell, no other operating systems or ports of FreeBSD
implement it, so there's nothing for it to be inconsistent with.

PR:		75862
Suggested by:	bde
2005-03-15 15:53:39 +00:00
ru
ba3655c74f NOLIBC_R -> NO_LIBC_R
NOLIBPTHREAD -> NO_LIBPTHREAD
NOLIBTHR -> NO_LIBTHR
2004-12-21 09:00:26 +00:00
ru
869702f330 Sort MAN and MLINKS in dictionary order ignoring case. 2004-09-19 06:11:45 +00:00
stefanf
a8a8b4c153 Add a man page for tgmath.h.
Reviewed by:	keramida
2004-08-13 22:43:12 +00:00
pjd
87b856667a Add missing links. 2004-06-04 10:14:55 +00:00
mtm
92fa088800 Implement PThreads barriers and barrier attributes. 2004-02-19 13:51:52 +00:00
mtm
7a517ec35f o Implement the pthread_spin_* functions in libthr.
o Man pages
2004-01-22 15:31:56 +00:00
ru
ad42658a8b Use a single style for share/man/ makefiles:
- Sort MAN and MLINKS in "dictionary" order ignoring case.

- For multi-value MAN and multi-pair MLINKS, put each value/pair
  on its own line, for easier sorting and so that further diffs
  are easier to see.
2004-01-20 10:27:23 +00:00
mtm
e3c786562f Add an implementation of pthread_rwlock_timed{rd,wr}lock() to libthr with
attendant documentation.
2004-01-16 10:52:10 +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
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
mike
e35c51c74c Implement C99's va_copy() macro. 2002-09-18 07:33:16 +00:00
des
e9f3540c66 Install the tree(3) man page. 2002-06-23 14:44:32 +00:00
tmm
2bc2f35287 Document STAILQ_CONCAT and TAILQ_CONCAT.
PR:		20024
Submitted by:	Tony Finch <dot@dotat.at> (TAILQ_CONCAT, slightly changed
		by me)
Reviewed by:	ru (earlier version)
2002-04-17 13:48:14 +00:00
fjoe
2a76d02baf fix MLINKS for timeradd.3 2002-01-14 20:36:34 +00:00
dwhite
f1f7c6cf0d Add manpage for timeradd macros and friends. A companion page for
timespecadd should be added at a future point...

PR:		13079
2002-01-14 00:38:20 +00:00
ru
a27d1d954d MAN[1-9] -> MAN. 2001-03-27 13:48:25 +00:00
ben
59b8a3e902 Remove CIRCLEQ manual page links now that CIRCLEQ has been axed. 2000-12-30 18:54:35 +00:00
jake
5b7ef4dfa5 Add MLINKS for queue(3) FOREACH_REVERSE and HEAD_INITIALIZER macros.
Forgotten by:	jake, archie
2000-06-12 15:28:08 +00:00
phantom
b1bd5e2cc7 Add MLINKS for all macros decribed in queue.3 manpage. 2000-05-12 07:58:37 +00:00
peter
76f0c923fe $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
jmg
9324a238d2 fix the links to the bitstring man page..
fix wording in man page, through != to
1999-06-25 04:51:49 +00:00
jlemon
856becd843 Document the fpgetprec/fpsetprec functions in their man page.
Add cross-references to the elusive fpsetmask() function to various other
man pages.
Reviewed by:	bde
1998-02-04 22:30:20 +00:00
peter
d69a45675f Revert $FreeBSD$ back to $Id$ 1997-02-22 13:26:29 +00:00
jkh
808a36ef65 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00