File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / trafshow / events.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 16:55:18 2012 UTC (12 years, 4 months ago) by misho
Branches: trafshow, MAIN
CVS tags: v5_2_3p0, v5_2_3, HEAD
trafshow

    1: /*
    2:  *	Copyright (c) 2003 Rinet Corp., Novosibirsk, Russia
    3:  *
    4:  * Redistribution and use in source forms, with and without modification,
    5:  * are permitted provided that this entire comment appears intact.
    6:  *
    7:  * THIS SOURCE CODE IS PROVIDED ``AS IS'' WITHOUT ANY WARRANTIES OF ANY KIND.
    8:  */
    9: 
   10: #ifndef	_EVENTS_H_
   11: #define	_EVENTS_H_
   12: 
   13: #include <sys/types.h>
   14: #include <sys/time.h>
   15: 
   16: /*
   17:  * Event scheduler.
   18:  */
   19: 
   20: typedef struct event_ent {
   21: 	struct timeval tv;	/* system time in [micro]seconds from UTC */
   22: 	void (*func)(void *);	/* function to call at the time */
   23: 	void *arg;		/* function argument pointer */
   24: 
   25:         struct event_ent *next;
   26: } EVENT;
   27: 
   28: /*
   29:  * Subtract or add two timeval structs:
   30:  * out = out - in
   31:  * out = out + in
   32:  * result always greater 0.
   33:  */
   34: void tv_sub(struct timeval *out, const struct timeval *in);
   35: void tv_add(struct timeval *out, const struct timeval *in);
   36: 
   37: /*
   38:  * Round timeval to seconds.
   39:  */
   40: u_long tv_round(const struct timeval *tvp);
   41: 
   42: /*
   43:  * Return difference of time in milliseconds.
   44:  */
   45: u_long tv_diff(const struct timeval *tvp1, const struct timeval *tvp2);
   46: 
   47: /*
   48:  * Shift the time to be sharp at (12am + N * period), local time.
   49:  */
   50: void tv_sharp(struct timeval *tvp, int period);
   51: 
   52: /*
   53:  * Execute pending event and schedule the next nearest.
   54:  * Return 0 if timeval was modified.
   55:  */
   56: int select_event(struct timeval *tvp);
   57: 
   58: /*
   59:  * Add the new system event (or modify) to be executed at the given time.
   60:  * Return 0 on success, -1 for error.
   61:  */
   62: int add_event(struct timeval *tvp, void (*func)(void *), void *arg);
   63: 
   64: /*
   65:  * Remove system event from queue if any.
   66:  * Null func pointer may be used as wildcard ANY.
   67:  * Return number of removed events.
   68:  */
   69: int remove_event(void (*func)(void *), void *arg);
   70: 
   71: /*
   72:  * Modify existing system event in queue for the new function argument.
   73:  * Null func pointer may be used as wildcard ANY.
   74:  * Return number of removed events.
   75:  */
   76: int change_event(void (*func)(void *), void *arg, void *new_arg);
   77: 
   78: EVENT *find_event(void (*func)(void *), void *arg);
   79: 
   80: /*
   81:  * Clear/free all system events.
   82:  */
   83: void free_events();
   84: 
   85: #endif	/* _EVENTS_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>