1853 Commits

Author SHA1 Message Date
lstewart
bf49d6a9f9 - Rework the underlying ALQ storage to be a circular buffer, which amongst other
things allows variable length messages to be easily supported.

- Extend KPI with alq_writen() and alq_getn() to support variable length
  messages, which is enabled at ALQ creation time depending on the
  arguments passed to alq_open(). Also add variants of alq_open() and
  alq_post() that accept a flags argument. The KPI is still fully
  backwards compatible and shouldn't require any change in ALQ consumers
  unless they wish to utilise the new features.

- Introduce the ALQ_NOACTIVATE and ALQ_ORDERED flags to allow ALQ consumers
  to have more control over IO scheduling and resource acquisition
  respectively.

- Strengthen invariants checking.

- Document ALQ changes in ALQ(9) man page.

Sponsored by:	FreeBSD Foundation
Reviewed by:	gnn, jeff, rpaulo, rwatson
MFC after:	1 month
2010-04-26 13:48:22 +00:00
uqs
3960614646 mdoc: order prologue macros consistently by Dd/Dt/Os
Although groff_mdoc(7) gives another impression, this is the ordering
most widely used and also required by mdocml/mandoc.

Reviewed by:	ru
Approved by:	philip, ed (mentors)
2010-04-14 19:08:06 +00:00
emaste
b85ea51dd0 Remove extraneous '>'. 2010-04-07 19:13:31 +00:00
trasz
254a3f28d4 Fix references. 2010-03-29 17:39:38 +00:00
kib
03d4d51217 Correct the type for uio_resid.
MFC after:	3 days
2010-03-21 16:14:19 +00:00
avg
634ee70616 vfs_mount.9: drop cross-reference to a removed manual
MFC after:	3 days
2010-03-19 14:35:38 +00:00
uqs
8f141f1a13 Fix several typos in macros or macro misusage.
Found by:	make manlint
Reviewed by:	ru
Approved by:	philip (mentor)
2010-03-12 10:01:06 +00:00
glebius
4d38d86e0c Remove C99 initializer, since dominant style is to use non-C99 initializers.
Requested by:	jhb
2010-03-03 18:49:15 +00:00
joel
82de4fa7ef The NetBSD Foundation has granted permission to remove clause 3 and 4 from
their software.

Obtained from:	NetBSD
2010-03-02 21:50:36 +00:00
glebius
9a34123c4a - Add missing includes to make example "compilable".
- Use C99 initializer just in case if driver_t may change in future.
- Use NULL for pointer arguments instead of 0.
2010-03-02 21:10:44 +00:00
kib
172a393700 Update man page for vm_page_alloc(9).
Based on the submission by:	Giovanni Trematerra <giovanni.trematerra gmail com>
MFC after:	3 days
2010-02-27 17:11:15 +00:00
delphij
40da08a8a7 Add several necessary .El's.
MFC after:	2 weeks
2010-02-27 01:17:44 +00:00
jhb
cf30462ca9 Fix spelling of EACCES.
PR:		docs/144112
Submitted by:	Alexander Best
MFC after:	3 days
2010-02-24 13:13:29 +00:00
bschmidt
43a433ba0b Fix some typos.
Approved by:	rpaulo (mentor)
MFC after:	1 week
2010-02-22 17:03:26 +00:00
rwatson
335ddbada0 Cross-reference netstat(1) from netisr(9) since you can now use it to
monitor netisr status.

MFC after:	1 week
Sponsored by:	Juniper Networks
2010-02-22 16:02:17 +00:00
trasz
5bd435ea19 Some rewording and language fixes.
PR:		docs/136918, docs/134074
Submitted by:	Ben Kaduk <kaduk at mit dot edu>, Haven Hash <havenster at gmail dot com>
2010-02-15 17:41:59 +00:00
trasz
7bce9ac88b Remove list of locking primitives, which is kind of redundant, move
information about witness(9) to the section about interactions, and
expand 'contexts' table.
2010-02-13 12:03:03 +00:00
trasz
fbbd50b068 Fix VBAD description. 2010-02-13 11:54:01 +00:00
trasz
c3b530a4d9 Start sentences with a new line.
Submitted by:	brueffer
2010-02-10 19:03:48 +00:00
trasz
d7d58009ce Improve description for Giant and mention blocking inside interrupt threads. 2010-02-10 17:02:06 +00:00
trasz
ad83c69792 Remove VOP_VPTOFH(9) from references in VFS(9), as it's a VOP,
not VFS operation.
2010-02-09 21:01:18 +00:00
trasz
f435da68d7 Add references to VOP_* man pages to vnode(9). 2010-02-09 20:58:39 +00:00
gavin
28b830ebd8 Correct arguments to free_unr(), "item" was missing.
MFC after:	1 week
2010-02-07 20:36:23 +00:00
trasz
3de39c243b Add missing coma. 2010-02-06 14:10:45 +00:00
trasz
687466eca7 Cosmetic fixes. 2010-01-28 21:14:12 +00:00
trasz
5fbacf2860 Add description of bounded sleep vs unbounded sleep (aka blocking). Move
rules into their own section.
2010-01-28 19:57:24 +00:00
trasz
f0928fee72 Improve descriptions, remove turnstiles (since, from what I understand,
they are only used to implement other synchronization primitives), tweak
formatting.
2010-01-28 17:09:47 +00:00
attilio
a4281bb884 - Fix the kthread_{suspend, resume, suspend_check}() locking.
In the current code, the locking is completely broken and may lead
  easilly to deadlocks. Fix it by using the proc_mtx, linked to the
  suspending thread, as lock for the operation.  Keep using the
  thread_lock for setting and reading the flag even if it is not entirely
  necessary (atomic ops may do it as well, but this way the code is more
  readable).
