This was acomplished by making errSymbolAdd add the error symbol directly
into the global hash table and removing errnumlist which is not needed
anymore.
Unit tests were added for checking the following cases:
- Adding a valid symbol and checking that it exists (fixed by this change)
- Getting an existing error symbol
- Getting a non existing error symbol
- Adding an invalid error symbol (fixed by this change)
- Adding an error symbol with a code that already
exists (fixed by this change)
Therefore, issue #268 was fixed
error: statically allocate error symbol hash table
This will allow calling errSymbolAdd before errSymBld, therefore, a
function adding error symbols can now be run before iocInit or errlogInit
error: add a constant for the minimum module number
Make adding an identical error symbol not fail
A test case was also added which test that adding an error symbol
with same error code and message as one added before will not fail
Add locking to error symbol table
This protects the cases of:
- simultaneously adding and requesting of an error symbol
- simultaneously adding many error symbols
Update release notes regarding adding error symbols
Allow for multiple db_event_cancel() (concurrent or
self-cancel) prior to event_task wakeup.
In db_event_cancel(), immediate free() only if idle
(not queued or in progress). Otherwise, defer free()
to event task. Avoids need to immediately expunge
canceled event from queue. Allow event task to
process canceled events as normal (except no user_sub)
until npend==0.
This was acomplished by making errSymbolAdd add the error symbol directly
into the global hash table and removing errnumlist which is not needed
anymore.
Unit tests were added for checking the following cases:
- Adding a valid symbol and checking that it exists (fixed by this change)
- Getting an existing error symbol
- Getting a non existing error symbol
- Adding an invalid error symbol (fixed by this change)
- Adding an error symbol with a code that already
exists (fixed by this change)
Therefore, issue #268 was fixed
Since Make version 4.4, MAKEFLAGS also contains long options and
overridden variables on the command-line[1].
[1]: https://git.savannah.gnu.org/cgit/make.git/tree/NEWS?h=4.4#n67
This means that parsing by filtering out '--%' doesn't work reliably
anymore, since it doesn't remove overrides:
Running 'make VAR=quacks' gives 'MAKEFLAGS=" -- VAR=quacks"', and
'checkflags' would understand that flags -q, -s, ... were set.
This would get transmitted below into 'QUIET_FLAGS' and
'QUESTION_FLAG', then passed to the 'genVersionHeader.pl' as '-i' and
'-q'.
The result would be that 'genVersionHeader.pl' would never create the
version header (only check for its up-to-date status), leading to
confusing errors:
../misc/epicsRelease.c:25:32: error: expected ')' before 'EPICS_VCS_VERSION'
25 | printf ( "## %s\n", "Rev. " EPICS_VCS_VERSION );
| ~ ^~~~~~~~~~~~~~~~~~
The NEWS file[1] recommends using 'firstword', but unfortunately this is
not compatible with GNUMake < 3.82.