1791 Commits

Author SHA1 Message Date
thompsa
5910fa6cfc Move programming info from usb(4) to usbdi(9) and update for the usb stack
changeover. Needs much more content still.
2009-06-24 17:01:17 +00:00
rwatson
df217187ce Add stack_print_short() and stack_print_short_ddb() interfaces to
stack(9), which generate a more compact rendition of a stack trace
via the kernel's printf.

MFC after:	1 week
2009-06-24 12:06:15 +00:00
kib
e91d5cfe69 Usermode portion of the support for swap allocation accounting:
- update for getrlimit(2) manpage;
- support for setting RLIMIT_SWAP in login class;
- addition to the limits(1) and sh and csh limit-setting builtins;
- tuning(7) documentation on the sysctls controlling overcommit.

In collaboration with:	pho
Reviewed by:	alc
Approved by:	re (kensmith)
2009-06-23 20:57:27 +00:00
brooks
e271e202d0 Document crcopysafe() and crsetgroups().
Reminded by:	julian
2009-06-19 19:16:35 +00:00
attilio
256667d4fb Introduce support for adaptive spinning in lockmgr.
Actually, as it did receive few tuning, the support is disabled by
default, but it can opt-in with the option ADAPTIVE_LOCKMGRS.
Due to the nature of lockmgrs, adaptive spinning needs to be
selectively enabled for any interested lockmgr.
The support is bi-directional, or, in other ways, it will work in both
cases if the lock is held in read or write way.  In particular, the
read path is passible of further tunning using the sysctls
debug.lockmgr.retries and debug.lockmgr.loops .  Ideally, such sysctls
should be axed or compiled out before release.

Addictionally note that adaptive spinning doesn't cope well with
LK_SLEEPFAIL.  The reason is that many (and probabilly all) consumers
of LK_SLEEPFAIL are mainly interested in knowing if the interlock was
dropped or not in order to reacquire it and re-test initial conditions.
This directly interacts with adaptive spinning because lockmgr needs
to drop the interlock while spinning in order to avoid a deadlock
(further details in the comments inside the patch).

Final note: finding someone willing to help on tuning this with
relevant workloads would be either very important and appreciated.

Tested by:	jeff, pho
Requested by:	many
2009-06-17 01:55:42 +00:00
bz
56983733aa Add an optional callback function that will be invoked when a per-CPU
queue was drained.  It will never fire for a directly dispatched packet.

You will most likely never want to use this for any ordinary netisr usage
and you will never blame netisr in case you try to use it and it does
not work as expected.

Reviewed by:	rwatson
2009-06-14 17:15:18 +00:00
bz
1ce6fee7c0 Remove a line break leaving a function return type attached to the old
function declaration bottom rather than the new function declaration
start.
2009-06-14 12:11:15 +00:00
imp
4bc21efa2c These are no longer public, so remove the man page. 2009-06-09 23:38:19 +00:00
jhb
77373ed468 Add support for multiple passes of the device tree during the boot-time
probe.  The current device order is unchanged.  This commit just adds the
infrastructure and ABI changes so that it is easier to merge later changes
into 8.x.
- Driver attachments now have an associated pass level.  Attachments are
  not allowed to probe or attach to drivers until the system-wide pass level
  is >= the attachment's pass level.  By default driver attachments use the
  "last" pass level (BUS_PASS_DEFAULT).  Driver's that wish to probe during
  an earlier pass use EARLY_DRIVER_MODULE() instead of DRIVER_MODULE() which
  accepts the pass level as an additional parameter.
- A new method BUS_NEW_PASS has been added to the bus interface.  This
  method is invoked when the system-wide pass level is changed to kick off
  a rescan of the device tree so that drivers that have just been made
  "eligible" can probe and attach.
- The bus_generic_new_pass() function provides a default implementation of
  BUS_NEW_PASS().  It first allows drivers that were just made eligible for
  this pass to identify new child devices.  Then it propogates the rescan to
  child devices that already have an attached driver by invoking their
  BUS_NEW_PASS() method.  It also reprobes devices without a driver.