- Fix a deadlock within kthread_suspend().
  The suspender should not sleep on a different channel wrt the suspended
  thread, or, otherwise, the awaker should wakeup both. Uniform the
  interface to what the kproc_* counterparts do (sleeping on the same
  channel).
- Change the kthread_suspend_check() prototype.
  kthread_suspend_check() always assumes curthread and must only refer to
  it, so skip the thread pointer as it may be easilly mistaken.
  If curthread is not a kthread, the system will panic.

In collabouration with:	jhb
Tested by:		Giovanni Trematerra
			<giovanni dot trematerra at gmail dot com>
MFC:			2 weeks
2010-01-24 15:07:00 +00:00
jhb
0dfdde5788 Sort NDHASGIANT.9 link properly. 2010-01-19 20:36:15 +00:00
gavin
4f0862f400 Xref sysctl(3)
Approved by:	ed (mentor)
2010-01-16 14:31:01 +00:00
ru
fdf6718f33 Use the newly brought %U macro. 2010-01-15 16:01:22 +00:00
jhb
415adcce72 - Note that if_xname, if_dname, and if_dunit are usually initialized via
if_initname().
- Document if_drv_flags and replace references to IFF_(RUNNING|OACTIVE)
  with references to IFF_DRV_(RUNNING|OACTIVE).
- Complete truncated sentence in the description of if_transmit by copying
  from the description in if_qflush.
- Add missing line breaks for translators.

Reviewed by:	brooks (1)
MFC after:	3 days
2010-01-14 14:43:16 +00:00
jhb
8019b29e4f - Update required headers for namei() to add <sys/fcntl.h> and remove
<sys/proc.h>.
- Add RETURN VALUES and ERROR sections for namei()'s error return values.
- Add a missing link to NDHASGIANT.9.

PR:		docs/142815, docs/142816
Submitted by:	Lachlan Kang (1, 2)
MFC after:	3 days
2010-01-14 14:36:39 +00:00
attilio
fde84f320b Introduce the new kernel thread called "deadlock resolver".
While the name is pretentious, a good explanation of its targets is
reported in this 17 months old presentation e-mail:
http://lists.freebsd.org/pipermail/freebsd-arch/2008-August/008452.html

In order to implement it, the sq_type in sleepqueues is mandatory and not
only compiled along with INVARIANTS option. Additively, a new sleepqueue
function, sleepq_type() is added, returning the type of the sleepqueue
linked to a wchan.
Three new sysctls are added in order to configure the thread:
debug.deadlkres.slptime_threshold
debug.deadlkres.blktime_threshold
debug.deadlkres.sleepfreq

rappresenting the thresholds for sleep and block time that will lead to
a deadlock matching (when exceeded), while the sleepfreq rappresents the
number of seconds between 2 consecutive thread runnings.
In order to enable the deadlock resolver thread recompile your kernel
with the option DEADLKRES.

Reviewed by:	jeff
Tested by:	pho, Giovanni Trematerra
Sponsored by:	Nokia Incorporated, Sandvine Incorporated
MFC after:	2 weeks
2010-01-09 01:46:38 +00:00
brueffer
e4fee8b8e9 Catch up with the VFS_VPTOFH(9) -> VOP_VPTOFH(9) repocopy that happened
almost three years ago in r166794.

