2288 Commits

Author SHA1 Message Date
Gleb Smirnoff
1b746e62ae Add manual page for vmem(9). Obtained from NetBSD, modified to match
our implementation.

Obtained from:	NetBSD
2013-07-12 14:25:58 +00:00
Joel Dahl
dc67be5395 mdoc: remove superfluous paragraph macros. 2013-07-08 05:58:09 +00:00
Mark Johnston
98491bfaa4 Add a man page for the SDT_* macros, which can be used to define new static
DTrace probes and providers in kernel code.

MFC after:	1 week
2013-07-06 20:31:22 +00:00
Benjamin Kaduk
10038699fb Grammar tweaks for locking.9
Reviewed by:	jhb
Approved by:	hrs (mentor)
2013-06-30 19:33:07 +00:00
Joel Dahl
a9ca77e055 mdoc: remove EOL whitespace. 2013-06-29 16:05:44 +00:00
John Baldwin
ca6829ab99 Make a pass over this page to correct and clarify a few things as well as
some general word-smithing.
- Don't claim that adaptive mutexes have a timeout (they don't).
- Don't treat pool mutexes as a separate primitive in a few places.
- Describe sleepable read-mostly locks as a separate lock type and add
  them to the various tables.
- Don't claim that sx locks are less efficient.  That hasn't been true in
  a few years now.
- Describe lockmanager locks next to sx locks since they are very similar
  in terms of rules, etc., and so that all the lock primitives are
  grouped together before the non-lock primitives.
- Similarly, move the section on Giant after the description of all the
  non-lock primitives to preserve grouping.
- Condition variables work on several types of locks, not just mutexes.
- Add a bit of language to compare/contrast condition variables with
  sleep/wakeup.
- Add a note about why pause(9) is unique.
- Add some language to define bounded vs unbounded sleeps and explain
  why they are treated separately (bounded sleeps only need CPU time
  to make forward progress).
- Don't state that using mtx_sleep() is a bad idea.  It is in fact rather
  necessary.
- Rework the interaction table a bit.  First, it did not include really
  include sleepable rmlocks and it left out lockmgr entirely.  To get
  things to fit, combine similar lock types into the same column / row,
  and explicitly state what "sleep" means.  The notes about recursion
  and lock order were also a bit banal (lock order is always important,
  not just in the few places annotated here), so remove them.  In
  particular, the lock order note would need to be on just about every
  cell.  If we want to document recursion I think a better approach
  would be a separate table summarizing the recursion rules for each
  lock as having too many notes clutters the table.
- Tweak the tables to use less indentation so everything still fits with
  the added columns.
- Correct a few cells in the context mode table.
- Use mdoc markup instead of explicit markup in a few places.

Requested by:	julian
MFC after:	2 weeks
2013-06-28 16:33:45 +00:00
John Baldwin
cd32bd7ad1 Several improvements to rmlock(9). Many of these are based on patches
provided by Isilon.
- Add an rm_assert() supporting various lock assertions similar to other
  locking primitives.  Because rmlocks track readers the assertions are
  always fully accurate unlike rw_assert() and sx_assert().
- Flesh out the lock class methods for rmlocks to support sleeping via
  condvars and rm_sleep() (but only while holding write locks), rmlock
  details in 'show lock' in DDB, and the lc_owner method used by
  dtrace.
- Add an internal destroyed cookie so that API functions can assert
  that an rmlock is not destroyed.
- Make use of rm_assert() to add various assertions to the API (e.g.
  to assert locks are held when an unlock routine is called).
- Give RM_SLEEPABLE locks their own lock class and always use the
  rmlock's own lock_object with WITNESS.
- Use THREAD_NO_SLEEPING() / THREAD_SLEEPING_OK() to disallow sleeping
  while holding a read lock on an rmlock.

Submitted by:	andre
Obtained from:	EMC/Isilon
2013-06-25 18:44:15 +00:00
Lawrence Stewart
036beed93a Non-virtualised hhook points are supported as of r251732.
MFC after:	1 week
X-MFC with:	251732
2013-06-21 03:37:35 +00:00
John Baldwin
a2feb19b26 Document RA_RECURSED and RA_NOTRECURSED.
MFC after:	3 days
2013-06-20 17:26:25 +00:00
Xin LI
40670f19e2 Remove vfs_mount(9), it have been died since 2004.
Noticed by:	git via alfred
MFC after:	2 weeks
2013-06-17 03:32:27 +00:00
Mark Johnston
563d463961 The functions are called pci_{msi,msix}_count(), not pci_count_{msi,msix}().
MFC after:	3 days
2013-06-14 01:12:59 +00:00
Sergey Kandaurov
8830b71de2 Update locking scheme, mostly transition from sched_lock. 2013-06-08 18:16:41 +00:00
Ed Maste
5aa42cabe0 Remove reference to removed !MPSAFE filesystem support 2013-05-22 16:33:28 +00:00
Gleb Smirnoff
a63fedfda7 Document constantness of dst argument to if_output.
Submitted by:	pluknet
2013-04-26 13:18:07 +00:00
Gleb Smirnoff
2d875db321 On those machines that use critical(9) for counter(9) we need to
include systm.h.
2013-04-26 13:02:11 +00:00
Edward Tomasz Napierala
5c6aba2c44 Make DELAY(9) reference pause(9). 2013-04-20 12:36:53 +00:00
Edward Tomasz Napierala
8818042ff2 Fix usage for soreceive(9) - uio must always be non-NULL.
MFC after:	1 week
2013-04-12 16:36:18 +00:00
Mikolaj Golub
f02db7b4e5 Document sbuf_start_section() and sbuf_end_section() functions.
MFC after:	1 month
2013-04-11 19:51:53 +00:00
Joel Dahl
b1edef175b Remove contractions. 2013-04-11 18:46:41 +00:00
Gleb Smirnoff
4e76af6a41 Merge from projects/counters: counter(9).
Introduce counter(9) API, that implements fast and raceless counters,
provided (but not limited to) for gathering of statistical data.

