diff options
author | imp <imp@FreeBSD.org> | 2006-09-25 20:12:13 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2006-09-25 20:12:13 +0000 |
commit | 5d28f75c8db6529a2f7afa5744a39153bb64af54 (patch) | |
tree | b55df7313fd5308f9df413beba703d52a1290cb2 /share/man/man9/config_intrhook.9 | |
parent | 68659a70ac404fb675a37380334b8b97159702d2 (diff) | |
download | FreeBSD-src-5d28f75c8db6529a2f7afa5744a39153bb64af54.zip FreeBSD-src-5d28f75c8db6529a2f7afa5744a39153bb64af54.tar.gz |
Document config_intrhook.
MFC After: 250 millifortnights
Diffstat (limited to 'share/man/man9/config_intrhook.9')
-rw-r--r-- | share/man/man9/config_intrhook.9 | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/share/man/man9/config_intrhook.9 b/share/man/man9/config_intrhook.9 new file mode 100644 index 0000000..7f2b67f --- /dev/null +++ b/share/man/man9/config_intrhook.9 @@ -0,0 +1,102 @@ +.\" +.\" Copyright (C) 2006 M. Warner Losh <imp@freebsd.org>. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice(s), this list of conditions and the following disclaimer as +.\" the first lines of this file unmodified other than the possible +.\" addition of one or more copyright notices. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice(s), this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY +.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +.\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY +.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +.\" DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd September 24, 2006 +.Dt CONFIG_INTRHOOK 9 +.Os +.Sh NAME +.Nm config_intrhook +.Nd schedules a function to be run after interrupts have been enabled, +but before root is mounted. +.Sh SYNOPSIS +.In sys/kernel.h +.Ft "int" +.Fn config_intrhook_establish "struct intr_config_hook *hook" +.Ft "void" +.Fn config_intrhook_disestablish "struct intr_config_hook *hook" +.Sh DESCRIPTION +The +.Fn config_intrhook_establish +function schedules a function to be run after interrupts have been +enabled, but before root is mounted. +If the system has already passed this point in its initialization, +the function is called immediately. +.Pp +The +.Fn config_intrhook_disestablish +function removes the entry from the hook queue. +.Pp +Before root is mounted, all the previously established hooks are +run. +The boot process is then stalled until all handlers remove their hook +from the hook queue with +.Fn config_intrhook_disestablish . +The boot process then proceeds to attempt to mount the root file +system. +Any driver that can potentially provide devices they wish to be +mounted as root must use either this hook, or probe all these devices +in the initial probe. +Since interrupts are disabled during the probe process, many drivers +need a method to probe for devices with interrupts enabled. +.Pp +The requests are made with the +.Vt "intr_config_hook" +structure. +This structure is defined as follows: +.Bd -literal +struct intr_config_hook { + TAILQ_ENTRY(intr_config_hook) ich_links;/* Private */ + void (*ich_func)(void *arg); /* function to call */ + void *ich_arg; /* Argument to call */ +}; +.Ed +.Pp +Storage for the +.Vt intr_config_hook +structure must be provided by the driver. +It must be stable from just before the hook is established until +after the hook is disestablished. +.Pp +Specifically, hooks are run at +.Fn SI_SUB_INT_CONFIG_HOOKS , +which is immeidately after the scheduler is started, +and just before the root file system device is discovered. +.Sh RETURN VALUES +Zero return values mean success. +Non-zero return values mean failure. +.Sh SEE ALSO +.Xr DEVICE_ATTACH 9 +.Sh HISTORY +These functions were introduced in +.Fx 3.0 +with the CAM subsystem, but are available for any driver to use. +.Sh AUTHORS +The functions were written by +.An Justin Gibbs Aq gibbs@freebsd.org . +This manual page was written by +.An M. Warner Losh Aq imp@freebsd.org . |