- BUS_PROBE_NOMATCH() is only invoked for devices that do not have
  an attached driver after being scanned during the final pass.
- The bus_set_pass() function is used during boot to raise the pass level.
  Currently it is only called once during root_bus_configure() to raise
  the pass level to BUS_PASS_DEFAULT.  This has the effect of probing all
  devices in a single pass identical to previous behavior.

Reviewed by:	imp
Approved by:	re (kib)
2009-06-09 14:26:23 +00:00
rwatson
2b053d10b2 Try again to add beginnings of netisr(8) man page: this time add
netisr.9.
2009-06-07 21:32:01 +00:00
rwatson
0083dbe71d Add beginnings of a netisr(9) man page. 2009-06-07 21:31:06 +00:00
jhb
e45af7ed87 Add a simple API to manage scatter/gather lists of phyiscal addresses.
Each list describes a logical memory object that is backed by one or more
physical address ranges.  To minimize locking, the sglist objects
themselves are immutable once they are shared.

These objects may be used in the future to facilitate I/O requests using
physically-addressed buffers.  For the immediate future I plan to use them
to implement a new type of VM object and pager.

Reviewed by:	jeff, scottl
MFC after:	1 month
2009-06-01 20:35:39 +00:00
trasz
7be2e0fb7a Use the "flag" word consistently.
Submitted by:	Ben Kaduk <minimarmot at gmail.com>
2009-06-01 07:48:27 +00:00
trasz
0c63bcbfa4 Add VOP_ACCESSX, which can be used to query for newly added V*
permissions, such as VWRITE_ACL.  For a filsystems that don't
implement it, there is a default implementation, which works
as a wrapper around VOP_ACCESS.

Reviewed by:	rwatson@
2009-05-30 13:59:05 +00:00
rwatson
52ba259960 Make the rmlock(9) interface a bit more like the rwlock(9) interface:
- Add rm_init_flags() and accept extended options only for that variation.
- Add a flags space specifically for rm_init_flags(), rather than borrowing
  the lock_init() flag space.
- Define flag RM_RECURSE to use instead of LO_RECURSABLE.
- Define flag RM_NOWITNESS to allow an rmlock to be exempt from WITNESS
  checking; this wasn't possible previously as rm_init() always passed
  LO_WITNESS when initializing an rmlock's struct lock.
- Add RM_SYSINIT_FLAGS().
- Rename embedded mutex in rmlocks to make it more obvious what it is.
- Update consumers.
- Update man page.
2009-05-29 10:52:37 +00:00
attilio
e05714ba70 Reverse the logic for ADAPTIVE_SX option and enable it by default.
Introduce for this operation the reverse NO_ADAPTIVE_SX option.
The flag SX_ADAPTIVESPIN to be passed to sx_init_flags(9) gets suppressed
and the new flag, offering the reversed logic, SX_NOADAPTIVE is added.

Additively implements adaptive spininning for sx held in shared mode.
The spinning limit can be handled through sysctls in order to be tuned
while the code doesn't reach the release, after which time they should
be dropped probabilly.

This change has made been necessary by recent benchmarks where it does
improve concurrency of workloads in presence of high contention
(ie. ZFS).

KPI breakage is documented by __FreeBSD_version bumping, manpage and
UPDATING updates.

Requested by:	jeff, kmacy
Reviewed by:	jeff
Tested by:	pho
2009-05-29 01:49:27 +00:00
zml
e1b8ea8b53 Fix style/grammar issues in fail(9) man page.
Suggested by:       Ben Kaduk
Approved by:        dfr (mentor)
2009-05-28 15:02:52 +00:00
zml
b5e46da5a4 fail(9) support:
Add support for kernel fault injection using KFAIL_POINT_* macros and
fail_point_* infrastructure. Add example fail point in vfs_bio.c to
simulate VM buf pressure.

