 2fe8fb192f
			
		
	
	
		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
		
			
				
	
	
		
			207 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			207 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 */
 |