📄 wdtpsx.c
字号:
/***************************************************************** * * * wdtpsx.c * * * * This file is a part of the eXtremeDB-HA Application Framework * * It demonstrates McObject High Availabitity support and * * explains how to work with it. * * * ***************************************************************** * Copyright (c) 2001-2006 McObject LLC * * All Rights Reserved * *****************************************************************//* * ++ * * PROJECT: Ha Framework * * SUBSYSTEM: HA support * * MODULE: wdtpsx.c * * ABSTRACT: WATCHDOG asynchron processing procedures for HA support * * * VERSION: 1.0 * * HISTORY: * 1.0- 1 SS 19-Oct-2003 Created it was * * -- */#if !defined(_WIN32) && !defined(_QNX) && !defined(_INTEGRITY) && !defined(_ECOS)#include "platform.h"#ifndef _VXWORKS#include <sys/time.h>#else#include <sys/times.h>#endif#include <signal.h>#include <time.h>#include "watchdog.h"#ifndef _QNXint mco_create_watchdog( long msec, MCO_PWATCHDOG proc){ struct sigaction sa; struct itimerval time; sa.sa_handler = (void (*) (int))proc; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); sigaddset(&sa.sa_mask,SIGPIPE); sigaction( SIGALRM, &sa, NULL); time.it_interval.tv_sec = msec/1000; time.it_interval.tv_usec = (msec%1000)*1000;// time.it_value.tv_sec = time.it_interval.tv_sec; time.it_value.tv_usec = time.it_interval.tv_usec; return setitimer( ITIMER_REAL, &time, NULL );}void mco_kill_watchdog( long msec, MCO_PWATCHDOG proc){ struct itimerval time; time.it_interval.tv_sec = 0; time.it_interval.tv_usec = 0;// time.it_value.tv_sec = 0; time.it_value.tv_usec = 0; setitimer( ITIMER_REAL, &time, NULL );}#elsestatic timer_t timerid; int mco_create_watchdog( long msec, MCO_PWATCHDOG proc){ struct sigaction sa; struct itimerspec time; static struct sigevent evt; int rc; sa.sa_handler = (void (*) (int))proc; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); sigaddset(&sa.sa_mask,SIGPIPE); sigaction( SIGALRM, &sa, NULL); SIGEV_SIGNAL_INIT( &evt, SIGALRM); if(( rc = timer_create( CLOCK_REALTIME, &evt, &timerid ))<0) return rc; time.it_interval.tv_sec = msec/1000; time.it_interval.tv_nsec = (msec%1000)*10000;// time.it_value.tv_sec = time.it_interval.tv_sec; time.it_value.tv_nsec = time.it_interval.tv_nsec; return timer_settime( timerid, 0, &time, NULL );}void mco_kill_watchdog( long msec, MCO_PWATCHDOG proc){ struct itimerspec time; time.it_interval.tv_sec = 0; time.it_interval.tv_nsec = 0;// time.it_value.tv_sec = 0; time.it_value.tv_nsec = 0; timer_settime( timerid, 0, &time, NULL );}#endif#endif /* !defined(_WIN32) && !defined(_QNX) && !defined(_INTEGRITY) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -