Merge ~epics-core/epics-base/+git/database:epicsCallback into ~epics-core/epics-base/+git/epics-base:7.0

Proposed by mdavidsaver
Status: Merged
Merge reported by: mdavidsaver
Merged at revision: 72a17558fb89ab96493071d1259c855ac96cea5d
Proposed branch: ~epics-core/epics-base/+git/database:epicsCallback
Merge into: ~epics-core/epics-base/+git/epics-base:7.0
Diff against target: 1093 lines (+118/-116)
58 files modified
modules/database/src/ioc/as/asDbLib.h (+1/-1)
modules/database/src/ioc/db/callback.c (+9/-9)
modules/database/src/ioc/db/callback.h (+9/-7)
modules/database/src/ioc/db/dbNotify.c (+3/-3)
modules/database/src/ioc/db/dbScan.c (+6/-6)
modules/database/src/std/dev/asSubRecordFunctions.c (+1/-1)
modules/database/src/std/dev/devAiSoftCallback.c (+1/-1)
modules/database/src/std/dev/devBiSoftCallback.c (+1/-1)
modules/database/src/std/dev/devI64inSoftCallback.c (+1/-1)
modules/database/src/std/dev/devLiSoftCallback.c (+1/-1)
modules/database/src/std/dev/devMbbiDirectSoftCallback.c (+1/-1)
modules/database/src/std/dev/devMbbiSoftCallback.c (+1/-1)
modules/database/src/std/dev/devSiSoftCallback.c (+1/-1)
modules/database/src/std/rec/aaiRecord.c (+2/-2)
modules/database/src/std/rec/aaiRecord.dbd (+1/-1)
modules/database/src/std/rec/aaoRecord.c (+2/-2)
modules/database/src/std/rec/aaoRecord.dbd (+1/-1)
modules/database/src/std/rec/aiRecord.c (+2/-2)
modules/database/src/std/rec/aiRecord.dbd.pod (+1/-1)
modules/database/src/std/rec/aoRecord.c (+2/-2)
modules/database/src/std/rec/aoRecord.dbd.pod (+1/-1)
modules/database/src/std/rec/biRecord.c (+2/-2)
modules/database/src/std/rec/boRecord.c (+4/-4)
modules/database/src/std/rec/calcoutRecord.c (+5/-5)
modules/database/src/std/rec/eventRecord.c (+2/-2)
modules/database/src/std/rec/eventRecord.dbd (+1/-1)
modules/database/src/std/rec/histogramRecord.c (+4/-4)
modules/database/src/std/rec/histogramRecord.dbd (+1/-1)
modules/database/src/std/rec/int64inRecord.c (+2/-2)
modules/database/src/std/rec/int64inRecord.dbd.pod (+1/-1)
modules/database/src/std/rec/int64outRecord.c (+2/-2)
modules/database/src/std/rec/int64outRecord.dbd.pod (+1/-1)
modules/database/src/std/rec/longinRecord.c (+2/-2)
modules/database/src/std/rec/longinRecord.dbd (+1/-1)
modules/database/src/std/rec/longoutRecord.c (+2/-2)
modules/database/src/std/rec/longoutRecord.dbd (+1/-1)
modules/database/src/std/rec/lsiRecord.c (+2/-2)
modules/database/src/std/rec/lsiRecord.dbd (+1/-1)
modules/database/src/std/rec/lsoRecord.c (+2/-2)
modules/database/src/std/rec/lsoRecord.dbd (+1/-1)
modules/database/src/std/rec/mbbiDirectRecord.c (+2/-2)
modules/database/src/std/rec/mbbiDirectRecord.dbd (+1/-1)
modules/database/src/std/rec/mbbiRecord.c (+2/-2)
modules/database/src/std/rec/mbbiRecord.dbd (+1/-1)
modules/database/src/std/rec/mbboDirectRecord.c (+2/-2)
modules/database/src/std/rec/mbboDirectRecord.dbd (+1/-1)
modules/database/src/std/rec/mbboRecord.c (+2/-2)
modules/database/src/std/rec/mbboRecord.dbd (+1/-1)
modules/database/src/std/rec/seqRecord.c (+3/-3)
modules/database/src/std/rec/stringinRecord.c (+2/-2)
modules/database/src/std/rec/stringinRecord.dbd (+1/-1)
modules/database/src/std/rec/stringoutRecord.c (+2/-2)
modules/database/src/std/rec/stringoutRecord.dbd (+1/-1)
modules/database/src/std/rec/waveformRecord.c (+2/-2)
modules/database/src/std/rec/waveformRecord.dbd.pod (+1/-1)
modules/database/test/ioc/db/callbackParallelTest.c (+4/-4)
modules/database/test/ioc/db/callbackTest.c (+4/-4)
modules/libcom/src/taskwd/taskwd.c (+1/-1)
Reviewer Review Type Date Requested Status
Andrew Johnson Needs Fixing
mdavidsaver Approve
Review via email: mp+372385@code.launchpad.net

Description of the change

Second step in migration away from CALLBACK, which clashes with a WIN32 macro.

The first step introduced 'epicsCallback' as an equivalent with 00a974ce528277de9a95987cfda538ff18e38d8c released in 3.15.6, 3.16.2, and 7.0.2 .

This second step allows user code to define EPICS_NO_CALLBACK to prevent callback.h from providing CALLBACK (and undefining the WIN32 macro).

To post a comment you must log in.
Revision history for this message
mdavidsaver (mdavidsaver) wrote :

As this change doesn't change the API (by default), and seems low risk, it crosses my threshold for creating a MR by the number of lines changed. Please note any objections/changes soon.

review: Approve
Revision history for this message
Andrew Johnson (anj) wrote :

Is your plan to mark CALLBACK with EPICS_DEPRECATED at some point? I'm not sure that we will _need_ to do that, but it should be possible.

review: Approve
Revision history for this message
Andrew Johnson (anj) wrote :

This will (of course) need to be applied to 3.15 and merged up, since Windows builds of pva2pva are failing to build against that release because of CALLBACK errors.

However looking at when the pva2pva build started failing I'm reasonably confident that including osiSock.h towards the top of both pdbsingle.cpp and pvif.cpp was probably the trigger. If you were to move that include below dbNotify.h I suspect that will fix the problem without needing this MR.

I still approve of this change, but against 3.15 instead of 7.0. It does need Release Notes too, there were none in the previous step and if you want people to change their code that needs to be documented. They should probably say that we won't deprecate CALLBACK in any 3.15 release.

review: Needs Fixing
Revision history for this message
mdavidsaver (mdavidsaver) wrote :

> Is your plan to mark CALLBACK with EPICS_DEPRECATED at some point?

As a matter of form, yes. Though there is no urgency.

> applied to 3.15

Not "of course" for me, but your decision. As you've indicated approval, I'll apply to 3.15 directly w/o another MR.

> If you were to move

I'll work on cures, but I'm tired of treating this symptom. Someone else will need to find an appropriate bandage this time.

I could pick 299aed026fd40b792f40b08386f208d17166fc40 onto 3.15 as well,
which also fixes things going forward.

> need Release Notes

Yup. I going to wait until any formatting changes have landed. The entry will be:

Add option to avoid CALLBACK conflict.

If a macro EPICS_NO_CALLBACK is defined, then callback.h will no longer (re)define CALLBACK.
The name 'CALLBACK' is used by the WIN32 API, and redefinition in callback.h cause errors if some windows headers are later included.

Code which defines EPICS_NO_CALLBACK, but still wishes to use callbacks, should use
the alternate name 'epicsCallback' introduced in 3.15.6, 3.16.2, and 7.0.2.
It is also possible, though not encouraged, to use 'struct callbackPvt'
which has been present since the callback API was introduced.

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

Rebased onto 3.15 as 77574022a109d82edb52a959c11e09b4e89440db

Revision history for this message
Freddie Akeroyd (freddie-akeroyd) wrote :

