summaryrefslogtreecommitdiff
path: root/epoll.h
blob: e16f7ea9d6746aeaee53f3257b96ada4f5f4d3be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef _EPOLL_H_
#define _EPOLL_H_

#include <glib.h>

typedef struct EPoll EPoll;

typedef enum
{
    EPOLL_READ		= 1 << 0,
    EPOLL_WRITE		= 1 << 1,
    EPOLL_HANGUP	= 1 << 2,
    EPOLL_ERROR		= 1 << 3,
    EPOLL_PRIORITY	= 1 << 4,
} EPollEventType;

typedef struct
{
    EPollEventType	events;
    int			fd;
} EPollEvent;

EPoll        *epoll_new (void);
void          epoll_add_fd (EPoll     *epoll,
			    int	fd,
			    EPollEventType mask,
			    gpointer	data);
void          epoll_remove_fd (EPoll  *epoll,
			       int     fd);
gpointer      epoll_get_fd_data (EPoll *epoll,
				 int    fd);
gboolean      epoll_has_fd (EPoll *epoll,
			    int fd);
void          epoll_reenable_fd (EPoll *epoll,
				 int    fd);
gint          epoll_get_n_fds (EPoll *epoll);
EPollEvent *  epoll_wait   (EPoll      *epoll,
			    int	     *n_events,
			    int         timeout);

#endif