16 #include "db_field_log.h" 17 #include "chfPlugin.h" 23 #define STATE_NAME_LENGTH 20 35 chfPluginEnumType modeEnum[] = {
53 static void *myStructFreeList;
56 chfPluginArgDef opts[] = {
68 static void * allocPvt(
void)
74 static void freePvt(
void *pvt)
77 db_delete_field_log(my->
lastfl);
81 static int parse_ok(
void *pvt)
85 if (!(my->
id = dbStateFind(my->
state)))
91 static db_field_log* filter(
void* pvt, dbChannel *chan, db_field_log *pfl) {
92 db_field_log *passfl =
NULL;
96 if (pfl->ctx == dbfl_context_read)
99 actstate = dbStateGet(my->
id);
114 db_delete_field_log(pfl);
128 db_delete_field_log(pfl);
134 db_delete_field_log(pfl);
140 db_delete_field_log(pfl);
145 db_delete_field_log(my->
lastfl);
158 static void channelRegisterPre(dbChannel *chan,
void *pvt,
159 chPostEventFunc **cb_out,
void **arg_out, db_field_log *probe)
165 static void channel_report(dbChannel *chan,
void *pvt,
int level,
const unsigned short indent)
168 printf(
"%*sSynchronize (sync): mode=%s, state=%s\n", indent,
"",
169 chfPluginEnumString(modeEnum, my->
mode,
"n/a"), my->
state);
172 static chfPluginIf pif = {
186 static void syncShutdown(
void* ignore)
190 myStructFreeList =
NULL;
193 static void syncInitialize(
void)
195 if (!myStructFreeList)
198 chfPluginRegister(
"sync", &pif, opts);
LIBCOM_API void *epicsStdCall freeListCalloc(void *pvt)
#define assert(exp)
Declare that a condition should be true.
An EPICS-specific replacement for ANSI C's assert.
epicsExportRegistrar(syncInitialize)
LIBCOM_API void epicsStdCall freeListInitPvt(void **ppvt, int size, int nmalloc)
LIBCOM_API void epicsStdCall freeListCleanup(void *pvt)
LIBCOM_API void epicsStdCall freeListFree(void *pvt, void *pmem)
Extended replacement for the Posix exit and atexit routines.
char state[STATE_NAME_LENGTH]
#define epicsAtExit(F, A)
Convenience macro to register a function and context value to be run when the process exits...
#define STATE_NAME_LENGTH