Hi,
I found the reason for records with SIML of type CA and PINI=YES being LINK/INVALID after a reboot:
PINI=YES processing happens before the CA server is initialized. The SIML link does not get resolved during PINI phase process() and the record gets into LINK/INVALID.
Using SIML links of type CA is generally useful, as using DB links pulls all records pointing to the same sim switch record into the same lockset, and - depending on your application - that may be many. (Thousands in our case.)
A legal way out is setting PINI=RUNNING which processes the record after the CA server is up.
In our case this does not work, as we need the PINI processing (records write into the driver's buffer) to be done before interruptAccept (driver starts writing to the device).
What we plan to do is processing all records from the driver after the driver has written to the device, to reset the LINK/INVALID state. Seems like an ugly workaround, though.
Any better ideas? Check for CA being up (or interruptAccept?) when reading a CA type SIML as part of process()?
Thanks,
~Ralph