I've posted another iteration. The changes have actually gotten much
shorter.
The first patch changes dbAccess.c and arr.c to save the original value
of DBADDR::pfield before calling get_array_info, then restore it
immediately after.
http://bazaar.launchpad.net/~epics-core/epics-base/array-opt/revision/12397
The second patch changes waveformRecord.c to allow the safe replacement
of BPTR whenever the record is locked. No special allocation, or
pointer tricks, are needed.
http://bazaar.launchpad.net/~epics-core/epics-base/array-opt/revision/12398
I've also included a (demonstration only) device support which cycles
through a set of buffers. Each buffer is written in a dedicated thread
which passes the buffer pointer to the device support read function
where it is stored in BPTR (uses I/O Intr scan). At each iteration the
value of each array element is incremented by one to allow a client to
detect dropped or corrupted updates. This process runs at 1KHz max.
If you want to try it:
cat << EOF > spam.db
record(waveform, "$(P)spam") {
field(DTYP, "Spam Async")
field(SCAN, "I/O Intr")
field(NELM, "$(N=1)")
field(FTVL, "SHORT")
}
EOF
./bin/$(EPICS_HOST_ARCH)/softIoc -m 'P=x:,N=1000' -d spam.db
http://bazaar.launchpad.net/~epics-core/epics-base/array-opt/revision/12399
http://bazaar.launchpad.net/~epics-core/epics-base/array-opt/revision/12400
- Replies:
- Re: double buffered waveformRecord Andrew Johnson
- References:
- double buffered waveformRecord Michael Davidsaver
- Re: double buffered waveformRecord Andrew Johnson
- Re: double buffered waveformRecord Michael Davidsaver
- Re: double buffered waveformRecord Andrew Johnson
- Re: double buffered waveformRecord Ralph Lange
- Re: double buffered waveformRecord Michael Davidsaver
- Navigate by Date:
- Prev:
Re: double buffered waveformRecord Michael Davidsaver
- Next:
Re: double buffered waveformRecord Andrew Johnson
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
<2013>
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: double buffered waveformRecord Michael Davidsaver
- Next:
Re: double buffered waveformRecord Andrew Johnson
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
<2013>
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|