35 static void threadHookOnce(
void *arg)
47 static void threadHookInit(
void)
63 fprintf(
stderr,
"epicsThreadHookAdd: calloc failed\n");
73 fprintf(
stderr,
"epicsThreadHookAdd: Locking problem\n");
86 if (hook == pHook->
func) {
95 fprintf(
stderr,
"epicsThreadHookAdd: Locking problem\n");
119 fprintf(
stderr,
"osdThreadHooksRun: Locking problem\n");
137 fprintf(
stderr,
"epicsThreadHooksShow: Locking problem\n");
LIBCOM_API int epicsThreadHookDelete(EPICS_THREAD_HOOK_ROUTINE hook)
LIBCOM_API EPICS_THREAD_HOOK_ROUTINE epicsThreadHookMain
struct epicsThreadHook epicsThreadHook
LIBCOM_API int epicsThreadHookAdd(EPICS_THREAD_HOOK_ROUTINE hook)
void(* EPICS_THREAD_HOOK_ROUTINE)(epicsThreadId id)
#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.
LIBCOM_API void osdThreadHooksRunMain(epicsThreadId id)
LIBCOM_API EPICS_THREAD_HOOK_ROUTINE epicsThreadHookDefault
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 EPICS_THREAD_ONCE_INIT
APIs for the epicsMutex mutual exclusion semaphore.
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
LIBCOM_API void epicsThreadHooksShow(void)
epicsMutexLockStatus epicsStdCall epicsMutexLock(epicsMutexId pmutexNode)
Claim the semaphore, waiting until it's free if currently owned owned by a different thread...
EPICS_THREAD_HOOK_ROUTINE func
C++ and C descriptions for a thread.
LIBCOM_API void osdThreadHooksRun(epicsThreadId id)
void ellDelete(ELLLIST *pList, ELLNODE *pNode)
Deletes a node from a list.
#define ELLNODE_INIT
Value of a terminal node.
#define ellFirst(PLIST)
Find the first node in list.