PR:		140989
Submitted by:	Lachlan Kang
MFC after:	1 week
2010-01-04 22:22:00 +00:00
kib
16db58ba54 PG_NOSYNC is called VPO_NOSYNC for long time.
MFC after:	3 days
2010-01-04 14:58:41 +00:00
ru
0b6e1af801 Removed duplicate usbd_xfer_state(9) link. 2009-12-22 16:05:28 +00:00
ru
577c2cea5c Sort mlinks. 2009-12-22 16:02:08 +00:00
julian
e4c705b6d5 Make man page reflect the output columns
MFC after:	1 week
2009-12-16 19:37:38 +00:00
kib
061d83630f Document PBDRY and SLEEPQ_STOP_ON_BDRY.
Requested and reviewed by:	attilio
MFC after:	3 days
2009-12-12 22:08:37 +00:00
attilio
b1c6888d87 In current code, threads performing an interruptible sleep (on both
sxlock, via the sx_{s, x}lock_sig() interface, or plain lockmgr), will
leave the waiters flag on forcing the owner to do a wakeup even when if
the waiter queue is empty.
That operation may lead to a deadlock in the case of doing a fake wakeup
on the "preferred" (based on the wakeup algorithm) queue while the other
queue has real waiters on it, because nobody is going to wakeup the 2nd
queue waiters and they will sleep indefinitively.

A similar bug, is present, for lockmgr in the case the waiters are
sleeping with LK_SLEEPFAIL on.  In this case, even if the waiters queue
is not empty, the waiters won't progress after being awake but they will
just fail, still not taking care of the 2nd queue waiters (as instead the
lock owned doing the wakeup would expect).

In order to fix this bug in a cheap way (without adding too much locking
and complicating too much the semantic) add a sleepqueue interface which
does report the actual number of waiters on a specified queue of a
waitchannel (sleepq_sleepcnt()) and use it in order to determine if the
exclusive waiters (or shared waiters) are actually present on the lockmgr
(or sx) before to give them precedence in the wakeup algorithm.
This fix alone, however doesn't solve the LK_SLEEPFAIL bug. In order to
cope with it, add the tracking of how many exclusive LK_SLEEPFAIL waiters
a lockmgr has and if all the waiters on the exclusive waiters queue are
LK_SLEEPFAIL just wake both queues.

The sleepq_sleepcnt() introduction and ABI breakage require
__FreeBSD_version bumping.

Reported by:	avg, kib, pho
Reviewed by:	kib
Tested by:	pho
2009-12-12 21:31:07 +00:00
trasz
3173e1cb39 Add missing parameter description. 2009-12-02 18:11:14 +00:00
bz
3595d5cfed Unbreak user space after if_timer/if_watchdog removal in r199975.
Tested by:	glebius
2009-12-01 14:56:00 +00:00
ru
0bbb7d3211 Back in 2003, get_cyclecount() was changed to use binuptime() instead
of nanotime().  Reflect this change in a manpage.

Reviewed by:	phk, markm
2009-10-29 09:45:05 +00:00
emaste
7e19eab5d0 Add link for callout_schedule(9). 2009-10-27 14:37:25 +00:00
brueffer
4fa5145d52 Sort SEE ALSO. 2009-10-16 12:32:07 +00:00
jhb
45688ed39d Add a facility for associating optional descriptions with active interrupt
handlers.  This is primarily intended as a way to allow devices that use
multiple interrupts (e.g. MSI) to meaningfully distinguish the various
interrupt handlers.
- Add a new BUS_DESCRIBE_INTR() method to the bus interface to associate
  a description with an active interrupt handler setup by BUS_SETUP_INTR.
  It has a default method (bus_generic_describe_intr()) which simply passes
  the request up to the parent device.
- Add a bus_describe_intr() wrapper around BUS_DESCRIBE_INTR() that supports
  printf(9) style formatting using var args.
- Reserve MAXCOMLEN bytes in the intr_handler structure to hold the name of
  an interrupt handler and copy the name passed to intr_event_add_handler()
  into that buffer instead of just saving the pointer to the name.
- Add a new intr_event_describe_handler() which appends a description string
  to an interrupt handler's name.
- Implement support for interrupt descriptions on amd64 and i386 by having
  the nexus(4) driver supply a custom bus_describe_intr method that invokes
  a new intr_describe() MD routine which in turn looks up the associated
  interrupt event and invokes intr_event_describe_handler().

Requested by:	many
Reviewed by:	scottl
MFC after:	2 weeks
2009-10-15 14:54:35 +00:00
jhb
43b02493d8 Oops, add a return values section to note that these routines return an error
on failure or zero on success.
2009-10-14 16:00:20 +00:00
jhb
8f8a23ab53 Add a manual page for BUS_BIND_INTR() and bus_bind_intr().
MFC after:	1 week
2009-10-14 15:58:59 +00:00
trasz
843e93056a Make fetch(9) and store(9) manual pages closer to reality. 2009-10-05 15:16:28 +00:00