timer.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _TIMER_H
  2. #define _TIMER_H
  3. #ifndef _GLOBAL_H
  4. #include "global.h"
  5. #endif
  6. /* Software timers
  7.  * There is one of these structures for each simulated timer.
  8.  * Whenever the timer is running, it is on a linked list
  9.  * pointed to by "Timers". The list is sorted in ascending order of
  10.  * expiration, with the first timer to expire at the head. This
  11.  * allows the timer process to avoid having to scan the entire list
  12.  * on every clock tick; once it finds an unexpired timer, it can
  13.  * stop searching.
  14.  *
  15.  * Stopping a timer or letting it expire causes it to be removed
  16.  * from the list. Starting a timer puts it on the list at the right
  17.  * place.
  18.  */
  19. struct timer {
  20. struct timer *next; /* Linked-list pointer */
  21. int32 duration; /* Duration of timer, in ticks */
  22. int32 expiration; /* Clock time at expiration */
  23. void (*func)(void *); /* Function to call at expiration */
  24. void *arg; /* Arg to pass function */
  25. char state; /* Timer state */
  26. #define TIMER_STOP 0
  27. #define TIMER_RUN 1
  28. #define TIMER_EXPIRE 2
  29. };
  30. #define MAX_TIME (int32)4294967295 /* Max long integer */
  31. #ifndef MSPTICK
  32. #define MSPTICK 55 /* Milliseconds per tick */
  33. #endif
  34. #ifndef EALARM
  35. #define EALARM 106
  36. #endif
  37. /* Useful user macros that hide the timer structure internals */
  38. #define dur_timer(t) ((t)->duration*MSPTICK)
  39. #define run_timer(t) ((t)->state == TIMER_RUN)
  40. extern int Tick;
  41. extern void (*Cfunc[])(); /* List of clock tick functions */
  42. /* In timer.c: */
  43. void kalarm(int32 ms);
  44. int ppause(int32 ms);
  45. int32 read_timer(struct timer *t);
  46. void set_timer(struct timer *t,int32 x);
  47. void start_timer(struct timer *t);
  48. void stop_timer(struct timer *timer);
  49. char *tformat(int32 t);
  50. /* In hardware.c: */
  51. int32 msclock(void);
  52. int32 secclock(void);
  53. int32 usclock(void);
  54. #endif /* _TIMER_H */