forked from epics_driver_modules/require
59605bac45
these are EPICS dependend, utilities not
65 lines
1.1 KiB
C
65 lines
1.1 KiB
C
/* subroutine for checking the status of an IOC
|
|
*
|
|
* This subroutine assumes the following use of the subroutine record inputs:
|
|
*
|
|
* VAL : ioc health status: 1= ok; 0 = bad
|
|
* A : if set, subroutine will clear bad status and reset A. (used if task is restarted)
|
|
*/
|
|
|
|
/* mods ...
|
|
*
|
|
* 06/17/94 nda initial coding. Simply checks all tasks monitored by watchdog
|
|
*
|
|
*/
|
|
|
|
|
|
#include <vxWorks.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <vme.h>
|
|
|
|
#include <dbDefs.h>
|
|
#include <subRecord.h>
|
|
#include <taskwd.h>
|
|
|
|
void taskFault();
|
|
long iocStatus;
|
|
|
|
|
|
long iocCheckInit(psub)
|
|
struct subRecord *psub;
|
|
{
|
|
long ret = 0;
|
|
|
|
taskwdAnyInsert(NULL, taskFault, NULL);
|
|
iocStatus = 1; /* assume OK during init */
|
|
psub->val = iocStatus;
|
|
|
|
return(ret);
|
|
}
|
|
|
|
|
|
long iocCheck(psub)
|
|
struct subRecord *psub;
|
|
{
|
|
short a;
|
|
|
|
a=psub->a;
|
|
|
|
/* if a is set, make status = OK, reset a */
|
|
if(a) {
|
|
iocStatus = 1;
|
|
psub->a = 0;
|
|
}
|
|
|
|
psub->val = iocStatus;
|
|
|
|
return(0);
|
|
}
|
|
|
|
void taskFault(userarg)
|
|
VOID *userarg;
|
|
{
|
|
iocStatus = 0;
|
|
}
|