mOS API description
mtcp_epoll.h
Go to the documentation of this file.
1 #ifndef __MTCP_EPOLL_H_
2 #define __MTCP_EPOLL_H_
3 
4 #include "mtcp_api.h"
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
12 {
16 };
17 
20 {
21  /* mtcp-defined epoll events */
22  MOS_EPOLLNONE = (0x1<<0),
23  MOS_EPOLLIN = (0x1<<1),
24  MOS_EPOLLPRI = (0x1<<2),
25  MOS_EPOLLOUT = (0x1<<3),
26  MOS_EPOLLRDNORM = (0x1<<4),
27  MOS_EPOLLRDBAND = (0x1<<5),
28  MOS_EPOLLWRNORM = (0x1<<6),
29  MOS_EPOLLWRBAND = (0x1<<7),
30  MOS_EPOLLMSG = (0x1<<8),
31  MOS_EPOLLERR = (0x1<<9),
32  MOS_EPOLLHUP = (0x1<<10),
33  MOS_EPOLLRDHUP = (0x1<<11),
34 
35  /* mtcp-defined epoll events */
36  MOS_EPOLLONESHOT = (0x1 << 30),
37  MOS_EPOLLET = (0x1 << 31)
38 };
39 
43 {
44  /* mtcp action */
45  MOS_ACT_SEND_DATA = (0x01<<1),
46  MOS_ACT_SEND_ACK_NOW = (0x01<<2),
47  MOS_ACT_SEND_ACK_AGG = (0x01<<3),
48  MOS_ACT_SEND_CONTROL = (0x01<<4),
49  MOS_ACT_SEND_RST = (0x01<<5),
50  MOS_ACT_DESTROY = (0x01<<6),
51  /* only used by monitoring socket */
52  MOS_ACT_READ_DATA = (0x01<<7),
54 };
55 
57 typedef union mtcp_epoll_data
58 {
59  void *ptr;
60  int sock;
61  uint32_t u32;
62  uint64_t u64;
64 
67 {
68  uint64_t events;
70 };
71 
79 int
80 mtcp_epoll_create(mctx_t mctx, int size);
81 
93 int
94 mtcp_epoll_ctl(mctx_t mctx, int epid,
95  int op, int sock, struct mtcp_epoll_event *event);
96 
107 int
108 mtcp_epoll_wait(mctx_t mctx, int epid,
109  struct mtcp_epoll_event *events, int maxevents, int timeout);
110 
115 char *
116 EventToString(uint32_t event);
117 
118 #ifdef __cplusplus
119 };
120 #endif
121 
122 #endif /* __MTCP_EPOLL_H_ */
uint64_t u64
Definition: mtcp_epoll.h:62
epoll data structure
Definition: mtcp_epoll.h:57
int mtcp_epoll_wait(mctx_t mctx, int epid, struct mtcp_epoll_event *events, int maxevents, int timeout)
Wait for events.
Definition: mtcp_epoll.h:14
Definition: mtcp_epoll.h:46
Definition: mtcp_epoll.h:53
void * ptr
Definition: mtcp_epoll.h:59
Definition: mtcp_epoll.h:13
Definition: mtcp_epoll.h:22
Definition: mtcp_epoll.h:31
epoll data structure
Definition: mtcp_epoll.h:66
mtcp_epoll_data_t data
Definition: mtcp_epoll.h:69
Definition: mtcp_epoll.h:50
Definition: mtcp_epoll.h:52
uint32_t u32
Definition: mtcp_epoll.h:61
int mtcp_epoll_ctl(mctx_t mctx, int epid, int op, int sock, struct mtcp_epoll_event *event)
Control epoll.
Definition: mtcp_epoll.h:45
Definition: mtcp_epoll.h:25
Definition: mtcp_epoll.h:47
mtcp_action
Control messages from state update module to react module XXX: Is this only for internal use...
Definition: mtcp_epoll.h:42
Definition: mtcp_epoll.h:49
Definition: mtcp_epoll.h:30
Definition: mtcp_epoll.h:36
Definition: mtcp_epoll.h:37
char * EventToString(uint32_t event)
Convert built-in event ID to string.
Definition: mtcp_epoll.h:48
Definition: mtcp_epoll.h:23
mtcp_epoll_op
mtcp_epoll_ctl() operations
Definition: mtcp_epoll.h:11
int mtcp_epoll_create(mctx_t mctx, int size)
Create new epoll descriptor.
Definition: mtcp_epoll.h:27
Definition: mtcp_epoll.h:28
Definition: mtcp_epoll.h:15
uint64_t events
Definition: mtcp_epoll.h:68
epoll_event_type
Event types for mtcp epoll.
Definition: mtcp_epoll.h:19
mTCP context
Definition: mtcp_api.h:23
Definition: mtcp_epoll.h:26
Definition: mtcp_epoll.h:29
Definition: mtcp_epoll.h:33
Definition: mtcp_epoll.h:24
Definition: mtcp_epoll.h:32
int sock
Definition: mtcp_epoll.h:60
union mtcp_epoll_data mtcp_epoll_data_t
epoll data structure