This repository has been archived by the owner on Oct 12, 2022. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Interface to the Linux epoll interface
- Loading branch information
adil
authored and
adil
committed
Sep 12, 2012
1 parent
d64555f
commit 2821660
Showing
1 changed file
with
64 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/** | ||
* D header file to interface with the Linux epoll API (http://man7.org/linux/man-pages/man7/epoll.7.html). | ||
* Available since Linux 2.6 | ||
* | ||
* Copyright: Copyright Adil Baig 2012. | ||
* License : $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | ||
* Authors : Adil Baig (github.com/adilbaig) | ||
*/ | ||
|
||
version (Linux): | ||
|
||
extern (C): | ||
@system: | ||
nothrow: | ||
|
||
enum | ||
{ | ||
EPOLL_CLOEXEC = 0x80000, | ||
EPOLL_NONBLOCK = 0x800 | ||
} | ||
|
||
enum | ||
{ | ||
EPOLLIN = 0x001, | ||
EPOLLPRI = 0x002, | ||
EPOLLOUT = 0x004, | ||
EPOLLRDNORM = 0x040, | ||
EPOLLRDBAND = 0x080, | ||
EPOLLWRNORM = 0x100, | ||
EPOLLWRBAND = 0x200, | ||
EPOLLMSG = 0x400, | ||
EPOLLERR = 0x008, | ||
EPOLLHUP = 0x010, | ||
EPOLLRDHUP = 0x2000, // since Linux 2.6.17 | ||
EPOLLONESHOT = 1u << 30, | ||
EPOLLET = 1u << 31 | ||
} | ||
|
||
/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */ | ||
enum | ||
{ | ||
EPOLL_CTL_ADD = 1, // Add a file descriptor to the interface. | ||
EPOLL_CTL_DEL = 2, // Remove a file descriptor from the interface. | ||
EPOLL_CTL_MOD = 3, // Change file descriptor epoll_event structure. | ||
} | ||
|
||
struct epoll_event | ||
{ | ||
uint events; | ||
epoll_data_t data; | ||
}; | ||
|
||
union epoll_data_t | ||
{ | ||
void *ptr; | ||
int fd; | ||
uint u32; | ||
ulong u64; | ||
}; | ||
|
||
int epoll_create (int size); | ||
int epoll_create1 (int flags); | ||
int epoll_ctl (int epfd, int op, int fd, epoll_event *event); | ||
int epoll_wait (int epfd, epoll_event *events, int maxevents, int timeout); |