/*
* Copyright (c) 2001-2002 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
* $Id: clock.h,v 1.2 2005/06/16 00:09:34 ca Exp $
*/
#if 0
#ifndef _SM_CLOCK_H
#define _SM_CLOCK_H 1
#include "sm/generic.h"
/*
XXX MUST BE CHANGED
*/
#include <sm/signal.h>
#if SM_CONF_SETITIMER
# include <sys/time.h>
#endif /* SM_CONF_SETITIMER */
/*
** STRUCT SM_EVENT -- event queue.
**
** Maintained in sorted order.
**
** We store the pid of the process that set this event to insure
** that when we fork we will not take events intended for the parent.
*/
struct sm_event
{
#if SM_CONF_SETITIMER
struct timeval ev_time; /* time of the call (microseconds) */
#else /* SM_CONF_SETITIMER */
time_t ev_time; /* time of the call (seconds) */
#endif /* SM_CONF_SETITIMER */
void (*ev_func)(int);
/* function to call */
int ev_arg; /* argument to ev_func */
pid_t ev_pid; /* pid that set this event */
struct sm_event *ev_link; /* link to next item */
};
typedef struct sm_event SM_EVENT;
/* functions */
void sm_clrevent(SM_EVENT *);
void sm_clear_events(void);
SM_EVENT *sm_setevent(time_t, void(*)(), int);
SM_EVENT *sm_seteventm(int, void(*)(), int);
SM_EVENT *sm_sigsafe_seteventm(int, void(*)(), int);
SIGFUNC_DECL sm_tick(int);
/*
** SM_SETEVENT -- set an event to happen at a specific time in seconds.
**
** Translates the seconds into millseconds and calls sm_seteventm()
** to get a specific event to happen in the future at a specific time.
**
** Parameters:
** t -- intvl until next event occurs (seconds).
** f -- function to call on event.
** a -- argument to func on event.
**
** Returns:
** result of sm_seteventm().
**
** Side Effects:
** Any that sm_seteventm() have.
*/
#define sm_setevent(t, f, a) sm_seteventm((int)((t) * 1000), (f), (a))
#define sm_sigsafe_setevent(t, f, a) sm_sigsafe_seteventm((int)((t) * 1000), (f), (a))
#endif /* _SM_CLOCK_H */
#endif /* 0 */
syntax highlighted by Code2HTML, v. 0.9.1