xref: /openbsd-src/share/man/man9/hook_establish.9 (revision b2ea75c1b17e1a9a339660e7ed45cd24946b230e)
1.\"	$OpenBSD: hook_establish.9,v 1.2 2001/07/28 00:09:24 mpech Exp $
2.\"
3.\" Copyright (c) 2001 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 July 27 2001
29.Dt HOOK_ESTABLISH 9
30.Os
31.Sh NAME
32.Nm hook_establish ,
33.Nm hook_disestablish
34.Nd add or remove a hook from a specified list of such
35.Sh SYNOPSIS
36.Fd #include <sys/systm.h>
37.Ft void *
38.Fn hook_establish "struct hook_desc_head *head" "int tail" "void (*fn)(void *)" "void *arg"
39.Ft void
40.Fn hook_disestablish "struct hook_desc_head *head" "void *cookie"
41.Sh DESCRIPTION
42The
43.Fn hook_establish
44function adds
45.Fa fn
46to the list of hooks invoked by
47.Xr dohooks 9 .
48If
49.Fa tail
50is non-zero, the hook is added to the tail of the list
51denoted by the TAILQ_HEAD pointer
52.Fa head ,
53otherwise to the front.
54The
55.Xr dohooks 9
56function will at its invocation call each hook from the front of this
57list.
58When invoked, the hook function
59.Fa fn
60will be passed
61.Fa arg
62as its only argument.
63.Pp
64The
65.Fn hook_disestablish
66function removes the hook described by the opaque pointer
67.Fa cookie
68from the list of hooks denoted by the TAILQ_HEAD pointer
69.Fa head .
70If
71.Fa cookie
72is invalid, the result of
73.Fn hook_disestablish
74is undefined.
75.Pp
76Both the startup- and shutdownhooks systems uses this API for their
77implementation.
78.Sh RETURN VALUES
79If successful,
80.Fn hook_establish
81returns an opaque pointer describing the newly established
82hook.
83Otherwise, it returns
84.Dv NULL .
85.Sh SEE ALSO
86.Xr dohooks 9 ,
87.Xr doshutdownhooks 9 ,
88.Xr dostartuphooks 9 ,
89.Xr shutdownhook_establish 9 ,
90.Xr startuphook_establish 9
91