Commit Graph

16599 Commits

Author SHA1 Message Date
Michael Davidsaver 29490f24c7 dbFreeLinkContents: missing case for RF_IO 2014-07-31 16:22:01 -04:00
Andrew Johnson ab78480d54 Merged spinlockfix branch.
Some last-minute fixes for VxWorks build warnings.
2014-07-31 12:45:40 -05:00
Andrew Johnson 63d2d8de33 Merged cas-intf-addr-list branch. 2014-07-31 11:34:10 -05:00
Andrew Johnson 68bcc77885 Merged alarm-strings branch. 2014-07-31 10:17:24 -05:00
Andrew Johnson b0a330f22a Document changes. 2014-07-30 18:03:34 -05:00
Ralph Lange 01dcbed948 ioc/db/test: add test for recGblCheckDeadband() 2014-07-30 13:36:26 +02:00
Ralph Lange edafb56273 std/filters: make dbnd filter use recGblCheckDeadband() 2014-07-30 10:37:10 +02:00
Ralph Lange f354f880cc std/rec: make all analog type records use new recGblCheckDeadband() 2014-07-30 10:36:24 +02:00
Ralph Lange 6f41e11804 ioc/db: add recGblCheckDeadband() to recGbl library 2014-07-30 10:35:03 +02:00
Andrew Johnson 64c45961ff configure: Fix missing dependency files
Dependency files were not being created for sources that
were only listed in x_SRCS_class variables, because the
code that added those to the x_SRCS var was running after
we had already loaded the dependency files.
2014-07-29 18:16:53 -05:00
Andrew Johnson b3afbea7cf Merged Michael's thread-pool branch.
Made various formatting changes, and fixed one problem in the
test program which failed a test on UP machines.
2014-07-29 16:05:24 -05:00
Andrew Johnson 41502f9525 db: Remove status message from dbpf
The status returned from dbPutField() can now include errors from
the record processing such as a link alarm, so it doesn't mean
what it used to and printing the error might be wrong.
Now we just return the status value.
2014-07-29 12:46:38 -05:00
Michael Davidsaver 716f2679a7 thread pool: don't use reserved names
Avoid global symbols with leading underscore
2014-07-29 12:21:07 -04:00
Michael Davidsaver b1a8b2f20e thread pool: switch thread counts to unsigned int
size_t is considered overly optimistic
2014-07-29 12:18:19 -04:00
Michael Davidsaver 6fee83900e don't include errCommon.h
doesn't exist anymore
2014-07-29 12:06:24 -04:00
Michael Davidsaver 6d11cba513 add missing TESTFILES 2014-07-29 10:32:47 -04:00
Ralph Lange c8946b4fc2 std/rec: fix inf handling in select record 2014-07-29 15:19:12 +02:00
Ralph Lange 633ef60514 std/rec: fix NaN/inf bug in deadband algorithm of analog records 2014-07-29 15:16:37 +02:00
Ralph Lange d86723d62a std/rec/test: add test for deadband mechanism of analog record types 2014-07-29 15:13:10 +02:00
Michael Davidsaver e2461e97ff dbLockTest: test creation of DB links 2014-07-28 14:33:17 -04:00
Andrew Johnson 75da9fd454 Moved dlopen version of osdFindSymbol.c into posix
It was identical in solaris, Darwin and Linux, and had
not been included for cygwin so this reduces duplication.
2014-07-28 12:27:02 -05:00
Andrew Johnson 152e8865cc Cleaned up exampleApp Makefiles 2014-07-28 11:38:30 -05:00
Ralph Lange 69e8c4b48e std/rec: Improve subRecord error messages 2014-07-28 16:19:42 +02:00
Andrew Johnson 5708855c36 Release Notes for loading support.
To Do:
 * Test that -l the flag to registerRecordDeviceDriver.pl works
   as expected on Windows.
 * Modify example template, or create a new template.
 * Work out if/how this affects VxWorks, can we generate a munch
   file that works the same way as a shared library?
 * Test on all arch's, especially Darwin & Windows.
2014-07-28 00:52:34 -05:00
Andrew Johnson 4b1fd8cba0 Modify registerRecordDeviceDriver for loadable support
Don't generate code to register record types that have only
been declared, i.e. that have no fields defined in them.
This allows libraries to created which only contain device
support without the record types that they support. The
library must have a DBD file that may declare the record
types (to avoid generating a warning) and also contains any
other device(), variable(), function() and registrar()
entries for software included in the library.

Adds -l flag to the registerRecordDeviceDriver program,
which results in epicsExportSharedSymbols being defined
and shareLib.h being reloaded so the generated output file
can be linked into the library that it is registering.
This aspect has not been tested on Windows DLLs yet.
2014-07-28 00:18:37 -05:00
Andrew Johnson 163cf7971d Errors from the DBD Parser should stop dbdExpand
Such errors used to be just warnings, now they stop the output
file being generated unless the -D flag was given.
2014-07-28 00:16:16 -05:00
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