drm/tests: Add test for drm_atomic_helper_check_modeset()
[drm/drm-misc.git] / fs / xfs / xfs_hooks.c
bloba58d1de2d37dae58b87fb9f8bc3d9f50920b767f
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright (c) 2022-2024 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
5 */
6 #include "xfs.h"
7 #include "xfs_fs.h"
8 #include "xfs_shared.h"
9 #include "xfs_format.h"
10 #include "xfs_trans_resv.h"
11 #include "xfs_mount.h"
12 #include "xfs_ag.h"
13 #include "xfs_trace.h"
15 /* Initialize a notifier chain. */
16 void
17 xfs_hooks_init(
18 struct xfs_hooks *chain)
20 BLOCKING_INIT_NOTIFIER_HEAD(&chain->head);
23 /* Make it so a function gets called whenever we hit a certain hook point. */
24 int
25 xfs_hooks_add(
26 struct xfs_hooks *chain,
27 struct xfs_hook *hook)
29 ASSERT(hook->nb.notifier_call != NULL);
30 BUILD_BUG_ON(offsetof(struct xfs_hook, nb) != 0);
32 return blocking_notifier_chain_register(&chain->head, &hook->nb);
35 /* Remove a previously installed hook. */
36 void
37 xfs_hooks_del(
38 struct xfs_hooks *chain,
39 struct xfs_hook *hook)
41 blocking_notifier_chain_unregister(&chain->head, &hook->nb);
44 /* Call a hook. Returns the NOTIFY_* value returned by the last hook. */
45 int
46 xfs_hooks_call(
47 struct xfs_hooks *chain,
48 unsigned long val,
49 void *priv)
51 return blocking_notifier_call_chain(&chain->head, val, priv);