2fe8fb192f
There is important information about booting non-ack images in docs/UPDATING. ack/aout-format images can't be built any more, and booting clang/ELF-format ones is a little different. Updating to the new boot monitor is recommended. Changes in this commit: . drop boot monitor -> allowing dropping ack support . facility to copy ELF boot files to /boot so that old boot monitor can still boot fairly easily, see UPDATING . no more ack-format libraries -> single-case libraries . some cleanup of OBJECT_FMT, COMPILER_TYPE, etc cases . drop several ack toolchain commands, but not all support commands (e.g. aal is gone but acksize is not yet). . a few libc files moved to netbsd libc dir . new /bin/date as minix date used code in libc/ . test compile fix . harmonize includes . /usr/lib is no longer special: without ack, /usr/lib plays no kind of special bootstrapping role any more and bootstrapping is done exclusively through packages, so releases depend even less on the state of the machine making them now. . rename nbsd_lib* to lib* . reduce mtree
206 lines
6.8 KiB
C
206 lines
6.8 KiB
C
/* $NetBSD: eventlib.h,v 1.3 2009/04/12 17:07:16 christos Exp $ */
|
|
|
|
/*
|
|
* Copyright (C) 2004, 2005, 2008 Internet Systems Consortium, Inc. ("ISC")
|
|
* Copyright (C) 1995-1999, 2001, 2003 Internet Software Consortium.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
|
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
* AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
/* eventlib.h - exported interfaces for eventlib
|
|
* vix 09sep95 [initial]
|
|
*
|
|
* Id: eventlib.h,v 1.7 2008/11/14 02:36:51 marka Exp
|
|
*/
|
|
|
|
#ifndef _EVENTLIB_H
|
|
#define _EVENTLIB_H
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/uio.h>
|
|
#include <sys/time.h>
|
|
#include <stdio.h>
|
|
|
|
#ifndef __P
|
|
# define __EVENTLIB_P_DEFINED
|
|
# ifdef __STDC__
|
|
# define __P(x) x
|
|
# else
|
|
# define __P(x) ()
|
|
# endif
|
|
#endif
|
|
|
|
/* In the absence of branded types... */
|
|
typedef struct { void *opaque; } evConnID;
|
|
typedef struct { void *opaque; } evFileID;
|
|
typedef struct { void *opaque; } evStreamID;
|
|
typedef struct { void *opaque; } evTimerID;
|
|
typedef struct { void *opaque; } evWaitID;
|
|
typedef struct { void *opaque; } evContext;
|
|
typedef struct { void *opaque; } evEvent;
|
|
|
|
#define evInitID(id) ((id)->opaque = NULL)
|
|
#define evTestID(id) ((id).opaque != NULL)
|
|
|
|
typedef void (*evConnFunc)__P((evContext, void *, int, const void *, int,
|
|
const void *, int));
|
|
typedef void (*evFileFunc)__P((evContext, void *, int, int));
|
|
typedef void (*evStreamFunc)__P((evContext, void *, int, int));
|
|
typedef void (*evTimerFunc)__P((evContext, void *,
|
|
struct timespec, struct timespec));
|
|
typedef void (*evWaitFunc)__P((evContext, void *, const void *));
|
|
|
|
typedef struct { unsigned char mask[256/8]; } evByteMask;
|
|
#define EV_BYTEMASK_BYTE(b) ((b) / 8)
|
|
#define EV_BYTEMASK_MASK(b) (1 << ((b) % 8))
|
|
#define EV_BYTEMASK_SET(bm, b) \
|
|
((bm).mask[EV_BYTEMASK_BYTE(b)] |= EV_BYTEMASK_MASK(b))
|
|
#define EV_BYTEMASK_CLR(bm, b) \
|
|
((bm).mask[EV_BYTEMASK_BYTE(b)] &= ~EV_BYTEMASK_MASK(b))
|
|
#define EV_BYTEMASK_TST(bm, b) \
|
|
((bm).mask[EV_BYTEMASK_BYTE(b)] & EV_BYTEMASK_MASK(b))
|
|
|
|
#define EV_POLL 1
|
|
#define EV_WAIT 2
|
|
#define EV_NULL 4
|
|
|
|
#define EV_READ 1
|
|
#define EV_WRITE 2
|
|
#define EV_EXCEPT 4
|
|
|
|
#define EV_WASNONBLOCKING 8 /* Internal library use. */
|
|
|
|
/* eventlib.c */
|
|
#define evCreate __evCreate
|
|
#define evSetDebug __evSetDebug
|
|
#define evDestroy __evDestroy
|
|
#define evGetNext __evGetNext
|
|
#define evDispatch __evDispatch
|
|
#define evDrop __evDrop
|
|
#define evMainLoop __evMainLoop
|
|
#define evHighestFD __evHighestFD
|
|
#define evGetOption __evGetOption
|
|
#define evSetOption __evSetOption
|
|
|
|
int evCreate __P((evContext *));
|
|
void evSetDebug __P((evContext, int, FILE *));
|
|
int evDestroy __P((evContext));
|
|
int evGetNext __P((evContext, evEvent *, int));
|
|
int evDispatch __P((evContext, evEvent));
|
|
void evDrop __P((evContext, evEvent));
|
|
int evMainLoop __P((evContext));
|
|
int evHighestFD __P((evContext));
|
|
int evGetOption __P((evContext *, const char *, int *));
|
|
int evSetOption __P((evContext *, const char *, int));
|
|
|
|
/* ev_connects.c */
|
|
#define evListen __evListen
|
|
#define evConnect __evConnect
|
|
#define evCancelConn __evCancelConn
|
|
#define evHold __evHold
|
|
#define evUnhold __evUnhold
|
|
#define evTryAccept __evTryAccept
|
|
|
|
int evListen __P((evContext, int, int, evConnFunc, void *, evConnID *));
|
|
int evConnect __P((evContext, int, const void *, int,
|
|
evConnFunc, void *, evConnID *));
|
|
int evCancelConn __P((evContext, evConnID));
|
|
int evHold __P((evContext, evConnID));
|
|
int evUnhold __P((evContext, evConnID));
|
|
int evTryAccept __P((evContext, evConnID, int *));
|
|
|
|
/* ev_files.c */
|
|
#define evSelectFD __evSelectFD
|
|
#define evDeselectFD __evDeselectFD
|
|
|
|
int evSelectFD __P((evContext, int, int, evFileFunc, void *, evFileID *));
|
|
int evDeselectFD __P((evContext, evFileID));
|
|
|
|
/* ev_streams.c */
|
|
#define evConsIovec __evConsIovec
|
|
#define evWrite __evWrite
|
|
#define evRead __evRead
|
|
#define evTimeRW __evTimeRW
|
|
#define evUntimeRW __evUntimeRW
|
|
#define evCancelRW __evCancelRW
|
|
|
|
struct iovec evConsIovec __P((void *, size_t));
|
|
int evWrite __P((evContext, int, const struct iovec *, int,
|
|
evStreamFunc func, void *, evStreamID *));
|
|
int evRead __P((evContext, int, const struct iovec *, int,
|
|
evStreamFunc func, void *, evStreamID *));
|
|
int evTimeRW __P((evContext, evStreamID, evTimerID timer));
|
|
int evUntimeRW __P((evContext, evStreamID));
|
|
int evCancelRW __P((evContext, evStreamID));
|
|
|
|
/* ev_timers.c */
|
|
#define evConsTime __evConsTime
|
|
#define evAddTime __evAddTime
|
|
#define evSubTime __evSubTime
|
|
#define evCmpTime __evCmpTime
|
|
#define evTimeSpec __evTimeSpec
|
|
#define evTimeVal __evTimeVal
|
|
|
|
#define evNowTime __evNowTime
|
|
#define evUTCTime __evUTCTime
|
|
#define evLastEventTime __evLastEventTime
|
|
#define evSetTimer __evSetTimer
|
|
#define evClearTimer __evClearTimer
|
|
#define evConfigTimer __evConfigTimer
|
|
#define evResetTimer __evResetTimer
|
|
#define evSetIdleTimer __evSetIdleTimer
|
|
#define evClearIdleTimer __evClearIdleTimer
|
|
#define evResetIdleTimer __evResetIdleTimer
|
|
#define evTouchIdleTimer __evTouchIdleTimer
|
|
|
|
struct timespec evConsTime __P((time_t sec, long nsec));
|
|
struct timespec evAddTime __P((struct timespec, struct timespec));
|
|
struct timespec evSubTime __P((struct timespec, struct timespec));
|
|
struct timespec evNowTime __P((void));
|
|
struct timespec evUTCTime __P((void));
|
|
struct timespec evLastEventTime __P((evContext));
|
|
struct timespec evTimeSpec __P((struct timeval));
|
|
struct timeval evTimeVal __P((struct timespec));
|
|
int evCmpTime __P((struct timespec, struct timespec));
|
|
int evSetTimer __P((evContext, evTimerFunc, void *, struct timespec,
|
|
struct timespec, evTimerID *));
|
|
int evClearTimer __P((evContext, evTimerID));
|
|
int evConfigTimer __P((evContext, evTimerID, const char *param,
|
|
int value));
|
|
int evResetTimer __P((evContext, evTimerID, evTimerFunc, void *,
|
|
struct timespec, struct timespec));
|
|
int evSetIdleTimer __P((evContext, evTimerFunc, void *, struct timespec,
|
|
evTimerID *));
|
|
int evClearIdleTimer __P((evContext, evTimerID));
|
|
int evResetIdleTimer __P((evContext, evTimerID, evTimerFunc, void *,
|
|
struct timespec));
|
|
int evTouchIdleTimer __P((evContext, evTimerID));
|
|
|
|
/* ev_waits.c */
|
|
#define evWaitFor __evWaitFor
|
|
#define evDo __evDo
|
|
#define evUnwait __evUnwait
|
|
#define evDefer __evDefer
|
|
|
|
int evWaitFor __P((evContext, const void *, evWaitFunc, void *, evWaitID *));
|
|
int evDo __P((evContext, const void *));
|
|
int evUnwait __P((evContext, evWaitID));
|
|
int evDefer __P((evContext, evWaitFunc, void *));
|
|
|
|
#ifdef __EVENTLIB_P_DEFINED
|
|
# undef __P
|
|
#endif
|
|
|
|
#endif /*_EVENTLIB_H*/
|
|
|
|
/*! \file */
|