summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2002-05-15 23:18:07 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2002-05-15 23:18:07 +0000
commit185458f11b88168f350bbef3cc54c79e75dab746 (patch)
treefc26be7ee5562b8985ab3710b89c2a1d0d80a6f1
parent521b6d5ed6d0633e343be800c3599f0a5e72217a (diff)
Document splassert.
-rw-r--r--share/man/man9/spl.942
1 files changed, 41 insertions, 1 deletions
diff --git a/share/man/man9/spl.9 b/share/man/man9/spl.9
index dc025ac246b..d5df6563c58 100644
--- a/share/man/man9/spl.9
+++ b/share/man/man9/spl.9
@@ -1,4 +1,4 @@
-.\" $OpenBSD: spl.9,v 1.9 2002/05/15 11:51:45 art Exp $
+.\" $OpenBSD: spl.9,v 1.10 2002/05/15 23:18:06 art Exp $
.\" $NetBSD: spl.9,v 1.1 1997/03/11 06:15:05 mikel Exp $
.\"
.\" Copyright (c) 1997 Michael Long.
@@ -68,6 +68,8 @@
.Fn spl0 void
.Ft void
.Fn splx "int s"
+.Ft void
+.Fn splassert "int s"
.Sh DESCRIPTION
These functions raise and lower the system priority level.
They are used by kernel code to block interrupts with priority less
@@ -168,3 +170,41 @@ macro restores the system priority level to the one encoded in
which must be a value previously returned by one of the other
.Nm
macros.
+.Pp
+The
+.Fn splassert
+function makes that the system is running at a certain priority level.
+The argument
+.Fa s
+should be one of these constants:
+.Bl -tag -width IPL_SOFTCLOCKXX
+.It Dv IPL_CLOCK
+.It Dv IPL_VM
+.It Dv IPL_BIO
+.It Dv IPL_TTY
+.It Dv IPL_NET
+.It Dv IPL_SOFTNET
+.It Dv IPL_SOFTCLOCK
+.It Dv IPL_0
+.El
+.Pp
+The
+.Fn splassert
+function is optional and is not necessarily implemented on
+all architectures nor enabled in all kernel configurations.
+It checks the current system priority level too see if it's
+at least at the level specified in the argument
+.Fa s .
+If possible, it also checks if it hasn't been called from an
+interrupt handler with a level higher than the one requested, which
+must be an error (if some code is protected from
+.Dv IPL_SOFTNET
+interrupts, but accessed from an
+.Dv IPL_NET
+interrupt, it must be a design error in the code).
+The behavior of the
+.Fn splassert
+function is controlled by the kern.splassert
+.Xr sysctl 8 .
+Set to 0 it disables error checking, set to 1 it prints an error message
+if error is detected, any other value causes a system panic on errors.