11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* $NetBSD: eventlib_p.h,v 1.1.1.1 2004/05/20 19:34:32 christos Exp $ */ 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 1995-1999 by Internet Software Consortium 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Permission to use, copy, modify, and distribute this software for any 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * purpose with or without fee is hereby granted, provided that the above 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * copyright notice and this permission notice appear in all copies. 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* eventlib_p.h - private interfaces for eventlib 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * vix 09sep95 [initial] 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Id: eventlib_p.h,v 1.3.2.1.4.1 2004/03/09 08:33:43 marka Exp 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _EVENTLIB_P_H 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _EVENTLIB_P_H 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/param.h> 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/types.h> 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/socket.h> 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <netinet/in.h> 331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/un.h> 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EVENTLIB_DEBUG 1 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <errno.h> 381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <fcntl.h> 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <stdio.h> 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <stdlib.h> 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <string.h> 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <isc/heap.h> 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <isc/list.h> 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <isc/memcluster.h> 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_MASK_ALL (EV_READ | EV_WRITE | EV_EXCEPT) 491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_ERR(e) return (errno = (e), -1) 501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define OK(x) if ((x) < 0) EV_ERR(errno); else (void)NULL 511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if HAVE_MEM_GET_SET 541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NEW(p) if (((p) = memget(sizeof *(p))) != NULL) \ 551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FILL(p); \ 561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project else \ 571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project (void)NULL; 581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define OKNEW(p) if (!((p) = memget(sizeof *(p)))) { \ 591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project errno = ENOMEM; \ 601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project return (-1); \ 611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } else \ 621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FILL(p) 631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define FREE(p) memput((p), sizeof *(p)) 641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if EVENTLIB_DEBUG 661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define FILL(p) memset((p), 0xF5, sizeof *(p)) 671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else 681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define FILL(p) 691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else 721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NEW(p) p = malloc(sizeof *(p)); 741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define OKNEW(p) if (!((p) = malloc(sizeof *(p)))) { errno = ENOMEM; return (-1); } 751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define FREE(p) free(p) 761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define FILL(p) 771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evConn { 821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evConnFunc func; 831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * uap; 841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int fd; 851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int flags; 861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_CONN_LISTEN 0x0001 /* Connection is a listener. */ 871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_CONN_SELECTED 0x0002 /* evSelectFD(conn->file). */ 881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_CONN_BLOCK 0x0004 /* Listener fd was blocking. */ 891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evFileID file; 901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evConn * prev; 911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evConn * next; 921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evConn; 931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evAccept { 951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int fd; 961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project union { 971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct sockaddr sa; 981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct sockaddr_in in; 991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef NO_SOCKADDR_UN 1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct sockaddr_un un; 1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } la; 1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project socklen_t lalen; 1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project union { 1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct sockaddr sa; 1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct sockaddr_in in; 1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef NO_SOCKADDR_UN 1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct sockaddr_un un; 1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } ra; 1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project socklen_t ralen; 1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int ioErrno; 1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evConn * conn; 1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project LINK(struct evAccept) link; 1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evAccept; 1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evFile { 1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evFileFunc func; 1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * uap; 1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int fd; 1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int eventmask; 1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int preemptive; 1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evFile * prev; 1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evFile * next; 1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evFile * fdprev; 1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evFile * fdnext; 1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evFile; 1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evStream { 1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evStreamFunc func; 1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * uap; 1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evFileID file; 1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evTimerID timer; 1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int flags; 1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_STR_TIMEROK 0x0001 /* IFF timer valid. */ 1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int fd; 1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct iovec * iovOrig; 1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int iovOrigCount; 1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct iovec * iovCur; 1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int iovCurCount; 1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int ioTotal; 1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int ioDone; 1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int ioErrno; 1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evStream *prevDone, *nextDone; 1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evStream *prev, *next; 1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evStream; 1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evTimer { 1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evTimerFunc func; 1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * uap; 1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct timespec due, inter; 1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int index; 1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int mode; 1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define EV_TMR_RATE 1 1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evTimer; 1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evWait { 1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evWaitFunc func; 1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * uap; 1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const void * tag; 1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evWait * next; 1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evWait; 1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evWaitList { 1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evWait * first; 1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evWait * last; 1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evWaitList * prev; 1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct evWaitList * next; 1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evWaitList; 1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct evEvent_p { 1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project enum { Accept, File, Stream, Timer, Wait, Free, Null } type; 1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project union { 1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { evAccept *this; } accept; 1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { evFile *this; int eventmask; } file; 1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { evStream *this; } stream; 1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { evTimer *this; } timer; 1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { evWait *this; } wait; 1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { struct evEvent_p *next; } free; 1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct { const void *placeholder; } null; 1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } u; 1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evEvent_p; 1831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct { 1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Global. */ 1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const evEvent_p *cur; 1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Debugging. */ 1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int debug; 1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project FILE *output; 1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Connections. */ 1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evConn *conns; 1921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project LIST(evAccept) accepts; 1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Files. */ 1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evFile *files, *fdNext; 1951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project fd_set rdLast, rdNext; 1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project fd_set wrLast, wrNext; 1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project fd_set exLast, exNext; 1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project fd_set nonblockBefore; 1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int fdMax, fdCount, highestFD; 2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evFile *fdTable[FD_SETSIZE]; 2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef EVENTLIB_TIME_CHECKS 2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct timespec lastSelectTime; 2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int lastFdCount; 2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Streams. */ 2061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evStream *streams; 2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evStream *strDone, *strLast; 2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Timers. */ 2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct timespec lastEventTime; 2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project heap_context timers; 2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* Waits. */ 2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evWaitList *waitLists; 2131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project evWaitList waitDone; 2141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} evContext_p; 2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* eventlib.c */ 2171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define evPrintf __evPrintf 2181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid evPrintf(const evContext_p *ctx, int level, const char *fmt, ...); 2191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* ev_timers.c */ 2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define evCreateTimers __evCreateTimers 2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectheap_context evCreateTimers(const evContext_p *); 2231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define evDestroyTimers __evDestroyTimers 2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid evDestroyTimers(const evContext_p *); 2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* ev_waits.c */ 2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define evFreeWait __evFreeWait 2281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source ProjectevWait *evFreeWait(evContext_p *ctx, evWait *old); 2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* Global options */ 2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint __evOptMonoTime; 2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /*_EVENTLIB_P_H*/ 234