Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion uloop-epoll.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ static int register_poll(struct uloop_fd *fd, unsigned int flags)
if (flags & ULOOP_EDGE_TRIGGER)
ev.events |= EPOLLET;

if (flags & ULOOP_PRIORITY)
ev.events |= EPOLLPRI;

ev.data.ptr = fd;

return epoll_ctl(poll_fd, op, fd->fd, &ev);
Expand Down Expand Up @@ -85,7 +88,7 @@ static int uloop_fetch_events(int timeout)
uloop_fd_delete(u);
}

if(!(events[n].events & (EPOLLRDHUP|EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP))) {
if(!(events[n].events & (EPOLLRDHUP|EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP|EPOLLPRI))) {
cur->fd = NULL;
continue;
}
Expand All @@ -99,6 +102,9 @@ static int uloop_fetch_events(int timeout)
if(events[n].events & EPOLLOUT)
ev |= ULOOP_WRITE;

if(events[n].events & EPOLLPRI)
ev |= ULOOP_PRIORITY;

cur->events = ev;
}

Expand Down
2 changes: 1 addition & 1 deletion uloop.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ int uloop_fd_add(struct uloop_fd *sock, unsigned int flags)
unsigned int fl;
int ret;

if (!(flags & (ULOOP_READ | ULOOP_WRITE)))
if (!(flags & (ULOOP_READ | ULOOP_WRITE | ULOOP_PRIORITY)))
return uloop_fd_delete(sock);

if (!sock->registered && !(flags & ULOOP_BLOCKING)) {
Expand Down
5 changes: 3 additions & 2 deletions uloop.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,16 @@ typedef void (*uloop_signal_handler)(struct uloop_signal *s);
#define ULOOP_EDGE_TRIGGER (1 << 2)
#define ULOOP_BLOCKING (1 << 3)

#define ULOOP_EVENT_MASK (ULOOP_READ | ULOOP_WRITE)

/* internal flags */
#define ULOOP_EVENT_BUFFERED (1 << 4)
#ifdef USE_KQUEUE
#define ULOOP_EDGE_DEFER (1 << 5)
#endif

#define ULOOP_ERROR_CB (1 << 6)
#define ULOOP_PRIORITY (1 << 7)

#define ULOOP_EVENT_MASK (ULOOP_READ | ULOOP_WRITE | ULOOP_PRIORITY)

struct uloop_fd
{
Expand Down