snmp_timer.c
上传用户:cxs890
上传日期:2021-05-22
资源大小:347k
文件大小:2k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #ifdef OS_VXWORKS
  2. #include <libsys/vos/vos_rtos.h>
  3. #else
  4. #include <psos.h>
  5. #include <libsys/assert.h>
  6. #endif
  7. #include "config.h"
  8. #include "snmp_timer.h"
  9. extern void snmp_timeout(void);
  10. #ifdef OS_VXWORKS
  11. extern int32 vty_console_output(const char *fmt, ...);
  12. #else
  13. extern int vty_console_output(const char *fmt, ...);
  14. #endif
  15. /* Set a SNMP timer */
  16. void
  17. set_SNMPtimer(t,interval)
  18. struct SNMPtimer *t;
  19. uint32 interval;
  20. {
  21.     if(t == NULLTIMER)
  22.         return;
  23.     /* Set timer type as CALLBACK */
  24.     /*使用循环定时器TIMER_LOOP,不再每次超时重新启动定时器,孙希2003.1.8
  25.     t->type=TIMER_CALLBACK_METHOD|TIMER_LOOP;*/
  26.     /* Set callback function */
  27.     t->user_data.cb.fun=(void*)t->func;
  28.     /* Set callback function paremeter */
  29.     t->user_data.cb.arg=(uint32)t->arg;
  30.     /* Set timeout interval*/
  31.     t->timeout = interval;
  32. }
  33. /*Create a SNMP timer 99.12.10*/
  34. void create_SNMPtimer(struct SNMPtimer *t)
  35. {
  36.     if(t == NULLTIMER)
  37.         return;
  38. #if 0
  39. if(sys_add_timer(t->type,&(t->user_data),/*t->timeout,*/&(t->timerID))!=NOERR){
  40. vty_console_output("error: SNMP create timern");
  41. t->timerID = 0;
  42. }
  43. #else
  44.     {
  45.         uint32 args[4];
  46.         args[0] = (uint32)(t->arg);
  47.         #ifdef OS_VXWORKS
  48.         t->timerID = sys_task_create("SN_T", SYS_TASK_PRI_NORMAL, 0, 10240, t->func, args, 1);
  49.         #else
  50.         t_create("SN_T", 128, 10240, 10240, 0, &t->timerID);
  51.         #endif
  52.     }
  53. #endif
  54. return;
  55. }
  56. /* Start a SNMP timer */
  57. void
  58. start_SNMPtimer(t)
  59. struct SNMPtimer *t;
  60. {
  61. #ifndef OS_VXWORKS
  62.     ULONG args[4];
  63. #endif
  64.     if(t == NULLTIMER||t->timerID==0)
  65.         return;
  66. #if 0
  67. if (sys_start_timer(t->timerID,t->timeout)  != NOERR){
  68. vty_console_output("error: SNMP start timern");
  69. }
  70. #else
  71.     #ifdef OS_VXWORKS
  72.     sys_task_start(t->timerID);
  73.     #else
  74.     t_start(t->timerID, T_SUPV | T_PREEMPT | T_NOTSLICE, t->func, args);
  75.     #endif
  76. #endif
  77. }
  78. /* Stop a SNMP timer */
  79. void
  80. stop_SNMPtimer(timer)
  81. struct SNMPtimer *timer;
  82. {
  83.     if(timer == NULLTIMER||timer->timerID==0)    
  84.        return;
  85. #if 0
  86. if (sys_stop_timer(timer->timerID) != NOERR){
  87. vty_console_output("error: SNMP stop timern");
  88. }
  89. #else
  90.     ASSERT(0);
  91. #endif
  92. }
  93. /* Remove a SNMP timer 99.12.10 */
  94. void
  95. remove_SNMPtimer(timer)
  96. struct SNMPtimer *timer;
  97. {
  98.     if(timer == NULLTIMER||timer->timerID==0)    
  99.        return;
  100.        
  101. if (sys_delete_timer((ULONG)timer->timerID) != NOERR){
  102. vty_console_output("error: SNMP delete timern");
  103. }
  104. }