/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos720 src/bos/kernext/inet/timerwheel.h 1.2.1.4                       */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* Restricted Materials of IBM                                            */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 2006,2014              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)98       1.2.1.4  src/bos/kernext/inet/timerwheel.h, sysxinet_tcp, bos720 2/18/14 09:47:40 */
#ifndef _TIMERWHEEL_H_
#define _TIMERWHEEL_H_

#include <sys/types.h>

/* 
 * timer structure used in timer-wheel implementation
 */
typedef struct twheel_timer {
	struct twheel_timer		*next;		/* next timer-wheel element in the slot chain */
	struct twheel_timer		*prev;		/* previous timer-wheel element in the slot chain */	

	caddr_t  			func_arg;	/* argument to function */

	void				(*func)(caddr_t);/* timeout processing routine */

	short                           flags;          /* flags */

	short				timertype;	/* specifies timer type e.g. TCPT_REXMT */ 

	short				wheelslot;  	/* slot in which this timer is placed */

	short				ticks;		/* ticks in units of 'timer_wheel_slot_interval' */
    
	time_t				starttime;	/* when timer was started  */

	long				reserved[2];    /* reserved fields for future use */
} twheel_timer;

#endif

