22#ifdef HAVE_PORT_CREATE
28static int fpm_event_port_init(
int max);
29static int fpm_event_port_clean(
void);
30static int fpm_event_port_wait(
struct fpm_event_queue_s *queue,
unsigned long int timeout);
31static int fpm_event_port_add(
struct fpm_event_s *ev);
32static int fpm_event_port_remove(
struct fpm_event_s *ev);
36 .support_edge_trigger = 0,
37 .init = fpm_event_port_init,
38 .clean = fpm_event_port_clean,
39 .wait = fpm_event_port_wait,
40 .add = fpm_event_port_add,
41 .remove = fpm_event_port_remove,
44port_event_t *events =
NULL;
52#ifdef HAVE_PORT_CREATE
60#ifdef HAVE_PORT_CREATE
65static int fpm_event_port_init(
int max)
79 events = malloc(
sizeof(port_event_t) *
max);
93static int fpm_event_port_clean(
void)
112static int fpm_event_port_wait(
struct fpm_event_queue_s *queue,
unsigned long int timeout)
115 unsigned int i, nget;
119 t.tv_sec = (int)(timeout / 1000);
120 t.tv_nsec = (timeout % 1000) * 1000 * 1000;
124 events[0].portev_user = (
void *)-1;
126 ret = port_getn(pfd, events, nevents, &nget, &t);
133 }
else if (nget > 0 && events[0].portev_user == (
void *)-1) {
146 for (i = 0; i < nget; i++) {
150 if (!events[i].portev_user) {
157 fpm_event_port_add(ev);
174static int fpm_event_port_add(
struct fpm_event_s *ev)
177 if (port_associate(pfd, PORT_SOURCE_FD, ev->
fd,
POLLIN, (
void *)ev) < 0) {
188static int fpm_event_port_remove(
struct fpm_event_s *ev)
191 if (port_dissociate(pfd, PORT_SOURCE_FD, ev->
fd) < 0) {
struct fpm_globals_s fpm_globals
void fpm_event_fire(struct fpm_event_s *ev)
struct fpm_event_module_s * fpm_event_port_module(void)