73 lines
2.3 KiB
C
73 lines
2.3 KiB
C
/* This file is part of the Project Athena Zephyr Notification System.
|
|
* It is one of the source files comprising zwgc, the Zephyr WindowGram
|
|
* client.
|
|
*
|
|
* Created by: Marc Horowitz <marc@athena.mit.edu>
|
|
*
|
|
* $Id$
|
|
*
|
|
* Copyright (c) 1989 by the Massachusetts Institute of Technology.
|
|
* For copying and distribution information, see the file
|
|
* "mit-copyright.h".
|
|
*/
|
|
|
|
|
|
#include <zephyr/mit-copyright.h>
|
|
|
|
#ifndef mux_MODULE
|
|
#define mux_MODULE
|
|
|
|
/*
|
|
* MAX_SOURCES - the greatest file descriptor # that can be waited on minus one
|
|
* This can not exceed FD_SETSIZE from <sys/types.h>.
|
|
*/
|
|
|
|
#define MAX_SOURCES 32
|
|
|
|
/*
|
|
* mux_end_loop_p - Setting this to true during a mux_loop causes the mux_loop
|
|
* to be exited.
|
|
*/
|
|
|
|
extern int mux_end_loop_p;
|
|
|
|
/*
|
|
* void mux_init()
|
|
* Requires: mux_init has never been called before
|
|
* Effects: Initializes the mux module. Must be called before
|
|
* any other mux call.
|
|
*/
|
|
|
|
extern void mux_init(void);
|
|
|
|
/*
|
|
* void mux_add_input_source(int descriptior; void (*handler)(); void *arg)
|
|
* Requires: 0<=descriptor<MAX_SOURCES, mux_init has been called
|
|
* Modifies: Removes the previous input handler if any for descriptor
|
|
* Effects: Registers handler as the input handler for file descriptor
|
|
* descriptor. When mux_loop() is running and input is
|
|
* available on descriptor, handler will be called with
|
|
* argument arg.
|
|
*/
|
|
|
|
extern void mux_add_input_source(int, void (*)(void *), void *);
|
|
|
|
/*
|
|
* void mux_loop()
|
|
* Requires: mux_init has been called.
|
|
* Effects: Loops until mux_end_loop_p becomes true. (Sets
|
|
* mux_end_loop_p false to start). Whenever input is
|
|
* available on an input source which has a registered
|
|
* handler (see mux_add_input_source), that handler is
|
|
* called with its argument. It is guarenteed that if
|
|
* input is available on a source, its respective input
|
|
* handler, if any, will eventually be called. No other
|
|
* ordering guarentees are made. When some signal handler
|
|
* or input handler eventually sets mux_end_loop_p to
|
|
* true, we return.
|
|
*/
|
|
|
|
extern void mux_loop(void);
|
|
|
|
#endif
|