Annotation of embedaddon/trafshow/events.h, revision 1.1.1.1

1.1       misho       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>