• Martin Mareš's avatar
    Added simple event scheduling system to avoid recursive calling · e8f73195
    Martin Mareš authored
    of various callbacks.
    Events are just another resource type objects (thus automatically freed
    and unlinked when the protocol using them shuts down). Each event can
    be linked in at most one event list. For most purposes, just use the
    global event list handled by the following functions:
    	ev_schedule	Schedule event to be called at the next event
    			scheduling point. If the event was already
    			scheduled, it's just re-linked to the end of the list.
    	ev_postpone	Postpone an already scheduled event, so that it
    			won't get called. Postponed events can be scheduled
    			again by ev_schedule().
    You can also create custom event lists to build your own synchronization
    primitives. Just use:
    	ev_init_list	to initialize an event list
    	ev_enqueue	to schedule event on specified event list
    	ev_postpone	works as well for custom lists
    	ev_run_list	to run all events on your custom list
    	ev_run		to run a specific event and dequeue it
io.c 13.8 KB