/*
* $Id: watchdog.h,v 1.7 2001/03/28 22:30:40 shane Exp $
*/
#ifndef WATCHDOG_H
#define WATCHDOG_H
#include <pthread.h>
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#include "error.h"
/* each watched thread gets one of these structures */
typedef struct watched {
/* thread to monitor */
pthread_t watched_thread;
/* flag whether in a watchdog list */
int in_list;
/* time when to cancel thread if no activity */
time_t alarm_time;
/* for location in doubly-linked list */
struct watched *older;
struct watched *newer;
/* watchdog that this watched_t is in */
void *watchdog;
} watched_t;
/* the watchdog keeps track of all information */
typedef struct {
pthread_mutex_t mutex;
int inactivity_timeout;
/* the head and tail of our list */
watched_t *oldest;
watched_t *newest;
} watchdog_t;
int watchdog_init(watchdog_t *w, int inactivity_timeout, error_t *err);
void watchdog_add_watched(watchdog_t *w, watched_t *watched);
void watchdog_defer_watched(watched_t *watched);
void watchdog_remove_watched(watched_t *watched);
#endif /* WATCHDOG_H */
syntax highlighted by Code2HTML, v. 0.9.1