37 static void initHookOnce(
void *arg)
42 static void initHookInit(
void)
61 printf(
"Cannot malloc a new initHookLink\n");
86 while (hook !=
NULL) {
108 const char *stateName[] = {
109 "initHookAtIocBuild",
110 "initHookAtBeginning",
111 "initHookAfterCallbackInit",
112 "initHookAfterCaLinkInit",
113 "initHookAfterInitDrvSup",
114 "initHookAfterInitRecSup",
115 "initHookAfterInitDevSup",
116 "initHookAfterInitDatabase",
117 "initHookAfterFinishDevSup",
118 "initHookAfterScanInit",
119 "initHookAfterInitialProcess",
120 "initHookAfterCaServerInit",
121 "initHookAfterIocBuilt",
123 "initHookAfterDatabaseRunning",
124 "initHookAfterCaServerRunning",
125 "initHookAfterIocRunning",
126 "initHookAtIocPause",
127 "initHookAfterCaServerPaused",
128 "initHookAfterDatabasePaused",
129 "initHookAfterIocPaused",
130 "initHookAfterInterruptAccept",
133 if (state < 0 || state >=
NELEMENTS(stateName)) {
134 return "Not an initHookState";
136 return stateName[state];
void initHookAnnounce(initHookState state)
#define epicsMutexMustCreate()
Create an epicsMutex semaphore for use from C code.
#define ELLLIST_INIT
Value of an empty list.
void epicsStdCall epicsMutexUnlock(epicsMutexId pmutexNode)
Release the semaphore.
Miscellaneous macro definitions.
A doubly-linked list library.
void ellAdd(ELLLIST *pList, ELLNODE *pNode)
Adds a node to the end of a list.
#define ellNext(PNODE)
Find the next node in list.
#define ellFree(PLIST)
Free up the list.
#define EPICS_THREAD_ONCE_INIT
APIs for the epicsMutex mutual exclusion semaphore.
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
void(* initHookFunction)(initHookState state)
const char * initHookName(int state)
int initHookRegister(initHookFunction func)
C++ and C descriptions for a thread.
#define epicsMutexMustLock(ID)
Claim a semaphore (see epicsMutexLock()).
struct initHookLink initHookLink
#define ellFirst(PLIST)
Find the first node in list.