Events Interface
The Event library is a utility library provided with Spread, but it is
not required that you use it. It is simply provided to avoid everyone
having to write their own event handling system. The interface is defined
in sp_events.h.
#define NUM_PRIORITY 3
#define LOW_PRIORITY 0
#define MEDIUM_PRIORITY 1
#define HIGH_PRIORITY 2
#define NUM_FDTYPES 3
#define READ_FD 0
#define WRITE_FD 1
#define EXCEPT_FD 2
typedef struct dummy_time {
long sec;
long usec;
} sp_time;
#ifndef NULL
#define NULL (void *)0
#endif
/* Event routines */
int E_init(void);
sp_time E_get_time(void);
sp_time E_sub_time( sp_time t, sp_time delta_t );
sp_time E_add_time( sp_time t, sp_time delta_t );
/* if t1 > t2 then returns 1;
if t1 < t2 then returns -1;
if t1 == t2 then returns 0; */
int E_compare_time( sp_time t1, sp_time t2 );
int E_queue( void (* func)( int code, void *data ), int code, void *data, sp_time delta_time );
/* Note: This does not dispose/free the data pointed at by the void *data pointer */
int E_dequeue( void (* func)( int code, void *data ), int code, void *data );
void E_delay( sp_time t );
int E_attach_fd( int fd, int fd_type, void (* func)( int fd, int code, void *data),
int code, void *data, int priority );
int E_detach_fd( int fd, int fd_type );
int E_set_active_threshold( int priority );
int E_activate_fd( int fd, int fd_type );
int E_deactivate_fd( int fd, int fd_type );
int E_num_active( int priority );
void E_handle_events(void);
void E_exit_events(void);
|