Andrew Johnson
a2d511b6e9
DBD parser accepts record type declarations
...
Record types are the only DBD entries for which the parser
will not accept redefinitions. This change lets it accept
a record type declaration any number of times. However once
a record type declaration has been parsed the full record
type definition cannot be loaded, an error will be raised
if the full definition is seen. The parser will still not
accept a full record type definition more than once either,
any later copies of the record type must be declarations.
2014-07-27 23:55:47 -05:00
Andrew Johnson
8eed4cdd88
Perl DBD Parser: Autovivify record types in device() entries
...
If a record type named in a device() entry does not exist when
the device is seen, the DBD parser will now print a warning
and create an empty record type with that name to hold the
device entry information.
This will allow support modules to be built into libraries that
include their own registerRecordDeviceDriver code, which was
apparently possible with 3.14 although not officially supported.
To avoid the warning message, the DBD file can declare each
record type before the device statement that uses it.
A record type declaration looks like this:
recordtype(ao) {}
device(ao, ....)
An IOC will accept and ignore a record type declaration, but it
must have loaded the full record type definition first.
2014-07-27 23:37:58 -05:00
Andrew Johnson
ee40ee789c
dbStatic: Allow empty recordtype bodies in DBD files
...
A record type with an empty body is a declaration. The IOC will
accept one of these in a DBD file as long as it has already
loaded the full record type definition.
This will allow device support to provide a DBD file that declares
each record type it uses before giving the related device() entry.
Later commits will explain why.
2014-07-27 23:26:01 -05:00
Andrew Johnson
c710a3a898
dbStatic/dbLexRoutines.c fix error message
2014-07-27 15:41:49 -05:00
Andrew Johnson
2de36d3273
Fix lock-set initialization properly.
2014-07-25 17:59:59 -05:00
Michael Davidsaver
c4a1208d6e
epicsSpinTest: add to libCom test harness
2014-07-25 18:17:27 -04:00
Michael Davidsaver
9cb65e5408
epicsSpinTest: plug some leaks
2014-07-25 18:17:02 -04:00
Andrew Johnson
2a9d05248f
Fix epicsSpinTest.c spinThread tests
...
Runs many more rounds, without blocking with the lock held.
2014-07-25 16:21:03 -05:00
Andrew Johnson
752549d1c8
Fix epicsAtomic headers when used from C code
...
Several C++ and C99-isms crept in.
2014-07-25 15:05:58 -05:00
Michael Davidsaver
8fec9d6e00
epicsSpin: try lock return non-blocking
...
Avoid cantProceed() in try lock, even for undefined behavior.
2014-07-25 15:12:02 -04:00
Michael Davidsaver
5824f98972
epicsSpinTest: fix verifyTryLock()
...
avoid sleeping with a spinlock held.
Now test only works on SMP systems.
2014-07-25 15:11:54 -04:00
Michael Davidsaver
9d03275c53
iocInit: ensure dbLock cleanup after iocShutdown cleanup
...
by making dbLock init before initDatabase()
2014-07-25 13:49:55 -04:00
Michael Davidsaver
b5fe4abfa8
switch to use sysInWord and friends
2014-07-25 11:15:27 -04:00
Michael Davidsaver
95b916ecd4
thread pool: mark epicsJobCreate() as safe for job functions
...
Also, use epicsJobMove() to avoid some redundant code
2014-07-25 10:16:20 -04:00
Michael Davidsaver
cbfbce54f9
thread pool: epicsThreadPoolWait return ETIMEOUT
2014-07-25 09:59:46 -04:00
Michael Davidsaver
b3a1fe9c6b
thread pool: fix return of epicsJobUnqueue()
...
Return 0 on success (was queued, now is not),
1 if not queued initially, and EINVAL
if orphaned.
2014-07-24 18:56:27 -04:00
Michael Davidsaver
83dfc7980d
thread pool: handle failure to create worker
...
epicsJobQueue() returns EAGAIN when the first worker
can't be lazily created.
Failure to create workers beyond the first is
silently ignored.
2014-07-24 18:50:19 -04:00
Michael Davidsaver
69d1063067
thread pool: epicsJobQueue return EPERM
...
When pool control prevents operation
2014-07-24 18:19:33 -04:00
Andrew Johnson
9b6e270b97
Final spinlock tidying-up
...
* Abort epicsSpinTest() if epicsSpinCreate() returns NULL
* Adjust RELEASE_NOTES that describe the implementations.
2014-07-24 16:33:35 -05:00
Michael Davidsaver
fc4119094f
thread pool: epicsThreadPoolGetShared accepts NULL as defaults
2014-07-24 14:44:28 -04:00
Michael Davidsaver
fd2edfe94c
release notes
2014-07-24 14:22:52 -04:00
Michael Davidsaver
01a50b5165
thread pool test
2014-07-24 14:22:52 -04:00
Michael Davidsaver
658bd0b570
thread pool implementation
2014-07-24 14:22:52 -04:00
Michael Davidsaver
a8fd14aae1
Thread pool API
2014-07-24 14:22:52 -04:00
Michael Davidsaver
87a6688c17
epicsSpin: remove redundant cantProceed() messages
2014-07-24 10:23:55 -04:00
Ralph Lange
ae518f6e3e
ioc/db/test: Fix Windows build
2014-07-24 14:06:11 +02:00
Michael Davidsaver
3ba5bf943e
epicsSpin: better error messages when mis-use is detected
2014-07-23 18:40:08 -04:00
Andrew Johnson
846ef343e3
Merged ioc-shutdown2 branch.
2014-07-23 16:59:12 -05:00
Andrew Johnson
6bdb8f911a
Suppress errlog output of expected warning messages.
2014-07-23 16:18:32 -05:00
Michael Davidsaver
0bf17be9e3
mmio: vxWorks m68k use default, add weak symbols for old versions
2014-07-16 15:12:56 -04:00
Michael Davidsaver
0bcfbd0ffc
remove unused
2014-07-14 18:16:30 -04:00
Michael Davidsaver
34f0374ca5
dbLock: yet another fix to dbLockCleanupRecords()
...
track the lockRecord allocation
2014-07-14 17:57:17 -04:00
Andrew Johnson
2d4243981f
Fix warnings found by clang
2014-07-12 01:12:08 -05:00
Michael Davidsaver
3755b9eaad
dbLock: free lockSets
2014-07-11 18:49:41 -04:00
Michael Davidsaver
edf1ad0362
dbLock: another fix to dbLockCleanupRecords()
2014-07-11 18:49:41 -04:00
Michael Davidsaver
bb51281d9c
dbPutLinkTest: set # of tests
2014-07-11 16:59:22 -04:00
Michael Davidsaver
fd7a934ce3
dbPutLinkTest: test link string parsing
...
Test parsing to CONTANT and DB_LINK.
dbCa isn't initialized, so no test for CA_LINK.
2014-07-11 16:51:32 -04:00
Michael Davidsaver
f14bfaab24
dbUnitTest: add testdbGetFieldEqual()
2014-07-11 16:47:55 -04:00
Michael Davidsaver
a218bfd75c
dbLock: fix dbLockCleanupRecords
...
all lockRecord s allocated in one block. oops.
2014-07-11 16:27:41 -04:00
Michael Davidsaver
3f11fd1665
dbUnitTest: replace testdbPutField()
...
add testdbPutFieldOk() and testdbPutFieldFail()
which include calls to testPass() or testFail()
Leave testdbVPutField() as a building block.
2014-07-11 10:30:31 -04:00
Michael Davidsaver
ebc3834661
dbUnitTest: testIocInitOk/testIocShutdownOk testAbort() on failure
2014-07-11 10:28:54 -04:00
Andrew Johnson
2fb0b0763d
Implement 64-bit database field types.
...
Incorporates major reworking of the dbConvert.c file.
if the 64-bit stuff gets rejected most of that should
get pulled in anyway.
2014-07-10 18:13:28 -05:00
Michael Davidsaver
f85c3249ab
dbUnitTest: rename
2014-07-10 18:23:49 -04:00
Andrew Johnson
3ff49fc9b2
Fixed build errors, remove dependency on std.
...
Build errors: Include guard missing from epicsUnitTest.h;
dbShutdownTest.c was calling the non-universal strcasecmp()
instead of epicsStrCaseCmp().
ioc/db/test no longer depends on std. I modified
xRecord to make it a working record type, and simplified the
other test programs so they all use the same new expanded
dbd file rather than each making their own. I also added
dbShutdownTest() to epicsRunDbTests().
2014-07-10 14:27:44 -05:00
Andrew Johnson
2bf6d88607
templates: Quote path names in st.cmd files, permits spaces
...
Request from Eric Norum.
2014-07-01 10:55:52 -05:00
Andrew Johnson
3c91c17369
Changes for newer version of Pod::Simple::HTML
2014-06-23 22:14:35 -06:00
Andrew Johnson
5b9bee82a5
Document the sync filter.
...
Also, use enum values where we have them.
2014-06-23 22:11:52 -06:00
Michael Davidsaver
a9d4204d43
dbLock: free LSET
2014-06-23 16:28:28 -04:00
Michael Davidsaver
0c73bb9448
dbChannel: atexit
2014-06-23 16:28:27 -04:00
Michael Davidsaver
c8d9d5e952
dbLock: atexit
2014-06-23 16:28:27 -04:00