See http://lists.freebsd.org/pipermail/freebsd-arch/2013-April/014204.html
for more details.

In collaboration with:	kib
Reviewed by:		luigi
Tested by:		ae, ray
Sponsored by:		Nginx, Inc.
2013-04-08 19:40:53 +00:00
Gleb Smirnoff
ad97af7ebd Merge from projects/counters: UMA_ZONE_PCPU zones.
These zones have slab size == sizeof(struct pcpu), but request from VM
enough pages to fit (uk_slabsize * mp_ncpus). An item allocated from such
zone would have a separate twin for each CPU in the system, and these twins
are at a distance of sizeof(struct pcpu) from each other. This magic value
of distance would allow us to make some optimizations later.

  To address private item from a CPU simple arithmetics should be used:

  item = (type *)((char *)base + sizeof(struct pcpu) * curcpu)

  These arithmetics are available as zpcpu_get() macro in pcpu.h.

  To introduce non-page size slabs a new field had been added to uma_keg
uk_slabsize. This shifted some frequently used fields of uma_keg to the
fourth cache line on amd64. To mitigate this pessimization, uma_keg fields
were a bit rearranged and least frequently used uk_name and uk_link moved
down to the fourth cache line. All other fields, that are dereferenced
frequently fit into first three cache lines.

Sponsored by:	Nginx, Inc.
2013-04-08 19:10:45 +00:00
Mikolaj Golub
b397b9b79a Fix synopsis for sbuf_len.
MFC after:	3 days
2013-04-07 17:54:38 +00:00
Will Andrews
fdbc71742b Extend taskqueue(9) to enable per-taskqueue callbacks.
The scope of these callbacks is primarily to support actions that affect the
taskqueue's thread environments.  They are entirely optional, and
consequently are introduced as a new API: taskqueue_set_callback().

This interface allows the caller to specify that a taskqueue requires a
callback and optional context pointer for a given callback type.

The callback types included in this commit can be used to register a
constructor and destructor for thread-local storage using osd(9).  This
allows a particular taskqueue to define that its threads require a specific
type of TLS, without the need for a specially-orchestrated task-based
mechanism for startup and shutdown in order to accomplish it.

Two callback types are supported at this point:

- TASKQUEUE_CALLBACK_TYPE_INIT, called by every thread when it starts, prior
  to processing any tasks.
- TASKQUEUE_CALLBACK_TYPE_SHUTDOWN, called by every thread when it exits,
  after it has processed its last task but before the taskqueue is
  reclaimed.

While I'm here:

- Add two new macros, TQ_ASSERT_LOCKED and TQ_ASSERT_UNLOCKED, and use them
  in appropriate locations.
- Fix taskqueue.9 to mention taskqueue_start_threads(), which is a required
  interface for all consumers of taskqueue(9).