Hi, sorry for joining this late - been away a bit recently. If you need any further help/testing please let me know.

I think what you are doing with removing the CALLBACK keyword from EPICS is the right way forward. Andrew mentioned osiSock.h above and that can certainly be involved, it will indirectly includes windows headers and so osiSock.h would need to be included before callback.h and all other windows headers that might need the WIN32 CALLBACK definition. It may be possible to workaround the issue by making callback.h include the windows headers itself before it changes CALLBACK (maybe adding osiSock.h here would be enough), but this does feel to be getting a bit messy and is not guaranteed to work in all cases for a user developing an ioc.

Revision history for this message
Andrew Johnson (anj) wrote :

Hi Freddie,

EPICS code doesn't use the Windows CALLBACK macro at all so it should only have been needed inside the Windows headers themselves. I moved the #include "osiSock.h" lines that Michael had added to a couple of the pva2pva sources to resolve the Windows build problems on Saturday morning, and this merge request has now been applied to the 3.15 branch and merged up to 7.0 which hopefully will prevent or provide a fix for any further issues with this going forward.

Thanks,

- Andrew

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

> I moved the #include "osiSock.h" lines that Michael had added to a couple of the pva2pva sources to resolve the Windows build problems

I was reminded today of why I had put osiSock.h where it was. If I don't, then my cross-mingw builds fail after warning "Please include winsock2.h before windows.h". Does this mean that osiSock.h should be including windows.h as well?

In file included from /home/mdavidsaver/work/epics/base-git/include/os/WIN32/osdSock.h:23,
                 from /home/mdavidsaver/work/epics/base-git/include/osiSock.h:19,
                 from ../pdbsingle.cpp:11:
/usr/share/mingw-w64/include/winsock2.h:15:2: warning: #warning Please include winsock2.h before windows.h [-Wcpp]
 #warning Please include winsock2.h before windows.h
  ^~~~~~~
In file included from /home/mdavidsaver/work/epics/base-git/include/os/WIN32/osdSock.h:23,
                 from /home/mdavidsaver/work/epics/base-git/include/osiSock.h:19,
                 from ../pdbsingle.cpp:11:
/usr/share/mingw-w64/include/winsock2.h:541:24: error: expected ‘)’ before ‘*’ token
   typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF lpCallerId,LPWSABUF lpCallerData,LPQOS lpSQOS,LPQOS lpGQOS,LPWSABUF lpCalleeId,LPWSABUF lpCalleeData,GROUP *g,DWORD_PTR dwCallbackData);
               ~ ^~
                        )
In file included from /home/mdavidsaver/work/epics/base-git/include/os/WIN32/osdSock.h:23,
                 from /home/mdavidsaver/work/epics/base-git/include/osiSock.h:19,
                 from ../pdbsingle.cpp:11:
/usr/share/mingw-w64/include/winsock2.h:542:25: error: expected ‘)’ before ‘*’ token
   typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwError,DWORD cbTransferred,LPWSAOVERLAPPED lpOverlapped,DWORD dwFlags);
                ~ ^~
                         )
/usr/share/mingw-w64/include/winsock2.h:567:2: error: ‘LPWSAOVERLAPPED_COMPLETION_ROUTINE’ does not name a type; did you mean ‘LPOVERLAPPED_COMPLETION_ROUTINE’?
  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  LPOVERLAPPED_COMPLETION_ROUTINE
... omitting many similar errors

Revision history for this message
Andrew Johnson (anj) wrote :

