HOOK_ESTABLISH(9) | Kernel Developer's Manual | HOOK_ESTABLISH(9)

# NAME

`hook_establish`, `hook_disestablish` — add or remove a hook from a specified list

# SYNOPSIS

`#include <sys/types.h>`
`#include <sys/systm.h>`

void *
`hook_establish`(struct hook_desc_head *head, int tail, void (*fn)(void *), void *arg);

void
`hook_disestablish`(struct hook_desc_head *head, void *cookie);

# DESCRIPTION

The `hook_establish`() function adds fn to the list of hooks invoked by dohooks(9). If tail is non-zero, the hook is added to the tail of the list denoted by the TAILQ_HEAD pointer head, otherwise to the front. The dohooks(9) function will at its invocation call each hook from the front of this list. When invoked, the hook function fn will be passed arg as its only argument.

The `hook_disestablish`() function removes the hook described by the opaque pointer cookie from the list of hooks denoted by the TAILQ_HEAD pointer head. If cookie is invalid, the result of `hook_disestablish`() is undefined.

The startup and mountroot systems use this API for their implementation.

# RETURN VALUES

If successful, `hook_establish`() returns an opaque pointer describing the newly established hook. Otherwise, it returns `NULL`.

# SEE ALSO

dohooks(9), dostartuphooks(9), startuphook_establish(9)

December 12, 2015 | Debian