Approved by:        dfr (mentor)
2009-05-27 16:36:54 +00:00
trasz
f737da77ab There are things too complex to be fixed in one commit.
Fix a typo in acl(9) manual page.

Submitted by:	avg
2009-05-24 20:34:29 +00:00
tmclaugh
f8ab650a5c Update man pages after VFS_* changes in r191990.
Approved by:	brueffer, attilio
2009-05-24 18:34:54 +00:00
trasz
8bf287b0f9 Fix typo in the manual page. 2009-05-24 17:08:00 +00:00
trasz
b7ef144eae Add new constants to the acl(9) manual page. 2009-05-24 09:42:53 +00:00
jhb
57032de649 Attempt to clarify some confusing wording regarding atomic_load() and
atomic_store().
2009-05-21 13:39:46 +00:00
brueffer
f0d016550f Document sbuf_new_auto().
While here, add a missing `-' in phk's name.

MFC after:	3 days
2009-05-17 21:28:37 +00:00
marius
373616f83a Correct r190283 (partially reverting it) as on sparc64 BUS_DMA_NOCACHE
actually is only valid for bus_dmamap_load().

MFC after:	3 days
2009-05-12 20:56:34 +00:00
rwatson
56b6b68fd9 Garbage collect man page reference to IFF_NEEDSGIANT. 2009-04-18 20:09:43 +00:00
trasz
3287d737bd Remove 'IMPLEMENTATION NOTES' section from acl(9); it was just a copy/paste
from <sys/acl.h> and it would get out-of-date pretty soon.
2009-04-11 10:37:04 +00:00
rwatson
430f601d24 Remove VOP_LEASE(9) man page, as we no longer have a VOP_LEASE() in the
kernel.
2009-04-10 10:59:48 +00:00
trhodes
86b18dc38b Catch up with recent locking changes.
PR:		132546
Submitted by:	pluknet <pluknet@gmail.com>
Reviewed by:	alc
2009-04-03 23:52:47 +00:00
trasz
369dfb5670 Remove pseudocode from VOP_* manual pages. It was out of date anyway.
Reviewed by:	scottl
Approved by:	rwatson (mentor)
2009-03-30 20:56:37 +00:00
jhb
f821c33568 Add a simple manage for the refcount(9) API.
Requested by:	rwatson
2009-03-30 18:01:12 +00:00
rnoland
372b71c710 Correct the documentation to reflect the fact that BUS_DMA_NOCACHE is a
flag to bus_dmamem_alloc() rather than bus_dmamap_load();

Discussed with:	kib
MFC after:	3 days
2009-03-22 21:00:58 +00:00
marcus
92da1fbd23 Document the new default implementation of VOP_VPTOCNP(9).
Approved by:	kib
2009-03-08 19:07:44 +00:00
jamie
63f98fcc6a Extend the "vfsopt" mount options for more general use. Make struct
vfsopt and the vfs_buildopts function public, and add some new fields
to struct vfsopt (pos and seen), and new functions vfs_getopt_pos and
vfs_opterror.

Further extend the interface to allow reading options from the kernel
in addition to sending them to the kernel, with vfs_setopt and related
functions.

While this allows the "name=value" option interface to be used for more
than just FS mounts (planned use is for jails), it retains the current
"vfsopt" name and <sys/mount.h> requirement.

Approved by:	bz (mentor)
2009-03-02 23:26:30 +00:00
trasz
2322d4bae1 Mention disk_gone() in disk(9).
Approved by:	rwatson (mentor)
2009-02-22 13:38:16 +00:00
attilio
3a498bb803 Remove the assertive KA_HELD and KA_UNHELD as long as they are dangerous,
and not really helpful.
2009-02-05 15:09:04 +00:00
trhodes
e8de906c2a Add ENOMEM to the return values.
Remove invalid return values.
Remove reference to non-existent manual pages.
Remove reference to rfork (it does not discuss RFSTOPPED).
Add sys/unistd.h to the list of includes (required for RFSTOPPED).

PR:		126227
Submitted by:	Mateusz Guzik <mjguzik@gmail.com> (based on, original version)
Reviewed by:	jhb, Christoph Mallon <christoph.mallon@gmx.de>
2009-01-27 00:22:16 +00:00
brueffer
1a2c174bc9 DEBUG_REDZONE needs DDB which needs KDB.
PR:		130324
Submitted by:	Jaakko Heinonen <jh@saunalahti.fi>
MFC after:	3 days
2009-01-09 14:41:36 +00:00
brueffer
dc442f58c6 Language cleanup. 2009-01-08 21:29:40 +00:00
rwatson
b5a94963bb Remove reference to pr_ousrreq from domain(9) since it's now gone from
struct protosw.

Submitted by:	bz
MFC after:	3 weeks
2009-01-04 19:23:44 +00:00
brueffer
9063c189c0 Mdoc and language cleanup. 2009-01-03 10:37:38 +00:00
bz
291c79e84c pr_pfh has been gone from protosw since r120386 (more than 5 years ago).
MFC after:	4 weeks
2008-12-23 16:54:00 +00:00
des
ffcddec75d Boot out <sysexits.h> once and for all.
MFC after:	1 week
2008-12-17 13:01:19 +00:00
trasz
b2515a861b According to phk@, VOP_STRATEGY should never, _ever_, return
anything other than 0.  Make it so.  This fixes
"panic: VOP_STRATEGY failed bp=0xc320dd90 vp=0xc3b9f648",
encountered when writing to an orphaned filesystem.  Reason
for the panic was the following assert:
KASSERT(i == 0, ("VOP_STRATEGY failed bp=%p vp=%p", bp, bp->b_vp));
at vfs_bio:bufstrategy().

Reviewed by:	scottl, phk
Approved by:	rwatson (mentor)
Sponsored by:	FreeBSD Foundation
2008-12-16 21:13:11 +00:00
kmacy
3475c71ce8 re-add accidentally deleted line 2008-12-15 07:51:59 +00:00
qingli
ec826ad5c7 This main goals of this project are:
1. separating L2 tables (ARP, NDP) from the L3 routing tables
2. removing as much locking dependencies among these layers as
   possible to allow for some parallelism in the search operations
3. simplify the logic in the routing code,

The most notable end result is the obsolescent of the route
cloning (RTF_CLONING) concept, which translated into code reduction
in both IPv4 ARP and IPv6 NDP related modules, and size reduction in
struct rtentry{}. The change in design obsoletes the semantics of
RTF_CLONING, RTF_WASCLONE and RTF_LLINFO routing flags. The userland
applications such as "arp" and "ndp" have been modified to reflect
those changes. The output from "netstat -r" shows only the routing
entries.

Quite a few developers have contributed to this project in the
past: Glebius Smirnoff, Luigi Rizzo, Alessandro Cerri, and
Andre Oppermann. And most recently:

- Kip Macy revised the locking code completely, thus completing
  the last piece of the puzzle, Kip has also been conducting
  active functional testing
- Sam Leffler has helped me improving/refactoring the code, and
  provided valuable reviews
- Julian Elischer setup the perforce tree for me and has helped
  me maintaining that branch before the svn conversion
2008-12-15 06:10:57 +00:00
marcus
6ee3b0271a Add a man page for VOP_VPTOCNP.
Reviewed by:	arch
Approved by:	kib
2008-12-12 01:08:28 +00:00
kmacy
4014de0d1b Add entry for if_transmit and if_qflush 2008-12-11 22:51:11 +00:00
kib
0ad3ee0380 Clarify the reason to not use the volatile string as an argument to CTR
macros. Note the logging of file and line.

Reviewed by:	dchagin
MFC after:	3 days
2008-11-30 13:18:35 +00:00
rwatson
272e95193b Revert r184509: don't encourage the use of sysexits.h with err() and
errx(),, as there seems to be a general preference against this
practice.

Suggested by:	bde, des, jhb
2008-11-27 08:42:58 +00:00