2 * Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
4 * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
5 * Copyright (c) 1988, 1993
6 * The Regents of the University of California. All rights reserved.
8 * By using this file, you agree to the terms and conditions set
9 * forth in the LICENSE file which can be found at the top level of
10 * the sendmail distribution.
12 * $Id: clock.h,v 1.11 2001/05/14 23:25:37 gshapiro Exp $
16 ** CLOCK.H -- for co-ordinating timed events
20 # define _SM_CLOCK_H 1
22 # include <sm/signal.h>
23 # if SM_CONF_SETITIMER
24 # include <sys/time.h>
25 # endif /* SM_CONF_SETITIMER */
28 ** STRUCT SM_EVENT -- event queue.
30 ** Maintained in sorted order.
32 ** We store the pid of the process that set this event to insure
33 ** that when we fork we will not take events intended for the parent.
38 # if SM_CONF_SETITIMER
39 struct timeval ev_time
; /* time of the call (microseconds) */
40 # else /* SM_CONF_SETITIMER */
41 time_t ev_time
; /* time of the call (seconds) */
42 # endif /* SM_CONF_SETITIMER */
43 void (*ev_func
)__P((int));
44 /* function to call */
45 int ev_arg
; /* argument to ev_func */
46 pid_t ev_pid
; /* pid that set this event */
47 struct sm_event
*ev_link
; /* link to next item */
50 typedef struct sm_event SM_EVENT
;
53 extern void sm_clrevent
__P((SM_EVENT
*));
54 extern void sm_clear_events
__P((void));
55 extern SM_EVENT
*sm_setevent
__P((time_t, void(*)(), int));
56 extern SM_EVENT
*sm_seteventm
__P((int, void(*)(), int));
57 extern SM_EVENT
*sm_sigsafe_seteventm
__P((int, void(*)(), int));
58 extern SIGFUNC_DECL sm_tick
__P((int));
61 ** SM_SETEVENT -- set an event to happen at a specific time in seconds.
63 ** Translates the seconds into millseconds and calls sm_seteventm()
64 ** to get a specific event to happen in the future at a specific time.
67 ** t -- intvl until next event occurs (seconds).
68 ** f -- function to call on event.
69 ** a -- argument to func on event.
72 ** result of sm_seteventm().
75 ** Any that sm_seteventm() have.
78 #define sm_setevent(t, f, a) sm_seteventm((int)((t) * 1000), (f), (a))
79 #define sm_sigsafe_setevent(t, f, a) sm_sigsafe_seteventm((int)((t) * 1000), (f), (a))
81 #endif /* _SM_CLOCK_H */