4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #include <sys/types.h>
33 #include <libnvpair.h>
39 typedef void fmd_ctl_f(nvlist_t
*);
41 typedef struct fmd_ctl_desc
{
42 const char *cde_class
; /* protocol event class */
43 uint_t cde_vers
; /* protocol event version */
44 fmd_ctl_f
*cde_func
; /* callback function */
47 typedef struct fmd_ctl
{
48 pthread_mutex_t ctl_lock
; /* lock for ctl_exec and ctl_cv */
49 pthread_cond_t ctl_cv
; /* condition variable for ctl_exec */
50 fmd_ctl_f
*ctl_func
; /* type-specific callback function */
51 nvlist_t
*ctl_nvl
; /* name-value pair list from event */
52 uint_t ctl_refs
; /* reference count for barrier */
55 extern fmd_ctl_t
*fmd_ctl_init(nvlist_t
*);
56 extern void fmd_ctl_fini(fmd_ctl_t
*);
57 extern void fmd_ctl_hold(fmd_ctl_t
*);
58 extern void fmd_ctl_rele(fmd_ctl_t
*);
64 #endif /* _FMD_CTL_H */