add support for DISPATCH_PRI (EPOLLPRI)
This commit is contained in:
parent
56752aceac
commit
4cfe004801
2 changed files with 11 additions and 9 deletions
19
dispatch.c
19
dispatch.c
|
@ -161,6 +161,9 @@ dispatch_set(void *handle, int flags)
|
|||
{
|
||||
struct epoll_entry *e = handle;
|
||||
|
||||
if(flags & DISPATCH_PRI)
|
||||
e->event.events |= EPOLLPRI;
|
||||
|
||||
if(flags & DISPATCH_READ)
|
||||
e->event.events |= EPOLLIN;
|
||||
|
||||
|
@ -176,6 +179,9 @@ dispatch_clr(void *handle, int flags)
|
|||
{
|
||||
struct epoll_entry *e = handle;
|
||||
|
||||
if(flags & DISPATCH_PRI)
|
||||
e->event.events &= ~EPOLLPRI;
|
||||
|
||||
if(flags & DISPATCH_READ)
|
||||
e->event.events &= ~EPOLLIN;
|
||||
|
||||
|
@ -238,16 +244,11 @@ dispatcher(void)
|
|||
if(e->callback == NULL)
|
||||
continue; /* poll entry has been free'd during loop */
|
||||
|
||||
e->callback(
|
||||
((events[i].events & (EPOLLERR | EPOLLHUP)) ?
|
||||
e->callback(((events[i].events & (EPOLLERR | EPOLLHUP)) ?
|
||||
DISPATCH_ERR : 0 ) |
|
||||
|
||||
((events[i].events & EPOLLIN) ?
|
||||
DISPATCH_READ : 0 ) |
|
||||
|
||||
((events[i].events & EPOLLOUT) ?
|
||||
DISPATCH_WRITE : 0 ),
|
||||
|
||||
((events[i].events & EPOLLIN) ? DISPATCH_READ : 0 ) |
|
||||
((events[i].events & EPOLLOUT) ? DISPATCH_WRITE : 0 ) |
|
||||
((events[i].events & EPOLLPRI) ? DISPATCH_PRI : 0 ),
|
||||
e->opaque, e->fd);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#define DISPATCH_READ 0x1
|
||||
#define DISPATCH_WRITE 0x2
|
||||
#define DISPATCH_ERR 0x4
|
||||
#define DISPATCH_PRI 0x8
|
||||
|
||||
int dispatch_init(void);
|
||||
void *dispatch_addfd(int fd,
|
||||
|
|
Loading…
Add table
Reference in a new issue