Reviewed by:	kib (all), eadler (taskqueue.9), brd (taskqueue.9)
Approved by:	ken (mentor)
Sponsored by:	Spectra Logic
MFC after:	1 month
2013-03-23 15:11:53 +00:00
Gleb Smirnoff
b7e2b86cec Document some flags to the uma_zcreate(). Not all flags are documented,
only those that at least are used in the kernel, or that definitely
work.
2013-03-21 16:19:46 +00:00
Gleb Smirnoff
07f490ac97 Document uma_find_refcnt(). 2013-03-21 16:04:34 +00:00
Davide Italiano
bf1fc2c2e1 MFcalloutng:
Dcoument the new functions added to condvar(9), sleep(9), sleepqueue(9)
KPIs. Also document recent changes in timeout(9) and eventtimers(4).
2013-03-04 19:10:39 +00:00
Alexander Motin
fdc5dd2d2f MFcalloutng:
Switch eventtimers(9) from using struct bintime to sbintime_t.
Even before this not a single driver really supported full dynamic range of
struct bintime even in theory, not speaking about practical inexpediency.
This change legitimates the status quo and cleans up the code.
2013-02-28 13:46:03 +00:00
Sergey Kandaurov
5e0fb0052b Document VFCF_SBDRY.
Reviewed by:	jhb
X-MFC with:	r247116
2013-02-21 22:21:45 +00:00
Gleb Smirnoff
3a5c97db68 Fix my email. 2013-02-13 07:32:09 +00:00
Sergey Kandaurov
98744c5a84 Cross-reference vfs_unbusy(9).
MFC after:	1 week
2013-02-11 10:14:12 +00:00
Alfred Perlstein
a99b51055f add semicolon to end of CALLOUT_HANDLE_INITIALIZER example. 2013-02-08 20:13:28 +00:00
Sergey Kandaurov
8ffbf27d2e Technical corrections and improvements for the previous change.
Submitted by:	bde
2013-01-28 07:04:52 +00:00
Sergey Kandaurov
6cd3574c06 Update and clarify comments regarding VFS op table initialization
in the man page and its header counterpart.

Submitted by:	Christoph Mallon <christoph.mallon@gmx.de> (initial version)
Reviewed and further improved by:	bde (previous version)
All bugs are:	mine
2013-01-24 23:11:51 +00:00
Sergey Kandaurov
dbfee063ce Use C99 sparse initialization for struct vfsops in pseudocode.
Where here, use conventional fsname.
2013-01-21 20:15:35 +00:00
Sergey Kandaurov
e86fef2a0b The Giant lock is no longer used in the vm_map(9) part of the VM.
While here, document that the process lock is acquired in vm_map_stack, too.

MFC after:	1 week
2013-01-10 22:36:30 +00:00
Benjamin Kaduk
5e9723e271 Fix some minor inaccuracies introduced in r243251.
Also correct the comment in kern_synch.c which was the source of the
problematic text.

Reviewed by:	kib (previous version)
Approved by:	hrs (mentor)
2013-01-05 00:23:26 +00:00
Andriy Gapon
c858f5cebd lock.9: fix incorrect descriptions of LK_SHARED and LK_DOWNGRADE behavior
Reviewed by:	attilio
MFC after:	5 days
X-MFC after:	r243900
2012-12-23 12:56:04 +00:00
Jaakko Heinonen
b1e1f725e7 Reject spaces and double quotation marks in device names. devctl(4)
and devd(8) can't handle names with such characters properly.

PR:		bin/144736, kern/161912
Discussed with:	imp, kib, pjd
2012-12-22 13:33:28 +00:00
Pawel Jakub Dawidek
2f891cd504 Implemented uma_zone_set_warning(9) function that sets a warning, which
will be printed once the given zone becomes full and cannot allocate an
item. The warning will not be printed more often than every five minutes.

All UMA warnings can be globally turned off by setting sysctl/tunable
vm.zone_warnings to 0.

Discussed on:	arch
Obtained from:	WHEEL Systems
MFC after:	2 weeks
2012-12-07 22:27:13 +00:00
Kevin Lo
aef49b2b1a Document pffinddomain().
Reviewed by:	glebius
2012-12-07 02:29:32 +00:00
Konstantin Belousov
c1e231bcbb Fix typo.
Submitted by:	bjk
MFC after:	3 days
2012-12-04 14:07:17 +00:00
Konstantin Belousov
471af3a8df Document the interpretation of the negative value of ticks for
taskqueue_enqueue_timeout(9).

MFC after:	3 days
2012-12-04 00:32:12 +00:00
Benjamin Kaduk
c33ae5331f Improve grammar.
Approved by:	hrs (mentor)
2012-11-18 22:52:17 +00:00
Joel Dahl
788c8ebcb5 Remove trailing whitespace. 2012-11-16 11:56:53 +00:00
Alan Cox
96509a1fd9 M_USE_RESERVE is no longer deprecated. It is once again supported.
Reviewed by:	kib
2012-11-16 06:40:40 +00:00
Andre Oppermann
327210de43 Remove description of deprecated IP fragment checksum support.
Since SMPng it wasn't really supported anymore and if it worked
then only by chance.  Only very few drivers ever supported it.

Discussed with:	yongari
MFC after:	2 weeks
2012-11-13 20:52:17 +00:00
Sergey Kandaurov
030c03b513 - Lowercase a cross reference to make.
- Sort SEE ALSO cross references.

MFC after:	3 days
2012-11-13 20:07:34 +00:00
Sergey Kandaurov
eb2c1f87f8 Avoid an ambiguous reference to mtx_lock(9).
MFC after:	3 days
2012-11-13 19:21:51 +00:00
Sergey Kandaurov
fe6ba75294 Correct rmlock(9) xref and add a missing comma. 2012-11-13 19:03:13 +00:00
Kevin Lo
0191c147a5 Sync with domain and protosw data structures.
Reviewed by:	glebius
2012-11-05 09:45:37 +00:00