blob: c32bde663b2c5f418fb3902e90b4436861910f07 [file] [log] [blame]
/*
* Copyright (c) 2014 The Native Client Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef IRT_POLL_H
#define IRT_POLL_H
#include <stdarg.h>
#include <stddef.h>
#include <sys/types.h>
#if defined(__cplusplus)
extern "C" {
#endif
struct NaClPollFD {
int fd;
short events;
short revents;
};
struct NaClFDSet {
unsigned long fd_bits;
};
typedef union NaClEpollData {
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} NaClEpollData_t;
struct NaClEpollEvent {
uint32_t events; /* Epoll events */
NaClEpollData_t data; /* User data variable */
};
/*
* The "irt-dev-poll" provides socket functionality for polling functions
* such as poll, select, epoll_XXX.
*/
#define NACL_IRT_DEV_POLL_v0_1 "nacl-irt-dev-poll-0.1"
struct nacl_irt_dev_poll {
int (*poll)(struct NaClPollFD* fds, size_t nfds, int timeout, int* cnt);
int (*select)(size_t nfds, struct NaClFDSet* readfds,
struct NaClFDSet* writefds, struct NaClFDSet* exceptfds,
struct timeval* timeout);
int (*epoll_create)(int size, int* newfd);
int (*epoll_ctl)(int epfd, int op, int fd, struct epoll_event* event);
int (*epoll_wait)(int epfd, struct epoll_event* events, int maxevents,
int timeout);
};
#if defined(__cplusplus)
}
#endif
#endif /* IRT_POLL_H */