xref: /onnv-gate/usr/src/cmd/cmd-inet/usr.lib/wpad/eloop.h (revision 6860:dcb7dcfde54c)
14126Szf162725 /*
2*6860Sdanmcd  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
34126Szf162725  * Use is subject to license terms.
44126Szf162725  */
54126Szf162725 
64126Szf162725 /*
74126Szf162725  * Copyright (c) 2003-2004, Jouni Malinen <jkmaline@cc.hut.fi>
84126Szf162725  * Sun elects to license this software under the BSD license.
94126Szf162725  * See README for more details.
104126Szf162725  */
114126Szf162725 #ifndef __ELOOP_H
124126Szf162725 #define	__ELOOP_H
134126Szf162725 
144126Szf162725 #pragma ident	"%Z%%M%	%I%	%E% SMI"
154126Szf162725 
164126Szf162725 #ifdef	__cplusplus
174126Szf162725 extern "C" {
184126Szf162725 #endif
194126Szf162725 
204126Szf162725 /* Magic number for eloop_cancel_timeout() */
214126Szf162725 #define	ELOOP_ALL_CTX		(void *) -1
224126Szf162725 #define	MAX_POLLFDS		32
234126Szf162725 
244126Szf162725 struct eloop_sock {
254126Szf162725 	int sock;
264126Szf162725 	void *eloop_data;
274126Szf162725 	void *user_data;
284126Szf162725 	void (*handler)(int, void *, void *);
294126Szf162725 };
304126Szf162725 
314126Szf162725 struct eloop_timeout {
324126Szf162725 	struct timeval time;
334126Szf162725 	void *eloop_data;
344126Szf162725 	void *user_data;
354126Szf162725 	void (*handler)(void *, void *);
364126Szf162725 	struct eloop_timeout *next;
374126Szf162725 };
384126Szf162725 
394126Szf162725 struct eloop_signal {
404126Szf162725 	int sig;
414126Szf162725 	void *user_data;
424126Szf162725 	void (*handler)(int, void *, void *);
434126Szf162725 	int signaled;
444126Szf162725 };
454126Szf162725 
464126Szf162725 struct eloop_data {
474126Szf162725 	void *user_data;
484126Szf162725 
494126Szf162725 	int max_sock, reader_count;
504126Szf162725 	struct eloop_sock *readers;
514126Szf162725 
524126Szf162725 	struct eloop_timeout *timeout;
534126Szf162725 
544126Szf162725 	int signal_count;
554126Szf162725 	struct eloop_signal *signals;
564126Szf162725 	int signaled;
574126Szf162725 
584126Szf162725 	int terminate;
594126Szf162725 };
604126Szf162725 
614126Szf162725 void eloop_init(void *);
624126Szf162725 
634126Szf162725 int eloop_register_read_sock(int,
644126Szf162725 	void (*handler)(int, void *, void *), void *, void *);
654126Szf162725 
664126Szf162725 void eloop_unregister_read_sock(int);
674126Szf162725 
684126Szf162725 int eloop_register_timeout(unsigned int, unsigned int,
694126Szf162725 	void (*handler)(void *, void *), void *, void *);
704126Szf162725 
714126Szf162725 void eloop_cancel_timeout(void (*handler)(void *, void *), void *, void *);
724126Szf162725 int eloop_register_signal(int, void (*handler)(int, void *, void *), void *);
734126Szf162725 
744126Szf162725 void eloop_run(void);
754126Szf162725 void eloop_terminate(void);
764126Szf162725 void eloop_destroy(void);
774126Szf162725 
784126Szf162725 #ifdef __cplusplus
794126Szf162725 }
804126Szf162725 #endif
814126Szf162725 
824126Szf162725 #endif /* __ELOOP_H */
83