Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/usr.sbin/bhyve/mevent.h
105866 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright (c) 2011 NetApp, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
20
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
29
#ifndef _MEVENT_H_
30
#define _MEVENT_H_
31
32
enum ev_type {
33
EVF_READ,
34
EVF_WRITE,
35
EVF_TIMER,
36
EVF_SIGNAL,
37
EVF_VNODE,
38
};
39
40
/* Filter flags for EVF_VNODE */
41
#define EVFF_ATTRIB 0x0001
42
43
struct mevent;
44
45
struct mevent *mevent_add(int fd, enum ev_type type,
46
void (*func)(int, enum ev_type, void *),
47
void *param);
48
struct mevent *mevent_add_flags(int fd, enum ev_type type, int fflags,
49
void (*func)(int, enum ev_type, void *),
50
void *param);
51
struct mevent *mevent_add_disabled(int fd, enum ev_type type,
52
void (*func)(int, enum ev_type, void *),
53
void *param);
54
int mevent_enable(struct mevent *evp);
55
int mevent_disable(struct mevent *evp);
56
int mevent_delete(struct mevent *evp);
57
int mevent_delete_close(struct mevent *evp);
58
int mevent_timer_update(struct mevent *evp, int msecs);
59
60
void mevent_dispatch(void);
61
62
#endif /* _MEVENT_H_ */
63
64