Merge remote-tracking branch 'int64b/master'

* int64b/master: (25 commits)
  std/rec: streamline variable names in int64in/int64out
  std/rec/test: recMiscTest check in64in/out
  ioc/db: dbUnitTest helps support int64
  std/rec: ioc64in/outRecord typed rset
  minor
  std/rec: fix copyright in int64in sources
  std: remove SCM keywords from int64in and int64out sources
  std/rec: fix promptgroups in dbd.pod files
  std/rec: add and improve pod for int64in and int64out
  std/rec: add pod documentation content for int64out
  std/rec: add pod documentation for int64out record
  dbStatic: dbPutStringNum() overflow handling
  dbStatic: more informative error for bad field value
  dbStatic: dbPutStringNum(, "") not an error
  Release Notes
  cvtFastPerform: Rename reserved member names, fix for vxWorks
  Simplify epicsConvertDoubleToFloat()
  More cvtFastPerform changes
  Collate and report by precision
  Restructure cvtFastPerform, fix VxWorks build
  ...
This commit is contained in:
Michael Davidsaver
2017-05-04 20:18:24 -04:00
45 changed files with 6056 additions and 5548 deletions
+39
View File
@@ -21,6 +21,45 @@
-->
<h3>IOC Database Support for 64-bit integers</h3>
<p>The IOC now supports the 64-bit integer field types <tt>DBF_INT64</tt> and
<tt>DBF_UINT64</tt>, and there are new record types <tt>int64in</tt> and
<tt>int64out</tt> derived from the <tt>longin</tt> and <tt>longout</tt> types
respectively that use the <tt>DBF_INT64</tt> data type for their VAL and related
fields. The usual range of Soft Channel device support are included for these
new record types.</p>
<p>All internal IOC APIs such as dbAccess can handle the new field types and
their associated request values <tt>DBR_INT64</tt> and <tt>DBR_UINT64</tt>,
which are implemented using the <tt>epicsInt64</tt> and <tt>epicsUInt64</tt>
typedef's from the <tt>epicsTypes.h</tt> header.</p>
<p>The waveform record type has been updated to support these new field types.
<strong>All waveform device support layers must be updated to recognize the new
type enumeration values</strong>, which had to be inserted before the
<tt>FLOAT</tt> value in the enum <tt>dbfType</tt> and in <tt>menuFtype</tt>. C
or C++ code can detect at compile-time whether this version of base provides
64-bit support by checking for the presence of the <tt>DBR_INT64</tt> macro as
follows (Note that <tt>DB<b>F</b>_INT64</tt> is an enum tag and not a
preprocessor macro):</p>
<blockquote><pre>
#ifdef DBR_INT64
/* Code where Base has INT64 support */
#else
/* Code for older versions */
#endif
</pre></blockquote>
<p>Channel Access does not (and probably never will) directly support 64-bit
integer types, so the new field types are presented to the CA server as
<tt>DBF_DOUBLE</tt> values. This means that field values larger than 2^52
(0x10_0000_0000_0000 = 4503599627370496) cannot be transported over Channel
Access without their least significant bits being truncated. The EPICS V4
pvAccess network protocol <em>can</em> transport 64-bit data types however, and
a future release of the pvaSrv module will connect this ability to the IOC.</p>
<h3>Add EPICS_CA_MCAST_TTL</h3>
<p>Add option EPICS_CA_MCAST_TTL to set the Time To Live (TTL) of any IP multi-cast