149b225e1SGavin Maltby /*
249b225e1SGavin Maltby  * CDDL HEADER START
349b225e1SGavin Maltby  *
449b225e1SGavin Maltby  * The contents of this file are subject to the terms of the
549b225e1SGavin Maltby  * Common Development and Distribution License (the "License").
649b225e1SGavin Maltby  * You may not use this file except in compliance with the License.
749b225e1SGavin Maltby  *
849b225e1SGavin Maltby  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
949b225e1SGavin Maltby  * or http://www.opensolaris.org/os/licensing.
1049b225e1SGavin Maltby  * See the License for the specific language governing permissions
1149b225e1SGavin Maltby  * and limitations under the License.
1249b225e1SGavin Maltby  *
1349b225e1SGavin Maltby  * When distributing Covered Code, include this CDDL HEADER in each
1449b225e1SGavin Maltby  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1549b225e1SGavin Maltby  * If applicable, add the following below this CDDL HEADER, with the
1649b225e1SGavin Maltby  * fields enclosed by brackets "[]" replaced with your own identifying
1749b225e1SGavin Maltby  * information: Portions Copyright [yyyy] [name of copyright owner]
1849b225e1SGavin Maltby  *
1949b225e1SGavin Maltby  * CDDL HEADER END
2049b225e1SGavin Maltby  */
2149b225e1SGavin Maltby 
2249b225e1SGavin Maltby /*
23*f6e214c7SGavin Maltby  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
2449b225e1SGavin Maltby  */
2549b225e1SGavin Maltby 
2649b225e1SGavin Maltby #ifndef _FMEV_IMPL_H
2749b225e1SGavin Maltby #define	_FMEV_IMPL_H
2849b225e1SGavin Maltby 
2949b225e1SGavin Maltby /*
3049b225e1SGavin Maltby  * libfmevent - private implementation
3149b225e1SGavin Maltby  *
3249b225e1SGavin Maltby  * Note: The contents of this file are private to the implementation of
3349b225e1SGavin Maltby  * libfmevent and are subject to change at any time without notice.
3449b225e1SGavin Maltby  * This file is not delivered into /usr/include.
3549b225e1SGavin Maltby  */
3649b225e1SGavin Maltby 
3749b225e1SGavin Maltby #ifdef __cplusplus
3849b225e1SGavin Maltby extern "C" {
3949b225e1SGavin Maltby #endif
4049b225e1SGavin Maltby 
4149b225e1SGavin Maltby #include <assert.h>
4249b225e1SGavin Maltby #include <errno.h>
4349b225e1SGavin Maltby #include <libuutil.h>
4449b225e1SGavin Maltby #include <libsysevent.h>
4549b225e1SGavin Maltby #include <fm/libfmevent.h>
46*f6e214c7SGavin Maltby #include <fm/libtopo.h>
47*f6e214c7SGavin Maltby 
48*f6e214c7SGavin Maltby #include "fmev_channels.h"
4949b225e1SGavin Maltby 
5049b225e1SGavin Maltby #ifdef DEBUG
5149b225e1SGavin Maltby #define	ASSERT(x) (assert(x))
5249b225e1SGavin Maltby #else
5349b225e1SGavin Maltby #define	ASSERT(x)
5449b225e1SGavin Maltby #endif
5549b225e1SGavin Maltby 
5649b225e1SGavin Maltby struct fmev_hdl_cmn {
5749b225e1SGavin Maltby 	uint32_t hc_magic;
5849b225e1SGavin Maltby 	uint32_t hc_api_vers;
5949b225e1SGavin Maltby 	void *(*hc_alloc)(size_t);
6049b225e1SGavin Maltby 	void *(*hc_zalloc)(size_t);
6149b225e1SGavin Maltby 	void (*hc_free)(void *, size_t);
6249b225e1SGavin Maltby };
6349b225e1SGavin Maltby 
64*f6e214c7SGavin Maltby #define	_FMEV_SHMAGIC	0x5368446c	/* ShDl */
65*f6e214c7SGavin Maltby 
6649b225e1SGavin Maltby struct fmev_hdl_cmn *fmev_shdl_cmn(fmev_shdl_t);
6749b225e1SGavin Maltby 
68*f6e214c7SGavin Maltby extern void *dflt_alloc(size_t);
69*f6e214c7SGavin Maltby extern void *dflt_zalloc(size_t);
70*f6e214c7SGavin Maltby extern void dflt_free(void *, size_t);
71*f6e214c7SGavin Maltby 
7249b225e1SGavin Maltby extern int fmev_api_init(struct fmev_hdl_cmn *);
7349b225e1SGavin Maltby extern int fmev_api_enter(struct fmev_hdl_cmn *, uint32_t);
7449b225e1SGavin Maltby extern void fmev_api_freetsd(void);
7549b225e1SGavin Maltby extern fmev_err_t fmev_seterr(fmev_err_t);
7649b225e1SGavin Maltby extern int fmev_shdl_valid(fmev_shdl_t);
7749b225e1SGavin Maltby extern fmev_t fmev_sysev2fmev(fmev_shdl_t, sysevent_t *sep, char **,
7849b225e1SGavin Maltby     nvlist_t **);
79*f6e214c7SGavin Maltby extern topo_hdl_t *fmev_topohdl(fmev_shdl_t);
8049b225e1SGavin Maltby 
8149b225e1SGavin Maltby #ifdef __cplusplus
8249b225e1SGavin Maltby }
8349b225e1SGavin Maltby #endif
8449b225e1SGavin Maltby 
8549b225e1SGavin Maltby #endif /* _FMEV_IMPL_H */
86