mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-06 13:09:50 +00:00
Document config_intrhook.
MFC After: 250 millifortnights
This commit is contained in:
parent
7d9079197c
commit
fa81ece897
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=162638
@ -38,6 +38,7 @@ MAN= accept_filter.9 \
|
||||
byteorder.9 \
|
||||
cd.9 \
|
||||
condvar.9 \
|
||||
config_intrhook.9 \
|
||||
contigmalloc.9 \
|
||||
copy.9 \
|
||||
critical_enter.9 \
|
||||
@ -498,6 +499,8 @@ MLINKS+=condvar.9 cv_broadcast.9 \
|
||||
condvar.9 cv_wait.9 \
|
||||
condvar.9 cv_wait_sig.9 \
|
||||
condvar.9 cv_wmesg.9
|
||||
MLINKS+=config_intrhook.9 config_intrhook_disestablish.9 \
|
||||
config_intrhook.9 config_intrhook_establish.9
|
||||
MLINKS+=contigmalloc.9 contigfree.9
|
||||
MLINKS+=copy.9 copyin.9 \
|
||||
copy.9 copyinstr.9 \
|
||||
|
102
share/man/man9/config_intrhook.9
Normal file
102
share/man/man9/config_intrhook.9
Normal file
@ -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 .
|
Loading…
Reference in New Issue
Block a user