1.\"	$OpenBSD: startuphook_establish.9,v 1.8 2014/12/10 15:29:52 mikeb Exp $
2.\"
3.\" Copyright (c) 1995 Niklas Hallqvist.
4.\" All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. The name of the author may not be used to endorse or promote products
15.\"    derived from this software without specific prior written permission
16.\"
17.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27.\"
28.Dd $Mdocdate: December 10 2014 $
29.Dt STARTUPHOOK_ESTABLISH 9
30.Os
31.Sh NAME
32.Nm startuphook_establish ,
33.Nm startuphook_disestablish
34.Nd add or remove a startup hook
35.Sh SYNOPSIS
36.In sys/types.h
37.In sys/systm.h
38.Ft void *
39.Fn startuphook_establish "void (*fn)(void *)" "void *arg"
40.Ft void
41.Fn startuphook_disestablish "void *cookie"
42.Sh DESCRIPTION
43The
44.Fn startuphook_establish
45function adds
46.Fa fn
47to the list of hooks invoked by
48.Xr dostartuphooks 9
49at startup.
50When invoked, the hook function
51.Fa fn
52will be passed
53.Fa arg
54as its only argument.
55.Pp
56The
57.Fn startuphook_disestablish
58function removes the hook described by the opaque pointer
59.Fa cookie
60from the list of hooks to be invoked at startup.
61If
62.Fa cookie
63is invalid, the result of
64.Fn startuphook_disestablish
65is undefined.
66.Pp
67Startup hooks should be used to perform one-time activities
68that must happen immediately before the root and swap devices
69are configured, but after normal device autoconfiguration.
70.Pp
71Startup hooks are implemented via the more general
72.Xr dohooks 9
73API.
74.Sh RETURN VALUES
75If successful,
76.Fn startuphook_establish
77returns an opaque pointer describing the newly established
78startup hook.
79Otherwise, it returns
80.Dv NULL .
81.Sh SEE ALSO
82.Xr dohooks 9 ,
83.Xr dostartuphooks 9
84.Sh BUGS
85The names are clumsy, at best.
86