Including windows.h in osdSock.h wouldn't get rid of that warning, which is complaining that some other osi/os/WIN32 header has already included windows.h (most of them seem to). Basically if we need winsock2.h we have to include it before windows.h. The proper fix would be to include winsock2.h first everywhere that we include windows.h, although that does seem a bit excessive.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/modules/database/src/ioc/as/asDbLib.h b/modules/database/src/ioc/as/asDbLib.h
2index 65c4c6f..1e0f675 100644
3--- a/modules/database/src/ioc/as/asDbLib.h
4+++ b/modules/database/src/ioc/as/asDbLib.h
5@@ -16,7 +16,7 @@
6 #include "shareLib.h"
7
8 typedef struct {
9- CALLBACK callback;
10+ epicsCallback callback;
11 long status;
12 } ASDBCALLBACK;
13
14diff --git a/modules/database/src/ioc/db/callback.c b/modules/database/src/ioc/db/callback.c
15index e1f1d45..bbd798e 100644
16--- a/modules/database/src/ioc/db/callback.c
17+++ b/modules/database/src/ioc/db/callback.c
18@@ -216,7 +216,7 @@ static void callbackTask(void *arg)
19 epicsEventMustWait(mySet->semWakeUp);
20
21 while ((ptr = epicsRingPointerPop(mySet->queue))) {
22- CALLBACK *pcallback = (CALLBACK *)ptr;
23+ epicsCallback *pcallback = (epicsCallback *)ptr;
24 if(!epicsRingPointerIsEmpty(mySet->queue))
25 epicsEventMustTrigger(mySet->semWakeUp);
26 mySet->queueOverflow = FALSE;
27@@ -317,7 +317,7 @@ void callbackInit(void)
28 }
29
30 /* This routine can be called from interrupt context */
31-int callbackRequest(CALLBACK *pcallback)
32+int callbackRequest(epicsCallback *pcallback)
33 {
34 int priority;
35 int pushOK;
36@@ -347,7 +347,7 @@ int callbackRequest(CALLBACK *pcallback)
37 return 0;
38 }
39
40-static void ProcessCallback(CALLBACK *pcallback)
41+static void ProcessCallback(epicsCallback *pcallback)
42 {
43 dbCommon *pRec;
44
45@@ -358,14 +358,14 @@ static void ProcessCallback(CALLBACK *pcallback)
46 dbScanUnlock(pRec);
47 }
48
49-void callbackSetProcess(CALLBACK *pcallback, int Priority, void *pRec)
50+void callbackSetProcess(epicsCallback *pcallback, int Priority, void *pRec)
51 {
52 callbackSetCallback(ProcessCallback, pcallback);
53 callbackSetPriority(Priority, pcallback);
54 callbackSetUser(pRec, pcallback);
55 }
56
57-int callbackRequestProcessCallback(CALLBACK *pcallback,
58+int callbackRequestProcessCallback(epicsCallback *pcallback,
59 int Priority, void *pRec)
60 {
61 callbackSetProcess(pcallback, Priority, pRec);
62@@ -374,11 +374,11 @@ int callbackRequestProcessCallback(CALLBACK *pcallback,
63
64 static void notify(void *pPrivate)
65 {
66- CALLBACK *pcallback = (CALLBACK *)pPrivate;
67+ epicsCallback *pcallback = (epicsCallback *)pPrivate;
68 callbackRequest(pcallback);
69 }
70
71-void callbackRequestDelayed(CALLBACK *pcallback, double seconds)
72+void callbackRequestDelayed(epicsCallback *pcallback, double seconds)
73 {
74 epicsTimerId timer = (epicsTimerId)pcallback->timer;
75
76@@ -389,7 +389,7 @@ void callbackRequestDelayed(CALLBACK *pcallback, double seconds)
77 epicsTimerStartDelay(timer, seconds);
78 }
79
80-void callbackCancelDelayed(CALLBACK *pcallback)
81+void callbackCancelDelayed(epicsCallback *pcallback)
82 {
83 epicsTimerId timer = (epicsTimerId)pcallback->timer;
84
85@@ -398,7 +398,7 @@ void callbackCancelDelayed(CALLBACK *pcallback)
86 }
87 }
88
89-void callbackRequestProcessCallbackDelayed(CALLBACK *pcallback,
90+void callbackRequestProcessCallbackDelayed(epicsCallback *pcallback,
91 int Priority, void *pRec, double seconds)
92 {
93 callbackSetProcess(pcallback, Priority, pRec);
94diff --git a/modules/database/src/ioc/db/callback.h b/modules/database/src/ioc/db/callback.h
95index 720cf33..a77a888 100644
96--- a/modules/database/src/ioc/db/callback.h
97+++ b/modules/database/src/ioc/db/callback.h
98@@ -26,7 +26,7 @@ extern "C" {
99 /*
100 * WINDOWS also has a "CALLBACK" type def
101 */
102-#ifdef _WIN32
103+#if defined(_WIN32) && !defined(EPICS_NO_CALLBACK)
104 # ifdef CALLBACK
105 # undef CALLBACK
106 # endif /*CALLBACK*/
107@@ -44,7 +44,9 @@ typedef struct callbackPvt {
108 void *timer; /*for use by callback itself*/
109 }epicsCallback;
110
111+#if !defined(EPICS_NO_CALLBACK)
112 typedef epicsCallback CALLBACK;
113+#endif
114
115 typedef void (*CALLBACKFUNC)(struct callbackPvt*);
116
117@@ -69,16 +71,16 @@ typedef struct callbackQueueStats {
118 epicsShareFunc void callbackInit(void);
119 epicsShareFunc void callbackStop(void);
120 epicsShareFunc void callbackCleanup(void);
121-epicsShareFunc int callbackRequest(CALLBACK *pCallback);
122+epicsShareFunc int callbackRequest(epicsCallback *pCallback);
123 epicsShareFunc void callbackSetProcess(
124- CALLBACK *pcallback, int Priority, void *pRec);
125+ epicsCallback *pcallback, int Priority, void *pRec);
126 epicsShareFunc int callbackRequestProcessCallback(
127- CALLBACK *pCallback,int Priority, void *pRec);
128+ epicsCallback *pCallback,int Priority, void *pRec);
129 epicsShareFunc void callbackRequestDelayed(
130- CALLBACK *pCallback,double seconds);
131-epicsShareFunc void callbackCancelDelayed(CALLBACK *pcallback);
132+ epicsCallback *pCallback,double seconds);
133+epicsShareFunc void callbackCancelDelayed(epicsCallback *pcallback);
134 epicsShareFunc void callbackRequestProcessCallbackDelayed(
135- CALLBACK *pCallback, int Priority, void *pRec, double seconds);
136+ epicsCallback *pCallback, int Priority, void *pRec, double seconds);
137 epicsShareFunc int callbackSetQueueSize(int size);
138 epicsShareFunc int callbackQueueStatus(const int reset, callbackQueueStats *result);
139 epicsShareFunc void callbackQueueShow(const int reset);
140diff --git a/modules/database/src/ioc/db/dbNotify.c b/modules/database/src/ioc/db/dbNotify.c
141index 794672a..e25ce4a 100644
142--- a/modules/database/src/ioc/db/dbNotify.c
143+++ b/modules/database/src/ioc/db/dbNotify.c
144@@ -69,7 +69,7 @@ typedef struct notifyPvt {
145 ELLNODE node; /*For free list*/
146 long magic;
147 short state;
148- CALLBACK callback;
149+ epicsCallback callback;
150 ELLLIST waitList; /*list of records for current processNotify*/
151 short cancelWait;
152 short userCallbackWait;
153@@ -86,7 +86,7 @@ typedef struct notifyGlobal {
154
155 static notifyGlobal *pnotifyGlobal = 0;
156
157-static void notifyCallback(CALLBACK *pcallback);
158+static void notifyCallback(epicsCallback *pcallback);
159
160 #define ellSafeAdd(list,listnode) \
161 { \
162@@ -270,7 +270,7 @@ static void processNotifyCommon(processNotify *ppn, dbCommon *precord, int first
163 callDone(precord, ppn);
164 }
165
166-static void notifyCallback(CALLBACK *pcallback)
167+static void notifyCallback(epicsCallback *pcallback)
168 {
169 processNotify *ppn = NULL;
170 dbCommon *precord;
171diff --git a/modules/database/src/ioc/db/dbScan.c b/modules/database/src/ioc/db/dbScan.c
172index 9224ed5..1904082 100644
173--- a/modules/database/src/ioc/db/dbScan.c
174+++ b/modules/database/src/ioc/db/dbScan.c
175@@ -109,7 +109,7 @@ static char *priorityName[NUM_CALLBACK_PRIORITIES] = {
176 /* EVENT */
177
178 typedef struct event_list {
179- CALLBACK callback[NUM_CALLBACK_PRIORITIES];
180+ epicsCallback callback[NUM_CALLBACK_PRIORITIES];
181 scan_list scan_list[NUM_CALLBACK_PRIORITIES];
182 struct event_list *next;
183 char eventname[1]; /* actually arbitrary size */
184@@ -120,7 +120,7 @@ static epicsMutexId event_lock;
185 /* IO_EVENT*/
186
187 typedef struct io_scan_list {
188- CALLBACK callback;
189+ epicsCallback callback;
190 scan_list scan_list;
191 } io_scan_list;
192
193@@ -141,9 +141,9 @@ static void periodicTask(void *arg);
194 static void initPeriodic(void);
195 static void deletePeriodic(void);
196 static void spawnPeriodic(int ind);
197-static void eventCallback(CALLBACK *pcallback);
198+static void eventCallback(epicsCallback *pcallback);
199 static void ioscanInit(void);
200-static void ioscanCallback(CALLBACK *pcallback);
201+static void ioscanCallback(epicsCallback *pcallback);
202 static void ioscanDestroy(void);
203 static void printList(scan_list *psl, char *message);
204 static void scanList(scan_list *psl);
205@@ -448,7 +448,7 @@ int scanpiol(void) /* print pioscan_list */
206 return 0;
207 }
208
209
210-static void eventCallback(CALLBACK *pcallback)
211+static void eventCallback(epicsCallback *pcallback)
212 {
213 scan_list *psl;
214
215@@ -944,7 +944,7 @@ static void spawnPeriodic(int ind)
216 epicsEventWait(startStopEvent);
217 }
218
219
220-static void ioscanCallback(CALLBACK *pcallback)
221+static void ioscanCallback(epicsCallback *pcallback)
222 {
223 ioscan_head *piosh;
224 int prio;
225diff --git a/modules/database/src/std/dev/asSubRecordFunctions.c b/modules/database/src/std/dev/asSubRecordFunctions.c
226index 76943e9..5bbd958 100644
227--- a/modules/database/src/std/dev/asSubRecordFunctions.c
228+++ b/modules/database/src/std/dev/asSubRecordFunctions.c
229@@ -34,7 +34,7 @@
230 /* The following is provided for access security*/
231 /*It allows a CA client to force access security initialization*/
232
233-static void myCallback(CALLBACK *pcallback)
234+static void myCallback(epicsCallback *pcallback)
235 {
236 ASDBCALLBACK *pasdbcallback = (ASDBCALLBACK *)pcallback;
237 subRecord *precord;
238diff --git a/modules/database/src/std/dev/devAiSoftCallback.c b/modules/database/src/std/dev/devAiSoftCallback.c
239index cf38c87..8bf6385 100644
240--- a/modules/database/src/std/dev/devAiSoftCallback.c
241+++ b/modules/database/src/std/dev/devAiSoftCallback.c
242@@ -36,7 +36,7 @@
243
244 typedef struct devPvt {
245 processNotify pn;
246- CALLBACK callback;
247+ epicsCallback callback;
248 long options;
249 int status;
250 int smooth;
251diff --git a/modules/database/src/std/dev/devBiSoftCallback.c b/modules/database/src/std/dev/devBiSoftCallback.c
252index 3144600..607b1af 100644
253--- a/modules/database/src/std/dev/devBiSoftCallback.c
254+++ b/modules/database/src/std/dev/devBiSoftCallback.c
255@@ -35,7 +35,7 @@
256
257 typedef struct devPvt {
258 processNotify pn;
259- CALLBACK callback;
260+ epicsCallback callback;
261 long options;
262 int status;
263 struct {
264diff --git a/modules/database/src/std/dev/devI64inSoftCallback.c b/modules/database/src/std/dev/devI64inSoftCallback.c
265index 9eb5656..8881902 100644
266--- a/modules/database/src/std/dev/devI64inSoftCallback.c
267+++ b/modules/database/src/std/dev/devI64inSoftCallback.c
268@@ -35,7 +35,7 @@
269
270 typedef struct devPvt {
271 processNotify pn;
272- CALLBACK callback;
273+ epicsCallback callback;
274 long options;
275 int status;
276 struct {
277diff --git a/modules/database/src/std/dev/devLiSoftCallback.c b/modules/database/src/std/dev/devLiSoftCallback.c
278index caab523..d833939 100644
279--- a/modules/database/src/std/dev/devLiSoftCallback.c
280+++ b/modules/database/src/std/dev/devLiSoftCallback.c
281@@ -35,7 +35,7 @@
282
283 typedef struct devPvt {
284 processNotify pn;
285- CALLBACK callback;
286+ epicsCallback callback;
287 long options;
288 int status;
289 struct {
290diff --git a/modules/database/src/std/dev/devMbbiDirectSoftCallback.c b/modules/database/src/std/dev/devMbbiDirectSoftCallback.c
291index d785f73..e40a6b0 100644
292--- a/modules/database/src/std/dev/devMbbiDirectSoftCallback.c
293+++ b/modules/database/src/std/dev/devMbbiDirectSoftCallback.c
294@@ -35,7 +35,7 @@
295
296 typedef struct devPvt {
297 processNotify pn;
298- CALLBACK callback;
299+ epicsCallback callback;
300 long options;
301 int status;
302 struct {
303diff --git a/modules/database/src/std/dev/devMbbiSoftCallback.c b/modules/database/src/std/dev/devMbbiSoftCallback.c
304index 3796bce..fee81b5 100644
305--- a/modules/database/src/std/dev/devMbbiSoftCallback.c
306+++ b/modules/database/src/std/dev/devMbbiSoftCallback.c
307@@ -35,7 +35,7 @@
308
309 typedef struct devPvt {
310 processNotify pn;
311- CALLBACK callback;
312+ epicsCallback callback;
313 long options;
314 int status;
315 struct {
316diff --git a/modules/database/src/std/dev/devSiSoftCallback.c b/modules/database/src/std/dev/devSiSoftCallback.c
317index 8f67988..fd0e376 100644
318--- a/modules/database/src/std/dev/devSiSoftCallback.c
319+++ b/modules/database/src/std/dev/devSiSoftCallback.c
320@@ -37,7 +37,7 @@
321 typedef struct devPvt {
322 DBADDR dbaddr;
323 processNotify pn;
324- CALLBACK callback;
325+ epicsCallback callback;
326 long options;
327 int status;
328 struct {
329diff --git a/modules/database/src/std/rec/aaiRecord.c b/modules/database/src/std/rec/aaiRecord.c
330index 7805c9f..51af45f 100644
331--- a/modules/database/src/std/rec/aaiRecord.c
332+++ b/modules/database/src/std/rec/aaiRecord.c
333@@ -356,10 +356,10 @@ static long readValue(aaiRecord *prec)
334 recGblSetSevr(prec, SIMM_ALARM, prec->sims);
335
336 if (prec->sdly >= 0) {
337- CALLBACK *pvt = prec->simpvt;
338+ epicsCallback *pvt = prec->simpvt;
339
340 if (!pvt) { /* very lazy allocation of callback structure */
341- pvt = calloc(1, sizeof(CALLBACK));
342+ pvt = calloc(1, sizeof(epicsCallback));
343 prec->simpvt = pvt;
344 }
345 if (pvt)
346diff --git a/modules/database/src/std/rec/aaiRecord.dbd b/modules/database/src/std/rec/aaiRecord.dbd
347index 15db6d3..b4675b3 100644
348--- a/modules/database/src/std/rec/aaiRecord.dbd
349+++ b/modules/database/src/std/rec/aaiRecord.dbd
350@@ -122,7 +122,7 @@ recordtype(aai) {
351 prompt("Sim. Mode Private")
352 special(SPC_NOMOD)
353 interest(4)
354- extra("CALLBACK *simpvt")
355+ extra("epicsCallback *simpvt")
356 }
357 field(MPST,DBF_MENU) {
358 prompt("Post Value Monitors")
359diff --git a/modules/database/src/std/rec/aaoRecord.c b/modules/database/src/std/rec/aaoRecord.c
360index b717500..ccf0517 100644
361--- a/modules/database/src/std/rec/aaoRecord.c
362+++ b/modules/database/src/std/rec/aaoRecord.c
363@@ -367,9 +367,9 @@ static long writeValue(aaoRecord *prec)
364 status = pdset->write_aao(prec);
365 prec->pact = FALSE;
366 } else { /* !prec->pact && delay >= 0. */
367- CALLBACK *pvt = prec->simpvt;
368+ epicsCallback *pvt = prec->simpvt;
369 if (!pvt) {
370- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
371+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
372 prec->simpvt = pvt;
373 }
374 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
375diff --git a/modules/database/src/std/rec/aaoRecord.dbd b/modules/database/src/std/rec/aaoRecord.dbd
376index a1731a3..20e957f 100644
377--- a/modules/database/src/std/rec/aaoRecord.dbd
378+++ b/modules/database/src/std/rec/aaoRecord.dbd
379@@ -122,7 +122,7 @@ recordtype(aao) {
380 prompt("Sim. Mode Private")
381 special(SPC_NOMOD)
382 interest(4)
383- extra("CALLBACK *simpvt")
384+ extra("epicsCallback *simpvt")
385 }
386 field(MPST,DBF_MENU) {
387 prompt("Post Value Monitors")
388diff --git a/modules/database/src/std/rec/aiRecord.c b/modules/database/src/std/rec/aiRecord.c
389index 5001933..0e35932 100644
390--- a/modules/database/src/std/rec/aiRecord.c
391+++ b/modules/database/src/std/rec/aiRecord.c
392@@ -508,9 +508,9 @@ static long readValue(aiRecord *prec)
393 }
394 prec->pact = FALSE;
395 } else { /* !prec->pact && delay >= 0. */
396- CALLBACK *pvt = prec->simpvt;
397+ epicsCallback *pvt = prec->simpvt;
398 if (!pvt) {
399- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
400+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
401 prec->simpvt = pvt;
402 }
403 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
404diff --git a/modules/database/src/std/rec/aiRecord.dbd.pod b/modules/database/src/std/rec/aiRecord.dbd.pod
405index 69ca65f..e113aa3 100644
406--- a/modules/database/src/std/rec/aiRecord.dbd.pod
407+++ b/modules/database/src/std/rec/aiRecord.dbd.pod
408@@ -516,7 +516,7 @@ simulation mode.
409 prompt("Sim. Mode Private")
410 special(SPC_NOMOD)
411 interest(4)
412- extra("CALLBACK *simpvt")
413+ extra("epicsCallback *simpvt")
414 }
415 }
416
417diff --git a/modules/database/src/std/rec/aoRecord.c b/modules/database/src/std/rec/aoRecord.c
418index c5a84f6..6fa6585 100644
419--- a/modules/database/src/std/rec/aoRecord.c
420+++ b/modules/database/src/std/rec/aoRecord.c
421@@ -574,9 +574,9 @@ static long writeValue(aoRecord *prec)
422 status = dbPutLink(&prec->siol, DBR_DOUBLE, &prec->oval, 1);
423 prec->pact = FALSE;
424 } else { /* !prec->pact && delay >= 0. */
425- CALLBACK *pvt = prec->simpvt;
426+ epicsCallback *pvt = prec->simpvt;
427 if (!pvt) {
428- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
429+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
430 prec->simpvt = pvt;
431 }
432 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
433diff --git a/modules/database/src/std/rec/aoRecord.dbd.pod b/modules/database/src/std/rec/aoRecord.dbd.pod
434index f2361df..9059e44 100644
435--- a/modules/database/src/std/rec/aoRecord.dbd.pod
436+++ b/modules/database/src/std/rec/aoRecord.dbd.pod
437@@ -573,7 +573,7 @@ information on these fields.
438 prompt("Sim. Mode Private")
439 special(SPC_NOMOD)
440 interest(4)
441- extra("CALLBACK *simpvt")
442+ extra("epicsCallback *simpvt")
443 }
444 field(IVOA,DBF_MENU) {
445 prompt("INVALID output action")
446diff --git a/modules/database/src/std/rec/biRecord.c b/modules/database/src/std/rec/biRecord.c
447index be700a5..9c0ddb3 100644
448--- a/modules/database/src/std/rec/biRecord.c
449+++ b/modules/database/src/std/rec/biRecord.c
450@@ -304,9 +304,9 @@ static long readValue(biRecord *prec)
451 }
452 prec->pact = FALSE;
453 } else { /* !prec->pact && delay >= 0. */
454- CALLBACK *pvt = prec->simpvt;
455+ epicsCallback *pvt = prec->simpvt;
456 if (!pvt) {
457- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
458+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
459 prec->simpvt = pvt;
460 }
461 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
462diff --git a/modules/database/src/std/rec/boRecord.c b/modules/database/src/std/rec/boRecord.c
463index 1861823..4cfe62d 100644
464--- a/modules/database/src/std/rec/boRecord.c
465+++ b/modules/database/src/std/rec/boRecord.c
466@@ -98,7 +98,7 @@ struct bodset { /* binary output dset */
467
468 /* control block for callback*/
469 typedef struct myCallback {
470- CALLBACK callback;
471+ epicsCallback callback;
472 struct dbCommon *precord;
473 }myCallback;
474
475@@ -106,7 +106,7 @@ static void checkAlarms(boRecord *);
476 static void monitor(boRecord *);
477 static long writeValue(boRecord *);
478
479-static void myCallbackFunc(CALLBACK *arg)
480+static void myCallbackFunc(epicsCallback *arg)
481 {
482 myCallback *pcallback;
483 boRecord *prec;
484@@ -439,9 +439,9 @@ static long writeValue(boRecord *prec)
485 status = dbPutLink(&prec->siol, DBR_USHORT, &prec->val, 1);
486 prec->pact = FALSE;
487 } else { /* !prec->pact && delay >= 0. */
488- CALLBACK *pvt = prec->simpvt;
489+ epicsCallback *pvt = prec->simpvt;
490 if (!pvt) {
491- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
492+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
493 prec->simpvt = pvt;
494 }
495 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
496diff --git a/modules/database/src/std/rec/calcoutRecord.c b/modules/database/src/std/rec/calcoutRecord.c
497index 8b55255..d9f66af 100644
498--- a/modules/database/src/std/rec/calcoutRecord.c
499+++ b/modules/database/src/std/rec/calcoutRecord.c
500@@ -117,8 +117,8 @@ typedef struct calcoutDSET {
501 #define CA_LINKS_NOT_OK 2
502
503 typedef struct rpvtStruct {
504- CALLBACK doOutCb;
505- CALLBACK checkLinkCb;
506+ epicsCallback doOutCb;
507+ epicsCallback checkLinkCb;
508 short cbScheduled;
509 short caLinkStat; /* NO_CA_LINKS, CA_LINKS_ALL_OK, CA_LINKS_NOT_OK */
510 } rpvtStruct;
511@@ -128,7 +128,7 @@ static void monitor(calcoutRecord *prec);
512 static int fetch_values(calcoutRecord *prec);
513 static void execOutput(calcoutRecord *prec);
514 static void checkLinks(calcoutRecord *prec);
515-static void checkLinksCallback(CALLBACK *arg);
516+static void checkLinksCallback(epicsCallback *arg);
517 static long writeValue(calcoutRecord *prec);
518
519 int calcoutRecDebug;
520@@ -702,7 +702,7 @@ static int fetch_values(calcoutRecord *prec)
521 return(status);
522 }
523
524-static void checkLinksCallback(CALLBACK *arg)
525+static void checkLinksCallback(epicsCallback *arg)
526 {
527
528 calcoutRecord *prec;
529@@ -760,7 +760,7 @@ static void checkLinks(calcoutRecord *prec)
530 prpvt->caLinkStat = NO_CA_LINKS;
531
532 if (!prpvt->cbScheduled && caLinkNc) {
533- /* Schedule another CALLBACK */
534+ /* Schedule another epicsCallback */
535 prpvt->cbScheduled = 1;
536 callbackRequestDelayed(&prpvt->checkLinkCb, .5);
537 }
538diff --git a/modules/database/src/std/rec/eventRecord.c b/modules/database/src/std/rec/eventRecord.c
539index dbaef01..c10c902 100644
540--- a/modules/database/src/std/rec/eventRecord.c
541+++ b/modules/database/src/std/rec/eventRecord.c
542@@ -199,9 +199,9 @@ static long readValue(eventRecord *prec)
543 }
544 prec->pact = FALSE;
545 } else { /* !prec->pact && delay >= 0. */
546- CALLBACK *pvt = prec->simpvt;
547+ epicsCallback *pvt = prec->simpvt;
548 if (!pvt) {
549- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
550+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
551 prec->simpvt = pvt;
552 }
553 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
554diff --git a/modules/database/src/std/rec/eventRecord.dbd b/modules/database/src/std/rec/eventRecord.dbd
555index 57306f5..3010509 100644
556--- a/modules/database/src/std/rec/eventRecord.dbd
557+++ b/modules/database/src/std/rec/eventRecord.dbd
558@@ -77,6 +77,6 @@ recordtype(event) {
559 prompt("Sim. Mode Private")
560 special(SPC_NOMOD)
561 interest(4)
562- extra("CALLBACK *simpvt")
563+ extra("epicsCallback *simpvt")
564 }
565 }
566diff --git a/modules/database/src/std/rec/histogramRecord.c b/modules/database/src/std/rec/histogramRecord.c
567index cac81ff..82fc91a 100644
568--- a/modules/database/src/std/rec/histogramRecord.c
569+++ b/modules/database/src/std/rec/histogramRecord.c
570@@ -100,7 +100,7 @@ struct histogramdset { /* histogram input dset */
571
572 /* control block for callback*/
573 typedef struct myCallback {
574- CALLBACK callback;
575+ epicsCallback callback;
576 histogramRecord *prec;
577 } myCallback;
578
579@@ -110,7 +110,7 @@ static void monitor(histogramRecord *);
580 static long readValue(histogramRecord *);
581
582
583-static void wdogCallback(CALLBACK *arg)
584+static void wdogCallback(epicsCallback *arg)
585 {
586 myCallback *pcallback;
587 histogramRecord *prec;
588@@ -403,9 +403,9 @@ static long readValue(histogramRecord *prec)
589 }
590 prec->pact = FALSE;
591 } else { /* !prec->pact && delay >= 0. */
592- CALLBACK *pvt = prec->simpvt;
593+ epicsCallback *pvt = prec->simpvt;
594 if (!pvt) {
595- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
596+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
597 prec->simpvt = pvt;
598 }
599 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
600diff --git a/modules/database/src/std/rec/histogramRecord.dbd b/modules/database/src/std/rec/histogramRecord.dbd
601index 545ae3f..304038b 100644
602--- a/modules/database/src/std/rec/histogramRecord.dbd
603+++ b/modules/database/src/std/rec/histogramRecord.dbd
604@@ -154,7 +154,7 @@ recordtype(histogram) {
605 prompt("Sim. Mode Private")
606 special(SPC_NOMOD)
607 interest(4)
608- extra("CALLBACK *simpvt")
609+ extra("epicsCallback *simpvt")
610 }
611 field(HOPR,DBF_ULONG) {
612 prompt("High Operating Range")
613diff --git a/modules/database/src/std/rec/int64inRecord.c b/modules/database/src/std/rec/int64inRecord.c
614index c76d96c..8ce2410 100644
615--- a/modules/database/src/std/rec/int64inRecord.c
616+++ b/modules/database/src/std/rec/int64inRecord.c
617@@ -420,9 +420,9 @@ static long readValue(int64inRecord *prec)
618 }
619 prec->pact = FALSE;
620 } else { /* !prec->pact && delay >= 0. */
621- CALLBACK *pvt = prec->simpvt;
622+ epicsCallback *pvt = prec->simpvt;
623 if (!pvt) {
624- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
625+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
626 prec->simpvt = pvt;
627 }
628 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
629diff --git a/modules/database/src/std/rec/int64inRecord.dbd.pod b/modules/database/src/std/rec/int64inRecord.dbd.pod
630index c85992f..edb19a7 100644
631--- a/modules/database/src/std/rec/int64inRecord.dbd.pod
632+++ b/modules/database/src/std/rec/int64inRecord.dbd.pod
633@@ -313,7 +313,7 @@ simulation mode.
634 prompt("Sim. Mode Private")
635 special(SPC_NOMOD)
636 interest(4)
637- extra("CALLBACK *simpvt")
638+ extra("epicsCallback *simpvt")
639 }
640 }
641
642diff --git a/modules/database/src/std/rec/int64outRecord.c b/modules/database/src/std/rec/int64outRecord.c
643index da5a76d..e9170f9 100644
644--- a/modules/database/src/std/rec/int64outRecord.c
645+++ b/modules/database/src/std/rec/int64outRecord.c
646@@ -396,9 +396,9 @@ static long writeValue(int64outRecord *prec)
647 status = dbPutLink(&prec->siol, DBR_INT64, &prec->val, 1);
648 prec->pact = FALSE;
649 } else { /* !prec->pact && delay >= 0. */
650- CALLBACK *pvt = prec->simpvt;
651+ epicsCallback *pvt = prec->simpvt;
652 if (!pvt) {
653- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
654+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
655 prec->simpvt = pvt;
656 }
657 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
658diff --git a/modules/database/src/std/rec/int64outRecord.dbd.pod b/modules/database/src/std/rec/int64outRecord.dbd.pod
659index f765414..1b5003e 100644
660--- a/modules/database/src/std/rec/int64outRecord.dbd.pod
661+++ b/modules/database/src/std/rec/int64outRecord.dbd.pod
662@@ -350,7 +350,7 @@ simulation mode.
663 prompt("Sim. Mode Private")
664 special(SPC_NOMOD)
665 interest(4)
666- extra("CALLBACK *simpvt")
667+ extra("epicsCallback *simpvt")
668 }
669
670 =head3 Invalid Alarm Output Action
671diff --git a/modules/database/src/std/rec/longinRecord.c b/modules/database/src/std/rec/longinRecord.c
672index f72ac91..d524641 100644
673--- a/modules/database/src/std/rec/longinRecord.c
674+++ b/modules/database/src/std/rec/longinRecord.c
675@@ -428,9 +428,9 @@ static long readValue(longinRecord *prec)
676 }
677 prec->pact = FALSE;
678 } else { /* !prec->pact && delay >= 0. */
679- CALLBACK *pvt = prec->simpvt;
680+ epicsCallback *pvt = prec->simpvt;
681 if (!pvt) {
682- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
683+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
684 prec->simpvt = pvt;
685 }
686 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
687diff --git a/modules/database/src/std/rec/longinRecord.dbd b/modules/database/src/std/rec/longinRecord.dbd
688index f0e5a8d..505b336 100644
689--- a/modules/database/src/std/rec/longinRecord.dbd
690+++ b/modules/database/src/std/rec/longinRecord.dbd
691@@ -183,6 +183,6 @@ recordtype(longin) {
692 prompt("Sim. Mode Private")
693 special(SPC_NOMOD)
694 interest(4)
695- extra("CALLBACK *simpvt")
696+ extra("epicsCallback *simpvt")
697 }
698 }
699diff --git a/modules/database/src/std/rec/longoutRecord.c b/modules/database/src/std/rec/longoutRecord.c
700index 5e13e09..06e3b6e 100644
701--- a/modules/database/src/std/rec/longoutRecord.c
702+++ b/modules/database/src/std/rec/longoutRecord.c
703@@ -401,9 +401,9 @@ static long writeValue(longoutRecord *prec)
704 status = dbPutLink(&prec->siol, DBR_LONG, &prec->val, 1);
705 prec->pact = FALSE;
706 } else { /* !prec->pact && delay >= 0. */
707- CALLBACK *pvt = prec->simpvt;
708+ epicsCallback *pvt = prec->simpvt;
709 if (!pvt) {
710- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
711+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
712 prec->simpvt = pvt;
713 }
714 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
715diff --git a/modules/database/src/std/rec/longoutRecord.dbd b/modules/database/src/std/rec/longoutRecord.dbd
716index 626be16..3256818 100644
717--- a/modules/database/src/std/rec/longoutRecord.dbd
718+++ b/modules/database/src/std/rec/longoutRecord.dbd
719@@ -195,7 +195,7 @@ recordtype(longout) {
720 prompt("Sim. Mode Private")
721 special(SPC_NOMOD)
722 interest(4)
723- extra("CALLBACK *simpvt")
724+ extra("epicsCallback *simpvt")
725 }
726 field(IVOA,DBF_MENU) {
727 prompt("INVALID output action")
728diff --git a/modules/database/src/std/rec/lsiRecord.c b/modules/database/src/std/rec/lsiRecord.c
729index 261313f..7396946 100644
730--- a/modules/database/src/std/rec/lsiRecord.c
731+++ b/modules/database/src/std/rec/lsiRecord.c
732@@ -241,9 +241,9 @@ static long readValue(lsiRecord *prec)
733 if (status == 0) prec->udf = FALSE;
734 prec->pact = FALSE;
735 } else { /* !prec->pact && delay >= 0. */
736- CALLBACK *pvt = prec->simpvt;
737+ epicsCallback *pvt = prec->simpvt;
738 if (!pvt) {
739- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
740+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
741 prec->simpvt = pvt;
742 }
743 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
744diff --git a/modules/database/src/std/rec/lsiRecord.dbd b/modules/database/src/std/rec/lsiRecord.dbd
745index 689366f..21f2ba4 100644
746--- a/modules/database/src/std/rec/lsiRecord.dbd
747+++ b/modules/database/src/std/rec/lsiRecord.dbd
748@@ -110,6 +110,6 @@ recordtype(lsi) {
749 prompt("Sim. Mode Private")
750 special(SPC_NOMOD)
751 interest(4)
752- extra("CALLBACK *simpvt")
753+ extra("epicsCallback *simpvt")
754 }
755 }
756diff --git a/modules/database/src/std/rec/lsoRecord.c b/modules/database/src/std/rec/lsoRecord.c
757index dcbe150..9485e38 100644
758--- a/modules/database/src/std/rec/lsoRecord.c
759+++ b/modules/database/src/std/rec/lsoRecord.c
760@@ -282,9 +282,9 @@ static long writeValue(lsoRecord *prec)
761 status = dbPutLinkLS(&prec->siol, prec->val, prec->len);
762 prec->pact = FALSE;
763 } else { /* !prec->pact && delay >= 0. */
764- CALLBACK *pvt = prec->simpvt;
765+ epicsCallback *pvt = prec->simpvt;
766 if (!pvt) {
767- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
768+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
769 prec->simpvt = pvt;
770 }
771 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
772diff --git a/modules/database/src/std/rec/lsoRecord.dbd b/modules/database/src/std/rec/lsoRecord.dbd
773index 8d3a64e..880139a 100644
774--- a/modules/database/src/std/rec/lsoRecord.dbd
775+++ b/modules/database/src/std/rec/lsoRecord.dbd
776@@ -134,6 +134,6 @@ recordtype(lso) {
777 prompt("Sim. Mode Private")
778 special(SPC_NOMOD)
779 interest(4)
780- extra("CALLBACK *simpvt")
781+ extra("epicsCallback *simpvt")
782 }
783 }
784diff --git a/modules/database/src/std/rec/mbbiDirectRecord.c b/modules/database/src/std/rec/mbbiDirectRecord.c
785index 779b732..88d805c 100644
786--- a/modules/database/src/std/rec/mbbiDirectRecord.c
787+++ b/modules/database/src/std/rec/mbbiDirectRecord.c
788@@ -277,9 +277,9 @@ static long readValue(mbbiDirectRecord *prec)
789 }
790 prec->pact = FALSE;
791 } else { /* !prec->pact && delay >= 0. */
792- CALLBACK *pvt = prec->simpvt;
793+ epicsCallback *pvt = prec->simpvt;
794 if (!pvt) {
795- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
796+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
797 prec->simpvt = pvt;
798 }
799 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
800diff --git a/modules/database/src/std/rec/mbbiDirectRecord.dbd b/modules/database/src/std/rec/mbbiDirectRecord.dbd
801index bb432e5..eb70a13 100644
802--- a/modules/database/src/std/rec/mbbiDirectRecord.dbd
803+++ b/modules/database/src/std/rec/mbbiDirectRecord.dbd
804@@ -98,7 +98,7 @@ recordtype(mbbiDirect) {
805 prompt("Sim. Mode Private")
806 special(SPC_NOMOD)
807 interest(4)
808- extra("CALLBACK *simpvt")
809+ extra("epicsCallback *simpvt")
810 }
811 field(B0,DBF_UCHAR) {
812 prompt("Bit 0")
813diff --git a/modules/database/src/std/rec/mbbiRecord.c b/modules/database/src/std/rec/mbbiRecord.c
814index 5995288..0202594 100644
815--- a/modules/database/src/std/rec/mbbiRecord.c
816+++ b/modules/database/src/std/rec/mbbiRecord.c
817@@ -409,9 +409,9 @@ static long readValue(mbbiRecord *prec)
818 }
819 prec->pact = FALSE;
820 } else { /* !prec->pact && delay >= 0. */
821- CALLBACK *pvt = prec->simpvt;
822+ epicsCallback *pvt = prec->simpvt;
823 if (!pvt) {
824- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
825+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
826 prec->simpvt = pvt;
827 }
828 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
829diff --git a/modules/database/src/std/rec/mbbiRecord.dbd b/modules/database/src/std/rec/mbbiRecord.dbd
830index 52f18e4..a6ce71c 100644
831--- a/modules/database/src/std/rec/mbbiRecord.dbd
832+++ b/modules/database/src/std/rec/mbbiRecord.dbd
833@@ -500,6 +500,6 @@ recordtype(mbbi) {
834 prompt("Sim. Mode Private")
835 special(SPC_NOMOD)
836 interest(4)
837- extra("CALLBACK *simpvt")
838+ extra("epicsCallback *simpvt")
839 }
840 }
841diff --git a/modules/database/src/std/rec/mbboDirectRecord.c b/modules/database/src/std/rec/mbboDirectRecord.c
842index dcc2b3c..5c2dd94 100644
843--- a/modules/database/src/std/rec/mbboDirectRecord.c
844+++ b/modules/database/src/std/rec/mbboDirectRecord.c
845@@ -375,9 +375,9 @@ static long writeValue(mbboDirectRecord *prec)
846 status = dbPutLink(&prec->siol, DBR_ULONG, &prec->val, 1);
847 prec->pact = FALSE;
848 } else { /* !prec->pact && delay >= 0. */
849- CALLBACK *pvt = prec->simpvt;
850+ epicsCallback *pvt = prec->simpvt;
851 if (!pvt) {
852- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
853+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
854 prec->simpvt = pvt;
855 }
856 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
857diff --git a/modules/database/src/std/rec/mbboDirectRecord.dbd b/modules/database/src/std/rec/mbboDirectRecord.dbd
858index a6a43b4..ff5fb28 100644
859--- a/modules/database/src/std/rec/mbboDirectRecord.dbd
860+++ b/modules/database/src/std/rec/mbboDirectRecord.dbd
861@@ -118,7 +118,7 @@ recordtype(mbboDirect) {
862 prompt("Sim. Mode Private")
863 special(SPC_NOMOD)
864 interest(4)
865- extra("CALLBACK *simpvt")
866+ extra("epicsCallback *simpvt")
867 }
868 field(IVOA,DBF_MENU) {
869 prompt("INVALID outpt action")
870diff --git a/modules/database/src/std/rec/mbboRecord.c b/modules/database/src/std/rec/mbboRecord.c
871index e708380..2488552 100644
872--- a/modules/database/src/std/rec/mbboRecord.c
873+++ b/modules/database/src/std/rec/mbboRecord.c
874@@ -458,9 +458,9 @@ static long writeValue(mbboRecord *prec)
875 status = dbPutLink(&prec->siol, DBR_USHORT, &prec->val, 1);
876 prec->pact = FALSE;
877 } else { /* !prec->pact && delay >= 0. */
878- CALLBACK *pvt = prec->simpvt;
879+ epicsCallback *pvt = prec->simpvt;
880 if (!pvt) {
881- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
882+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
883 prec->simpvt = pvt;
884 }
885 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
886diff --git a/modules/database/src/std/rec/mbboRecord.dbd b/modules/database/src/std/rec/mbboRecord.dbd
887index 5475029..41f3870 100644
888--- a/modules/database/src/std/rec/mbboRecord.dbd
889+++ b/modules/database/src/std/rec/mbboRecord.dbd
890@@ -510,7 +510,7 @@ recordtype(mbbo) {
891 prompt("Sim. Mode Private")
892 special(SPC_NOMOD)
893 interest(4)
894- extra("CALLBACK *simpvt")
895+ extra("epicsCallback *simpvt")
896 }
897 field(IVOA,DBF_MENU) {
898 prompt("INVALID outpt action")
899diff --git a/modules/database/src/std/rec/seqRecord.c b/modules/database/src/std/rec/seqRecord.c
900index 86d05f2..8b88f80 100644
901--- a/modules/database/src/std/rec/seqRecord.c
902+++ b/modules/database/src/std/rec/seqRecord.c
903@@ -31,7 +31,7 @@
904
905 static void processNextLink(seqRecord *prec);
906 static long asyncFinish(seqRecord *prec);
907-static void processCallback(CALLBACK *arg);
908+static void processCallback(epicsCallback *arg);
909
910 /* Create RSET - Record Support Entry Table*/
911 #define report NULL
912@@ -94,7 +94,7 @@ typedef struct linkGrp {
913
914 /* The list of link-groups for processing */
915 typedef struct seqRecPvt {
916- CALLBACK callback;
917+ epicsCallback callback;
918 seqRecord *prec;
919 linkGrp *grps[NUM_LINKS + 1]; /* List of link-groups */
920 int index; /* Where we are now */
921@@ -241,7 +241,7 @@ static long asyncFinish(seqRecord *prec)
922 }
923
924
925-static void processCallback(CALLBACK *arg)
926+static void processCallback(epicsCallback *arg)
927 {
928 seqRecPvt *pcb;
929 seqRecord *prec;
930diff --git a/modules/database/src/std/rec/stringinRecord.c b/modules/database/src/std/rec/stringinRecord.c
931index 0785a81..fdc1f26 100644
932--- a/modules/database/src/std/rec/stringinRecord.c
933+++ b/modules/database/src/std/rec/stringinRecord.c
934@@ -219,9 +219,9 @@ static long readValue(stringinRecord *prec)
935 }
936 prec->pact = FALSE;
937 } else { /* !prec->pact && delay >= 0. */
938- CALLBACK *pvt = prec->simpvt;
939+ epicsCallback *pvt = prec->simpvt;
940 if (!pvt) {
941- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
942+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
943 prec->simpvt = pvt;
944 }
945 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
946diff --git a/modules/database/src/std/rec/stringinRecord.dbd b/modules/database/src/std/rec/stringinRecord.dbd
947index ec7b2d5..d59ba9a 100644
948--- a/modules/database/src/std/rec/stringinRecord.dbd
949+++ b/modules/database/src/std/rec/stringinRecord.dbd
950@@ -93,6 +93,6 @@ recordtype(stringin) {
951 prompt("Sim. Mode Private")
952 special(SPC_NOMOD)
953 interest(4)
954- extra("CALLBACK *simpvt")
955+ extra("epicsCallback *simpvt")
956 }
957 }
958diff --git a/modules/database/src/std/rec/stringoutRecord.c b/modules/database/src/std/rec/stringoutRecord.c
959index 49f5aec..ddf3028 100644
960--- a/modules/database/src/std/rec/stringoutRecord.c
961+++ b/modules/database/src/std/rec/stringoutRecord.c
962@@ -247,9 +247,9 @@ static long writeValue(stringoutRecord *prec)
963 status = dbPutLink(&prec->siol, DBR_STRING, &prec->val, 1);
964 prec->pact = FALSE;
965 } else { /* !prec->pact && delay >= 0. */
966- CALLBACK *pvt = prec->simpvt;
967+ epicsCallback *pvt = prec->simpvt;
968 if (!pvt) {
969- pvt = calloc(1, sizeof(CALLBACK)); /* very lazy allocation of callback structure */
970+ pvt = calloc(1, sizeof(epicsCallback)); /* very lazy allocation of callback structure */
971 prec->simpvt = pvt;
972 }
973 if (pvt) callbackRequestProcessCallbackDelayed(pvt, prec->prio, prec, prec->sdly);
974diff --git a/modules/database/src/std/rec/stringoutRecord.dbd b/modules/database/src/std/rec/stringoutRecord.dbd
975index 358340c..962c2a8 100644
976--- a/modules/database/src/std/rec/stringoutRecord.dbd
977+++ b/modules/database/src/std/rec/stringoutRecord.dbd
978@@ -99,7 +99,7 @@ recordtype(stringout) {
979 prompt("Sim. Mode Private")
980 special(SPC_NOMOD)
981 interest(4)
982- extra("CALLBACK *simpvt")
983+ extra("epicsCallback *simpvt")
984 }
985 field(IVOA,DBF_MENU) {
986 prompt("INVALID output action")
987diff --git a/modules/database/src/std/rec/waveformRecord.c b/modules/database/src/std/rec/waveformRecord.c
988index 19f4fbf..8d21018 100644
989--- a/modules/database/src/std/rec/waveformRecord.c
990+++ b/modules/database/src/std/rec/waveformRecord.c
991@@ -364,10 +364,10 @@ static long readValue(waveformRecord *prec)
992 prec->pact = FALSE;
993 }
994 else { /* !prec->pact && delay >= 0 */
995- CALLBACK *pvt = prec->simpvt;
996+ epicsCallback *pvt = prec->simpvt;
997
998 if (!pvt) { /* very lazy allocation of callback structure */
999- pvt = calloc(1, sizeof(CALLBACK));
1000+ pvt = calloc(1, sizeof(epicsCallback));
1001 prec->simpvt = pvt;
1002 }
1003 if (pvt)
1004diff --git a/modules/database/src/std/rec/waveformRecord.dbd.pod b/modules/database/src/std/rec/waveformRecord.dbd.pod
1005index 82561d0..b65a408 100644
1006--- a/modules/database/src/std/rec/waveformRecord.dbd.pod
1007+++ b/modules/database/src/std/rec/waveformRecord.dbd.pod
1008@@ -164,7 +164,7 @@ recordtype(waveform) {
1009 prompt("Sim. Mode Private")
1010 special(SPC_NOMOD)
1011 interest(4)
1012- extra("CALLBACK *simpvt")
1013+ extra("epicsCallback *simpvt")
1014 }
1015 field(MPST,DBF_MENU) {
1016 prompt("Post Value Monitors")
1017diff --git a/modules/database/test/ioc/db/callbackParallelTest.c b/modules/database/test/ioc/db/callbackParallelTest.c
1018index f8d0c39..a985cd2 100644
1019--- a/modules/database/test/ioc/db/callbackParallelTest.c
1020+++ b/modules/database/test/ioc/db/callbackParallelTest.c
1021@@ -44,8 +44,8 @@
1022 #define TEST_DELAY(i) ((i / NUM_CALLBACK_PRIORITIES) * DELAY_QUANTUM)
1023
1024 typedef struct myPvt {
1025- CALLBACK cb1;
1026- CALLBACK cb2;
1027+ epicsCallback cb1;
1028+ epicsCallback cb2;
1029 epicsTimeStamp pass1Time;
1030 epicsTimeStamp pass2Time;
1031 double delay;
1032@@ -55,7 +55,7 @@ typedef struct myPvt {
1033
1034 epicsEventId finished;
1035
1036-static void myCallback(CALLBACK *pCallback)
1037+static void myCallback(epicsCallback *pCallback)
1038 {
1039 myPvt *pmyPvt;
1040
1041@@ -74,7 +74,7 @@ static void myCallback(CALLBACK *pCallback)
1042 }
1043 }
1044
1045-static void finalCallback(CALLBACK *pCallback)
1046+static void finalCallback(epicsCallback *pCallback)
1047 {
1048 myCallback(pCallback);
1049 epicsEventSignal(finished);
1050diff --git a/modules/database/test/ioc/db/callbackTest.c b/modules/database/test/ioc/db/callbackTest.c
1051index 3ccc2c2..4b7e24d 100644
1052--- a/modules/database/test/ioc/db/callbackTest.c
1053+++ b/modules/database/test/ioc/db/callbackTest.c
1054@@ -44,8 +44,8 @@
1055 #define TEST_DELAY(i) ((i / NUM_CALLBACK_PRIORITIES) * DELAY_QUANTUM)
1056
1057 typedef struct myPvt {
1058- CALLBACK cb1;
1059- CALLBACK cb2;
1060+ epicsCallback cb1;
1061+ epicsCallback cb2;
1062 epicsTimeStamp pass1Time;
1063 epicsTimeStamp pass2Time;
1064 double delay;
1065@@ -56,7 +56,7 @@ typedef struct myPvt {
1066 epicsEventId finished;
1067
1068
1069-static void myCallback(CALLBACK *pCallback)
1070+static void myCallback(epicsCallback *pCallback)
1071 {
1072 myPvt *pmyPvt;
1073
1074@@ -75,7 +75,7 @@ static void myCallback(CALLBACK *pCallback)
1075 }
1076 }
1077
1078-static void finalCallback(CALLBACK *pCallback)
1079+static void finalCallback(epicsCallback *pCallback)
1080 {
1081 myCallback(pCallback);
1082 epicsEventSignal(finished);
1083diff --git a/modules/libcom/src/taskwd/taskwd.c b/modules/libcom/src/taskwd/taskwd.c
1084index 44ddc77..4f30a5a 100644
1085--- a/modules/libcom/src/taskwd/taskwd.c
1086+++ b/modules/libcom/src/taskwd/taskwd.c
1087@@ -376,7 +376,7 @@ epicsShareFunc void taskwdShow(int level)
1088 mCount, tCount, fCount);
1089 if (level) {
1090 printf("%16.16s %9s %12s %12s %12s\n",
1091- "THREAD NAME", "STATE", "EPICS TID", "CALLBACK", "USR ARG");
1092+ "THREAD NAME", "STATE", "EPICS TID", "epicsCallback", "USR ARG");
1093 pt = (struct tNode *)ellFirst(&tList);
1094 while (pt != NULL) {
1095 epicsThreadGetName(pt->tid, tName, sizeof(tName));

Subscribers

People subscribed via source and target branches