-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf
Of Rod Nussbaumer
Sent: Thursday, January 13, 2011 9:27 AM
To: [email protected]
Subject: Access to records from subroutines during iocInit
Hi All.
I have a question/problem, which may simply be me trying to work outside
the expected norms. It involves writing to records during IOC
initialization. I will give a summary of the situation:
A subroutine record has on one of its inputs, a link to a waveform
record. During the INIT subroutine, I call dbGetPdbAddrFromLink() to
locate the waveform record, as well as call dbGetNelements() to find the
size of the respective waveform record. This seems to work.
My intention is to initialize the waveform record with data
algorithmically created. I do this by creating an array, and calling
dbPutField(), using the value saved from the earlier call to
dbGetPdbAddrFromLink(). This results in the following:
A call to 'assert(dbLockIsInitialized)'
by thread '_main_' failed in ../dbLock.c line 239.
EPICS Release EPICS R3.14.11 $R3-14-11$ $2009/08/28 18:47:36$.
Local time is 2011-01-13 09:05:45.332489000 PST
Please E-mail this message to the author or to [email protected]
Calling epicsThreadSuspendSelf()
If I perform the same actions within the PROC subroutine of the
subroutine record, it seems to work as I expected it to. So, if this is
not a bug, is there a proper way to accomplish what I am attempting?
There are no other records referencing or linked to the waveform record.
Its data is used purely for visualization purposes in an EDM X-Y Graph.
Thanks for listening.
Rod Nussbaumer
ISAC Controls, TRIUMF
Vancouver, Canada.