Compare commits

..

559 Commits

Author SHA1 Message Date
Marty Kraimer
f0ccd685ad Add comment about linux building with shared libraries by default 2002-12-20 17:20:10 +00:00
Marty Kraimer
403413ac1c add note about portable server on solaris 2002-12-20 15:16:40 +00:00
Marty Kraimer
9b8f6a34fb changed date 2002-12-20 13:09:00 +00:00
Marty Kraimer
940590c882 for R3.14.1 2002-12-20 12:54:56 +00:00
Jeff Hill
2ed228e2f7 o added try/catch around event allocation
o removed copy operator use from ovf event swap however Im not sure this will help
2002-12-20 02:28:41 +00:00
Jeff Hill
48ebbb4ab4 simplified 2002-12-20 02:21:01 +00:00
Jeff Hill
09d516ff05 fixed sun pro warning 2002-12-20 02:20:03 +00:00
Jeff Hill
b99f97e95e fixed sun pro warning 2002-12-19 23:37:55 +00:00
Jeff Hill
7fe3d28c8e fixed sun pro warning 2002-12-19 22:53:52 +00:00
Jeff Hill
da5690d637 made ca_pend_io() tmo configuarble 2002-12-19 22:46:49 +00:00
Jeff Hill
4c551c5587 fixed sunpro warning 2002-12-19 21:26:06 +00:00
Ralph Lange
9c648d7ab3 First try... 2002-12-19 17:32:41 +00:00
Ralph Lange
a07395e47e Fix for hpux 2002-12-19 17:21:55 +00:00
Janet B. Anderson
46e369608d Removed purify comments. 2002-12-19 16:06:49 +00:00
Jeff Hill
181caf02d5 fixed hang at exit problem 2002-12-19 13:54:12 +00:00
Marty Kraimer
addeab1e7e appbin => topbin 2002-12-19 13:38:15 +00:00
Ralph Lange
38e32a9d89 Fixed catime auto-numbering PV format spec 2002-12-19 13:12:38 +00:00
Jeff Hill
5a5e388c55 fixed shutdown bug 2002-12-19 03:12:17 +00:00
Jeff Hill
2b4baa2b68 suppress gnu warning 2002-12-19 02:14:21 +00:00
Jeff Hill
10138d9238 suppress gnu warning 2002-12-19 02:02:18 +00:00
Jeff Hill
c40903e260 suppress gnu warning 2002-12-19 02:00:38 +00:00
Jeff Hill
605c1fb8fe suppress gnu warning 2002-12-19 01:55:32 +00:00
Jeff Hill
8d318d9a99 suppress gnu warning 2002-12-19 01:29:57 +00:00
Jeff Hill
6a32e216f7 increased timeout 2002-12-19 01:28:36 +00:00
Jeff Hill
f6c13478ab test epicsTime::show() 2002-12-19 01:24:20 +00:00
Jeff Hill
117c5a7d6d fixed gnu warnings 2002-12-19 01:23:36 +00:00
Janet B. Anderson
b2ff9f1094 Added static LDFLAGS and LDLIBS. 2002-12-18 22:43:56 +00:00
Jeff Hill
ada93e313d eliminated annoying 5 second delay when waiting for completion 2002-12-18 22:37:49 +00:00
Jeff Hill
b970279a82 added commented out debug message 2002-12-18 22:35:44 +00:00
Jeff Hill
625883f248 better message 2002-12-18 16:59:57 +00:00
Jeff Hill
3203754b52 minor optimization in the unreference routine 2002-12-18 02:38:34 +00:00
Jeff Hill
a22835e835 fixed a potential schedualing problem related to changed timer behavior, but
I have not been able to cause this problem to occur during testing
2002-12-18 02:36:09 +00:00
Jeff Hill
69f584ac9d dont use /Fr, and include support for C++ exceptions and rtti 2002-12-18 02:15:54 +00:00
Jeff Hill
979ab32d9a define WIN32 if it isnt defined to avoid winsock2's messing with structure
member alignment
2002-12-18 01:41:43 +00:00
Andrew Johnson
894930b58b Added some commands to allow run-time queries of the registry. 2002-12-17 20:01:13 +00:00
Jeff Hill
448010b6ad fixed hpux accc warning 2002-12-17 16:55:41 +00:00
W. Eric Norum
ce3bbc453d Provide comments and alernatives for selection of command-line editing package. 2002-12-17 14:47:25 +00:00
Marty Kraimer
4d872b9ca9 more notes for 3.14.1 2002-12-17 12:47:54 +00:00
Janet B. Anderson
6a1ab8221d Removed if test. 2002-12-16 22:47:17 +00:00
Janet B. Anderson
9d57d57ed0 Changed SHRLIB_LDFLAGS_* to += definition. 2002-12-16 22:45:38 +00:00
Janet B. Anderson
0ec42a9dae Make SHARED_LIBRARIES=YES. Modified comment. 2002-12-16 21:51:39 +00:00
Janet B. Anderson
8e807bf6b4 Fixed chomp. 2002-12-16 20:25:53 +00:00
Janet B. Anderson
789d7fe5d0 Commented out GNU_DIR 2002-12-16 17:21:03 +00:00
W. Eric Norum
6759cb7f65 Must set ticksPerSecond before using it! 2002-12-16 16:59:34 +00:00
Janet B. Anderson
b3282bb58f Now cygwin's gcc, g++, ar, ld, and ranlib must be in user's path 2002-12-16 16:19:44 +00:00
Janet B. Anderson
b86a21ed57 Updated for R3.14 2002-12-16 16:17:44 +00:00
Janet B. Anderson
cc699b74df Updated solaris path info. 2002-12-16 16:11:17 +00:00
Marty Kraimer
2c94593c8c dont chop after chomp 2002-12-16 15:47:23 +00:00
Ralph Lange
46111a9065 += Fixed HPUX compiler warning 2002-12-16 13:34:02 +00:00
Jeff Hill
4a730a5b88 fixed debug code 2002-12-13 20:45:57 +00:00
Jeff Hill
b488eb54ad cleaned up locking (also avoid destroying a lock that we own on Linux) 2002-12-13 19:39:46 +00:00
Jeff Hill
e06090bb99 fixed premature shutdown under load bug 2002-12-13 18:31:48 +00:00
Marty Kraimer
ba6ce39c67 add stupid decoration for windows 2002-12-13 17:21:50 +00:00
Andrew Johnson
9c0e801674 Added SHRLIB_SEARCH_DIRS option to linux-x86, allows absolute paths to
shared library directories to be burned into executable and shared
library products.
2002-12-13 17:17:07 +00:00
Janet B. Anderson
ed92859eaf Added chomp. 2002-12-13 15:27:42 +00:00
Marty Kraimer
483d1ea3f0 more notes for 3.14.1 2002-12-13 13:42:04 +00:00
Marty Kraimer
5b84bd81b1 add eltc and coreRelease 2002-12-13 13:11:51 +00:00
Jeff Hill
e53adb99cf improved shutdown 2002-12-13 00:54:34 +00:00
Jeff Hill
256836fe59 fixed missing parm for old version of posix 2002-12-13 00:17:16 +00:00
Janet B. Anderson
2b1fd2f6f1 Added install for *.vdb files and generalized template definition. 2002-12-12 22:39:40 +00:00
W. Eric Norum
3ee40c3321 Fix up change to match new os-dependent mutex API. 2002-12-12 21:57:02 +00:00
Jeff Hill
06aa996962 avoid recursive locking in once only function 2002-12-12 20:52:56 +00:00
Marty Kraimer
3e1af8ce08 must use fprintf(stdout not printf so that help works on vxWorks 2002-12-12 20:09:36 +00:00
Marty Kraimer
8d73716fbd register setIocLogDisable, callbackSetQueueSize, dbPvdTableSize, scanOnceSetQueueSize, and errlogInit 2002-12-12 19:20:20 +00:00
Marty Kraimer
1589c1c3ec Let iocLofDisable be dynamically changed 2002-12-12 19:00:24 +00:00
Marty Kraimer
97caf300d3 dbStaticPvt needed for registering dbPvdTableSize 2002-12-12 18:50:06 +00:00
Janet B. Anderson
4dcbc1b278 Added comments about CAPFAST_TEMPLATES and SCH2EDIF_PATH definitions. 2002-12-12 17:26:12 +00:00
Janet B. Anderson
20cbc2583e R3.14.1 2002-12-12 15:58:02 +00:00
Jeff Hill
a863314254 fixed gnu warning 2002-12-12 15:29:25 +00:00
Jeff Hill
7aac2ec883 improved prioritized channel test 2002-12-12 15:27:57 +00:00
Jeff Hill
2f2d4bfae7 conditionally compile in mutex owner logging 2002-12-12 14:50:27 +00:00
Jeff Hill
e0c75e80bc the portable success test for ioctl is if it returns an int greater than or equal to zero 2002-12-12 01:15:19 +00:00
Jeff Hill
a612619458 continue with lock applied is holding lock? 2002-12-12 01:01:32 +00:00
Jeff Hill
d0116a0669 fixed missing status 2002-12-12 00:27:29 +00:00
Jeff Hill
6b439d6b97 avoid chiken an egg problems during init by not using osi routines at osd level 2002-12-12 00:23:45 +00:00
Janet B. Anderson
f0b9b606d5 Changes for capfast and OPT. 2002-12-12 00:08:30 +00:00
Jeff Hill
737211aff7 fixed gnu warning 2002-12-11 23:21:29 +00:00
Jeff Hill
648f60656a added struct for C 2002-12-11 23:13:13 +00:00
Jeff Hill
fa1b9181cb added capability to record the last owner of the mutex, but perhaps
this should be active only with debug builds
2002-12-11 23:01:49 +00:00
Jeff Hill
3c136f74d8 added epicsThreadIdGetSelf() performance test 2002-12-11 22:56:53 +00:00
Jeff Hill
5aa8fbb3c9 supress error message about bad fd when its a normal abort shutdown 2002-12-11 19:14:19 +00:00
Marty Kraimer
50d6a77ce1 cosmetic changes 2002-12-11 19:14:15 +00:00
Jeff Hill
8ce8820ecd fix for a problem that might occur on smp systems but has not been observed 2002-12-11 19:05:47 +00:00
Marty Kraimer
e8d03dc4d6 get rid of unnecessary pthread_self 2002-12-11 18:30:33 +00:00
Marty Kraimer
43eae2b3c3 more notes for R3.14.1 2002-12-11 13:36:40 +00:00
Jeff Hill
dc5f217493 simplified 2002-12-11 02:11:16 +00:00
Jeff Hill
2ad0b9e362 shut up purify (mistake is in winsock but we can init the var and avoid the umr) 2002-12-11 01:20:55 +00:00
Jeff Hill
b631253c9d define pure virtual ipAddrToAsciiAsynchronous::ioCompletionNotify for
situations where the derived class's destructor is running precisely when
the io completes, but the ipAddrToAsciiAsynchronous destructor has
not yet run
2002-12-11 01:19:37 +00:00
Jeff Hill
f4b01c2d59 added diagnostics 2002-12-11 00:01:31 +00:00
Jeff Hill
55d3b8a9f0 cosmetic 2002-12-10 23:57:02 +00:00
Jeff Hill
8ed40e2118 fixed code that no longer works with gcc 3.2 agressive alias analysis 2002-12-10 23:48:46 +00:00
Jeff Hill
5b1087379f cleaned up test 2002-12-10 20:03:12 +00:00
Marty Kraimer
63abcb5e96 changes for 3.14.1 2002-12-10 19:17:17 +00:00
Jeff Hill
8cb253154e cosmetic 2002-12-10 17:50:35 +00:00
Jeff Hill
be1b93bca0 switch back to using peek to see if bytes are coming 2002-12-10 17:04:59 +00:00
Jeff Hill
057dc7e2b2 fixed premature disconnect under load bug 2002-12-10 16:59:53 +00:00
Jeff Hill
416dd6bfda dont return void from a void function (some compilers dont support this) 2002-12-10 16:59:36 +00:00
Janet B. Anderson
02de364dff Change to a single unsigned i definition. 2002-12-10 15:30:01 +00:00
Jeff Hill
d70ba845e5 dont take (and keep) the lock in the destructor because on POSIX its not allowed to own a mutex when it is destroyed 2002-12-09 23:53:12 +00:00
Janet B. Anderson
9286244343 Bug fix for Crun. 2002-12-09 22:37:03 +00:00
Janet B. Anderson
4552e55f18 Changes from R3.13 branch plus updates for R3.14.1. 2002-12-09 20:32:43 +00:00
Janet B. Anderson
0438779bf8 Added Com_DIR definition. 2002-12-09 19:52:14 +00:00
Janet B. Anderson
2904307894 Updates for solaris version. 2002-12-09 17:08:29 +00:00
Janet B. Anderson
0c02e3df3f Added vxWorks-ppc60*_long targets. 2002-12-09 15:58:47 +00:00
Marty Kraimer
57a288d912 check for INT_MAX; Use epicsTypes for long and unsigned long fields 2002-12-09 15:37:38 +00:00
Janet B. Anderson
e90e86aadd Added compatibility define for dbDumpFldDes 2002-12-07 18:21:08 +00:00
Marty Kraimer
54ee23afb9 changes for long being 64 bits 2002-12-06 14:13:36 +00:00
Marty Kraimer
6f8cadf2d2 get rid of warning message 2002-12-06 14:09:47 +00:00
Marty Kraimer
f838df514a get rid of warning messages 2002-12-06 13:47:40 +00:00
Jeff Hill
b9fc36e754 fixed borland build 2002-12-06 02:22:06 +00:00
Jeff Hill
81e366791a fix undefined symbols with gnu 2002-12-06 00:47:48 +00:00
Jeff Hill
eaf3d04e51 fixed throws specification 2002-12-06 00:36:39 +00:00
Jeff Hill
c041b69848 cleaned up blockUntilBytesArePendingInOS () 2002-12-06 00:35:38 +00:00
Jeff Hill
b075effc76 changed name of R3.14 ca client status 2002-12-06 00:22:50 +00:00
Jeff Hill
7082532001 distinguish between db status and other types 2002-12-06 00:22:24 +00:00
Jeff Hill
cd52995cfa some initial steps towards fre list based memory management 2002-12-06 00:05:55 +00:00
Jeff Hill
467ff91c4f clean up 2002-12-05 23:59:44 +00:00
Jeff Hill
ad61c92957 optimized 2002-12-05 23:54:21 +00:00
Jeff Hill
234cb25dbe new member function 2002-12-05 23:49:33 +00:00
Jeff Hill
a9cb77f196 dont spin for 50 calls to recv() if the incoming circuit is full - 5 times is probably better 2002-12-05 23:49:13 +00:00
Jeff Hill
e5684a3296 changed name of error code 2002-12-05 23:44:25 +00:00
Jeff Hill
62b4c55d25 removed unused parameter 2002-12-05 23:44:06 +00:00
Jeff Hill
58dea0cea9 moved error message table out of header file 2002-12-05 23:43:38 +00:00
Jeff Hill
fd2e9764a4 cosmetic 2002-12-05 23:43:04 +00:00
Jeff Hill
bdc11782b9 moved error message table here 2002-12-05 23:42:31 +00:00
Jeff Hill
e7ca950fbb simplified now that epicsMutexLockWithTimeout() is gone 2002-12-05 23:39:17 +00:00
Jeff Hill
59a8a70d4a optimized 2002-12-05 23:19:43 +00:00
Jeff Hill
da20240ba4 code simplification 2002-12-05 22:02:26 +00:00
Jeff Hill
f9a30fac96 fix sunpro and ms warning 2002-12-05 21:58:24 +00:00
Jeff Hill
33ffc42b15 FIX sunpro WARNING 2002-12-05 21:57:27 +00:00
Janet B. Anderson
9c4495df3b Removed comment line. 2002-12-05 20:39:04 +00:00
Janet B. Anderson
0b4a32c6bc Crun is needed only for solaris 8. 2002-12-05 20:37:36 +00:00
Marty Kraimer
ace4e5a9f6 epicsMutexLockWithTimeout no longer exists 2002-12-04 14:37:21 +00:00
Marty Kraimer
faed748404 implement fast mutex for posix; remove epicsMutexLockWithTimeout 2002-12-04 14:36:41 +00:00
Marty Kraimer
4572c756f3 add -D_XOPEN_SOURCE=500 2002-12-04 14:27:00 +00:00
Marty Kraimer
7581247789 build for 68040 2002-12-04 14:26:14 +00:00
W. Eric Norum
eb157872bd Use EPICS logging routines. No more syslog.
Unless othersise specified, run the network daemons at a lower priority than
the EPICS scan threads.  This makes the scan response much more deterministic.
2002-12-03 22:00:12 +00:00
Janet B. Anderson
a2b7674eb1 Updated files list for R3.14.1 2002-12-03 21:40:01 +00:00
Janet B. Anderson
ae9b0cd3bd Removed PROD_VERSION definition. 2002-12-03 20:26:21 +00:00
Jeff Hill
500c0e22ba fix undefined symbols on Tornado II 2002-12-03 00:46:10 +00:00
Jeff Hill
5af2e2bb18 fix undefined symbols on Tornado II 2002-12-03 00:37:58 +00:00
Marty Kraimer
a5e80e7872 add return type to main 2002-12-02 20:43:45 +00:00
Janet B. Anderson
d773c5c10c Changed default CROSS_COMPILER_TARGET_ARCHS to nothing. 2002-12-02 15:59:14 +00:00
Marty Kraimer
22898be749 add epicsThreadPriorityIocsh andepicsThreadPriorityBaseMax 2002-12-02 15:58:55 +00:00
Marty Kraimer
c0d22b1e1d Allow hex doe VME_IO, CAMAC_IO, AB_IO, GPIB_IO, BITBUS_IO, BBGPIB_IO, VXI_IO 2002-12-02 15:20:33 +00:00
Marty Kraimer
8ed89fe9ce cosmetic changes 2002-12-02 15:14:08 +00:00
Marty Kraimer
d37c75c9e9 get rid of warning message 2002-12-02 14:51:54 +00:00
W. Eric Norum
d8c932a6ca Add prototype for OSI->OSS priority mapper. 2002-11-29 20:03:30 +00:00
W. Eric Norum
8d75c8baed Fix up definition of CONFORM_CXXFLAGS.
Move definition of command-line library OP_SYS_LDLIBS so that the value
isn't destroyed.
2002-11-29 14:53:21 +00:00
W. Eric Norum
384e3af4b5 Latest RTEMS add-on packages provide libtecla so make it the default on RTEMS. 2002-11-29 14:52:14 +00:00
Janet B. Anderson
208aa3ce0b Simplified complier option definitions with T_A and OS_CLASS. 2002-11-27 21:40:23 +00:00
Janet B. Anderson
38596ab6cd Removed -nostdinc from cross builds. Caused problems with tornado2.2 build.
Was told it was not needed.
2002-11-27 21:37:33 +00:00
Janet B. Anderson
f131fe59ac Removed rebuild from ACTIONS definition. 2002-11-27 21:35:07 +00:00
W. Eric Norum
6f7ecedea4 Link -lCom after -lrtemsCom since the rtems_init routines now use the
error logging functions from libCom.
2002-11-27 17:18:28 +00:00
Marty Kraimer
defcf41b0d always include stdlib 2002-11-27 16:16:28 +00:00
Jeff Hill
cd56605b19 use correct type for status 2002-11-27 01:59:31 +00:00
Jeff Hill
539da2f37e added diagnostic 2002-11-27 01:58:42 +00:00
Jeff Hill
883924dda6 use STRICT 2002-11-26 23:24:16 +00:00
Jeff Hill
bf9491592c support W95 except if its a 64 bit build 2002-11-26 23:24:00 +00:00
Jeff Hill
a05353b351 cleaned up reference() function 2002-11-26 01:59:55 +00:00
Janet B. Anderson
9052d64be3 Moved COMMANDLINE definitions. 2002-11-25 23:34:40 +00:00
Jeff Hill
b59f8a3759 fixed arith overflow when computing ref count limit 2002-11-25 23:28:12 +00:00
Janet B. Anderson
f73e968d77 Chnaged java directory name in path. 2002-11-25 22:52:16 +00:00
Janet B. Anderson
520ac60771 Moved ctdt definitions. 2002-11-25 22:46:25 +00:00
Janet B. Anderson
e4bc78f4cf Moved dollars-in-identifiers flag to CONFIG_COMMON. 2002-11-25 22:37:03 +00:00
Janet B. Anderson
a91ff3f031 Added Command-line input support define for epicsReadline.c. 2002-11-25 22:28:34 +00:00
Janet B. Anderson
22e557ffad Modified defaults for command-line input support. 2002-11-25 22:25:44 +00:00
Jeff Hill
cff2c0d5f8 its probably wise (based on failures during stress testing) to use a 32 bit
reference counter in gdd
2002-11-25 22:18:20 +00:00
Janet B. Anderson
74e7c6eb0e Initial version. 2002-11-22 20:21:21 +00:00
Janet B. Anderson
40e6553dcc Updates for R3.14.1. 2002-11-22 20:20:48 +00:00
Janet B. Anderson
f81bff13fa Replaced -traditional with -fdollars-in-identifiers on ctdt compiles. 2002-11-22 19:05:07 +00:00
Janet B. Anderson
e29d86de0b Moved LDLIBS_READLINE LDLIBS_LIBTECLA to os directory. 2002-11-22 19:03:36 +00:00
W. Eric Norum
11f5331576 Add to provide signal-related stubs. 2002-11-21 15:07:05 +00:00
W. Eric Norum
0ae4e0fb16 Remove reference to osdReadline.h. Command-line library selection is now
done in CONFIG_SITE.
2002-11-20 20:26:52 +00:00
W. Eric Norum
1c7428c1cf Change command-line input to allow CONFIG_SITE selection of libtecla,
GNU readline, or built-in EPICS routines.
2002-11-20 20:17:36 +00:00
Janet B. Anderson
1e14394d92 Added TOOL_FAMILY = GNU definition. 2002-11-15 22:36:07 +00:00
Janet B. Anderson
938a80e092 Added comments. 2002-11-15 22:32:21 +00:00
Janet B. Anderson
bd211590b3 Removed -mlongcall option. 2002-11-15 22:16:39 +00:00
Janet B. Anderson
0482c55599 Added additional T_A rules for USR_CFLAGS, USR_CXXFLAGS, and USR_CPPFLAGS. 2002-11-15 21:43:04 +00:00
Janet B. Anderson
6195077e19 Updated template rules. Removed shell command. 2002-11-15 21:34:07 +00:00
Jeff Hill
f4b94967a8 workaround for earlier versions of the wiondows SDK 2002-11-14 22:19:35 +00:00
Jeff Hill
151d115378 workaround visual c++ 6.0 bugs 2002-11-14 22:14:29 +00:00
Jeff Hill
d8aa4eb679 upgraded error code section 2002-11-13 16:51:43 +00:00
Jeff Hill
6a04e56e60 fixed comment 2002-11-12 19:16:20 +00:00
W. Eric Norum
d5d63e0ebd Add temporary configuration for PPC network device. 2002-11-12 18:18:50 +00:00
W. Eric Norum
8579ce2e26 Clean up architecture-specific hooks.
Add hook for __i386__ remote serial debugging.
2002-11-12 18:18:19 +00:00
Jeff Hill
d5685073ad added missing epicsShareDef (should impact only the VAX) 2002-11-12 16:56:18 +00:00
Ralph Lange
a5c21db367 HP warning fix: missing newline at EOF. 2002-11-12 10:55:07 +00:00
Ralph Lange
f301c33faf Fixed bogus undefined symbols with hpux aCC compiler. 2002-11-12 10:47:05 +00:00
Ralph Lange
b562b9557f Moved STATIC_LDFLAGS out of LDFLAGS.
See http://www.aps.anl.gov/epics/mantis/view_bug_advanced_page.php?f_id=20
2002-11-12 10:32:09 +00:00
Ralph Lange
cd6a141f37 Fix for static gcc builds 2002-11-12 10:17:21 +00:00
Ralph Lange
77085e368c Moved SHARED_LIBRARIES definition, as this is a target feature 2002-11-12 09:15:54 +00:00
Ralph Lange
9de520c77b comments++ 2002-11-12 08:17:51 +00:00
Ralph Lange
29ad70d2bc Bugfix for static build 2002-11-12 08:16:34 +00:00
Ralph Lange
43997a4387 DST Changes for 2003 2002-11-12 07:53:30 +00:00
Ralph Lange
d7ff4f71e4 Fix for HP native only compiler flags 2002-11-12 07:16:24 +00:00
Janet B. Anderson
508c077175 Compile *ctdt.c files with COMPILE.ctdt line. 2002-11-11 21:51:58 +00:00
Janet B. Anderson
0c61b40bc0 Added COMPILE.ctdt definition (no -pedantic option). 2002-11-11 21:50:59 +00:00
Janet B. Anderson
9fa57de689 Added Is Tornado version >= 2.2 definition - TORNADO_VERSION_2_2 2002-11-11 21:49:10 +00:00
Janet B. Anderson
0af674eb45 Added GNU=NO to defaults. 2002-11-11 19:45:04 +00:00
Janet B. Anderson
58a05643b3 Added GNU=YES definition. 2002-11-11 19:28:11 +00:00
Janet B. Anderson
7d39a87442 Removed duplicates in TARGET_* definitions. 2002-11-08 16:17:58 +00:00
Ralph Lange
6f8f059de7 Fixed gcc warning. 2002-11-07 19:18:39 +00:00
Ralph Lange
d429387e8a Fixed gcc warning. 2002-11-07 18:48:59 +00:00
Ralph Lange
140bf4a89a Fixed printf warnings by casting size_t to unsigned long. 2002-11-07 18:36:41 +00:00
Ralph Lange
0a517a4fa4 *** empty log message *** 2002-11-07 18:04:30 +00:00
Ralph Lange
3317eae19d Build shared libraries on HPUX. 2002-11-07 17:59:55 +00:00
Ralph Lange
6ea50e50e6 Bugfix (compiler options). 2002-11-07 17:58:59 +00:00
Ralph Lange
9990225f23 Fixed HPUX compiler version string. 2002-11-07 17:50:56 +00:00
Ralph Lange
3bab48bdb7 Suppressed HPUX compiler warnings. 2002-11-07 17:48:30 +00:00
Ralph Lange
e062860774 Suppress more HPUX compiler warnings. 2002-11-07 17:47:10 +00:00
Ralph Lange
98a88d9d74 Suppressed HPUX warnings. 2002-11-07 17:39:19 +00:00
Ralph Lange
d7fe8efef6 Suppressed HPUX warnings. 2002-11-07 17:18:27 +00:00
Ralph Lange
89c4e229da Fixed warning (unused function argument). 2002-11-07 17:11:26 +00:00
Ralph Lange
81a7a8cc85 Fixed implementation of notify() to match its declaration. 2002-11-07 17:10:21 +00:00
Jeff Hill
75ed51dc1c better diagnostic 2002-11-07 17:10:17 +00:00
Ralph Lange
e6501454af Fixed macro name clash. 2002-11-07 17:08:30 +00:00
Jeff Hill
8c936886e8 fixed gnu warning 2002-11-06 22:40:17 +00:00
Jeff Hill
3bcc880e73 updated caEventRate to allow multiple subscriptions and provide better statistics 2002-11-06 22:37:17 +00:00
Jeff Hill
721c6f3fde fixed wrong argument 2002-11-06 19:17:39 +00:00
Jeff Hill
f637fd1c72 avoid conversion ambiguities 2002-11-06 19:17:13 +00:00
Jeff Hill
1d69254f73 added assignment operator 2002-11-06 19:08:37 +00:00
Jeff Hill
a9250069de adjusted what is and isnt supported by egcs 2.95 2002-11-05 21:12:25 +00:00
Jeff Hill
83a6109f04 tabs => spaces 2002-11-05 20:47:51 +00:00
Janet B. Anderson
903361a3fd Modified comment regarding EPICS_HOST_ARCH. 2002-11-05 15:44:02 +00:00
Ralph Lange
51cda206ca HPUX warning fix 2002-11-05 15:02:07 +00:00
Janet B. Anderson
394d66fcdd Bug fix for definition cleanArchTargets. 2002-11-05 14:14:35 +00:00
Janet B. Anderson
65d9d03e2b Added javadoc rules and definitions. 2002-11-05 13:47:33 +00:00
Jeff Hill
6e2262aecf fixed bogus undefined symbols with hpux compiler 2002-11-04 23:25:41 +00:00
Jeff Hill
a1e29d53e3 apparently gcc 2.95 does not support the throw specification 2002-11-04 22:08:45 +00:00
Janet B. Anderson
9bdba43fc7 Modified doc rule to use JAVADOCCMD. 2002-11-04 17:54:31 +00:00
Janet B. Anderson
620c1da354 Moved includes and definitions depending on ifdef T_A. 2002-11-04 17:31:02 +00:00
Ralph Lange
542a84f00b beauty 2002-11-04 14:07:56 +00:00
Ralph Lange
f44a64ed4c Template instantiation needs -fPIC for link command 2002-11-04 14:07:22 +00:00
Ralph Lange
a9be8e8c52 Full shared lib name 2002-11-04 14:06:40 +00:00
Ralph Lange
44eb9fcbf4 Bugfix: '+z' is compiler (not system) flag 2002-11-04 13:05:19 +00:00
Ralph Lange
c5e9ed8311 Using default location 2002-11-04 13:04:38 +00:00
Ralph Lange
5aba97c580 += HPUX using gnu compiler 2002-11-04 12:50:01 +00:00
Janet B. Anderson
08ba669094 Allowed names with decimal points. 2002-11-04 12:25:19 +00:00
Jeff Hill
8fdf6c18dc workaround borland 5.5 bug 2002-11-02 00:32:44 +00:00
Jeff Hill
5402eabe08 removed extra ws 2002-11-02 00:08:02 +00:00
Jeff Hill
2f70fd09b4 fixed gnu warning 2002-11-02 00:07:41 +00:00
Jeff Hill
81674af9bb better comments 2002-11-02 00:06:47 +00:00
Jeff Hill
ee810d4b0b fixed comment 2002-11-01 21:22:37 +00:00
Jeff Hill
c9d2317f31 improved message 2002-11-01 21:10:24 +00:00
Jeff Hill
c983a4887c fix arguments are reversed on pthread_kill() 2002-11-01 21:07:30 +00:00
Jeff Hill
5494603e75 uncommented free list release 2002-11-01 18:18:29 +00:00
Jeff Hill
e772ce948c fixed gnu warnings 2002-11-01 18:13:51 +00:00
Jeff Hill
250a5418c1 comment out unused parameter 2002-11-01 17:25:03 +00:00
Jeff Hill
2daf1edf51 declare status when it is used 2002-11-01 17:24:09 +00:00
Jeff Hill
c9468cdf8e moved signaling code 2002-11-01 17:22:23 +00:00
W. Eric Norum
e29727f600 Add a couple of example configuration files for RTEMS PowerPC targets. 2002-10-31 22:05:00 +00:00
Jeff Hill
fd98efb6f8 use fprintf because errlogPrintf output is clipped at exit 2002-10-31 18:06:02 +00:00
Jeff Hill
915e30388c added extern C 2002-10-31 17:54:24 +00:00
Jeff Hill
6dc74193df uninstalled 2002-10-31 17:29:38 +00:00
Jeff Hill
5b92ba519c changed name of osd signal file to allow c++ and enabled noop signals 2002-10-31 17:20:51 +00:00
Jeff Hill
4a4560e90c removed unused var 2002-10-31 01:15:56 +00:00
Jeff Hill
0ba0ac4493 use sigaction instead of signal 2002-10-31 01:11:49 +00:00
Janet B. Anderson
b5535d714b Allow rebuild.<arch> . 2002-10-30 22:47:16 +00:00
Jeff Hill
92eb209d79 fixed function name 2002-10-30 20:18:03 +00:00
Jeff Hill
72d9af82ea removed 2002-10-30 20:09:50 +00:00
Jeff Hill
405e7d73c4 fixed comments 2002-10-30 19:59:04 +00:00
Jeff Hill
7bef9698b0 force receive thread to hang around for its blocking socket call interrupt signal 2002-10-30 18:55:16 +00:00
Jeff Hill
5b23570d27 upgraded compiler specific macros 2002-10-30 18:40:24 +00:00
Jeff Hill
d4cb389a5d upgraded compiler specific macros 2002-10-30 18:29:40 +00:00
Jeff Hill
0dce06f4cf upgraded compiler specific macros 2002-10-30 17:19:26 +00:00
Andrew Johnson
f0b5bbf467 Was in Attic but not dead. 2002-10-30 15:23:46 +00:00
Andrew Johnson
19edff269e Was in attic but not dead. 2002-10-30 15:21:53 +00:00
Andrew Johnson
4a2d2fea92 Was in Attic but not dead. 2002-10-30 15:18:28 +00:00
Jeff Hill
e047408dc6 replaced tabs with spaces 2002-10-30 02:18:37 +00:00
Jeff Hill
ccef3eddd2 better diagnostic 2002-10-30 02:10:19 +00:00
Jeff Hill
da9309e338 guard against use of a nill pointer 2002-10-30 01:37:41 +00:00
Jeff Hill
0e4addbc35 use correct signal 2002-10-30 01:13:08 +00:00
Jeff Hill
2860ca9b51 fixed problem introduced by warning fix 2002-10-30 00:51:12 +00:00
Jeff Hill
dc3bbeb16f fixed problem introduced by warning fix 2002-10-30 00:36:13 +00:00
Jeff Hill
784a5f815f improved message 2002-10-30 00:35:31 +00:00
Jeff Hill
4feb5bd493 fixed borland warnings 2002-10-29 23:07:07 +00:00
Jeff Hill
f9c38bc224 fixed borland warnings 2002-10-29 23:04:10 +00:00
Jeff Hill
763934a30d cosmetic 2002-10-29 23:03:05 +00:00
Jeff Hill
2ddee70fe3 ifdef around placement delete 2002-10-29 22:06:39 +00:00
Jeff Hill
c3e9d6928c fixed borland warning 2002-10-29 22:06:04 +00:00
Jeff Hill
b022718190 improved diagnostic 2002-10-29 22:05:09 +00:00
Jeff Hill
66a58406cc removed previous change that allowed w95, but introduced a bug 2002-10-29 22:03:34 +00:00
Jeff Hill
61b6f8cdd9 fixed problems with borland include files 2002-10-29 21:49:31 +00:00
Jeff Hill
92d73f2760 incremental release does not support placement delete 2002-10-29 21:48:12 +00:00
Jeff Hill
e96e511876 fixed borland warning 2002-10-29 21:46:13 +00:00
Jeff Hill
ae17d37d85 supress usless warning 2002-10-29 21:44:40 +00:00
Jeff Hill
e5486ab9e1 upgraded memory management 2002-10-29 19:12:53 +00:00
Jeff Hill
39b7631c16 removed unused paramter tag 2002-10-29 19:08:56 +00:00
Jeff Hill
d9919861f4 added parens to fix borland warning 2002-10-29 19:08:28 +00:00
Jeff Hill
f7be65a315 removed private array new/delete 2002-10-29 19:05:53 +00:00
Jeff Hill
dda1e0e2aa removed unused paramter tag 2002-10-29 19:00:46 +00:00
Jeff Hill
83368d1bc2 removed private array new/delete 2002-10-29 18:59:10 +00:00
Jeff Hill
bd36b053a1 removed private array new/delete 2002-10-29 17:10:40 +00:00
Jeff Hill
223b7fbe2a removed unused paramter tag 2002-10-29 17:10:16 +00:00
Jeff Hill
ff07566b66 fixed bug introduced by HPUX warning fix 2002-10-25 03:03:40 +00:00
Jeff Hill
7e92fa0ca0 removed junk and added missing type name 2002-10-25 01:44:50 +00:00
Jeff Hill
8e8f95c0de added missing include 2002-10-25 01:31:07 +00:00
Jeff Hill
5c63caef2a added typename 2002-10-25 01:22:28 +00:00
Jeff Hill
89d8b224cf added missing include 2002-10-25 01:16:31 +00:00
Jeff Hill
0339023aa5 changed parameter type 2002-10-25 01:09:01 +00:00
Jeff Hill
2daf173aeb added direct access to thread specific ds 2002-10-25 01:06:33 +00:00
Jeff Hill
2c78fef14d added missing include 2002-10-25 01:06:02 +00:00
Jeff Hill
05dd1e2732 added typename keyword for sun pro 2002-10-25 00:49:44 +00:00
Jeff Hill
03a018c077 fixed throw spec 2002-10-25 00:39:15 +00:00
Jeff Hill
aafbb17d67 fixed gnu compiler errors 2002-10-25 00:33:05 +00:00
Jeff Hill
4c7bcf077b installed 2002-10-25 00:19:11 +00:00
Jeff Hill
0cf90ce7c2 removed unused includes 2002-10-25 00:12:52 +00:00
Jeff Hill
2011c3c7ba use epics_throws macro 2002-10-25 00:11:12 +00:00
Jeff Hill
3e884afdff improved delete stub 2002-10-25 00:08:36 +00:00
Jeff Hill
c3ee505816 removed inline functions from dll interface class 2002-10-24 23:59:38 +00:00
Jeff Hill
cf8e3c07f2 added forward reference 2002-10-24 23:51:33 +00:00
Jeff Hill
3714092f09 renamed file 2002-10-24 23:51:07 +00:00
Janet B. Anderson
d4cf198ce8 Added javadoc definitions and rules. 2002-10-24 19:07:52 +00:00
Janet B. Anderson
a7930cdaa0 Added SOLARIS_VERSION so uname executed not executed on each compile line. 2002-10-24 19:05:49 +00:00
Jeff Hill
64da98ffd3 removed unused include 2002-10-24 18:16:45 +00:00
Jeff Hill
8dc8be9ad7 document ms compiler problems with placement delete 2002-10-24 18:12:03 +00:00
Jeff Hill
c7a8baee1a changed function name 2002-10-24 15:38:19 +00:00
Jeff Hill
ea2d06560e fixed gnu compiler error 2002-10-24 15:32:30 +00:00
Ralph Lange
777c2c77be Replaced some C-style casts with their C++ variants 2002-10-24 12:53:23 +00:00
Ralph Lange
43ceffad94 += 'typename' before member type names 2002-10-24 12:37:27 +00:00
Jeff Hill
843c958bf0 fixed symbol spelling 2002-10-24 00:33:43 +00:00
Jeff Hill
4401de7cd0 fixed gnu compiler errors 2002-10-24 00:28:46 +00:00
Jeff Hill
77176a6218 use placement new 2002-10-24 00:24:02 +00:00
Jeff Hill
b023f081eb fixed linux compiler errors 2002-10-24 00:18:12 +00:00
Jeff Hill
4697963387 fixed compiler error on Linux 2002-10-24 00:12:54 +00:00
Jeff Hill
3e5557b211 fixed compiler error on linux 2002-10-24 00:12:11 +00:00
Jeff Hill
d9e6116d00 use placement new 2002-10-23 23:55:36 +00:00
Jeff Hill
92dcf72a89 new epicsSignal interface 2002-10-23 23:54:18 +00:00
Jeff Hill
e36083d5ef use placement new 2002-10-23 23:37:30 +00:00
Jeff Hill
340e0c1d58 dont use a free list 2002-10-23 23:35:42 +00:00
Jeff Hill
bfe985e7aa adapt to new epicsSingleton interface 2002-10-23 23:34:42 +00:00
Jeff Hill
8a0504616e dont allow ordinary delete 2002-10-23 23:32:30 +00:00
Jeff Hill
4cd67a4e27 dont allow ordinary delete 2002-10-23 23:23:56 +00:00
Jeff Hill
6026533aeb use placement new 2002-10-23 23:23:22 +00:00
Jeff Hill
37d239eb88 use placement new 2002-10-23 22:58:49 +00:00
Jeff Hill
0817ad51ba removed double checked lock optimzation 2002-10-23 22:57:06 +00:00
Jeff Hill
9d07afdbfd dont allow use of ordinary delete 2002-10-23 22:55:52 +00:00
Jeff Hill
39f180ffd1 o interrupt socket system calls on unix with a signal'
o use placement new
2002-10-23 22:52:06 +00:00
Jeff Hill
d859a43492 print warning message and dont disconnect if the client application
is never reading its input - also dont reset the beaconAnomaly flag
if we send data
2002-10-23 22:42:27 +00:00
Jeff Hill
a89f2eff3d print warning message and dont disconnect if the client application
is never reading its input
2002-10-23 22:40:49 +00:00
Jeff Hill
6f8c6cb0a2 changed free list count 2002-10-23 22:39:58 +00:00
Jeff Hill
3facf84411 removed double checked lock optimization 2002-10-23 22:39:06 +00:00
Jeff Hill
a955d5ebb6 use new epicsSignal interface 2002-10-23 22:37:05 +00:00
Jeff Hill
3e9909b4dd installed 2002-10-23 22:36:10 +00:00
Jeff Hill
1e976b7eed use placement new 2002-10-23 22:32:39 +00:00
Jeff Hill
0b66cd3811 now compatible with new epicsSingleton interface 2002-10-23 22:30:19 +00:00
Jeff Hill
d468c989d7 cosmetic 2002-10-23 22:29:32 +00:00
Jeff Hill
ba2cb54762 removed free lists 2002-10-23 22:28:56 +00:00
Jeff Hill
0fce80a352 added constants 2002-10-23 22:28:08 +00:00
Jeff Hill
0817236127 installed 2002-10-23 22:27:13 +00:00
Jeff Hill
c034d5f9a4 uninstalled 2002-10-23 22:25:19 +00:00
Jeff Hill
c288011b87 added epicsThreadGetPthreadIdSelf() 2002-10-23 22:23:54 +00:00
Jeff Hill
e1e2df53ad added throw specifications 2002-10-23 22:20:49 +00:00
Jeff Hill
f2ccfaf1de certain functions are nolonger inline 2002-10-23 22:19:28 +00:00
Jeff Hill
d42af1ff85 added getId mf 2002-10-23 22:18:52 +00:00
Jeff Hill
6b3c5002ec removed constants 2002-10-23 22:17:57 +00:00
Jeff Hill
1af30b1d48 interrupted system call interface 2002-10-23 22:17:11 +00:00
Jeff Hill
2074b99342 added constants 2002-10-23 22:15:41 +00:00
Jeff Hill
8b83921bdf compatible now with revised epicsSingleton 2002-10-23 22:14:47 +00:00
Jeff Hill
fd5b08caf1 fixed SMP problems 2002-10-23 22:14:03 +00:00
Jeff Hill
7fdc295d9d added throw specifications 2002-10-23 22:13:03 +00:00
Janet B. Anderson
205cbb69fe Added -mlongcall option. Cosmetic changes. 2002-10-22 22:06:46 +00:00
Janet B. Anderson
6b8dbc5355 Added compressExample record. 2002-10-18 21:00:10 +00:00
Ralph Lange
eba7732c3b Fix for HPUX 2002-10-15 14:13:35 +00:00
Ralph Lange
eab19edd24 Fix HP aCC warnings; clean up tab situation 2002-10-11 09:20:01 +00:00
Ralph Lange
1ea0bcb7f3 Fix HP aCC warnings 2002-10-11 09:19:29 +00:00
Ralph Lange
7bf43f6dcc More HP aCC warnings fixed 2002-10-09 09:12:25 +00:00
Ralph Lange
c0aa7861e6 string.h needed for strncpy 2002-10-09 08:58:05 +00:00
Ralph Lange
8657179346 Bugfix: non-vxWorks OSs must copy string command line args 2002-10-08 14:10:35 +00:00
Janet B. Anderson
838489ae4b Modified comments. 2002-10-04 15:00:52 +00:00
Janet B. Anderson
dc3d8296cc Cleanup of some rules. 2002-10-04 14:56:10 +00:00
Janet B. Anderson
c6c28baab8 Reordered some rules. 2002-10-04 14:53:48 +00:00
Janet B. Anderson
9a173a46d9 Cleanup of rules. 2002-10-04 14:53:00 +00:00
Janet B. Anderson
1c27d187c1 Moved buildInstall rule. 2002-10-04 14:51:05 +00:00
Janet B. Anderson
790e77bc25 Modified comments by adding darwin-ppc and linux-mpc82xx. 2002-10-04 14:49:51 +00:00
Jeff Hill
bc9d1414a9 added display of time 2002-10-03 19:50:02 +00:00
Jeff Hill
f730559ac1 swapped "client" for "server" in one place 2002-10-02 19:43:08 +00:00
Jeff Hill
fd85d0d319 test recursive mutex delays 2002-10-01 20:10:56 +00:00
Jeff Hill
2fd82ded26 removed double test lock optimization 2002-10-01 20:09:17 +00:00
Andrew Johnson
3a83f64b10 Created from ppc604 version. 2002-10-01 15:44:59 +00:00
Jeff Hill
dff44268b0 cosmetic 2002-09-30 20:24:20 +00:00
Jeff Hill
ad3be7f90a supress more messages associated with normal operation 2002-09-30 20:21:37 +00:00
Jeff Hill
aa0238adf2 back out previous change 2002-09-30 18:02:22 +00:00
Jeff Hill
556c9e44dc export shared symbols 2002-09-30 18:00:34 +00:00
Jeff Hill
31ceef441d added epicsShareFunc in several places 2002-09-30 17:59:30 +00:00
Andrew Johnson
137b10f7a8 Removed complex C++ registration of subroutines,
replaced by function() statments in .dbd file.
2002-09-25 18:36:48 +00:00
Andrew Johnson
9481cf9649 Added auto-registration of routines from .dbd function() statements 2002-09-25 18:33:25 +00:00
Andrew Johnson
55f563b959 Added dbDumpFunction command. 2002-09-25 18:32:08 +00:00
Andrew Johnson
7d2d368033 Added support for function() statement in .dbd files 2002-09-25 18:30:46 +00:00
Andrew Johnson
dff960b3c3 Added command-line echoing when executing a script. 2002-09-24 22:06:54 +00:00
W. Eric Norum
ac2f19b8b3 Clean up commands so that more extensions can be built. 2002-09-24 21:39:46 +00:00
Jeff Hill
79bb94b1ea fixed sun pro warning 2002-09-24 17:52:11 +00:00
Jeff Hill
8133681a48 fixed formatting and sun pro warning 2002-09-24 17:51:09 +00:00
Jeff Hill
4a0334796c fixed gnu warnings 2002-09-24 17:07:43 +00:00
Jeff Hill
bad7bd373e fixed string to enum conversion so that it allows strings with integers 2002-09-23 23:59:29 +00:00
Jeff Hill
c28bb13e9a its probably best for a put callback to save a private copy of the users data that
is being written
2002-09-23 22:10:20 +00:00
Jeff Hill
ad3c2b2a5c fixed purify errors occuring when an event callback deletes itself 2002-09-23 22:09:42 +00:00
Jeff Hill
f57df209ab fixed SPARC alignment with ca put notify 2002-09-23 17:05:47 +00:00
Jeff Hill
03717d7944 fixed sunpro warning 2002-09-20 17:33:10 +00:00
Jeff Hill
a37ff40ce8 fixed gnu warning 2002-09-20 17:23:19 +00:00
Jeff Hill
5fab011222 workaround for sunpro virtual destructor multiply defined symbols problem 2002-09-20 16:49:42 +00:00
Jeff Hill
da7706be23 cleanedup placement delete ifdef block 2002-09-20 16:48:51 +00:00
Jeff Hill
4254028028 lage constant needs to be unsigned 2002-09-20 16:20:54 +00:00
Jeff Hill
ce32de55ae simplified includes to avoid portability problems with different versions of windows 2002-09-20 16:02:13 +00:00
Jeff Hill
50fea19f26 added newline at eof 2002-09-20 15:59:08 +00:00
Jeff Hill
17e5a0b98d fixed visual c++ 6.0 build issues 2002-09-19 22:11:47 +00:00
Jeff Hill
ef5b5013a5 changed extensions from .cpp to .cc on several files 2002-09-19 21:36:00 +00:00
Jeff Hill
6ec62c5496 improved diagnostics 2002-09-19 19:33:18 +00:00
Jeff Hill
41fd1ff1f8 installed beacon anomaly generator 2002-09-19 19:32:29 +00:00
Jeff Hill
7cc7d596b3 fixed use of undefined status variable in diagnostic 2002-09-19 19:28:09 +00:00
Jeff Hill
48bb66d586 installed 2002-09-19 19:26:35 +00:00
Jeff Hill
8c3d560ca8 dont copy if the application types dont match and the source and dest are both
not containers in smart copy
2002-09-19 18:31:06 +00:00
Jeff Hill
04a3d585d4 fixed wrong pointer with scalar bug 2002-09-19 16:56:35 +00:00
Jeff Hill
ce6ec6c0db fixed several bugs and tried to clean up some loose ends 2002-09-19 00:54:25 +00:00
Jeff Hill
aeeac23037 destroyData is nolonger inline 2002-09-19 00:43:01 +00:00
Jeff Hill
f03db482fd removed inappropriate use of init() out side of constructor 2002-09-17 21:32:12 +00:00
Jeff Hill
c8d5854fcf fixed destroyData so that it consistently removes the bounds from all modes
(this fixes a problem where a container returned to the app table free list was
retaining the bounds from its previous lifetime)
2002-09-17 21:30:44 +00:00
Jeff Hill
021e060853 fixed gnu detected problem 2002-09-17 18:13:32 +00:00
Jeff Hill
6433d3699b fixed gnu detected problem 2002-09-17 18:07:27 +00:00
Jeff Hill
efbdda83ce improved message 2002-09-17 18:01:09 +00:00
Jeff Hill
bb8fa4fd10 fixed gdd => dbr_gr_enum/dbr_ctrl_enum to handle off normal situations 2002-09-17 17:59:55 +00:00
Jeff Hill
dd04436293 fixed gdd::put 2002-09-17 17:58:54 +00:00
Jeff Hill
8f3394d317 cosmetic 2002-09-17 17:55:49 +00:00
Jeff Hill
84ba44a8e8 only return enum strings if the primitive type is enum 2002-09-17 17:54:59 +00:00
Jeff Hill
5f8619bb6b changed certain variables from on-the-fly to precreate 2002-09-17 17:53:31 +00:00
Jeff Hill
a9c15d34e7 set the bounds when asking for the string table 2002-09-17 17:52:20 +00:00
Jeff Hill
0c0c3d6d94 added new function that sets the bounds on an pplication type within a container 2002-09-17 17:51:32 +00:00
Jeff Hill
fd7e40b223 added new function 2002-09-17 17:50:24 +00:00
Jeff Hill
539d3478c8 fixed beacon detect logic does not detect reconnected servers 2002-09-11 23:30:12 +00:00
Jeff Hill
761a87ea73 eliminate disconnect message from ca_task_exit 2002-09-11 20:54:40 +00:00
Jeff Hill
abcbaeca9c use const for the channel name pointer 2002-09-11 20:51:14 +00:00
Jeff Hill
aec31f89a2 added client does not see server's beacons troubleshooting hyperlink 2002-09-11 20:50:26 +00:00
Jeff Hill
308055d41e NTP timestamp test 2002-09-11 20:48:24 +00:00
Jeff Hill
4c04096ce9 avoid strange problems with ms compiler that appear to
be influenced by using inline functions with the expireStatus
class
2002-09-11 20:47:21 +00:00
Jeff Hill
9af78b1d37 cosmetic 2002-09-11 20:45:12 +00:00
Jeff Hill
ef84d2398d avoid problems when the osd thread priority isnt mapable to the epics
priority range
2002-09-11 20:44:35 +00:00
Jeff Hill
cb2d75392e use sizeof to determine no chars in type unsigned 2002-09-10 19:07:40 +00:00
Jeff Hill
8870cf48b6 NTP time stamp conversion 2002-09-09 22:46:09 +00:00
Jeff Hill
849b5e094e removed infinite loop when regression test runs prior to init 2002-09-09 22:17:08 +00:00
W. Eric Norum
928e63fd8f Update comment. Optimization to level -O3 still fails on OS X (Jaguar). 2002-09-09 19:30:26 +00:00
W. Eric Norum
d207412921 Jaguar provides gmtime_r and localtime_r so the Posix versions can be used.
Still no CLOCK_REALTIME in Jaguar, so we can't just get rid of the Darwin-
specific version of this file.
2002-09-09 15:39:31 +00:00
Jeff Hill
aa13eb03ba include errno.h 2002-09-07 00:21:06 +00:00
Jeff Hill
49953640bd include osiSock.h 2002-09-07 00:13:34 +00:00
Jeff Hill
0bb346a212 cosmetic 2002-09-07 00:12:50 +00:00
Jeff Hill
913e6713c6 dont include osiSock.h from the envDefs.h header file 2002-09-07 00:12:01 +00:00
Jeff Hill
25acc515c4 perform FILETIME conversions only on windows because
monolithic win32 header files are incompatible with other
things in EPICS and we cant include windows.h in osdTime.h
2002-09-07 00:11:06 +00:00
Jeff Hill
593ee10818 fixed file time to epicsTime conversion 2002-09-06 00:45:13 +00:00
Jeff Hill
d0e406457d removed use of explicit (void) argument list because this is redundant in C++ 2002-09-04 22:27:54 +00:00
Jeff Hill
ef5b5ec276 cosmetic 2002-09-04 22:09:38 +00:00
Jeff Hill
f3226be0b9 fixed msvisc++ warning 2002-09-04 22:07:54 +00:00
W. Eric Norum
5962c69c12 Add support for Windows FILETYPE time stamps. 2002-09-04 22:04:01 +00:00
Jeff Hill
b3104bbc2b added win32 filetime test 2002-09-04 20:30:08 +00:00
Jeff Hill
7c337a7257 workaround for SUNPRO bogosity 2002-09-04 17:51:08 +00:00
Jeff Hill
296c629c19 fixed linux warning 2002-09-04 17:02:28 +00:00
Jeff Hill
6ec7ac0e16 added conversion between epicsTime and win32 FILETIME 2002-09-04 16:30:37 +00:00
Jeff Hill
f5cbac744e added doc for structures 2002-09-04 14:39:32 +00:00
Jeff Hill
722b8bdf01 doc 2002-09-03 21:27:40 +00:00
Jeff Hill
9d780b0fdd documented structures passed by value to callbacks 2002-09-03 21:26:54 +00:00
Jeff Hill
bdba13c2a2 added ipIgnoreEntry.cc 2002-08-29 17:02:05 +00:00
Jeff Hill
5ffc6d7914 installed 2002-08-29 17:01:37 +00:00
Jeff Hill
9a5ca9203c dont include shareLib.h more than necessary 2002-08-29 17:01:10 +00:00
Jeff Hill
f958bd3ab0 cosmetic 2002-08-29 17:00:44 +00:00
Jeff Hill
8bba4da432 add support for ignoring requests from certain addresses 2002-08-29 16:59:46 +00:00
Jeff Hill
51f853ccb5 removed cvs revisions in header 2002-08-29 16:56:38 +00:00
Jeff Hill
75f52f8833 removed ifdefs 2002-08-29 16:56:10 +00:00
Jeff Hill
da21bbf308 dont include shareLib.h more than necessary 2002-08-29 16:55:36 +00:00
Jeff Hill
67f2ac78ed errSymFind -> errSymLookup 2002-08-29 16:55:15 +00:00
Jeff Hill
6dff6348fe Deal with postpone status returned from an enum string table cache fetch initiate
chained to an asynchronous create PV by printing a message and not filling
in the cache. This can be fixed easier later once the server is threaded again.
2002-08-29 16:53:31 +00:00
Jeff Hill
0d4d2560e6 cosmetic 2002-08-29 16:49:03 +00:00
Jeff Hill
59a7ebd78c doc 2002-08-29 16:45:55 +00:00
Jeff Hill
950d2c0b9d 1) depricated errSymFind function because errSymLookup below provides a
better interface
2) added errSymLookup function with these improvements
o  receive a buffer length from user and therefore never overwrite the users buffer
o return void and always copy a string into the users buffer. If the error code cant
be found then copy in a message with the error code's raw numbers in it.
3) removed prototypes for nonexistent fuinctions from header file
2002-08-29 16:45:16 +00:00
Jeff Hill
75081c3947 added EPICS_CAS_IGNORE_ADDR_LIST 2002-08-29 15:17:10 +00:00
Jeff Hill
bef0109bb7 dont include shareLib.h more than necessary 2002-08-29 15:16:08 +00:00
Jeff Hill
28b1ad5284 added doc for
o EPICS_CAS_INTF_ADDR_LIST
o dbr_type_to_text
o and many small clarifications
2002-08-29 15:09:06 +00:00
Jeff Hill
2872f190e8 dont include shareLib.h more than necessary 2002-08-29 15:02:17 +00:00
Jeff Hill
76199859f6 cosmetic 2002-08-29 15:01:17 +00:00
Jeff Hill
d0ab8f3305 removed junk 2002-08-29 15:00:55 +00:00
Jeff Hill
d08b6251f1 added EPICS_CAS_IGNORE_ADDR_LIST 2002-08-29 14:55:43 +00:00
Janet B. Anderson
31d1fca0d6 Updated docs for R3.14.0beta2 2002-08-28 17:38:53 +00:00
Jeff Hill
3ea121a119 print dbr type as a text string 2002-08-26 17:33:54 +00:00
Jeff Hill
69790213e3 dont allow asynchronous completion error code to drop down to lower layers 2002-08-22 21:42:31 +00:00
Jeff Hill
a5b1beb9da dont print disconnect message if there are zero bytes to send 2002-08-22 21:16:54 +00:00
Jeff Hill
f0a6010a3f added an example for indexing arrays within a structured CA data type 2002-08-22 19:38:33 +00:00
Jeff Hill
9a7ab7b0de index entry for ca_sate 2002-08-22 16:26:41 +00:00
Jeff Hill
8338c1bb3e fixed sun pro warnings 2002-08-22 16:05:22 +00:00
Jeff Hill
0f70d78803 fixed sun pro warnings 2002-08-22 15:53:14 +00:00
Jeff Hill
ebe7870015 avoid comparison between signed and unsigned numbers 2002-08-22 14:39:46 +00:00
Jeff Hill
84863a577c use const for string arguments that are not modified 2002-08-22 14:38:19 +00:00
Jeff Hill
dbd2d00699 use the new create channel interface similar to the other ca example 2002-08-22 00:01:55 +00:00
Jeff Hill
cb9b81cdad fixed enum string table cache update so that it can complete asynchronously 2002-08-22 00:00:22 +00:00
Jeff Hill
b566183c2f fixed reference to freed memory 2002-08-21 23:57:35 +00:00
Andrew Johnson
0058debd45 Minor edits; mainly that tech-talk is now the only EPICS mailing list we ever
talk about in public.
2002-08-21 22:21:15 +00:00
W. Eric Norum
2bb26522e0 Reorder library searches to avoid some problems when linking applications
which include the GPIB driver add-on modules.
2002-08-21 21:08:22 +00:00
Jeff Hill
a15af6a1d5 installed new source files 2002-08-21 16:42:05 +00:00
Jeff Hill
23225348d6 installed 2002-08-21 16:33:50 +00:00
Jeff Hill
d1ddd2627b converted inlines to ordinary functions 2002-08-21 16:33:00 +00:00
Jeff Hill
dd67086dc9 use bool for boolean variable 2002-08-21 16:31:37 +00:00
Jeff Hill
17070c70c8 removed inlines from class definition 2002-08-21 16:31:15 +00:00
Jeff Hill
4c7134933d define epicsExportSharedSymbols correctly 2002-08-21 16:29:04 +00:00
Jeff Hill
f44597e923 fixed problem wher enum string table cache was installed for wrong primitive type 2002-08-21 16:27:24 +00:00
Jeff Hill
cbb652bcce use enum for enumerated variable 2002-08-21 16:25:14 +00:00
Jeff Hill
a3b726f105 allow specification of PV's best external type 2002-08-21 16:23:38 +00:00
Jeff Hill
82ba4f0a1f moved inlines out of class definition 2002-08-21 16:22:30 +00:00
Jeff Hill
dd43dfc717 cosmetic 2002-08-21 16:21:49 +00:00
Jeff Hill
7af6a05a5a moved gr enum test up 2002-08-21 15:39:42 +00:00
Jeff Hill
f328cd0e6b fixed message 2002-08-21 00:14:02 +00:00
Jeff Hill
c986b56e5d tabs are now spaces 2002-08-20 21:52:52 +00:00
Jeff Hill
17f55b29c7 cosmetic 2002-08-20 21:37:23 +00:00
W. Eric Norum
98db216df3 Select NIC at run-time instead of at EPICS build-time. 2002-08-20 16:18:05 +00:00
Jeff Hill
b907ff8ee8 removed epicsShareAPI keyword 2002-08-19 23:16:05 +00:00
Janet B. Anderson
0d57270496 Modified profiling definitions. 2002-08-16 19:01:36 +00:00
Janet B. Anderson
7754a0ecae Changed PROFILE to NO as default. 2002-08-16 18:38:16 +00:00
Jeff Hill
aa54a26c8b This was defensive coding against deadlock occurring when they hold a lock
in the expire callback that they also hold when starting the timer.  I dont know
how to protect them against a situation where they hold a lock in the expire
callback and also hold it when canceling the timer, but at least that is a less
common situation.
2002-08-16 00:07:09 +00:00
Jeff Hill
936053422b removed privateCancel() function 2002-08-16 00:05:53 +00:00
Jeff Hill
24b175c01c document the CA data types 2002-08-15 21:56:14 +00:00
Jeff Hill
c897ad3af0 document the CA data types 2002-08-15 21:53:37 +00:00
Jeff Hill
9a1b51ce10 added new type for DBR_CLAA_NAME. 2002-08-15 21:53:23 +00:00
Janet B. Anderson
c07a6e1cab Changed required gnumake version to 3.78.1 2002-08-15 14:36:40 +00:00
Janet B. Anderson
6caf14c190 Updated required gnumake version to 3.79. 2002-08-15 14:34:52 +00:00
Janet B. Anderson
12f1ed8639 Fixed profiling option. 2002-08-15 14:29:46 +00:00
Jeff Hill
f0b7c5a46c fixed deadlock 2002-08-14 22:04:02 +00:00
Jeff Hill
235f23a322 fixed deadlock 2002-08-14 21:53:30 +00:00
Jeff Hill
16e8c85da8 add old client error code 2002-08-14 18:22:41 +00:00
Jeff Hill
c0f90bd568 return ECA_ style error so that better diagnostics percolate up to client 2002-08-14 16:25:47 +00:00
Jeff Hill
eb3b394238 export diagnostic counters 2002-08-13 00:19:37 +00:00
Jeff Hill
b24e0fe1c5 removed extra cr 2002-08-13 00:13:23 +00:00
Jeff Hill
2e0e640ad3 remove Zi option from optimized build 2002-08-12 23:05:36 +00:00
Jeff Hill
d73ac2c107 cosmetic 2002-08-12 16:18:26 +00:00
Jeff Hill
7cc5842830 use guard class to manage mutex locks 2002-08-09 23:40:18 +00:00
Jeff Hill
a630ecefc9 proper search for beacon period parm 2002-08-09 23:08:41 +00:00
Jeff Hill
dcdd9c2247 new command line, better formatting 2002-08-09 16:53:08 +00:00
Jeff Hill
62b8f02fef initialize the beacon sequence number 2002-08-09 16:52:39 +00:00
Jeff Hill
732f5f33e5 new diagnostics 2002-08-09 16:52:21 +00:00
Jeff Hill
bf25c38562 new command line to casw 2002-08-09 16:50:27 +00:00
Jeff Hill
99213bfbea updated to support independent configuration of certain server parameters 2002-08-09 14:45:55 +00:00
Jeff Hill
7cc8d84e1d doc 2002-08-09 00:19:25 +00:00
Jeff Hill
8d9c3f7ff4 updated to support independent configuration of certain server parameters 2002-08-09 00:16:24 +00:00
Jeff Hill
996672b285 removed comment 2002-08-09 00:12:51 +00:00
Jeff Hill
6d03df6a9b fixed beacon period name 2002-08-08 22:37:41 +00:00
Jeff Hill
c2d4515e90 fixed test name 2002-08-08 22:36:57 +00:00
Jeff Hill
40a3dab60c added description of CA repeater 2002-08-08 17:09:13 +00:00
Jeff Hill
75c1d4a21e clean up 2002-08-08 15:37:05 +00:00
Jeff Hill
44660156f5 improved server configuration documentation 2002-08-08 00:41:06 +00:00
Jeff Hill
ba5e5dc007 made configuration more like portable server 2002-08-08 00:25:49 +00:00
Jeff Hill
9d7c670397 allow use of EPICS_CAS_SERVER_PORT 2002-08-08 00:23:37 +00:00
Jeff Hill
5ba7ce818c fixed wrong client id in asynchronous access control response 2002-08-07 18:07:50 +00:00
Jeff Hill
de60b1f5d7 removed redundant string table cache clear 2002-08-07 18:05:26 +00:00
Jeff Hill
6432302866 fixed sequence numbers in asynchronous search response 2002-08-07 00:35:13 +00:00
Andrew Johnson
997e9bb995 Various cleanup edits.
No text changes, just layout.
2002-08-06 22:48:42 +00:00
Jeff Hill
dca801e344 fixed hang under heavy udp load 2002-08-06 18:41:25 +00:00
Andrew Johnson
0e0004f526 Changed (c) comments to HTML comments,
Added charset to content-type header,
fixed one HTML validator error.
2002-08-06 16:06:49 +00:00
Jeff Hill
d39580e6ee fixed missing version/sequence number header in asynchronous search response 2002-08-05 22:57:12 +00:00
Janet B. Anderson
bc097f5b7f Added darwin-ppc. 2002-08-02 14:05:51 +00:00
Jeff Hill
d9a6ffcc10 workaround for borland compiler does not have placement delete 2002-08-01 22:58:23 +00:00
W. Eric Norum
0a1aca0795 Use correct file name when CONFIG_COMPAT is mapping Darwin to darwin-ppc. 2002-08-01 21:05:23 +00:00
W. Eric Norum
b0932d91f2 Mac OS X doesn't allow executables to be statically linked (missing crt0.o). 2002-08-01 21:04:32 +00:00
W. Eric Norum
21b90ed84f Add compatibility entry for Darwin (Mac OS X). 2002-08-01 20:51:44 +00:00
Jeff Hill
1a7e79ace1 fixed version header wasnt pushed into the stream at the correct place 2002-08-01 20:27:35 +00:00
387 changed files with 12497 additions and 10103 deletions

View File

@@ -18,20 +18,27 @@ ARCH_CLASS = Darwin
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
#
# The config files are a real mess. The following set of definitions
# seems to work for all the weird ways in which the extensions makefile
# fragments use them.
# The config files are a real mess. The following definitions seem to work
# for all the weird ways in which the extensions makefile fragments use them.
#
ANSI = GCC
CPLUSPLUS = c++
CC = cc
CXX= c++
GCC = cc
AR = ar
ARCMD = $(AR) -rc $@
ARFLAGS = rcv
RANLIB = ranlib
ANSI=GCC
CPLUSPLUS=G++
OP_SYS_CFLAGS += -no-cpp-precomp
OP_SYS_INCLUDES = -I/sw/include -I/usr/X11R6/include
OP_SYS_LDFLAGS += -L/sw/lib -L/usr/X11R6/lib
# Uncomment this if you're using the GNU readline library
#ARCH_DEP_LDLIBS += -lreadline
# Uncomment this if you're using the libtecla library
ARCH_DEP_LDLIBS += -ltecla_r -ltermcap
#
# Compiler/linker problems prevent the use of shared libraries at the moment
#
@@ -41,8 +48,8 @@ SHARED_LIBRARIES_Darwin = NO
# Something like this will be needed once shared libraries are built
#
SHRLIB_SUFFIX = .dylib$(SHARED_LIBRARIES)
GCC_SHRLIB_LDFLAGS_YES += -dynamiclib -flat_namespace
G++_SHRLIB_LDFLAGS_YES += -dynamiclib -flat_namespace
GCC_SHRLIB_LDFLAGS_YES += -dynamiclib
G++_SHRLIB_LDFLAGS_YES += -dynamiclib
#
# Java

View File

@@ -32,7 +32,7 @@ ARCMD = lib /nologo /verbose /out:$@
#
# Configure OS vendor C compiler
ACC = cl
ACC = cl
#
# __STDC__=0 is a real great idea of Jeff that gives us both:
@@ -60,7 +60,7 @@ ACC_OPT_YES = /Ox
#
# /Zi include debugging info in object files
# /Fr create source browser file
ACC_OPT_NO = /Zi /Fr
ACC_OPT_NO = /Zi
#
# the following options are required when
@@ -95,7 +95,11 @@ ACC_SLIBS_NO=
#
# Use of /Za would dissable DLL import/export keywords which
# EPICS include/excludes using architecture neutral macros
CCC = cl
#
# /GX support C++ exceptions
# /GR generate RTTI information
#
CCC = cl /GX /GR
CCC_NORMAL = $(CCC) /nologo /D__STDC__=0
CCC_STRICT = $(CCC) /nologo /D__STDC__=0
CCC_TEMPL_INST_FLAG =
@@ -113,7 +117,7 @@ CCC_OPT_YES = /Ox
#
# /Zi include debugging info in object files
# /Fr create source browser file
CCC_OPT_NO = /Zi /Fr
CCC_OPT_NO = /Zi
#
# the following options are required when
@@ -135,7 +139,7 @@ CCC_SLIBS_NO=
LINK_OPT_FLAGS_YES = /warn:3 /incremental:no /opt:ref\
/release $(PROD_VERSION:%=/version:%)
LINK_OPT_FLAGS_NO = /warn:3 /debug
LINK_OPT_FLAGS_NO = /warn:3 /debug /incremental:no
OPT_LDFLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT))
ARCH_DEP_CFLAGS=

View File

@@ -12,7 +12,7 @@
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.hp700
ARCH_CLASS = hp700
ARCH_CLASS = hpux
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon

View File

@@ -9,5 +9,5 @@
#*************************************************************************
# $Id$
# hpux-m68k is the new name for hp700
# hpux-parisc is the new name for hp700
-include $(EPICS_BASE)/config/CONFIG.Host.hp700

View File

@@ -36,7 +36,6 @@ ACC_ANSI = $(ACC) -Xa -v
ACC_STRICT = $(ACC) -Xc -v
ACC_TRAD = $(ACC) -Xs
ACC_DEP_CFLAGS = -KPIC
ACC_WARN_YES =
ACC_WARN_NO = -w
ACC_OPT_YES = -O
@@ -66,14 +65,16 @@ CCC_DEPENDS_FLAG = -xM1
CCC_SHRLIB_CFLAGS_YES =
CCC_SHRLIB_LDFLAGS_YES = -G -h $@ -z ignore -z combreloc -z lazyload
ARCH_DEP_CFLAGS = -DSOLARIS=$(subst 5.,,$(shell uname -r))
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
ARCH_DEP_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION)
POSIX_CPPFLAGS_YES += -D__EXTENSIONS__
# socket and nsl needed by libca.a
ARCH_DEP_LDLIBS += -lsocket -lnsl
ARCH_DEP_LDLIBS += -lposix4 -lpthread
ARCH_DEP_LDLIBS_8 = -lCrun
ARCH_DEP_LDLIBS += $(ARCH_DEP_LDLIBS_$(SOLARIS_VERSION))
#Allows R3.13 built extensions to load R3.14 shared libs
SYS_DLL_LIBS_solaris += posix4 pthread Crun
SYS_DLL_LIBS_solaris_8 = Crun
SYS_DLL_LIBS_solaris += posix4 pthread $(SYS_DLL_LIBS_solaris_$(SOLARIS_VERSION))

View File

@@ -10,8 +10,5 @@
# $Id$
# solaris-sparc is the new name for solaris
-include $(EPICS_BASE)/config/CONFIG.Host.solaris
ANSI=GCC
CPLUSPLUS=G++
-include $(EPICS_BASE)/config/CONFIG.Host.solarisGnu

View File

@@ -15,8 +15,5 @@
-include $(EPICS_BASE)/config/CONFIG.Host.solaris
# Solaris on x86
ARCH_DEP_CFLAGS = -DSOLARIS=$(subst 5.,,$(shell uname -r)) -D_X86_ -D__EXTENSIONS__
GCC = gcc
G++ = g++
ARCH_DEP_CPPFLAGS += -D_X86_

View File

@@ -12,14 +12,8 @@
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.solaris-x86
-include $(EPICS_BASE)/config/CONFIG.Host.solaris
-include $(EPICS_BASE)/config/CONFIG.Host.solarisGnu
# Solaris on x86
ARCH_DEP_CFLAGS = -DSOLARIS -D_X86_
GCC = gcc
G++ = g++
ANSI=GCC
CPLUSPLUS=G++
ARCH_DEP_CPPFLAGS += -D_X86_

View File

@@ -0,0 +1,48 @@
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
# CONFIG.Host.solarisGnu
#
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.solarisGnu
ARCH_CLASS = solaris
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
#
# required by sun's C++ compiler
#
AR = ar
_AR = $(AR) $(ARFLAGS)
G++_AR = $(_AR)
CCC_AR = $(CCC) -xar -o
ARCMD = $($(CPLUSPLUS)_AR) $@
RANLIB =
#==========================
# These are overrides of ANSI and CPLUSPLUS values in CONFIG_SITE
ANSI=GCC
CPLUSPLUS=G++
#==========================
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
ARCH_DEP_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION)
POSIX_CPPFLAGS_YES += -D__EXTENSIONS__
# socket and nsl needed by libca.a
ARCH_DEP_LDLIBS += -lsocket -lnsl
ARCH_DEP_LDLIBS += -lposix4 -lpthread
ARCH_DEP_LDLIBS_8 = -lCrun
ARCH_DEP_LDLIBS += $(ARCH_DEP_LDLIBS_$(SOLARIS_VERSION))
#Allows R3.13 built extensions to load R3.14 shared libs
SYS_DLL_LIBS_solaris_8 = Crun
SYS_DLL_LIBS_solaris += posix4 pthread $(SYS_DLL_LIBS_solaris_$(SOLARIS_VERSION))

View File

@@ -22,4 +22,4 @@ ARCH_CLASS = ppc
ARCH_DEP_CPPFLAGS = -DCPU=PPC603 -DTRUE=1
ARCH_DEP_CFLAGS = -mcpu=603 --no-builtin -mstrict-align
# ARCH_DEP_CFLAGS== -fsigned-char #May need for calcPerform.c
# ARCH_DEP_CFLAGS+= -fsigned-char #May need for calcPerform.c

View File

@@ -0,0 +1,16 @@
# $Id$
#
# This file is maintained by the EPICS community.
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC603 -DTRUE=1
ARCH_DEP_CFLAGS = -mcpu=603 --no-builtin -mstrict-align -mlongcall
# ARCH_DEP_CFLAGS+= -fsigned-char #May need for calcPerform.c

View File

@@ -22,5 +22,5 @@ ARCH_CLASS = ppc
ARCH_DEP_CPPFLAGS = -DCPU=PPC604 -D_GNU_TOOL -DTRUE=1
ARCH_DEP_CFLAGS = -mcpu=604 --no-builtin -mstrict-align
# ARCH_DEP_CFLAGS== -fsigned-char #May need for calcPerform.c
# ARCH_DEP_CFLAGS+= -fsigned-char #May need for calcPerform.c

View File

@@ -0,0 +1,17 @@
# $Id$
#
# This file is maintained by the EPICS community.
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC604 -D_GNU_TOOL -DTRUE=1
ARCH_DEP_CFLAGS = -mcpu=604 --no-builtin -mstrict-align -mlongcall
# ARCH_DEP_CFLAGS+= -fsigned-char #May need for calcPerform.c

16
config/CONFIG.Vx.sbs_pc6 Normal file
View File

@@ -0,0 +1,16 @@
# Created by Korobov for SBS PC6
# CONFIG.Vx.sbs_pc6
#
# This file is maintained by the EPICS community.
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = 386
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = sbs_pc6
ARCH_DEP_CPPFLAGS = -DCPU=PENTIUM -DCPU_VARIANT=PENTIUM -D_X86_
ARCH_DEP_CFLAGS = -mpentium
ARCH_DEP_CXXFLAGS += -x 'c++'
ARCH_DEP_CFLAGS += -fno-builtin -fno-defer-pop

View File

@@ -0,0 +1,13 @@
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
# $Id$
# vxWorks-ppc603 is the new R3.14 name for ppc603
include $(EPICS_BASE)/config/CONFIG.Vx.ppc603

View File

@@ -18,9 +18,9 @@
EPICS_VERSION=3
EPICS_REVISION=14
EPICS_MODIFICATION=0
EPICS_UPDATE_NAME=beta
EPICS_UPDATE_LEVEL=2
EPICS_MODIFICATION=1
EPICS_UPDATE_NAME=
EPICS_UPDATE_LEVEL=0
EPICS_LOCAL_NAME=B
EPICS_LOCAL_VERSION=0

View File

@@ -9,5 +9,5 @@
#*************************************************************************
# $Id$
# hpux-m68k is the new name for hp700
# hpux-parisc is the new name for hp700
-include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.hp700

View File

@@ -0,0 +1,9 @@
# CONFIG_HOST_ARCH.solaris
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon
WIND_HOST_TYPE = sun4-solaris2

View File

@@ -21,6 +21,7 @@
# hp700
# sgi
# solaris
# solarisGnu (GNU compiler)
# solaris-x86
# sun4
#
@@ -46,10 +47,14 @@ endif
# mv2700
# niCpu030
# pc486
# ppc603
# ppc604
# ppc603_long (over 32MB)
# ppc604_long (over 32MB)
# sbs_pc6
# vxipc
#
CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040 vxWorks-ppc604
CROSS_COMPILER_TARGET_ARCHS=
# If only a subset of the host architectures perform

View File

@@ -1,4 +1,4 @@
# $Id$
# hpux-m68k is the new name for hp700
# hpux-parisc is the new name for hp700
-include $(EPICS_BASE)/config/CONFIG_SITE.Host.hp700

View File

@@ -4,7 +4,6 @@
# ORNL SNS overrides for cross compilers
#VX_DIR_YES = /opt/tornado20/
#VX_CONFIG_DIR_YES = $(VX_DIR)/target/config
#VX_INCLUDE_YES = /usr/local/crossgcc/ppc/powerpc-wrs-vxworks/sys-include
#VX_GNU_YES = /usr/local/crossgcc/ppc/
#VX_GNU_BIN_YES = $(VX_GNU)/bin

View File

@@ -40,6 +40,7 @@ vpath %.c $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic ..
vpath %.cc $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic ..
vpath %.cpp $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic ..
vpath %.rc $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic ..
vpath %.jar $(USER_VPATH) ..
# check for add-on CFLAGS and CXXFLAGS
#
@@ -363,7 +364,7 @@ buildInstall :: build $(TARGETS) \
clean::
@echo "Cleaning"
@$(RM) *.i *$(OBJ) *.a $(PROD) $(TESTPROD) $(LIBNAME) $(SHRLIBNAME) $(INC) \
*$(RES) $(TARGETS) $(DBDINSTALL) $(MENUS) $(RECTYPES) $(BPTS)
*$(RES) $(TARGETS) *.dbd $(MENUS) $(RECTYPES) $(BPTS)
ifdef DBDEXPAND
@$(RM) $(DBDNAME)
endif
@@ -388,6 +389,14 @@ PRODNAME_SRCS += $(PRODNAME_SRCS_DEFAULT)
endif
endif
ifneq ($(strip $(PRODNAME_OBJS_$(ARCH_CLASS))),)
PRODNAME_OBJS += $(subst -nil-,,$(PRODNAME_OBJS_$(ARCH_CLASS)))
else
ifdef PRODNAME_OBJS_DEFAULT
PRODNAME_OBJS += $(PRODNAME_OBJS_DEFAULT)
endif
endif
ifneq ($(strip $(PRODNAME_RCS_$(ARCH_CLASS))),)
PRODNAME_RCS += $(subst -nil-,,$(PRODNAME_RCS_$(ARCH_CLASS)))
else
@@ -406,8 +415,8 @@ else
PRODNAME_LINKER = $(LINK.c)
endif
PRODNAME_OBJS=$(addsuffix $(OBJ), $(basename $(PRODNAME_SRCS)))
PRODNAME_RESS=$(addsuffix $(RES), $(basename $(PRODNAME_RCS)))
PRODNAME_OBJS+=$(addsuffix $(OBJ), $(basename $(PRODNAME_SRCS)))
PRODNAME_RESS+=$(addsuffix $(RES), $(basename $(PRODNAME_RCS)))
ifdef BORLANDC
$(PRODNAME): $(PRODNAME_OBJS) $(PRODNAME_RESS)
@@ -466,6 +475,15 @@ TESTCLASSES += $(subst .java,.class,$(TESTJAVA))
INSTALL_CLASSES =$(CLASSES:%=$(INSTALL_JAVA)/$(PACKAGE)/%)
INSTALL_JAR =$(JAR:%=$(INSTALL_JAVA)/%)
ifeq ($(strip $(JAVADOC)),YES)
DIRECTORY_TARGETS += $(INSTALL_HTML)
INSTALL_JAVADOC = $(CLASSES:%.class=$(INSTALL_HTML)/%.html)
ifdef PACKAGE
DIRECTORY_TARGETS += $(INSTALL_HTML)/$(PACKAGE)
INSTALL_JAVADOC = $(CLASSES:%.class=$(INSTALL_HTML)/$(PACKAGE)/$(PACKAGE)/%.html)
endif
endif
JAR_OPTIONS = cvf
ifdef MANIFEST
JAR_OPTIONS = cvmf
@@ -478,10 +496,10 @@ $(DIRECTORY_TARGETS) :
build:: $(TESTCLASSES) $(JAR)
buildInstall :: $(DIRECTORY_TARGETS) $(INSTALL_CLASSES) $(INSTALL_JAR)
buildInstall :: $(DIRECTORY_TARGETS) $(INSTALL_CLASSES) $(INSTALL_JAR) $(INSTALL_JAVADOC)
clean::
@$(RM) $(TESTCLASSES) $(JAR)
@$(RM) $(TESTCLASSES) $(JAR) $(INSTALL_CLASSES) $(INSTALL_JAVADOC)
%.class:%.java
@echo Creating java class file $@
@@ -493,6 +511,11 @@ $(INSTALL_JAVA)/$(PACKAGE)/%.class:%.java
@$(RM) $@
$(JAVACCMD) -d $(INSTALL_JAVA) $<
$(INSTALL_JAVADOC):$(JAVA)
@echo Creating javadoc html files $@
@$(RM) $@
$(JAVADOCCMD) -d $(INSTALL_HTML)/$(PACKAGE) $(PACKAGE)
$(JAR):%.jar: $(JAR_DEPFILES)
@echo Creating java jar file $@
@$(RM) $@
@@ -505,7 +528,7 @@ $(INSTALL_JAVA)/%.jar: %.jar
$(PACKAGE)_%.h:$(INSTALL_JAVA)/$(PACKAGE)/%.class
$(JAVAHCMD) $(PACKAGE).$*
.PRECIOUS: $(INSTALL_CLASSES)
.PRECIOUS: $(INSTALL_CLASSES) $(INSTALL_JAVADOC)
#---------------------------------------------------------------
#---------------------------------------------------------------

View File

@@ -23,7 +23,6 @@ GNU_TARGET_LIB_DIR = $(GNU_DIR)/$(GNU_TARGET)/lib
export GCC_EXEC_PREFIX = $(GNU_LIB)/gcc-lib/
CROSS_CPPFLAGS = -nostdinc
CROSS_INCLUDES = $(addprefix -I,$(GNU_TARGET_INCLUDE_DIR))
CROSS_LDFLAGS = $(addprefix -L,$(GNU_TARGET_LIB_DIR))

View File

@@ -10,6 +10,8 @@
#--------------------------------------------------
# GNU compiler defaults
GNU = YES
GNU_BIN = $(GNU_DIR)/bin
GNU_LIB = $(GNU_DIR)/lib
@@ -41,6 +43,6 @@ OPT_CXXFLAGS_NO = -g
STATIC_LDFLAGS_YES = -static
STATIC_LDFLAGS_NO =
SHRLIB_LDFLAGS_YES = -shared
SHRLIB_LDFLAGS_NO =
SHRLIB_LDFLAGS_YES += -shared
SHRLIB_LDFLAGS_NO +=

View File

@@ -23,6 +23,19 @@
# USR_CFLAGS_sun4 = -nil-
# USR_CFLAGS_DEFAULT = <defines for most systems, not sun4>
#
# Additional target architecture, T_A, Rules for USR_CFLAGS, USR_CXXFLAGS,
# and USR_CPPFLAGS which are applied before the above os_class Rules:
# 1) USR_CFLAGS_$(OS_CLASS) is used
# 2) if there is a special $(USR_CFLAGS_$(T_A)), it's
# appended to 1)
# 3) if there is no special defined, but a generic USR_CFLAGS_$(OS_CLASS)_DEFAULT,
# this one is appended
# 4) if you have the special case that your $(USR_CFLAGS_$(T_A)) is
# empty but you don't want 3), you have to define it as '-nil-', e.g.:
# USR_CFLAGS_vxWorks = <defines for all OS_CLASS=vxWorks target systems>
# USR_CFLAGS_vxWorks-68040 = -nil-
# USR_CFLAGS_vxWorks_DEFAULT = <defines for most vxWorks systems, not 68040>
#
# These rules apply to these Makefile-variables:
# USR_CFLAGS C flags
# USR_CXXFLAGS C++ flags
@@ -46,6 +59,14 @@
# The INC source files cannot be created by the build.
#
ifneq ($(strip $(USR_CFLAGS_$(T_A))),)
USR_CFLAGS_$(OS_CLASS)+=$(subst -nil-,,$(USR_CFLAGS_$(T_A)))
else
ifdef USR_CFLAGS_$(OS_CLASS)_DEFAULT
USR_CFLAGS_$(OS_CLASS)+=$(USR_CFLAGS_$(OS_CLASS)_DEFAULT)
endif
endif
ifneq ($(strip $(USR_CFLAGS_$(OS_CLASS))),)
USR_CFLAGS+=$(subst -nil-,,$(USR_CFLAGS_$(OS_CLASS)))
else
@@ -62,6 +83,14 @@ USR_INCLUDES+=$(USR_INCLUDES_DEFAULT)
endif
endif
ifneq ($(strip $(USR_CXXFLAGS_$(T_A))),)
USR_CXXFLAGS_$(OS_CLASS)+=$(subst -nil-,,$(USR_CXXFLAGS_$(T_A)))
else
ifdef USR_CXXFLAGS_$(OS_CLASS)_DEFAULT
USR_CXXFLAGS_$(OS_CLASS)+=$(USR_CXXFLAGS_$(OS_CLASS)_DEFAULT)
endif
endif
ifneq ($(strip $(USR_CXXFLAGS_$(OS_CLASS))),)
USR_CXXFLAGS+=$(subst -nil-,,$(USR_CXXFLAGS_$(OS_CLASS)))
else
@@ -70,6 +99,14 @@ USR_CXXFLAGS+=$(USR_CXXFLAGS_DEFAULT)
endif
endif
ifneq ($(strip $(USR_CPPFLAGS_$(T_A))),)
USR_CPPFLAGS_$(OS_CLASS)+=$(subst -nil-,,$(USR_CPPFLAGS_$(T_A)))
else
ifdef USR_CPPFLAGS_$(OS_CLASS)_DEFAULT
USR_CPPFLAGS_$(OS_CLASS)+=$(USR_CPPFLAGS_$(OS_CLASS)_DEFAULT)
endif
endif
ifneq ($(strip $(USR_CPPFLAGS_$(OS_CLASS))),)
USR_CPPFLAGS+=$(subst -nil-,,$(USR_CPPFLAGS_$(OS_CLASS)))
else

View File

@@ -18,9 +18,9 @@
EPICS_VERSION=3
EPICS_REVISION=14
EPICS_MODIFICATION=0
EPICS_UPDATE_NAME=beta
EPICS_UPDATE_LEVEL=2
EPICS_MODIFICATION=1
EPICS_UPDATE_NAME=
EPICS_UPDATE_LEVEL=0
EPICS_VERSION_STRING="EPICS Version ${EPICS_VERSION}.${EPICS_REVISION}.${EPICS_MODIFICATION}.${EPICS_UPDATE_NAME}${EPICS_UPDATE_LEVEL}"

View File

@@ -16,6 +16,10 @@
#
# Common Configuration Information
#-------------------------------------------------------
# Divider symbol
DIVIDER = .
#-------------------------------------------------------
# Build architectures
@@ -28,54 +32,15 @@ CROSS2 = $(CROSS_COMPILER_TARGET_ARCHS$(filter-out 1,$(words $(filter $(EPICS_HO
BUILD_ARCHS = $(EPICS_HOST_ARCH) $(CROSS1) $(CROSS2)
#-------------------------------------------------------
# Ext, app, and module configure dir targets
CONFIG_TARGETS += CONFIG_APP_INCLUDE RULES_INCLUDE
CONFIG_INSTALLS += ../RULES_BUILD
#-------------------------------------------------------
# Check configure/RELEASE file for consistency
CHECK_RELEASE_YES = checkRelease
CHECK_RELEASE_NO =
#-------------------------------------------------------
# Cross compile default, HOST or CROSS, CONFIG.crossCommon will override
BUILD_CLASS = HOST
#-------------------------------------------------------
# Build defaults, CONFIG_SITE, CONFIG, or os/CONFIG* will override
CMPLR=STRICT
CXXCMPLR=STRICT
STATIC_BUILD=NO
SHARED_LIBRARIES=NO
HDEPENDS=YES
HOST_OPT=YES
CROSS_OPT=YES
HOST_WARN=YES
CROSS_WARN=YES
#-------------------------------------------------------
# Prefix and suffix
DEP=.depends
DIVIDER = .
OBJ = .
RES = .
#-------------------------------------------------------
# Default for perl if it's on the PATH,
# otherwise override this in os/CONFIG_SITE.<host_arch>.Common
PERL=perl
#-------------------------------------------------------
# tools for installing libraries and products
INSTALL = $(PERL) $(TOOLS)/installEpics.pl
INSTALL_PRODUCT = $(INSTALL)
INSTALL_LIBRARY = $(INSTALL)
#---------------------------------------------------------------
# tools for making header dependancies and variable replacement
MKMF = $(PERL) $(TOOLS)/mkmf.pl
REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
# Check configure/RELEASE file for consistency
CHECK_RELEASE_YES = checkRelease
CHECK_RELEASE_NO =
#-------------------------------------------------------
# Directories
@@ -108,6 +73,45 @@ INSTALL_SHRLIB = $(INSTALL_LOCATION_LIB)/$(T_A)
INSTALL_TCLLIB = $(INSTALL_LOCATION_LIB)/$(T_A)
INSTALL_BIN = $(INSTALL_LOCATION_BIN)/$(T_A)
#-------------------------------------------------------
# Ext, app, and module configure dir targets
CONFIG_TARGETS += CONFIG_APP_INCLUDE RULES_INCLUDE
CONFIG_INSTALLS += ../RULES_BUILD
#-------------------------------------------------------
# Cross compile default, HOST or CROSS, CONFIG.crossCommon will override
BUILD_CLASS = HOST
#-------------------------------------------------------
# Build defaults, CONFIG_SITE, CONFIG, or os/CONFIG* will override
CMPLR=STRICT
CXXCMPLR=STRICT
STATIC_BUILD=NO
SHARED_LIBRARIES=NO
HDEPENDS=YES
HOST_OPT=YES
CROSS_OPT=YES
HOST_WARN=YES
CROSS_WARN=YES
GNU=NO
#-------------------------------------------------------
# Prefix and suffix
DEP=.depends
OBJ = .
RES = .
#-------------------------------------------------------
# tools for installing libraries and products
INSTALL = $(PERL) $(TOOLS)/installEpics.pl
INSTALL_PRODUCT = $(INSTALL)
INSTALL_LIBRARY = $(INSTALL)
#---------------------------------------------------------------
# tools for making header dependancies and variable replacement
MKMF = $(PERL) $(TOOLS)/mkmf.pl
REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
#--------------------------------------------------
# vpath directories
GENERIC_SRC_DIRS = .. $(SRC_DIRS)
@@ -193,11 +197,11 @@ USR_DBDFLAGS =
USR_ARFLAGS =
# Target specific options
TARGET_INCLUDES = $($(basename $@)_INCLUDES_$(T_A)) $($(basename $@)_INCLUDES)
TARGET_CFLAGS = $($(basename $@)_CFLAGS_$(T_A)) $($(basename $@)_CFLAGS)
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS_$(T_A)) $($(basename $@)_CXXFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS_$(T_A)) $($(basename $@)_LDFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS_$(T_A)) $($(basename $@)_CPPFLAGS)
TARGET_INCLUDES = $($(basename $@)_INCLUDES_$(T_A))
TARGET_CFLAGS = $($(basename $@)_CFLAGS_$(T_A))
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS_$(T_A))
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS_$(T_A))
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS_$(T_A))
TARGET_INCLUDES += $($(basename $@)_INCLUDES_$(OS_CLASS)) $($(basename $@)_INCLUDES)
TARGET_CFLAGS += $($(basename $@)_CFLAGS_$(OS_CLASS)) $($(basename $@)_CFLAGS)
@@ -206,24 +210,17 @@ TARGET_LDFLAGS += $($(basename $@)_LDFLAGS_$(OS_CLASS)) $($(basename $@)_LDFLAGS
TARGET_CPPFLAGS += $($(basename $@)_CPPFLAGS_$(OS_CLASS)) $($(basename $@)_CPPFLAGS)
# Level of ansi conformance flags
CONFORM_CPPFLAGS = $(CONFORM_CPPFLAGS_$(firstword $($(basename $@)_CMPLR_$(T_A)) \
$($(basename $@)_CMPLR_$(OS_CLASS)) $($(basename $@)_CMPLR) $(CMPLR)))
CONFORM_CFLAGS = $(CONFORM_CFLAGS_$(firstword $($(basename $@)_CMPLR_$(T_A)) \
$($(basename $@)_CMPLR_$(OS_CLASS)) $($(basename $@)_CMPLR) $(CMPLR)))
CONFORM_CXXFLAGS = $(CONFORM_CXXFLAGS_$(firstword $($(basename $@)_CMPLR_$(T_A)) \
$($(basename $@)_CMPLR_$(OS_CLASS)) $($(basename $@)_CMPLR) $(CXXCMPLR)))
CONFORM_CPPFLAGS = $(CONFORM_CPPFLAGS_$(CMPLR))
CONFORM_CFLAGS = $(CONFORM_CFLAGS_$(CMPLR))
CONFORM_CXXFLAGS = $(CONFORM_CXXFLAGS_$(CMPLR))
# Warnings flags
WARN_CFLAGS = $(WARN_CFLAGS_$(firstword $($(basename $@)_WARN_$(T_A)) \
$($(basename $@)_WARN_$(OS_CLASS)) $($(basename $@)_WARN) $($(BUILD_CLASS)_WARN)))
WARN_CXXFLAGS = $(WARN_CXXFLAGS_$(firstword $($(basename $@)_WARN_$(T_A)) \
$($(basename $@)_WARN_$(OS_CLASS)) $($(basename $@)_WARN) $($(BUILD_CLASS)_WARN)))
WARN_CFLAGS = $(WARN_CFLAGS_$($(BUILD_CLASS)_WARN))
WARN_CXXFLAGS = $(WARN_CXXFLAGS_$($(BUILD_CLASS)_WARN))
# Optimization flags
OPT_CFLAGS = $(OPT_CFLAGS_$(firstword $($(basename $@)_OPT_$(T_A)) \
$($(basename $@)_OPT_$(OS_CLASS)) $($(basename $@)_OPT) $($(BUILD_CLASS)_OPT)))
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$(firstword $($(basename $@)_OPT_$(T_A)) \
$($(basename $@)_OPT_$(OS_CLASS)) $($(basename $@)_OPT) $($(BUILD_CLASS)_OPT)))
OPT_CFLAGS = $(OPT_CFLAGS_$($(BUILD_CLASS)_OPT))
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$($(BUILD_CLASS)_OPT))
# Posix flags
POSIX=YES
@@ -236,6 +233,11 @@ STATIC_CXXCFLAGS = $(STATIC_CXXFLAGS_$(STATIC_BUILD))
STATIC_LDFLAGS = $(STATIC_LDFLAGS_$(STATIC_BUILD))
STATIC_LDLIBS = $(STATIC_LDLIBS_$(STATIC_BUILD))
#--------------------------------------------------
# Command-line input support default
COMMANDLINE_LIBRARY = EPICS
OP_SYS_LDLIBS += $(LDLIBS_$(COMMANDLINE_LIBRARY))
#--------------------------------------------------
# Flags
@@ -251,7 +253,7 @@ CXXFLAGS = $(CONFORM_CXXFLAGS) $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
$(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) $(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS)
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(PROD_LDFLAGS)\
$(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
$(ARCH_DEP_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
LDLIBS = $(PROD_LDLIBS) $(STATIC_LDLIBS)\
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(OP_SYS_LDLIBS)
@@ -364,5 +366,5 @@ COMMON_INC += $(filter $(COMMON_DIR)/%, $(foreach file, $(INC), \
SOURCE_INC = $(wildcard $(file) $(SOURCE_INC_bbb) )
SOURCE_INC_bbb = $(foreach dir, $(ALL_SRC_DIRS), $(SOURCE_INC_aaa) )
SOURCE_INC_aaa = $(addsuffix /$(file), $(dir) )
endif

View File

@@ -29,140 +29,22 @@
# Default environment settings
# Channel Access:
# EPICS_CA_ADDR_LIST
# Augment beacon/search dest ip addr list
# from white space separated ip addresses in this
# environment variable. "Quote" if more than one addr.
#
# EPICS_CA_AUTO_ADDR_LIST
# YES = augment beacon/search dest ip
# addr list from network interfaces found; NO = only use
# EPICS_CA_ADDR_LIST to create this list.
#
# EPICS_CA_CONN_TMO
# after not seeing a server beacon for this number
# of seconds the clients will send an echo request over
# tcp/ip to verify the connection.
#
# EPICS_CA_REPEATER_PORT CA repeater port number.
#
# EPICS_CA_SERVER_PORT CA server port number.
#
# EPICS_CA_MAX_ARRAY_BYTES
# This parameter specifies the size (in bytes) of the largest array
# that will transport through CA. It must be specified for both the
# client and the server library.
#
# Details are in the CA reference manual
# (see CAref.html in this distribution)
EPICS_CA_ADDR_LIST=""
EPICS_CA_AUTO_ADDR_LIST=YES
EPICS_CA_CONN_TMO=30.0
EPICS_CA_REPEATER_PORT=5065
EPICS_CA_SERVER_PORT=5064
EPICS_CA_MAX_ARRAY_BYTES=16384
#
# These parameters are only used by the CA server library
#
# EPICS_CA_BEACON_PERIOD
# The quiescent sec between server beacons.
#
# EPICS_CAS_INTF_ADDR_LIST
# This specifies a list of IP addresses identifying
# a limited set of network interfaces for server communication.
#
# Specifically, this parameter specifies the interfaces from
# which the server will accept TCP/IP connections. It also
# specifies that UDP search messages addressed to both
# the IP addresses in EPICS_CAS_INTF_ADDR_LIST and also to
# the broadcast addresses of corresponding LAN interfaces
# will be accepted by the server. If this parameter is empty
# then all UDP search messages and TCP connection requests
# addressed to the host are accepted.
#
# If EPICS_CA_AUTO_ADDR_LIST is NO, then the beacon address list
# is not auto configured.
#
# If EPICS_CA_AUTO_ADDR_LIST is YES and EPICS_CAS_INTF_ADDR_LIST
# has _not_ been specified then beacons are sent to the broadcast
# addresses of all LAN interfaces and the destination addresses of
# all point-to-point serial interfaces.
#
# If EPICS_CA_AUTO_ADDR_LIST is YES and EPICS_CAS_INTF_ADDR_LIST
# _has_ been specified then beacons are sent to the broadcast address
# of each LAN interface corresponding to an IP address in
# EPICS_CAS_INTF_ADDR_LIST or the destination address of
# a point-to-point serial interfaces corresponding to an IP
# address in EPICS_CAS_INTF_ADDR_LIST.
#
# Beacons may be sent to additional hand configured addresses
# (see the notes below under EPICS_CAS_BEACON_ADDR_LIST).
#
# EPICS_CAS_BEACON_ADDR_LIST
# If this parameter is specified, or if EPICS_CAS_INTF_ADDR_LIST
# isnt empty, then this parameter is used by the server library to
# augment the list of addresses beacons are sent to. Otherwise
# EPICS_CA_ADDR_LIST is used to augment the list of addresses
# beacons are sent to.
#
# EPICS_CAS_SERVER_PORT
# If this parameter is specified then it
# and not EPICS_CA_SERVER_PORT is used to determine the server's
# port number. It is possible to have multiple servers on the
# same host on the same EPICS_CAS_SERVER_PORT port if the IP
# kernel is modern (if it has multicast enhancements). In this
# situation all servers will share the same user specified
# UDP port number and will be assigned unique TCP port numbers.
#
# The fact that the servers may not be using the user specified
# port number for TCP will be nearly transparent to EPICS
# 3.13 or higher clients that will be locating the servers
# using the user specified UDP port number, but will be connecting
# to the servers using whatever TCP port has been assigned.
# Unfortunately, a severe limitation exists in most IP
# kernels: if multiple servers are listening for search requests
# addressed to the same UDP port then they will all receive a copy
# of each UDP message received by the IP kernel that has a broadcast
# destination address. Unfortunately, in many IP kernel
# implementations only one of the servers will receive UDP
# messages with a single host (unicast) destination address.
#
# If experiencing trouble getting clients to connect
# --------------------------------------------------
#
# o Make sure that the broadcast addresses are identical on the
# server's host and on the client's host. This can be checked
# on UNIX with "netstat -i" or "ifconfig -a"; on vxWorks with
# ifShow; and on windows with ipconfig.
#
# o Make sure that the client and server are using the same UDP
# port. Check the server's port by running "netstat -a | grep nnn"
# where nnn is the port number involved. If you do not set
# EPICS_CA_SERVER_PORT or EPICS_CAS_SERVER_PORT then the default port
# will be 5064.
#
# o Two servers can run on the same host with the same server port number
# if the following restrictions are understood (good luck). If the host has a
# modern IP kernel it is possible to have two servers on the same UDP port.
# It is not possible for two servers to run on the same host using the same
# TCP IP server port. If the CA server library detects that a 2nd server is
# attempting to start on the same port as an existing CA server then both
# servers will use the same UDP port if it is a modern IP kernel, and the 2nd
# server will be allocated a new TCP port. In this situation the clients will
# still be configured to use the same port number for both servers. The clients
# will find the 2nd server via the shared UDP port, and transparently connect
# to the 2nd server's allocated TCP port. Be aware that If there are two server's
# running on the same host on the same UDP port then they will both receive all
# UDP search requests sent as broadcasts, but will unfortunately (due to a common
# weakness of most IP kernel implementations) only one of the servers will
# typically receive UDP search requests sent to unicast addresses (i.e. a specific
# host's ip address).
#
EPICS_CA_BEACON_PERIOD=15.0
EPICS_CAS_INTF_ADDR_LIST=""
EPICS_CAS_BEACON_PERIOD=
EPICS_CAS_BEACON_PORT=
EPICS_CAS_AUTO_BEACON_ADDR_LIST=""
EPICS_CAS_BEACON_ADDR_LIST=""
EPICS_CAS_SERVER_PORT=
EPICS_CAS_INTF_ADDR_LIST=""
EPICS_CAS_IGNORE_ADDR_LIST=""
# Log Server:
# EPICS_IOC_LOG_PORT Log server port number etc.

View File

@@ -34,10 +34,13 @@
# win32-x86 (MS Visual C++ compiler used for host builds)
# win32-x86-borland (Borland C++ compiler used for host builds)
# lynxos-x86
#
# EPICS_HOST_ARCH is an environment variable
# EPICS_HOST_ARCH=$(shell /usr/local/epics/startup/EpicsHostArch)
# darwin-ppc
# linux-mpc82xx
# EPICS_HOST_ARCH is a required environment variable
# Do not set EPICS_HOST_ARCH in this file.
# Use base/startup files to set EPICS_HOST_ARCH or
# set EPICS_HOST_ARCH on the GNU make command line.
# The cross-compiler architectures to build EPICS for
#
@@ -57,8 +60,7 @@
# configure/os/CONFIG_SITE.<host>.Common files will
# override
#
#CROSS_COMPILER_TARGET_ARCHS=
CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040 vxWorks-ppc604
CROSS_COMPILER_TARGET_ARCHS=
# If only a subset of the host architectures perform
@@ -121,3 +123,4 @@ CROSS_WARN=YES
# Installation directory
INSTALL_LOCATION=$(TOP)

View File

@@ -31,9 +31,11 @@
# EPICS_TIMEZONE needed for vxWorks
# EPICS_TIMEZONE=<name>::<minutesWest>:<start daylight>:<end daylight>
# eg EPICS_TIMEZONE=CUS::360:033102:102802
# DST for 2003 US: Apr 6 - Oct 26
# EU: Mar 30 - Oct 26
# EPICS_TS_NTP_INET ntp or Unix time server ip addr.
EPICS_TIMEZONE=CUS::360:033102:102802
EPICS_TIMEZONE=CUS::360:040602:102602
EPICS_TS_NTP_INET=

View File

@@ -13,3 +13,5 @@
# Tornado directory
VX_DIR = /usr/local/vw/tornado202
# Is Tornado version >= 2.2 ? must be either YES or NO
TORNADO_VERSION_2_2 = NO

View File

@@ -13,9 +13,9 @@
vpath %.dbd $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DBD)) $(COMMON_DIR)
vpath %.db $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DB)) $(COMMON_DIR)
vpath %.vdb $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DB)) $(COMMON_DIR)
vpath %.substitutions $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
vpath %.template $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
vpath %.edf $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
vpath bpt%.data $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
##################################################### dbdflags
@@ -51,7 +51,22 @@ SOURCE_DB_aaa = $(addsuffix /$(file), $(dir) )
COMMONS = $(COMMON_DIR)/*.dbd $(COMMON_DIR)/*.db $(COMMON_DIR)/*.h \
$(COMMON_DIR)/*.substitutions $(COMMON_DIR)/*.template
PREFIX=$(shell echo $* | sed -e 's-[0-9]--g' | sed -e 's-\.db--g')
# Remove trailing numbers (to 99) on stem
TEMPLATE1=$(patsubst %0,%,$(patsubst %1,%,$(patsubst %2,%,$(patsubst %3,%,$(patsubst %4,%, \
$(patsubst %5,%,$(patsubst %6,%,$(patsubst %7,%,$(patsubst %8,%,$(patsubst %9,%, \
$*))))))))))
TEMPLATE2=$(patsubst %0,%,$(patsubst %1,%,$(patsubst %2,%,$(patsubst %3,%,$(patsubst %4,%, \
$(patsubst %5,%,$(patsubst %6,%,$(patsubst %7,%,$(patsubst %8,%,$(patsubst %9,%, \
$(TEMPLATE1)))))))))))
TEMPLATE3=$(addsuffix .template,$(addprefix ../,$(TEMPLATE2)))
TEMPLATE_FILENAME=$(firstword $(wildcard ../$*.template) $(TEMPLATE3))
# dbst based database optimization
ifeq '$(DB_OPT)' 'YES'
RAW=.raw
COMMON_DBS = $(addprefix $(COMMON_DIR)/,$(filter %.db,$(DB)))
COMMON_DBS += $(addsuffix $(RAW),$(addprefix $(COMMON_DIR)/,$(filter %.db,$(DB))))
endif
##################################################### dependancies
@@ -79,10 +94,10 @@ COMMONS = $(DBD) $(DB)
all: install
buildInstall : build
install: buildInstall
buildInstall : build
rebuild: clean install
.PHONY: all inc build install clean rebuild buildInstall
@@ -133,7 +148,7 @@ endif
$(COMMON_DIR)/%.edf: ../%.sch $(DEPSCHS)
@$(RM) $@
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) -o $@ $<
##################################################### Substitution files
@@ -145,17 +160,25 @@ $(COMMON_DIR)/%.substitutions:
@$(CREATESUBSTITUTIONS) $(COMMON_DIR)/$*
endif
.PRECIOUS: $(DB:%.db=$(COMMON_DIR)/%.substitutions)
$(INSTALL_DB)/%.substitutions: %.substitutions
@echo "Installing db file $@"
@$(INSTALL) -d -m 644 $< $(@D)
.PRECIOUS: $(COMMON_DIR)/%.substitutions
##################################################### Template files
$(COMMON_DIR)/%.template: %.edf
$(COMMON_DIR)/%.template: $(COMMON_DIR)/%.edf
@$(RM) $@
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $<
@$(REPLACEVAR) < $@.VAR > $@
@$(RM) $@.VAR
.PRECIOUS: $(DB:%.db=$(COMMON_DIR)/%.template)
$(INSTALL_DB)/%.template: %.template
@echo "Installing db file $@"
@$(INSTALL) -d -m 644 $< $(@D)
.PRECIOUS: $(COMMON_DIR)/%.template
##################################################### INC files
@@ -188,22 +211,23 @@ $(INSTALL_DBD)/%: %
##################################################### DB files
$(COMMON_DIR)/%.db$(RAW): %.edf
$(COMMON_DIR)/%.db$(RAW): $(COMMON_DIR)/%.edf
$(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $<
@$(REPLACEVAR) < $@.VAR > $@
@$(RM) $@.VAR
$(COMMON_DIR)/%.db$(RAW): %.substitutions %.template
$(COMMON_DIR)/%.db$(RAW): %.substitutions
@$(RM) $@$(DEP)
@$(DBDDEPENDS_CMD)
@echo "$@:$(TEMPLATE_FILENAME)" >> $@$(DEP)
@echo "Inflating database from $<"
@$(RM) $@
$(MSI) -S $^ > $@
$(MSI) -S$< $(TEMPLATE_FILENAME) > $@
# dbst based database optimization
ifeq '$(DB_OPT)' 'YES'
$(COMMON_DIR)/%.db$(RAW): %.db
$(COMMON_DIR)/%.db$(RAW): ../%.db
@$(RM) $@
$(CP) $< $@
@@ -212,21 +236,20 @@ $(COMMON_DIR)/%.db: $(COMMON_DIR)/%.db$(RAW)
@$(RM) $@
$(DBST) . $< -d > $@
$(INDDBFROMTEMPLATE):%.db: %.substitutions
$(RM) $@
ifndef WIN32
$(MSI) -S$*.substitutions $(PREFIX).template > $@
endif
RAW=.raw
$(INSTALL_DB)/%.db: $(COMMON_DIR)/%.db
@echo "Installing db file $@"
@$(INSTALL) -d -m 644 $< $(@D)
.PRECIOUS: $(COMMON_DIR)/%.db
.PRECIOUS: $(DB:%=$(COMMON_DIR)/%$(RAW))
endif
else
$(INSTALL_DB)/%: %
@echo "Installing db file $@"
@$(INSTALL) -d -m 644 $< $(@D)
endif
.PRECIOUS: $(COMMON_DIR)/%.edf
.PRECIOUS: $(COMMON_DBS)
##################################################### register record,device,driver support

View File

@@ -15,7 +15,7 @@ all: install
build install buildInstall: $(CHECK_RELEASE_$(CHECK_RELEASE))
rebuild: clean all
rebuild: clean install
ACTIONS = inc
ACTIONS += build
@@ -29,6 +29,8 @@ archPart = $(word 2, $(subst $(DIVIDER), ,$@))
actionArchTargets = $(foreach x, $(ACTIONS),\
$(foreach arch,$(BUILD_ARCHS), $(x)$(DIVIDER)$(arch)))
cleanArchTargets = $(foreach arch,$(BUILD_ARCHS), clean$(DIVIDER)$(arch))
buildDirs = $(addprefix O.,$(BUILD_ARCHS))
$(actionArchTargets) : $(buildDirs) O.Common
@@ -54,15 +56,15 @@ checkRelease: $(wildcard $(TOP)/configure/RELEASE*)
clean ::
$(RMDIR) $(addprefix O.,$(BUILD_ARCHS)) O.Common
clean$(DIVIDER)% ::
$(RMDIR) O.$*
$(cleanArchTargets) ::
$(RMDIR) O.$(archPart)
realclean ::
$(RMDIR) O.*
.PHONY : $(buildActionTargets)
.PHONY : $(buildActionArchTargets)
.PHONY : $(buildArchs)
.PHONY : $(actionArchTargets)
.PHONY : $(cleanArchTargets)
.PHONY : $(BUILD_ARCHS)
.PHONY : $(ACTIONS) clean realclean all
.PHONY : checkRelease

View File

@@ -130,19 +130,19 @@ endif
# Main targets
inc : $(COMMON_INC) $(INSTALL_INC)
build : inc
install: buildInstall
buildInstall : build
install: buildInstall
rebuild: clean install
build : inc
build: $(OBJSNAME) $(LIBTARGETS) $(PRODTARGETS) $(TESTPRODNAME) \
$(TARGETS)
inc : $(COMMON_INC) $(INSTALL_INC)
buildInstall : \
$(INSTALL_SCRIPTS) $(INSTALL_PROD) $(INSTALL_MUNCHS) \
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) \
@@ -201,7 +201,7 @@ $(OBJLIBNAME):%$(OBJ): $(OBJLIB_LD_OBJS)
%_ctdt$(OBJ) : %_ctdt.c
@$(RM) $@
$(COMPILE.c) -traditional $<
$(COMPILE.ctdt) $<
%$(OBJ): %.c
@$(HDEPENDS_CMD)

View File

@@ -33,9 +33,9 @@ actionArchTargets = $(foreach action, $(ACTIONS),\
$(foreach arch, $(ARCHS), \
$(action)$(DIVIDER)$(arch)))
all : buildInstall
all : install
rebuild : clean all
rebuild : clean install
$(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets) :
$(MAKE) -C $(dirPart) $(actionArchPart)

View File

@@ -68,29 +68,37 @@ else
JAR_OPTIONS = cvf
endif
#-------------------------------------------------------
# Java doc definitions
ifeq ($(JAVADOC),YES)
JAVADOCFLAGS += $(USR_JAVADOCFLAGS)
JAVADOCCMD = $(subst \,/,$(JAVA_BIN)/javadoc$(EXE) $(CLASSPATH) $(SOURCEPATH) $(JAVADOCFLAGS))
INSTALL_JAVADOC = $(CLASSES:%.class=$(INSTALL_HTML)/%.html)
endif
#-------------------------------------------------------
# Java rules
all: install
install: buildInstall
buildInstall : build
rebuild: clean install
inc: $(JAVA_DIRECTORY_TARGETS) $(INSTALL_CLASSES) $(COMMON_JAVAINC)
build: inc
build: $(COMMON_TESTCLASSES) $(COMMON_JAR)
buildInstall : build
buildInstall : $(INSTALL_JAR)
install: buildInstall
rebuild: clean install
buildInstall : $(INSTALL_JAR) $(INSTALL_JAVADOC)
#This clean works only from O.* dirs.
clean::
@$(RMDIR) $(INSTALL_CLASSES)
@$(RM) $(INSTALL_JAR)
@$(RM) $(INSTALL_JAR) $(INSTALL_JAVADOC)
@$(RM) $(COMMON_TESTCLASSES) $(COMMON_JAR) $(COMMON_JAVAINC)
$(JAVA_DIRECTORY_TARGETS):
@@ -111,6 +119,11 @@ $(INSTALL_CLASSES): $(addprefix ../,$(DEPJAVA))
@$(RM) $@
$(JAVACCMD) -d $(INSTALL_JAVA) $^
$(INSTALL_JAVADOC): $(addprefix ../,$(DEPJAVA))
@echo Creating java class files
@$(RM) $@
$(JAVADOCCMD) -d $(INSTALL_JAVA) $^
$(COMMON_DIR)/%.jar: $(JARDEPFILES)
@echo Creating java jar file $@
@$(RM) $@
@@ -120,3 +133,4 @@ $(INSTALL_JAVA)/%.jar: $(COMMON_DIR)/%.jar
@echo "Installing java jar file $@"
@$(INSTALL) -d -m 644 $< $(@D)
.PHONY: all install buildInstall rebuild clean build inc

View File

@@ -13,8 +13,11 @@
include $(CONFIG)/RULES_DIRS
uninstall$(DIVIDER)%: uninstallDirs
@$(RMDIR) $(INSTALL_LOCATION_BIN)/$* $(INSTALL_LOCATION_LIB)/$*
uninstallArchTargets = $(foreach arch,$(BUILD_ARCHS), uninstall$(DIVIDER)$(arch))
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
$(uninstallArchTargets): uninstallDirs
@$(RMDIR) $(INSTALL_LOCATION_BIN)/$(archPart) $(INSTALL_LOCATION_LIB)/$(archPart)
cleandirs:
@echo " " #stops "nothing to be done for cleandirs" message
@@ -67,5 +70,6 @@ help:
@echo "Indiv. object targets are supported by O.<arch> level Makefile .e.g"
@echo " xxxRecord.o"
.PHONY : uninstall help cleandirs distclean uninstallDirs realuninstall realclean distclean
.PHONY : $(uninstallArchTargets)
.PHONY : uninstall help cleandirs distclean uninstallDirs realuninstall

View File

@@ -34,8 +34,9 @@ CCC = $(RTEMS_BASE)/bin/$(CXX)
CPP = $(RTEMS_BASE)/bin/$(CC_FOR_TARGET) -x c -E
AR = $(RTEMS_BASE)/bin/$(AR_FOR_TARGET)
LD = $(RTEMS_BASE)/bin/$(LD_FOR_TARGET) -r
RTEMS_LDFLAGS := $(LDFLAGS)
RTEMS_LDFLAGS := $(STATIC_LDFLAGS) $(LDFLAGS)
LINK.cpp = $(CCC) -o $@ $(RTEMS_LDFLAGS) $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
RANLIB := $(RTEMS_BASE)/bin/$(RANLIB)
#-------------------------------------------------------
@@ -55,7 +56,7 @@ CXXFLAGS = $(CONFORM_CXXFLAGS) $(CROSS_CXXFLAGS) $(OPT_CXXFLAGS)\
$(CROSS_CXXFLAGS)
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(PROD_LDFLAGS)\
$(ARCH_DEP_LDFLAGS) $(STATIC_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
$(ARCH_DEP_LDFLAGS) $(OP_SYS_LDFLAGS) $(CROSS_LDFLAGS)
LDLIBS = $(PROD_LDLIBS) $(STATIC_LDLIBS)\
$(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(OP_SYS_LDLIBS)
@@ -75,8 +76,8 @@ OS_CLASS = RTEMS
#--------------------------------------------------
# Operating system flags
OP_SYS_LDLIBS = -lrtemscpu -lrtemsCom -lreadline -lcurses -lm
OP_SYS_LDFLAGS = $(CPU_CFLAGS) -u Init \
OP_SYS_LDLIBS += -lrtemsCom -lrtemscpu -lCom -lm
OP_SYS_LDFLAGS += $(CPU_CFLAGS) -u Init \
$(PROJECT_RELEASE)/lib/no-dpmem.rel \
$(PROJECT_RELEASE)/lib/no-mp.rel \
$(PROJECT_RELEASE)/lib/no-part.rel \
@@ -95,6 +96,11 @@ CODE_CXXFLAGS =
CONFORM_CFLAGS_STRICT = -ansi
CONFORM_CXXFLAGS_STRICT = -ansi
#--------------------------------------------------
# Command-line input support
COMMANDLINE_LIBRARY = LIBTECLA
LDLIBS_LIBTECLA = -ltecla_r -lncurses
#--------------------------------------------------
# Allow site overrides
-include $(CONFIG)/os/CONFIG_SITE.Common.RTEMS

View File

@@ -0,0 +1,10 @@
#
# $Id$
# Author: W. Eric Norum
# Canadian Light Source
# eric@cls.usask.ca
#
# All RTEMS targets use the same Makefile fragment
#
RTEMS_TARGET_CPU=ppc
include $(CONFIG)/os/CONFIG.Common.RTEMS

View File

@@ -0,0 +1,10 @@
#
# $Id$
# Author: W. Eric Norum
# University of Saskatchewan
# eric.norum@usask.ca
#
# All RTEMS targets use the same Makefile fragment
#
RTEMS_TARGET_CPU=ppc
include $(CONFIG)/os/CONFIG.Common.RTEMS

View File

@@ -62,7 +62,7 @@ OP_SYS_LDLIBS += -lm
#--------------------------------------------------
# Link definitions
LINK.cpp = $(CCC) -o $@ $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
LINK.cpp = $(CCC) -o $@ $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
LINK.shrlib = $(CCC) -o $@ $(SHRLIB_LDFLAGS) $(LDFLAGS) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
#--------------------------------------------------

View File

@@ -25,21 +25,23 @@ OP_SYS_CFLAGS += -fno-common
CPPSNCFLAGS += -no-cpp-precomp
#
# Need to get some fink-installed packages (readline, etc.).
# If you don't have readline on your system you must remove
# or comment out these lines and make the appropriate changes
# to src/libCom/osi/os/Darwin/osdReadline.h
# Need to get some fink-installed packages
#
OP_SYS_CPPFLAGS += -I$(FINK_DIR)/include
OP_SYS_LDFLAGS += -L$(FINK_DIR)/lib
OP_SYS_LDLIBS += -lreadline
OP_SYS_LDLIBS +=
#
# Stuff that will be needed when going to shared libraries
#
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
-install_name $(EPICS_BASE)/lib/$(HOST_ARCH)/$@ \
-install_name $(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)/$@ \
-compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
-current_version $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
SHRLIB_SUFFIX = $(addprefix .,$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)).dylib
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
# Command-line input support
COMMANDLINE_LIBRARY=LIBTECLA
LDLIBS_LIBTECLA = -ltecla_r -lncurses

View File

@@ -13,17 +13,17 @@ include $(CONFIG)/os/CONFIG.Common.UnixCommon
OS_CLASS = hpux
ARCH_CLASS = parisc
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500
POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_YES +=
POSIX_LDLIBS_NO +=
# When compiling with gcc, static builds need two more libraries (*sigh*)
POSIX_LDLIBS_GNU_YES_STATIC_YES += -lpthread -l:libdld.sl
POSIX_LDLIBS_YES = $(POSIX_LDLIBS_GNU_$(GNU)_STATIC_$(STATIC_BUILD))
OP_SYS_CPPFLAGS = -D_HPUX_SOURCE -DHP_UX
OP_SYS_CFLAGS = +z
OP_SYS_CXXFLAGS = +z
OP_SYS_LDLIBS += -lpthread
SHRLIB_SUFFIX = .sl
SHARED_LIBRARIES=YES
SHRLIB_SUFFIX = .sl$(addprefix .,$(SHRLIB_VERSION))
ifdef CROSS
GNU_TARGET=parisc-hp-unix

View File

@@ -0,0 +1,11 @@
# CONFIG.Common.hpux-parisc-gnu
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for hpux-parisc gnu compiler target archs
# Sites may override these definitions in CONFIG_SITE.Common.hpux-parisc-gnu
#-------------------------------------------------------
# Include definitions common to all hpux-parisc target archs
include $(CONFIG)/os/CONFIG.Common.hpux-parisc

View File

@@ -13,7 +13,7 @@ ARCH_CLASS = mpc82xx
CODE_CPPFLAGS = -D_REENTRANT
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500
POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_YES = -lpthread
POSIX_LDLIBS_NO =
@@ -21,8 +21,8 @@ POSIX_LDLIBS_NO =
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
OP_SYS_CPPFLAGS += -D_BSD_SOURCE
OP_SYS_CPPFLAGS += -Dlinux
OP_SYS_LDFLAGS =
OP_SYS_LDLIBS = -lreadline -lcurses -lrt
OP_SYS_LDFLAGS +=
OP_SYS_LDLIBS = -lrt
#ARCH_DEP_CPPFLAGS += -D_X86_

View File

@@ -15,7 +15,7 @@ ARCH_CLASS = x86
CODE_CPPFLAGS = -D_REENTRANT
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500
POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_YES = -lpthread
POSIX_LDLIBS_NO =
@@ -23,12 +23,17 @@ POSIX_LDLIBS_NO =
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
OP_SYS_CPPFLAGS += -D_BSD_SOURCE
OP_SYS_CPPFLAGS += -Dlinux
OP_SYS_LDFLAGS =
OP_SYS_LDLIBS = -lreadline -lcurses -lrt
OP_SYS_LDFLAGS +=
OP_SYS_LDLIBS += -lrt
ARCH_DEP_CPPFLAGS += -D_X86_
ARCH_DEP_CFLAGS += -mcpu=pentium
# Set runtime path for shared libraries
PROD_LDFLAGS_YES += $(sort $(SHRLIB_SEARCH_DIRS:%=-Wl,-rpath,%/lib/$(T_A)))
SHRLIB_LDFLAGS_YES += $(sort $(SHRLIB_SEARCH_DIRS:%=-Wl,-rpath,%/lib/$(T_A)))
PROD_LDFLAGS += $(PROD_LDFLAGS_$(SHARED_LIBRARIES))
ifdef CROSS
GNU_TARGET=i586-pc-linux-gnu
CMPLR_SUFFIX=
@@ -36,4 +41,6 @@ ifdef CROSS
endif
#Allow R3.13 built extensions to load R3.14 shared libs
SYS_SHRLIB_LIBS += pthread readline curses rt
SYS_SHRLIB_LIBS += pthread rt

View File

@@ -13,20 +13,22 @@ include $(CONFIG)/os/CONFIG.Common.UnixCommon
OS_CLASS = solaris
ARCH_CLASS = sparc
CODE_CPPFLAGS = -D__EXTENSIONS__
CODE_CPPFLAGS = -D__EXTENSIONS__
# This is the only combination of posix threads flags that works with solaris 6
####POSIX_CPPFLAGS_YES = -D_REENTRANT -D_POSIX_C_SOURCE=199506L
####POSIX_LDLIBS_YES += -lposix4 -lpthread -lthread
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
# This set of flags is recommended by sun for posix threads and works with solaris 8
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L
POSIX_LDLIBS_YES += -lposix4 -lpthread
# Flags for solaris 6
POSIX_CPPFLAGS_YES_6 += -D_REENTRANT
POSIX_LDLIBS_YES_6 += -lthread
POSIX_CPPFLAGS_NO =
POSIX_CPPFLAGS_YES += -D_POSIX_C_SOURCE=199506L $(POSIX_CPPFLAGS_YES_$(SOLARIS_VERSION))
POSIX_CPPFLAGS_YES += -D_XOPEN_SOURCE=500
POSIX_LDLIBS_YES += -lposix4 -lpthread $(POSIX_LDLIBS_YES_$(SOLARIS_VERSION))
POSIX_CPPFLAGS_NO +=
POSIX_LDLIBS_NO +=
OP_SYS_CPPFLAGS = -DSOLARIS=$(subst 5.,,$(shell uname -r))
OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION)
# socket and nsl needed by libca.a
OP_SYS_LDLIBS += -lsocket -lnsl
@@ -40,6 +42,9 @@ ifdef CROSS
CMPLR_PREFIX=$(addsuffix -,$(GNU_TARGET))
endif
#Allow R3.13 built extensions to load R3.14 shared libs
SYS_SHRLIB_LIBS += posix4 pthread Crun
# Lib for solaris 8
SYS_SHRLIB_LIBS_8 += Crun
#Allow R3.13 built extensions to load R3.14 shared libs
SYS_SHRLIB_LIBS += posix4 pthread $(SYS_SHRLIB_LIBS_$(SOLARIS_VERSION))

View File

@@ -15,28 +15,37 @@ ARCH_CLASS = x86
CODE_CPPFLAGS = -D__EXTENSIONS__
# This is the only combination of posix threads flags that works on solaris-sparc with solaris 6
#POSIX_CPPFLAGS_YES = -D_REENTRANT -D_POSIX_C_SOURCE=199506L
#POSIX_LDLIBS_YES += -lposix4 -lpthread -lthread
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
# This set of flags is recommended by sun for posix threads and works with solaris 8
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L
POSIX_LDLIBS_YES += -lposix4 -lpthread
# Flags for solaris 6
POSIX_CPPFLAGS_YES_6 += -D_REENTRANT
POSIX_LDLIBS_YES_6 += -lthread
POSIX_CPPFLAGS_NO =
POSIX_CPPFLAGS_YES += -D_POSIX_C_SOURCE=199506L $(POSIX_CPPFLAGS_YES_$(SOLARIS_VERSION))
POSIX_CPPFLAGS_YES += -D_XOPEN_SOURCE=500
POSIX_LDLIBS_YES += -lposix4 -lpthread $(POSIX_LDLIBS_YES_$(SOLARIS_VERSION))
POSIX_CPPFLAGS_NO +=
POSIX_LDLIBS_NO +=
OP_SYS_CPPFLAGS = -DSOLARIS=$(subst 5.,,$(shell uname -r))
OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION)
ARCH_DEP_CPPFLAGS = -D_X86_
# socket and nsl needed by libca.a
OP_SYS_LDLIBS += -lsocket -lnsl
# -R does not work unless full path names are specified
# use loader's -R option
#PROD_LDFLAGS += $(sort $(DEPLIB_DIRS:%=-R%))
ifdef CROSS
GNU_TARGET=x86-sun-solaris2
CMPLR_SUFFIX=
CMPLR_PREFIX=$(addsuffix -,$(GNU_TARGET))
endif
#Allow R3.13 built extensions to load R3.14 shared libs
SYS_SHRLIB_LIBS += posix4 pthread Crun
# Lib for solaris 8
SYS_SHRLIB_LIBS_8 += Crun
#Allow R3.13 built extensions to load R3.14 shared libs
SYS_SHRLIB_LIBS += posix4 pthread $(SYS_SHRLIB_LIBS_$(SOLARIS_VERSION))

View File

@@ -15,7 +15,7 @@ ARCH_CLASS = x86
CODE_CPPFLAGS = -D__EXTENSIONS__
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L
POSIX_CPPFLAGS_YES = -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500
POSIX_LDLIBS_YES += -lpthread -lthread
POSIX_CPPFLAGS_NO =
POSIX_LDLIBS_NO +=

View File

@@ -3,8 +3,8 @@
# $Id$
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc604 target archs
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc604
# Definitions for vxWorks-ppc603 target archs
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc603
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs

View File

@@ -0,0 +1,21 @@
# CONFIG.Common.vxWorks-ppc603_long
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc603 target archs with at least 32MB
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc603_long
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC603
ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align -mlongcall

View File

@@ -16,6 +16,6 @@ CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align

View File

@@ -0,0 +1,21 @@
# CONFIG.Common.vxWorks-ppc604_long
#
# $Id
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc604 target archs with at least 32MB
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc604_long
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align -mlongcall

View File

@@ -79,13 +79,18 @@ NM = $(GNU_BIN)/$(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE)
export WIND_BASE = $(VX_DIR)
export WIND_HOST_TYPE
#--------------------------------------------------
# Tornado2.2
# The follow export allows vxWorks.h to include gnu header files
export TOOL_FAMILY = GNU
#--------------------------------------------------
# Operating system flags
OP_SYS_CPPFLAGS = -DvxWorks
OP_SYS_CFLAGS = -fno-builtin
#OP_SYS_CFLAGS = -fno-builtin -fdollars-in-identifiers
OP_SYS_LDFLAGS =
OP_SYS_LDLIBS =
OP_SYS_CPPFLAGS += -DvxWorks
OP_SYS_CFLAGS += -fno-builtin
#OP_SYS_CFLAGS += -fno-builtin -fdollars-in-identifiers
OP_SYS_LDFLAGS +=
OP_SYS_LDLIBS +=
# Fix for vxWorks headers using macros defined in
# vxWorks.h but not including vxWorks.h
@@ -112,7 +117,12 @@ OSITHREAD_USE_DEFAULT_STACK = NO
#--------------------------------------------------
# Link definitions
LINK.cpp = $(LD) -o $@ $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
LINK.cpp = $(LD) -o $@ $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
#--------------------------------------------------
# Definitions for compile of *_ctdt.c file
CFLAGS_ctdt = $(filter-out -pedantic,$(CFLAGS)) -fdollars-in-identifiers
COMPILE.ctdt = $(CC) -c $(CPPFLAGS) $(CFLAGS_ctdt) $(call PATH_FILTER,$(INCLUDES)) $(SOURCE_FLAG)
#--------------------------------------------------
# Allow site overrides

View File

@@ -15,16 +15,15 @@ ARCH_CLASS = x86
EXE=.exe
POSIX_CPPFLAGS_YES = -D_POSIX_SOURCE=199506L -D_POSIX_THREADS
POSIX_CPPFLAGS_YES = -D_POSIX_SOURCE=199506L -D_POSIX_THREADS -D_POSIX_TIMERS
POSIX_CPPFLAGS_NO =
#####POSIX_LDLIBS_YES = -lpthread
#####POSIX_LDLIBS_YES = -lthread
#POSIX_LDLIBS_YES += -lpthread
POSIX_LDLIBS_NO =
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
OP_SYS_CPPFLAGS += -DCYGWIN32 -U_WIN32
OP_SYS_LDFLAGS =
####OP_SYS_LDLIBS = -lreadline -lcurses -lrt
ARCH_DEP_CPPFLAGS += -D_X86_
OP_SYS_CPPFLAGS += -DCYGWIN32 -U_WIN32
OP_SYS_LDFLAGS +=
OP_SYS_LDLIBS +=
####OP_SYS_LDLIBS += -lrt

View File

@@ -21,7 +21,14 @@ CODE_CFLAGS =
CODE_CXXFLAGS =
#
# -O3 is too agressive on Darwin with the April, 2002 Developer Tools
# -O3 is too agressive on Darwin with the April 2002 Developer Tools
# and causes problems with undefined references to non-virtual thunks
# with the August 2002 Developer Tools.
#
OPT_CFLAGS_YES = -O2
OPT_CXXFLAGS_YES = -O2
#
# Static linking fails on OS X (missing crt0.o)
#
STATIC_LDFLAGS_YES =

View File

@@ -0,0 +1,12 @@
# CONFIG.hpux-parisc-gnu.Common
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for hpux-parisc gnu compiler host builds
# Sites may override these definitions in CONFIG_SITE.hpux-parisc-gnu.Common
#-------------------------------------------------------
#Include definitions common to hpux-parisc hosts
include $(CONFIG)/os/CONFIG.hpux-parisc.Common

View File

@@ -0,0 +1,21 @@
# CONFIG.hpux-parisc-gnu.hpux-parisc-gnu
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for hpux-parisc gnu compiler host - hpux-parisc gnu compiler target builds
# Sites may override these definitions in CONFIG_SITE.hpux-parisc-gnu.hpux-parisc-gnu
#-------------------------------------------------------
# Include common gnu compiler definitions
include $(CONFIG)/CONFIG.gnuCommon
#GNU_DIR = /opt/gnu
CC = $(GNU_BIN)/gcc
CCC = $(GNU_BIN)/g++
AR = ar -rc
RANLIB=
LD = ld -r
SHRLIB_LDFLAGS_YES += -fPIC

View File

@@ -21,7 +21,7 @@ CONFORM_CFLAGS_TRAD = -Ac
######################################################
# +DAportable causes portable object code to be created for execution
# on different PA-Risc machines
CODE_CFLAGS = +DAportable
CODE_CFLAGS = +DAportable +z
WARN_CFLAGS_YES =
WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -O
@@ -39,20 +39,18 @@ CONFORM_CXXFLAGS_STRICT = -AA -mt -Aa
######################################################
# +DAportable causes portable object code to be created for execution
# on different PA-Risc machines
CODE_CXXFLAGS = +DAportable
CODE_CXXFLAGS = +DAportable +z
WARN_CXXFLAGS_YES = +w
WARN_CXXFLAGS_NO =
OPT_CXXFLAGS_YES = +O3
OPT_CXXFLAGS_NO = -g
STATIC_LDFLAGS_YES= -Wl,-a,archive -l:libc.sl +A
STATIC_LDFLAGS_YES= -Wl,-a,archive -l:libc.sl
# shared libs will be found by searching environment variable SHLIB_PATH,
# then by searching the specified path (see below)
STATIC_LDFLAGS_YES+= -b
STATIC_LDFLAGS_NO = -Wl,+b$(DEFAULT_SHRLIB_SEARCH_PATH),+s
STATIC_LDLIBS_YES=
STATIC_LDLIBS_NO=
TARGET_LDFLAGS += -AA -mt
SHRLIB_LDFLAGS_YES = -G -h $@
SHRLIB_LDFLAGS_YES = -b

View File

@@ -18,3 +18,10 @@ AR = ar -rc
RANLIB=
LD = ld -r
STATIC_LDFLAGS_YES= -Bstatic
STATIC_LDFLAGS_NO=
STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
#SHRLIB_LDFLAGS_YES = -G -h $@ -z ignore -z combreloc -z lazyload

View File

@@ -11,8 +11,6 @@ SPARCWORKS = /opt/SUNWspro
CC = $(SPARCWORKS)/bin/cc
CCC = $(SPARCWORKS)/bin/CC
#CC = purify -max-threads=100 $(SPARCWORKS)/bin/cc
#CCC = purify -max-threads=100 $(SPARCWORKS)/bin/CC
# required by sun's C++ compiler
AR = $(CCC) -xar -o
LD = ld -r
@@ -20,15 +18,15 @@ CPP = gcc -x c -E
RANLIB =
#Prepare the object code for profiling with prof. (YES or NO)
PROFILE=YES
PROFILE=NO
# Configure OS vendor C compiler
CONFORM_CFLAGS_ANSI = -Xa -v
CONFORM_CFLAGS_STRICT = -Xc -v
CONFORM_CFLAGS_TRAD = -Xs
PROF_CFLAGS_YES =
PROF_CFLAGS_YES = -p
PROF_CFLAGS_NO =
CODE_CFLAGS = -KPIC $(PROF_CFLAGS_$(PROFILE))
CODE_CFLAGS = -KPIC $(PROF_CFLAGS_$(PROFILE))
WARN_CFLAGS_YES =
WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -xO4
@@ -37,7 +35,7 @@ OPT_CFLAGS_NO = -g
# Configure OS vendor C++ compiler
CONFORM_CXXFLAGS_NORMAL =
CONFORM_CXXFLAGS_STRICT =
PROF_CXXFLAGS_YES = +p
PROF_CXXFLAGS_YES = -p
PROF_CXXFLAGS_NO =
CODE_CXXFLAGS = -KPIC $(PROF_CXXFLAGS_$(PROFILE))
WARN_CXXFLAGS_YES = +w

View File

@@ -21,13 +21,13 @@ AR = $(CCC) -xar -o
LD = ld -r
#Prepare the object code for profiling with prof. (YES or NO)
PROFILE=YES
PROFILE=NO
# Configure OS vendor C compiler
CONFORM_CFLAGS_ANSI = -Xa -v
CONFORM_CFLAGS_STRICT = -Xc -v
CONFORM_CFLAGS_TRAD = -Xs
PROF_CFLAGS_YES =
PROF_CFLAGS_YES = -p
PROF_CFLAGS_NO =
CODE_CFLAGS = -KPIC $(PROF_CFLAGS_$(PROFILE))
WARN_CFLAGS_YES =
@@ -36,9 +36,9 @@ OPT_CFLAGS_YES = -xO4
OPT_CFLAGS_NO = -g
# Configure OS vendor C++ compiler
CONFORM_CXXFLAGS_NORMAL =
CONFORM_CXXFLAGS_STRICT =
PROF_CXXFLAGS_YES = +p
CONFORM_CXXFLAGS_NORMAL =
CONFORM_CXXFLAGS_STRICT =
PROF_CXXFLAGS_YES = -p
PROF_CXXFLAGS_NO =
CODE_CXXFLAGS = -KPIC $(PROF_CXXFLAGS_$(PROFILE))
WARN_CXXFLAGS_YES = +w

View File

@@ -65,7 +65,7 @@ CONFORM_CFLAGS_TRAD =
# -w-8012 Comparing signed and unsigned values
# -w-8060 Possibly incorrect assignment
# -w-8071 Conversion may lose significant digits
WARN_CFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071
WARN_CFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071
# -w- display warnings off
WARN_CFLAGS_NO = -w-
@@ -115,7 +115,9 @@ endif
# -w-8004 'identifier' is assigned a value that is never used
# (compile time know template parameters
# causes this to spew garbage)
WARN_CXXFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071 -w-8008 -w-8027 -w-8066 -w-8080 -w-8004
# -w-8026 Functions with exception specifications are not expanded inline
#
WARN_CXXFLAGS_YES = -w -g0 -w-8012 -w-8060 -w-8071 -w-8008 -w-8027 -w-8066 -w-8080 -w-8004 -w-8026
# -w- display warnings off
WARN_CXXFLAGS_NO = -w-
@@ -136,8 +138,7 @@ OPT_CXXFLAGS_NO =
#
STATIC_LDLIBS_YES=
STATIC_LDLIBS_NO=
PROD_VERSION=3.13
# -c case sensitive linking
# -C clear state before linking
# -Gi generate import library
@@ -262,7 +263,7 @@ LDFLAGS += -c -C -Gn -Tpe -x -w -L$(BORLAND_LIB) -L$(BORLAND_LIB)\\Psdk
LINKSTARTUP = c0x32.obj
LINKLIBS=import32.lib cw32$(LIBSUF).lib
LINK.cpp = $(WINLINK) $(LDFLAGS) $(LINKSTARTUP) $(subst /,\\,$(PROD_LD_OBJS))
LINK.cpp = $(WINLINK) $(STATIC_LDFLAGS) $(LDFLAGS) $(LINKSTARTUP) $(subst /,\\,$(PROD_LD_OBJS))
LINK.cpp += , $@ ,,$(LINKLIBS) $(subst /,\\,$(LDLIBS))
#--------------------------------------------------

View File

@@ -12,8 +12,12 @@ include $(CONFIG)/CONFIG.gnuCommon
## Shared libraries for cygwin not implemented yet
SHARED_LIBRARIES=NO
CC = $(GNU_BIN)/gcc
CCC = $(GNU_BIN)/g++
# cygwin's gcc, g++, ar, ld, and ranlib must be in user's path
CC = gcc
CCC = g++
AR = ar -rc
LD = ld -r
RANLIB = ranlib
CODE_CFLAGS =
CODE_CXXFLAGS =

View File

@@ -54,7 +54,7 @@ WARN_CFLAGS_NO = /W1
# /Ox maximum optimizations
# /MD use MSVCRT (run-time as DLL, multi-thread support)
# /GL whole program optimization
OPT_CFLAGS_YES = /Ox /GL
OPT_CFLAGS_YES = /Ox /GL
#
# /Zi generate program database for debugging information
@@ -116,7 +116,7 @@ WARN_CXXFLAGS_NO = /W1
#
# /Ox maximum optimizations
# /GL whole program optimization
OPT_CXXFLAGS_YES = /Ox /GL
OPT_CXXFLAGS_YES = /Ox /GL
#
# /Zi generate program database for debugging information
@@ -265,11 +265,11 @@ SHRLIB_LDLIBS = $(DLL_DEPLIBS) $($*_SYS_DLL_LIBS:%=%.lib) \
#--------------------------------------------------
# Linker definition
LINK.cpp = $(WINLINK) -nologo $(LDFLAGS) -out:$@ $(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
LINK.cpp = $(WINLINK) -nologo $(STATIC_LDFLAGS) $(LDFLAGS) -out:$@ \
$(PROD_LD_OBJS) $(PROD_LD_RESS) $(LDLIBS)
#--------------------------------------------------
# override of CONFIG_SITE
SHARED_LIBRARIES = YES

View File

@@ -12,6 +12,7 @@ ARCH_solaris = solaris-sparc
ARCH_solarisGnu = solaris-sparc-gnu
ARCH_sun4 = sun4-sparc
ARCH_Linux = linux-x86
ARCH_Darwin = darwin-ppc
ARCH_WIN32 = win32-x86
ARCH_hp700 = hpux-parisc
ARCH_alpha = osf-alpha

View File

@@ -1,5 +1,3 @@
#
# Site-specific overrides for RTEMS-pc386 target
#
#TARGET_CFLAGS += -DEPICS_RTEMS_NIC_3C509
TARGET_CFLAGS += -DEPICS_RTEMS_NIC_EEPRO

View File

@@ -0,0 +1,25 @@
# CONFIG_SITE.Common.linux-x86
#
# $Id$
#
# Site Specific definitions for linux-x86 target
# Only the local epics system manager should modify this file
# NOTE for SHARED_LIBRARIES: If YES then either
# a) LD_LIBRARY_PATH must include the full absolute pathname to
# $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) when invoking base
# executables.
# b) Add the path to SHRLIB_SEARCH_DIRS below, which will burn
# the runtime search path into the executables.
# c) the full pathname above can be added to /etc/ld.so.conf
# and ldconfig run to inform the system of the shared libraries.
SHARED_LIBRARIES=YES
# This is the absolute path to INSTALL_LOCATION, for SHARED_LIBRARY searches.
#SHRLIB_SEARCH_DIRS += /usr/local/epics/R3.14.1/base
# If readline is installed uncomment the following lines
# to get command-line editing and history support
#COMMANDLINE_LIBRARY = READLINE
#LDLIBS_READLINE = -lreadline -lncurses

View File

@@ -0,0 +1,30 @@
# CONFIG_SITE.hpux-parisc.hpux-parisc
#
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# by default, build and use shared libraries
SHARED_LIBRARIES=YES
# where we expect to find shared libraries if not found elsewhere
# No special action should be required to build or use shared libraries.
# However, when a new shared library is built using the above configuration,
# it should be copied into the location specified by DEFAULT_SHRLIB_SEARCH_PATH
# which in this specific case is: /cs/lib/R3.13.1.1/
# JLab version
#DEFAULT_SHRLIB_SEARCH_PATH = /cs/lib/R$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION).$(EPICS_UPDATE_NAME)$(EPICS_UPDATE_LEVEL):$(INSTALL_LIB)
# BESSY version
DEFAULT_SHRLIB_SEARCH_PATH = /opt/epics/R$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)/support/base/$(EPICS_VERSION)-$(EPICS_REVISION)-$(EPICS_MODIFICATION)-$(EPICS_UPDATE_NAME)$(EPICS_UPDATE_LEVEL)/lib/hpux-parisc
# cal added this so that libraries can be built with position
# independent code even if shared libraries aren't being built.
# Otherwise you would have to recompile everything when switching from
# static to shared.
ifeq ($(RELOCATABLE), YES)
ARCH_DEP_CFLAGS += +z
ARCH_DEP_CXXFLAGS += +z
endif

View File

@@ -5,15 +5,7 @@
#
# Site override definitions for linux-x86 host builds
#-------------------------------------------------------
# JBA test override values
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040 solaris-sparc
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
# NOTE: If YES then LD_LIBRARY_PATH must include the full
# pathname $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) for
# both the base # build and when invoking base executables.
# Alternatively the full pathname can be added to /etc/ld.so.conf
# and ldconfig run to inform the system of the shared libraries.
SHARED_LIBRARIES=YES

View File

@@ -0,0 +1,7 @@
# CONFIG_SITE.linux-x86.linux-x86
#
# $Id$
#
# Site specific definitions for linux-x86 host - linux-x86 target builds
#-------------------------------------------------------

View File

@@ -6,5 +6,5 @@
# Site override definitions for win32-x86-cygwin host - win32-x86-cygwin target builds
#-------------------------------------------------------
GNU_DIR=C:/cygwin
##GNU_DIR=C:/cygwin

View File

@@ -7,7 +7,6 @@
# jba test overrides
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
#CROSS_COMPILER_TARGET_ARCHS+=vxWorks-68040
#VX_DIR = T:/tornado20
#INSTALL_LOCATION = G:/testInstall
#STATIC_BUILD=YES
#SHARED_LIBRARIES=NO

View File

@@ -18,49 +18,67 @@ eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
while ($line = <STDIN>)
{
chomp;
next if ($line =~ /__?GLOBAL_.F.+/);
next if ($line =~ /__?GLOBAL_.I._GLOBAL_.D.+/);
if ($line =~ /__?GLOBAL_.D.+/) {
($adr,$type,$name) = split ' ',$line,3;
chop $name;
$name =~ s/^__/_/;
next if ( $name =~ /^__?GLOBAL_.D.*.\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.D.\.\./ );
@dtorlist = (@dtorlist,$name);
};
if ($line =~ /__?GLOBAL_.I.+/) {
($adr,$type,$name) = split ' ',$line,3;
chop $name;
$name =~ s/^__/_/;
next if ( $name =~ /^__?GLOBAL_.I.*.\.cpp/ );
next if ( $name =~ /^__?GLOBAL_.I.\.\./ );
@ctorlist = (@ctorlist,$name);
};
}
foreach $ctor (@ctorlist)
{
printf "void %s();\n",$ctor;
if ( $ctor =~ /\./ ) {
printf "void %s() __asm__ (\"_%s\");\n",convertName($ctor),$ctor;
} else {
printf "void %s();\n",$ctor;
}
}
print "extern void (*_ctors[])();\n";
print "void (*_ctors[])() = {\n";
foreach $ctor (@ctorlist)
{
printf " %s,\n",$ctor;
if ( $ctor =~ /\./ ) {
printf " %s,\n",convertName($ctor);
} else {
printf " %s,\n",$ctor;
}
}
print " 0};\n";
foreach $dtor (@dtorlist)
{
printf "void %s();\n",$dtor;
if ( $dtor =~ /\./ ) {
printf "void %s() __asm__ (\"_%s\");\n",convertName($dtor),$dtor;
} else {
printf "void %s();\n",$dtor;
}
}
print "extern void (*_ctors[])();\n";
print "void (*_dtors[])() = {\n";
foreach $dtor (@dtorlist)
{
printf " %s,\n",$dtor;
if ( $dtor =~ /\./ ) {
printf " %s,\n",convertName($dtor);
} else {
printf " %s,\n",$dtor;
}
}
print " 0};\n";
sub convertName {
my ($name) = @_;
$name =~ s/\./\$/g;
return $name;
}

View File

@@ -10,12 +10,12 @@
<body>
<center>
<h2>Building EPICS R3.13 applications with R3.14.0beta2 base</h2>
<h2>Building EPICS R3.13 applications with R3.14.1 base</h2>
</center>
<p><br>
This document describes how to modify a R3.13 vxWorks application so that it
builds with release R3.14.0beta2.  It describes an easy way to modify
builds with release R3.14.1.  It describes an easy way to modify
applications subject to the following restrictions:</p>
<ul>
<li>The application still uses config rules rather than the configure rules
@@ -69,7 +69,7 @@ however, has a config directory. Makesure that config/RELEASE has the same
location for base as configure/RELEASE.</p>
<p>snc is no longer in base. If snc is used in your application, you must
download and build the seq module with baseR3.14.0beta2. See the Application
download and build the seq module with baseR3.14.1. See the Application
Developer's Guide to see how to build sequence programs.</p>
<p>If you build sequencer programs add the lines</p>

View File

@@ -9,7 +9,7 @@
<body>
<center>
<h2>Building EPICS R3.13 extensions with R3.14.0beta2 base</h2>
<h2>Building EPICS R3.13 extensions with R3.14.1 base</h2>
</center>
<p><br>

View File

@@ -10,12 +10,12 @@
<body>
<center>
<h2>Converting an EPICS R3.13 application to R3.14.0.beta2</h2>
<h2>Converting an EPICS R3.13 application to R3.14.1</h2>
</center>
<p><br>
This document describes how to convert a R3.13 vxWorks application so that it
builds with release R3.14.0beta2.  It describes procedures such that:</p>
builds with release R3.14.1.  It describes procedures such that:</p>
<ul>
<li>The application uses the configure rules which are new to R3.14.</li>
</ul>
@@ -49,7 +49,7 @@ If sequence programs (*.st or *.stt files) exist in your application, add the
SNCSEQ location definition for the R3.14 seq external module</p>
<p><tt>SNCSEQ =&lt;full path to seq module top&gt;</tt></p>
The R3.14 seq module must exist and be built with EPICS base R3.14.0beta2
The R3.14 seq module must exist and be built with EPICS base R3.14.1
<h3>Modify the Makefiles in &lt;top&gt;/*App directories.</h3>

View File

@@ -8,13 +8,23 @@
<body>
<center>
<h2>
Converting an EPICS R3.14.0 beta1 application to beta2</h2></center>
<h2> Converting an EPICS R3.14.0 beta1 application to beta2</h2></center>
<p><br>This document describes how to convert a R3.14.0beta1 application
so that it builds with release R3.14.0beta2.
<h3>
No changes necessary</h3>
</body>
<h3>Update Unix LD_LIBRARY_PATH</h3>
If you build EPICS base shared libraries instead of archive
libraries on Unix systems you will need to update your
LD_LIBRARY_PATH environment variable to include fullpathname
to the NEW base $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH).
<h3>Update Win32 PATH</h3>
On WIN32 systems, building shared libraries is the default
setting so, unless SHARED_LIBRARIES was changed to NO, you will
need to update your path to include fullpathname to the NEW
base $(INSTALL_LOCATION)/bin/$(EPICS_HOST_ARCH).
</html>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="jba">
<meta name="GENERATOR" content="Mozilla/4.77 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]"></head>
<body>
<center>
<h2> Converting an EPICS R3.14.0 beta2 application to R3.14.1</h2></center>
<p><br>This document describes how to convert a R3.14.0beta2 application
so that it builds with release R3.14.1.
</p><h3>No changes required.</h3>

View File

@@ -5,17 +5,26 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>No title</title>
<meta name="GENERATOR" content="amaya 5.3, see http://www.w3.org/Amaya/" />
<meta name="GENERATOR" content="amaya 5.1" />
</head>
<body>
<h1 style="text-align: center">EPICS base R3.14.0beta2: Known Problems</h1>
<h1 style="text-align: center">EPICS base R3.14.1: Known Problems</h1>
<h2>vxWorks TIMEZONE pentium</h2>
<h3>Known Bugs</h3>
<p>If the name of the timezone has more than a few characters a crash can
occur on pentium vxWorks iocs. See ansiTime in the vxWorks reference manual
for details about TIMEZONE.</p>
<p>The portable CA server does not work on solaris.</p>
<h3>To Do Posix</h3>
<ul>
<li>Currently thread priorities are not turned on, i.e. all threads run at
the same priority.</li>
</ul>
<h3>Build Rules</h3>
<ul>
<li>A SHRLIB_SEARCH_DIRS += should be generated for everything found in
configure/RELEASE</li>
</ul>
</body>
</html>

View File

@@ -4,7 +4,7 @@ README
EPICS base
Release 3.14.0beta2
Release 3.14.1
What is EPICS base?
@@ -79,7 +79,7 @@ Software requirements
GNU make
You must use GNU make, gnumake, for any EPICS builds. Set your
path so that a gnumake version 3.70 or later is available.
path so that a gnumake version 3.78.1 or later is available.
Perl
You must have perl version 5.0 or later installed. The configure files do
@@ -114,7 +114,7 @@ Host system storage requirements
Documentation
EPICS documentation is available on the WWW via the EPICS home
page at APS: URL http://www.aps.anl.gov/Epics
page at APS: URL http://www.aps.anl.gov/epics
This README.1st is in the base distribution file and will be available
on the IOC software R3.14 EPICS WWW page which can be accessed
@@ -133,8 +133,9 @@ WWW pages
Mailing Lists
There are five EPICS mailing lists provided by APS. See The
EPICS home page for subscription instructions.
There is an EPICS mailing list called tech-talk which is hosted at
APS, with a list repeater at BESSY. See The EPICS home page for
subscription instructions.
Directory Structure
@@ -147,6 +148,7 @@ Directory Structure
base/configure/os Operating system dependent build config files
base/configure/tools Perl and shell scripts used in the build
base/copyright Text files describing software copyrights
base/documentation Distributation build documentation
base/src All epics base source code in subdirectories
base/src/as Access security
base/src/bpt Break point table
@@ -191,6 +193,7 @@ Directory Structure
base/src/toolsComm Code for the build tools antelope and e_flex
base/src/util Utilities (ca_test, iocLogServer, startCArepeater)
base/src/vxWorks R3.13 compatibility code specific to vxWorks
base/src/RTEMS Code to configure RTEMS for EPICS
base/startup Scripts for setting up path and environment
Install directories created by the build:
@@ -201,6 +204,8 @@ Directory Structure
base/include Installed header files
base/include/os Installed os specific header files
base/templates Installed templates
base/javalib Installed java class files
base/html Installed html documentation
Build related components
@@ -211,6 +216,10 @@ Build related components
README.cxxTemplates Information about C++ templates in EPICS base
README.niCpu030 NI cpu030 specific instructions
README.darwin Installation notes for Mac OS X (Darwin)
RELEASE_NOTES.html Notes on release changes.
KnownProblems.html List of know problems and workarounds.
Converting*To*.html Release specific conversion instructions.
Building*With*.html Release specific build instructions.
base/startup directory - contains scripts to set environment and path
EpicsHostArch c shell script to set EPICS_HOST_ARCH env variable
@@ -234,6 +243,7 @@ Build related components
RELEASE Location of external products such as Tornado II
RULES Includes appropriate rules file
RULES.Db Rules for database and database definition files
RULES.ioc Rules for application iocBoot/ioc* directory
RULES_ARCHS Definitions and rules for building architectures
RULES_BUILD Build and install rules and definitions
RULES_DIRS Definitions and rules for building subdirectories
@@ -253,11 +263,10 @@ Build related components
CONFIG_SITE.<host>.Common Site specific host defs for all targets
base/configure/tools directory - contains Perl scripts used for the build
MakeReleae Unix shell script to create a release tar file
convertRelease.pl Performs consistancy checks on RELEASE files
cp.pl This Perl script copies an existing file
filterWarnings.pl Filters warning messages during HP builds.
installEpics.pl Installs built files into install directories.
makeDependsTargets.pl Creates targets of include dependency files
makeMakefile.pl Creates a Makefile in O.<arch> dirs
makeMakefileInclude.pl Creates file to be included by Makefile
mkdir.pl Creates a directory (like Unix mkdir)
@@ -306,12 +315,14 @@ Building EPICS base (Unix and Win32)
mv, and mkdir in your search path and /bin/chmod must
exist. On some Unix systems you may also need ar and ranlib
in your path, and the c compiler may require ld in your path.
On solaris systems you need uname in your path.
Unix LD_LIBRARY_PATH
If you plan to build EPICS base shared libraries instead of
archive libraries, on Unix systems you will need to add
fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) to
your LD_LIBRARY_PATH environment variable.
your LD_LIBRARY_PATH environment variable. On Linux systems,
building shared libraries is the default setting.
Win32 PATH
On WIN32 systems, building shared libraries is the default
@@ -407,7 +418,7 @@ Example application and extension
Instructions for building and executing the 3.14 example application
can be found in the section "Example Application" of Chapter 2, "New
Features for 3.14", in the "IOC Application Developer's Guide
R3.14.0beta2". The "Example Application" section briefly explains
R3.14.1". The "Example Application" section briefly explains
how to create and build an example application in a user created <top>
directory. It also explains how to run the example application on a
vxWorks ioc or a host system and run an example channel access client

58
documentation/README.hpux Normal file
View File

@@ -0,0 +1,58 @@
Compiling EPICS and Building IOC Applications on HPUX 11 (hpux-parisc)
======================================================================
Please mail questions, comments, corrections, additional examples, etc.
to Ralph.Lange@mail.bessy.de
NOTE: 3.14 will ONLY compile on HPUX 11 systems. HPUX 10 does not have
the necessary thread support and will never ever be supported for
EPICS base versions >= 3.14.
Tools needed
------------
o HP's ANSI C compiler (cc)
For compiling with the HP C++ compiler (hpux-parisc)
o Recent version of HP's aCC C++ compiler aCC (we use A.03.39)
For compiling with GNU g++
o GNU g++ >= 2.95 (we use 3.2)
Environment
-----------
Default is compiling with the generic HP aCC compiler. To use the GNU compiler,
set the environment variable EPICS_HOST_ARCH to hpux-parisc-gnu before starting
to compile base.
Shared Libraries
----------------
Generating shared libraries is supported, suggested and the default.
You have to set the appropriate search path variable in
../configure/os/CONFIG_SITE.hpux-parisc.hpux-parisc to make shared
libraries work properly. (You can always override with setting the
SHLIB_PATH environment variable when executiong the binaries.)
Known Problems
--------------
o There is a problem with a CA client not detecting a network
connection going down. This only happens with some clients, though.
o Statically built binaries don't work properly (yet).
o GNU built binaries don't work properly (yet).
o The 3.13 compatibility mode isn't thoroughly tested yet.
Please feel free to contact me if you encounter serious problems.
Enjoy!
Ralph

View File

@@ -17,7 +17,7 @@ EPICS base</h2></center>
<center>
<h2>
Release 3.14.0beta2</h2></center>
Release 3.14.1</h2></center>
<h3>
What is EPICS base?</h3>
@@ -62,7 +62,8 @@ c++ compiler>)</b>
<br><tt>solaris-sparc-gnu</tt>
<br><tt>linux-x86</tt>
<br><tt>win32-x86</tt>
<br><tt>win32-x86-borland</tt></blockquote>
<br><tt>win32-x86-borland</tt>
<br><tt>darwin-ppc (Mac OS X)</tt></blockquote>
</blockquote>
<blockquote>
@@ -98,26 +99,26 @@ in CONFIG_SITE.</blockquote>
Software requirements</h3>
<blockquote><b>GNU make</b>
<br>You must use GNU make, gnumake, for any EPICS builds.&nbsp; Set your
path so that a gnumake version 3.70 or later is available.
<br>You must use GNU make, gnumake, for any EPICS builds. Set your
path so that a gnumake version 3.78.1 or later is available.
<p><b>Perl</b>
<br>You must have perl version 5.0 or later installed. The configure files
do not specify the perl full pathname.&nbsp; You need the perl executable
do not specify the perl full pathname. You need the perl executable
in your search path.
<p><b>Unzip and tar (Winzip on WIN32 systems)</b>
<br>You must have tools available to unzip and untar the EPICS base distribution
file.
<p><b>Tornado 2.0</b>
<br>You must have Tornado 2.0 installed if any of your target systems are
vxWorks systems.&nbsp; Tornado 2.0 provides the cross-compiler and header
vxWorks systems. Tornado 2.0 provides the cross-compiler and header
files needed to build for these target systems. The full path location
to Tornado 2.0 must be specified in the base/configure/RELEASE or base/configure/RELEASE.&lt;hostarch>
file. You will also need one or more board support packages. Consult the
vxWorks documentation for details.
<p><b>Optional GNU compiler requirement for solaris-sparc&nbsp; and win32-x86
<p><b>Optional GNU compiler requirement for solaris-sparc and win32-x86
hosts</b>
<br>If you have state notation language source files (*.st files) which
require c preprocessing before conversion to c source,&nbsp; gcc must be
require c preprocessing before conversion to c source, gcc must be
in your path.</blockquote>
<h3>
@@ -132,7 +133,7 @@ files for each target take approximately 10 MB.</blockquote>
Documentation</h3>
<blockquote>EPICS documentation is available on the WWW via the EPICS home
page at APS:&nbsp; URL <a href="http://www.aps.anl.gov/epics">http://www.aps.anl.gov/epics</a></blockquote>
page at APS: URL <a href="http://www.aps.anl.gov/epics">http://www.aps.anl.gov/epics</a></blockquote>
<blockquote>This README.html is in the base distribution file and will be
available on the IOC software R3.14 EPICS WWW page which can be accessed
@@ -154,11 +155,11 @@ Other WWW sites</h4>
other WWW links on the EPICS home page at APS.</blockquote>
<h4>
Mailing Lists</h4>
Mailing List</h4>
<blockquote>There are five EPICS mailing lists provided by APS. See The
EPICS home page for subscription instructions.</blockquote>
</blockquote>
<blockquote>There is an EPICS mailing list called tech-talk which is hosted at
APS with a list repeater at BESSY. See The EPICS home page for subscription
instructions.</blockquote> </blockquote>
<h3>
Directory Structure</h3>
@@ -427,10 +428,10 @@ architecture, e.g. solaris-sparc. If you are not using the OS vendor's
c/c++ compiler for host
<br>builds, you will need another dash followed by the alternate compiler
name (e.g. "-gnu" for GNU c/c++ compilers on a solaris host or "-borland"
for Borland c/c++ compilers on a WIN32 host) .&nbsp; See configure/CONFIG_SITE
for Borland c/c++ compilers on a WIN32 host). See configure/CONFIG_SITE
for a list of supported EPICS_HOST_ARCH values.
<p><b>PERLLIB</b>
<br>On WIN32, some versions of Perl require that&nbsp; the environment
<br>On WIN32, some versions of Perl require that the environment
variable PERLLIB be set to &lt;perl directory location>.</blockquote>
<blockquote><b>PATH</b>
@@ -439,14 +440,16 @@ need C and C++ compilers in your search path. For building base you also
must have echo in your search path. For Unix host builds you also need
touch, cpp, cp, rm, mv, and mkdir in your search path and /bin/chmod must
exist. On some Unix systems you may also need ar and ranlib in your path,
and the c compiler may require ld in your path.
and the c compiler may require ld in your path. On solaris systems you
need uname in your path.
<p><b>LD_LIBRARY_PATH</b>
<br>If you plan to build EPICS base shared libraries instead of archive
libraries, on Unix systems you will need to add&nbsp; fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
libraries, on Unix systems you will need to add fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
to your LD_LIBRARY_PATH environment variable.
On linux systems, building shared libraries is the default setting.
<p><b>PATH</b>
<br>On WIN32 systems, building shared libraries is the default setting
and you will need to add&nbsp; fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
and you will need to add fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
to your path. Building shared libraries is determined by the value of the
macro SHARED_LIBRARIES in CONFIG_SITE (either YES or NO).
<br>&nbsp;</blockquote>
@@ -479,7 +482,7 @@ except with CONFIG in the name replaced by CONFIG_SITE.
settings</blockquote>
<b>R3.13 compatibility configuration</b>
<br>To configure EPICS base for building with R3.13 extensions and ioc
applications , you must modify the default definitions in the base/config/CONFIG_SITE*&nbsp;
applications , you must modify the default definitions in the base/config/CONFIG_SITE*
files to agree with definitions you made in base/configure and base/configure/os
files.</blockquote>
@@ -495,7 +498,7 @@ The command "gnumake clean uninstall" will remove all files and directories
generated by a previous build. The command "gnumake" will build and install
everything for the configured host and targets.
<br>It is recommended that you do a "gnumake clean uninstall" at the root
directory of an EPICS&nbsp; directory structure before each complete rebuild
directory of an EPICS directory structure before each complete rebuild
to ensure that all components will be rebuilt.</blockquote>
</blockquote>
@@ -530,7 +533,7 @@ during the base build.</blockquote>
<blockquote>Instructions for building and executing the 3.14 example application
can be found in the section "Example Application" of Chapter 2, "New Features
for 3.14", in the&nbsp; "IOC Application Developer's Guide R3.14.0beta2".
for 3.14", in the "IOC Application Developer's Guide R3.14.1".
The "Example Application" section briefly explains how to create and build
an example application in a user created &lt;top> directory. It also explains
how to run the example application on a vxWorks ioc or a host system and

View File

@@ -9,11 +9,119 @@
<body lang="en">
<center>
<h1>EPICS Release base 3.14.0beta2</h1>
<h1>EPICS Release base 3.14.1</h1>
<h1>Aug 01 2002</h1>
<h1>Dec 20 2002</h1>
<h2>Changes since beta2</h2>
</center>
<p><strong>function - New Database Definition Keyword</strong></p>
<p>dbStaticLib and related programs now accept a new keyword in DBD files:</p>
<pre>function(name)</pre>
<p>Where '<span style="font-family: courier">name</span>' is the name of a
function with "C" linkage that is included in the IOC binary. This function
will be automatically registered with the registry at the same time as the
record/device/driver tables, and is intended to make using subroutine records
much easier on non-vxWorks systems.. Prior R3.14 releases required there to
be a static registration routine for such subroutines.</p>
<p>dbStaticLib has two additional routines to support this, dbDumpFunction()
and dbWriteFunctionFP(). dbDumpFunction has been added to the iocsh command
table.</p>
<p><strong>iocsh</strong></p>
<p>When executing commands from a script file, iocsh now echoes each command
to the terminal before execution. This makes it much easier to see where
errors are being reported.</p>
<p><strong>Solaris build requirement</strong></p>
<p><span style="font-family: courier">uname</span> must be defined for builds
on solaris hosts because it is used to determine the solaris version.</p>
<p><strong>Linux build note</strong></p>
<p>Under linux-x86 only, when SHARED_LIBRARIES=YES it is now possible to have
one or more directory paths burned into products as run-time locations for
the shared libraries. In configure/os/CONFIG_SITE.Common.linux-x86 add any
such absolute paths to the new make variable SHRLIB_SEARCH_DIRS
(lib/&lt;arch&gt; will be automatically appended to each directory given).</p>
<p><strong>RULES.Db</strong></p>
<p>A <span style="font-family: courier">*[</span><span
style="font-family: courier">nn</span><span
style="font-family: courier">].</span><span
style="font-family: courier">db</span> file will be created from an <span
style="font-family: courier">*.template</span> and a <span
style="font-family: courier">*[nn].substitutions</span> file ,where <span
style="font-family: courier">nn</span> has a value between 0 and 99.</p>
<p><strong>Support for 64 bit long</strong></p>
<p>Many changes were made to support architectures on which a long is a 64
bit integer. The basic change was to change:</p>
<ul>
<li>long =&gt; epicsInt32 for anything that might get transfered to/from
network buffers</li>
<li>unsigned long =&gt; epicsUInt32 for anything that might get transfered
to/from network buffers</li>
</ul>
<p>The changes include the following:</p>
<ul>
<li>cvtFast</li>
<li>xxxRecord.h NOTE: In addition to the changes for long all enum fields
are now epicsEnum16</li>
<li>dbStaticLib</li>
<li>db_access</li>
<li>dbConvert and dbFastLinkConv</li>
</ul>
<p><strong>Hardware Link Definitions</strong></p>
<p>The various parts of hardware link definitions now accept HEX values,
e.g.</p>
<pre>field(INP,"L0 A1 C0 S0xa @")</pre>
<p>NOTES:</p>
<ul>
<li>This may not be compatible with Database Configuration Tools</li>
<li>If records are written via dbStaticLib the falues will NOT be written
in HEX.</li>
</ul>
<p><strong>dbDumpFldDes</strong></p>
<p>A macro has been defined so that client code can be written that is
compatible between 3.13 and 3.14.</p>
<p><span style="font-weight: bold">epicsMutex for posix</span></p>
<ul>
<li>No longer supports epicsMutexLockWithTimeout. This was done to allow a
more efficient posix implementation.</li>
<li>If PTHREAD_MUTEX_RECURSIVE is provided then the implementation uses
only pthread_mutex. This is much faster (2 to 3 times as fast) as the
previous implementation.</li>
</ul>
<p><strong>Mac OS X</strong></p>
<p>Now supported as development platform and as IOC.</p>
<p><strong>RTEMS</strong></p>
<p>Additional RTEMS-pc386 network drivers are available</p>
<p><strong>iocsh</strong></p>
<p>Configurable iocsh command-line editing support (none, readline,
libtecla)</p>
<center>
<h2>Changes since beta1</h2>
</center>
@@ -26,8 +134,8 @@ DCTs.</p>
<p><strong>errlog</strong></p>
<p>errlog no longer contains an atexit that calls errlogFlush. This did not
work on all operating systems. cantProceed, iocsh, and ca_task_exit all
call errlogFlush. Other applications may also have to call if before
work on all operating systems. cantProceed, iocsh, and ca_task_exit all call
errlogFlush. Other applications may also have to call if before
terminating.</p>
<p><strong>mbboRecord</strong></p>
@@ -47,23 +155,19 @@ to DBF_USHORT.</p>
<p>epicsTime.h now has the definitions:</p>
<pre>#define epicsTimeEventBestTime -1
#define epicsTimeEventDeviceTime -2
</pre>
#define epicsTimeEventDeviceTime -2</pre>
<p>These are values for the TSE field of dbCommon.</p>
<ul>
<li><strong>epicsTimeEventBestTime</strong> means that code supplying the time
stamp should get the most accurate time possible. Currently this only has
meaning on vxWorks and if drvTS is supplying the time via some hardware
timing system. It means get the latest time from the hardware system rather
than from the vxWorks tick time. drvTs previously accepted a hardcoded value
of -1.</li>
<li><strong>epicsTimeEventDeviceTime</strong> means that
recGblGetTimeStamp doesn't modify the time field.
This allows device support to supply the time stamp.</li>
<li><strong>epicsTimeEventBestTime</strong> means that code supplying the
time stamp should get the most accurate time possible. Currently this
only has meaning on vxWorks and if drvTS is supplying the time via some
hardware timing system. It means get the latest time from the hardware
system rather than from the vxWorks tick time. drvTs previously accepted
a hardcoded value of -1.</li>
<li><strong>epicsTimeEventDeviceTime</strong> means that recGblGetTimeStamp
doesn't modify the time field. This allows device support to supply the
time stamp.</li>
</ul>
<p>If the <strong>TSEL</strong> field refers to the <strong>TIME</strong>
@@ -173,8 +277,8 @@ in the cdCommands file.</p>
<p><strong>dbStaticLib</strong></p>
<p>All routines with Recdes of Fielddes in their name are obsolete and removed.
A new routine dbDumpField replaces dbDumpFldDes.</p>
<p>All routines with Recdes of Fielddes in their name are obsolete and
removed. A new routine dbDumpField replaces dbDumpFldDes.</p>
<center>
<h2>Changes since alpha2</h2>
@@ -229,42 +333,42 @@ release.</p>
Build modifications in alpha2 require the following changes to existing R3.14
applications.
<ul>
<li> Remove the now unused RULES files</li>
<li>&nbsp;Remove the now unused RULES files</li>
<li><ul>
./configure/RULES.Db <br>
./configure/RULES.registerRecordDeviceDriver <br>
 </ul>
&nbsp;</ul>
</li>
<li>Delete the following line in ./configure/RULES
<ul>
  <br>
&nbsp; <br>
include $(TOP)/configure/RULES.registerRecordDeviceDriver</ul>
</li>
</ul>
<ul>
<li>  In &lt;top&gt;/configure/Makefile change
<li>&nbsp; In &lt;top&gt;/configure/Makefile change
<ul>
  <br>
&nbsp; <br>
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(T_A) $@ $(TOP)</ul>
</li>
to
<ul>
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@
$(TOP) <br>
 </ul>
&nbsp;</ul>
and add the line
<ul>
  <br>
&nbsp; <br>
depends: install <br>
 </ul>
&nbsp;</ul>
to the bottom of the Makefile.
<ul>
 </ul>
&nbsp;</ul>
</ul>
<ul>
<li>In all *App/*Db/Makefileschange
<ul>
  <br>
&nbsp; <br>
include $(TOP)/configure/RULES.Db</ul>
</li>
to
@@ -272,62 +376,68 @@ applications.
include $(TOP)/configure/RULES</ul>
<li>In all *App/src/Makefile files
<ul>
 </ul>
&nbsp;</ul>
</li>
change    DBDNAME = &lt;name&gt;App    to    DBD += &lt;name&gt;
change&nbsp;&nbsp;&nbsp; DBDNAME = &lt;name&gt;App&nbsp;&nbsp;&nbsp;
to&nbsp;&nbsp;&nbsp; DBD += &lt;name&gt;
<ul>
 </ul>
&nbsp;</ul>
and remove the line <br>
 
&nbsp;
<ul>
DBDEXPAND = &lt;name&gt;Include.dbd <br>
 </ul>
&nbsp;</ul>
NOTE: If any of your *App/*Db/Makefiles contain "DBDNAME =" lines you
should make these same changes in that *Db dirctory. <br>
 
&nbsp;
<ul>
<li>In all *App/src/Makefile Makefiles</li>
</ul>
<ul>
 </ul>
change    RECTYPES=&lt;name&gt;.h    to    DBDINC+=&lt;name&gt;
&nbsp;</ul>
change&nbsp;&nbsp;&nbsp; RECTYPES=&lt;name&gt;.h&nbsp;&nbsp;&nbsp;
to&nbsp;&nbsp;&nbsp; DBDINC+=&lt;name&gt;
<ul>
 </ul>
change    MENUS=&lt;name&gt;.h    to        DBDINC+=&lt;name&gt;</ul>
&nbsp;</ul>
change&nbsp;&nbsp;&nbsp; MENUS=&lt;name&gt;.h&nbsp;&nbsp;&nbsp;
to&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBDINC+=&lt;name&gt;</ul>
<ul>
change    BPTS     to     DBD
change&nbsp;&nbsp;&nbsp; BPTS&nbsp;&nbsp;&nbsp;&nbsp;
to&nbsp;&nbsp;&nbsp;&nbsp; DBD
<p>change     INSTALLDB     to    DB</p>
<p>change&nbsp;&nbsp;&nbsp;&nbsp; INSTALLDB&nbsp;&nbsp;&nbsp;&nbsp;
to&nbsp;&nbsp;&nbsp; DB</p>
<p>change    DBDINSTALL    to     DBD <br>
 </p>
<p>change&nbsp;&nbsp;&nbsp; DBDINSTALL&nbsp;&nbsp;&nbsp;
to&nbsp;&nbsp;&nbsp;&nbsp; DBD <br>
&nbsp;</p>
<li>In all example *App/src/Makefile files change
<ul>
  <br>
&nbsp; <br>
example_SRCS_DEFAULT += registerRecordDeviceDriver.c</ul>
</li>
to
<ul>
example_SRCS_DEFAULT += &lt;name&gt;_registerRecordDeviceDriver.cpp <br>
 </ul>
&nbsp;</ul>
where &lt;name&gt; is the base name of a &lt;name&gt;.dbd file which was
created from a &lt;name&gt;Include.dbd file and which will be loaded in a
st.cmd or stcmd.host script (e.g. example). <br>
 
&nbsp;
<ul>
<li>In ./iocBoot/ioc&lt;name&gt;/st.cmd files change</li>
</ul>
<br>
 
&nbsp;
<ul>
dbLoadDatabase("dbd/exampleApp.dbd")</ul>
to
<ul>
dbLoadDatabase("dbd/example.dbd") <br>
 </ul>
&nbsp;</ul>
<li>In &lt;top&gt;/iocBoot/ioc&lt;name&gt;/stcmd.host files change
<ul>
  <br>
&nbsp; <br>
dbLoadDatabase("../../dbd/exampleApp.dbd",0,0)</ul>
</li>
to
@@ -337,16 +447,16 @@ applications.
<h3>EPICS_HOST_ARCH changes</h3>
GNU compiler builds are now determined by the value of EPICS_HOST_ARCH and
are no longer specified in CONFIG_SITE.  All references to the ANSI (ACC/GCC)
and CPLUSPLUS (CCC/G++) macros have been removed. <br>
 
are no longer specified in CONFIG_SITE.&nbsp; All references to the ANSI
(ACC/GCC) and CPLUSPLUS (CCC/G++) macros have been removed. <br>
&nbsp;
<h3>libCom</h3>
Most of the library routines and files starting with the prefix osi have been
changed to start with epics. Several also had major changes to their user
interface. See the latest version of the Application Developer's Guide for
details. <br>
 
&nbsp;
<center>
<h2>EPICS Release base 3.14.0alpha1 Notes</h2>

View File

@@ -17,13 +17,11 @@
#include <ctype.h>
#include <unistd.h>
#include <errno.h>
#include <syslog.h>
#include <sys/termios.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <syslog.h>
#include <rtems.h>
#include <rtems/error.h>
#include <rtems/stackchk.h>
@@ -31,10 +29,75 @@
#include <rtems/tftp.h>
#include <epicsThread.h>
#include <errlog.h>
#include <logClient.h>
#include <iocsh.h>
static void logReset (void);
/*
* Architecture-dependent routines
*/
#ifdef __mcpu32__
#include <m68360.h>
static void
logReset (void)
{
int bit, rsr;
int i;
const char *cp;
char cbuf[80];
rsr = m360.rsr;
for (i = 0, bit = 0x80 ; bit != 0 ; bit >>= 1) {
if (rsr & bit) {
switch (bit) {
case 0x80: cp = "RESETH*"; break;
case 0x40: cp = "POWER-UP"; break;
case 0x20: cp = "WATCHDOG"; break;
case 0x10: cp = "DOUBLE FAULT"; break;
case 0x04: cp = "LOST CLOCK"; break;
case 0x02: cp = "RESET"; break;
case 0x01: cp = "RESETS*"; break;
default: cp = "??"; break;
}
i += sprintf (cbuf+i, cp);
rsr &= ~bit;
if (rsr)
i += sprintf (cbuf+i, ", ");
else
break;
}
}
errlogPrintf ("Startup after %s.\n", cbuf);
m360.rsr = ~0;
}
#else
static void
logReset (void)
{
errlogPrintf ("Started.\n");
}
#endif
#ifdef __i386__
/*
* Remote debugger support
*
* i386-rtems-gdb -b 38400 example(binary from EPICS build -- not netbootable image!)
* (gdb) target remote /dev/ttyS0
*/
int enableRemoteDebugging = 0; /* Global so gdb can set before download */
static void
initRemoteGdb(int ticksPerSecond)
{
if (enableRemoteDebugging) {
init_remote_gdb();
rtems_task_wake_after(ticksPerSecond);
breakpoint();
}
}
#endif
/*
***********************************************************************
@@ -63,7 +126,7 @@ LogFatal (const char *msg, ...)
va_list ap;
va_start (ap, msg);
vsyslog (LOG_ALERT, msg, ap);
errlogVprintf (msg, ap);
va_end (ap);
delayedPanic (msg);
}
@@ -74,7 +137,7 @@ LogFatal (const char *msg, ...)
void
LogRtemsFatal (const char *msg, rtems_status_code sc)
{
syslog (LOG_ALERT, "%s: %s", msg, rtems_status_text (sc));
errlogPrintf ("%s: %s\n", msg, rtems_status_text (sc));
delayedPanic (msg);
}
@@ -84,7 +147,7 @@ LogRtemsFatal (const char *msg, rtems_status_code sc)
void
LogNetFatal (const char *msg, int err)
{
syslog (LOG_ALERT, "%s: %d", msg, err);
errlogPrintf ("%s: %d\n", msg, err);
delayedPanic (msg);
}
@@ -201,12 +264,28 @@ Init (rtems_task_argument ignored)
char arg1[] = "st.cmd";
char *argv[3] = { arg0, arg1, NULL };
rtems_interval ticksPerSecond;
rtems_task_priority newpri;
/*
* Get configuration
*/
rtems_clock_get (RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticksPerSecond);
/*
* Architecture-specific hooks
*/
#if defined(__i386__)
initRemoteGdb(ticksPerSecond);
#endif
/*
* Override RTEMS configuration
*/
rtems_task_set_priority (
RTEMS_SELF,
epicsThreadGetOssPriorityValue(epicsThreadPriorityIocsh),
&newpri);
/*
* Create a reasonable environment
*/
@@ -218,6 +297,12 @@ Init (rtems_task_argument ignored)
/*
* Start network
*/
if (rtems_bsdnet_config.network_task_priority == 0) {
unsigned int p;
if (epicsThreadHighestPriorityLevelBelow(epicsThreadPriorityScanLow, &p)
== epicsThreadBooleanStatusSuccess)
rtems_bsdnet_config.network_task_priority = epicsThreadGetOssPriorityValue(p);
}
printf ("***** Initializing network *****\n");
rtems_bsdnet_initialize_network ();
printf ("***** Initializing TFTP *****\n");
@@ -246,9 +331,6 @@ Init (rtems_task_argument ignored)
break;
}
}
printf ("***** Initializing syslog *****\n");
openlog ("IOC", LOG_CONS, LOG_DAEMON);
logReset ();
/*
* Run the EPICS startup script
@@ -260,53 +342,3 @@ Init (rtems_task_argument ignored)
printf ("***** IOC application terminating *****\n");
exit (i);
}
/*
* Architecture-dependent routines
*/
#ifdef __mcpu32__
#include <m68360.h>
static void
logReset (void)
{
int bit, rsr;
int i;
const char *cp;
char cbuf[80];
rsr = m360.rsr;
for (i = 0, bit = 0x80 ; bit != 0 ; bit >>= 1) {
if (rsr & bit) {
switch (bit) {
case 0x80: cp = "RESETH*"; break;
case 0x40: cp = "POWER-UP"; break;
case 0x20: cp = "WATCHDOG"; break;
case 0x10: cp = "DOUBLE FAULT"; break;
case 0x04: cp = "LOST CLOCK"; break;
case 0x02: cp = "RESET"; break;
case 0x01: cp = "RESETS*"; break;
default: cp = "??"; break;
}
i += sprintf (cbuf+i, cp);
rsr &= ~bit;
if (rsr)
i += sprintf (cbuf+i, ", ");
else
break;
}
}
syslog (LOG_NOTICE, "Startup after %s.", cbuf);
printf ("Startup after %s.\n", cbuf);
m360.rsr = ~0;
}
#else
static void
logReset (void)
{
syslog (LOG_NOTICE, "Started.");
}
#endif

View File

@@ -18,8 +18,6 @@
#include <bsp.h>
#include <rtems/rtems_bsdnet.h>
#define NETWORK_TASK_PRIORITY 90
extern void rtems_bsdnet_loopattach();
static struct rtems_bsdnet_ifconfig loopback_config = {
"lo0", /* name */
@@ -32,40 +30,57 @@ static struct rtems_bsdnet_ifconfig loopback_config = {
/*
* The following conditionals select the network interface card.
*
* By default the network interface specified by the board-support
* On RTEMS-pc386 targets all network drivers which support run-time
* probing are linked.
* On other targets the network interface specified by the board-support
* package is used.
* To use a different NIC for a particular application, copy this file to the
* application directory and add the appropriate -Dxxxx to the compiler flag.
* To specify a different NIC on a site-wide basis, add the appropriate
* flags to the site configuration file for the target. For example, to
* specify a 3COM 3C509 for all RTEMS-pc386 targets at your site, add
* TARGET_CFLAGS += -DEPICS_RTEMS_NIC_3C509
* to configure/os/CONFIG_SITE.Common.RTEMS-pc386.
* application directory and make the appropriate changes.
*/
#if defined(EPICS_RTEMS_NIC_3C509) /* 3COM 3C509 */
extern int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *, int);
# define NIC_NAME "ep0"
# define NIC_ATTACH rtems_3c509_driver_attach
#if defined(__i386__)
#elif defined(EPICS_RTEMS_NIC_EEPRO) /* Intel EtherExpressPr (82559ER) */
extern int rtems_fxp_attach (struct rtems_bsdnet_ifconfig *, int);
# define NIC_NAME "fxp1"
# define NIC_ATTACH rtems_fxp_attach
#else /* Use NIC provided by BSP */
# define NIC_NAME RTEMS_BSP_NETWORK_DRIVER_NAME
# define NIC_ATTACH RTEMS_BSP_NETWORK_DRIVER_ATTACH
#endif
static struct rtems_bsdnet_ifconfig netdriver_config = {
NIC_NAME, /* name */
NIC_ATTACH, /* attach function */
extern int rtems_fxp_attach (struct rtems_bsdnet_ifconfig *, int);
static struct rtems_bsdnet_ifconfig fxp_driver_config = {
"fxp1", /* name */
rtems_fxp_attach, /* attach function */
&loopback_config, /* link to next interface */
};
struct rtems_bsdnet_config rtems_bsdnet_config = {
&netdriver_config, /* Network interface */
rtems_bsdnet_do_bootp, /* Use BOOTP to get network configuration */
NETWORK_TASK_PRIORITY, /* Network task priority */
180*1024, /* MBUF space */
350*1024, /* MBUF cluster space */
extern int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *, int);
static struct rtems_bsdnet_ifconfig e3c509_driver_config = {
"ep0", /* name */
rtems_3c509_driver_attach, /* attach function */
&fxp_driver_config, /* link to next interface */
};
#define FIRST_DRIVER_CONFIG &e3c509_driver_config
#else
/*
* FIXME: This really belongs in the mcp750 BSP
*/
#if defined(__PPC) && defined(mpc750) && !defined(RTEMS_BSP_NETWORK_DRIVER_NAME) && !defined(RTEMS_BSP_NETWORK_DRIVER_ATTACH)
# define RTEMS_BSP_NETWORK_DRIVER_NAME "dc1"
# define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_dec21140_driver_attach
extern int rtems_dec21140_driver_attach();
#endif
static struct rtems_bsdnet_ifconfig bsp_driver_config = {
RTEMS_BSP_NETWORK_DRIVER_NAME, /* name */
RTEMS_BSP_NETWORK_DRIVER_ATTACH, /* attach function */
&loopback_config, /* link to next interface */
};
#define FIRST_DRIVER_CONFIG &bsp_driver_config
#endif
struct rtems_bsdnet_config rtems_bsdnet_config = {
FIRST_DRIVER_CONFIG, /* Link to next interface */
rtems_bsdnet_do_bootp, /* Use BOOTP to get network configuration */
0, /* If 0 then the network daemons will run at a */
/* priority just less than the lowest-priority */
/* EPICS scan thread. */
/* If non-zero then the network daemons will run */
/* at this *RTEMS* priority */
180*1024, /* MBUF space */
350*1024, /* MBUF cluster space */
};

View File

@@ -230,6 +230,8 @@ int epicsShareAPI astac(char *pname,char *user,char *location)
ASCLIENTPVT *pasclientpvt=NULL;
dbCommon *precord;
dbFldDes *pflddes;
char *puser;
char *plocation;
paddr = dbCalloc(1,sizeof(DBADDR) + sizeof(ASCLIENTPVT));
pasclientpvt = (ASCLIENTPVT *)(paddr + 1);
@@ -240,8 +242,13 @@ int epicsShareAPI astac(char *pname,char *user,char *location)
}
precord = paddr->precord;
pflddes = paddr->pfldDes;
puser = asCalloc(1,strlen(user)+1);
strcpy(puser,user);
plocation = asCalloc(1,strlen(location)+1);
strcpy(plocation,location);
status = asAddClient(pasclientpvt,(ASMEMBERPVT)precord->asp,
(int)pflddes->as_level,user,location);
(int)pflddes->as_level,puser,plocation);
if(status) {
errMessage(status,"asAddClient error");
return(1);

View File

@@ -14,6 +14,8 @@
* (505) 665 1831
*/
#include <stdexcept>
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
#define epicsExportSharedSymbols
@@ -24,7 +26,7 @@
#include "cac.h"
#include "sgAutoPtr.h"
epicsSingleton < tsFreeList < struct CASG, 128 > > CASG::pFreeList;
casgRecycle::~casgRecycle () {}
CASG::CASG ( ca_client_context &cacIn ) :
client ( cacIn ), magic ( CASG_MAGIC )
@@ -32,11 +34,6 @@ CASG::CASG ( ca_client_context &cacIn ) :
client.installCASG ( *this );
}
void CASG::destroy ()
{
delete this;
}
CASG::~CASG ()
{
if ( this->verify () ) {
@@ -243,24 +240,14 @@ void CASG::completionNotify ( syncGroupNotify & notify )
}
}
void CASG::recycleSyncGroupWriteNotify ( syncGroupWriteNotify &io )
void CASG::recycleSyncGroupWriteNotify ( syncGroupWriteNotify & io )
{
this->freeListWriteOP.release ( &io, sizeof ( io ) );
this->freeListWriteOP.release ( & io );
}
void CASG::recycleSyncGroupReadNotify ( syncGroupReadNotify &io )
void CASG::recycleSyncGroupReadNotify ( syncGroupReadNotify & io )
{
this->freeListReadOP.release ( &io, sizeof ( io ) );
}
void * CASG::operator new (size_t size)
{
return CASG::pFreeList->allocate ( size );
}
void CASG::operator delete (void *pCadaver, size_t size)
{
CASG::pFreeList->release ( pCadaver, size );
this->freeListReadOP.release ( & io );
}
int CASG::printf ( const char *pformat, ... )
@@ -291,5 +278,23 @@ void CASG::exception ( int status, const char *pContext,
lineNo, chan, type, count, op );
}
void * CASG::operator new ( size_t ) // X aCC 361
{
// The HPUX compiler seems to require this even though no code
// calls it directly
throw std::logic_error ( "why is the compiler calling private operator new" );
}
void CASG::operator delete ( void * )
{
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

File diff suppressed because it is too large Load Diff

View File

@@ -69,7 +69,6 @@ LIBSRCS += comQueSend.cpp
LIBSRCS += comBuf.cpp
LIBSRCS += hostNameCache.cpp
LIBSRCS += msgForMultiplyDefinedPV.cpp
LIBSRCS += limboiiu.cpp
LIBSRCS += callbackMutex.cpp
LIBSRCS += templateInstances.cpp

View File

@@ -44,6 +44,81 @@
epicsThreadPrivateId caClientContextId;
const char * ca_message_text []
=
{
"Normal successful completion",
"Maximum simultaneous IOC connections exceeded",
"Unknown internet host",
"Unknown internet service",
"Unable to allocate a new socket",
"Unable to connect to internet host or service",
"Unable to allocate additional dynamic memory",
"Unknown IO channel",
"Record field specified inappropriate for channel specified",
"The requested data transfer is greater than available memory or EPICS_CA_MAX_ARRAY_BYTES",
"User specified timeout on IO operation expired",
"Sorry, that feature is planned but not supported at this time",
"The supplied string is unusually large",
"The request was ignored because the specified channel is disconnected",
"The data type specifed is invalid",
"Remote Channel not found",
"Unable to locate all user specified channels",
"Channel Access Internal Failure",
"The requested local DB operation failed",
"Channel read request failed",
"Channel write request failed",
"Channel subscription request failed",
"Invalid element count requested",
"Invalid string",
"Virtual circuit disconnect",
"Identical process variable name on multiple servers",
"Request inappropriate within subscription (monitor) update callback",
"Database value get for that channel failed during channel search",
"Unable to initialize without the vxWorks VX_FP_TASK task option set",
"Event queue overflow has prevented first pass event after event add",
"Bad event subscription (monitor) identifier",
"Remote channel has new network address",
"New or resumed network connection",
"Specified task isnt a member of a CA context",
"Attempt to use defunct CA feature failed",
"The supplied string is empty",
"Unable to spawn the CA repeater thread- auto reconnect will fail",
"No channel id match for search reply- search reply ignored",
"Reseting dead connection- will try to reconnect",
"Server (IOC) has fallen behind or is not responding- still waiting",
"No internet interface with broadcast available",
"Invalid event selection mask",
"IO operations have completed",
"IO operations are in progress",
"Invalid synchronous group identifier",
"Put callback timed out",
"Read access denied",
"Write access denied",
"Requested feature is no longer supported",
"Empty PV search address list",
"No reasonable data conversion between client and server types",
"Invalid channel identifier",
"Invalid function pointer",
"Thread is already attached to a client context",
"Not supported by attached service",
"User destroyed channel",
"Invalid channel priority",
"Preemptive callback not enabled - additional threads may not join context",
"Client's protocol revision does not support transfers exceeding 16k bytes"
};
static epicsThreadOnceId caClientContextIdOnce = EPICS_THREAD_ONCE_INIT;
extern "C" void ca_client_exit_handler ()
@@ -68,11 +143,9 @@ extern "C" void ca_init_client_context ( void * )
*/
int fetchClientContext ( ca_client_context **ppcac )
{
epicsThreadOnce ( &caClientContextIdOnce, ca_init_client_context, 0 );
if ( caClientContextId == 0 ) {
epicsThreadOnce ( &caClientContextIdOnce, ca_init_client_context, 0 );
if ( caClientContextId == 0 ) {
return ECA_ALLOCMEM;
}
return ECA_ALLOCMEM;
}
int status;
@@ -233,18 +306,20 @@ int epicsShareAPI ca_search_and_connect (
// extern "C"
int epicsShareAPI ca_create_channel (
const char *name_str, caCh * conn_func, void * puser,
const char * name_str, caCh * conn_func, void * puser,
capri priority, chid * chanptr )
{
ca_client_context *pcac;
int caStatus = fetchClientContext ( &pcac );
ca_client_context * pcac;
int caStatus = fetchClientContext ( & pcac );
if ( caStatus != ECA_NORMAL ) {
return caStatus;
}
try {
oldChannelNotify * pChanNotify = new oldChannelNotify (
* pcac, name_str, conn_func, puser, priority );
oldChannelNotify * pChanNotify =
new ( pcac->oldChannelNotifyFreeList )
oldChannelNotify ( *pcac, name_str,
conn_func, puser, priority );
// make sure that their chan pointer is set prior to
// calling connection call backs
*chanptr = pChanNotify;
@@ -272,9 +347,11 @@ int epicsShareAPI ca_create_channel (
// extern "C"
int epicsShareAPI ca_clear_channel ( chid pChan )
{
pChan->destroy ();
ca_client_context & cac = pChan->getClientCtx ();
cac.destroyChannel ( *pChan );
return ECA_NORMAL;
}
#include "autoPtrFreeList.h"
/*
* ca_array_get ()
@@ -283,24 +360,17 @@ int epicsShareAPI ca_clear_channel ( chid pChan )
int epicsShareAPI ca_array_get ( chtype type,
arrayElementCount count, chid pChan, void *pValue )
{
ca_client_context *pcac;
int caStatus = fetchClientContext ( &pcac );
if ( caStatus != ECA_NORMAL ) {
return caStatus;
}
if ( type < 0 ) {
return ECA_BADTYPE;
}
unsigned tmpType = static_cast < unsigned > ( type );
autoPtrDestroy < getCopy > pNotify
( new getCopy ( *pcac, *pChan, tmpType, count, pValue ) );
if ( ! pNotify.get() ) {
return ECA_ALLOCMEM;
}
int caStatus;
try {
if ( type < 0 ) {
return ECA_BADTYPE;
}
unsigned tmpType = static_cast < unsigned > ( type );
autoPtrFreeList < getCopy > pNotify
( pChan->getClientCtx().getCopyFreeList,
new ( pChan->getClientCtx().getCopyFreeList )
getCopy ( pChan->getClientCtx(), *pChan,
tmpType, count, pValue ) );
pChan->read ( type, count, *pNotify );
pNotify.release ();
caStatus = ECA_NORMAL;
@@ -327,7 +397,7 @@ int epicsShareAPI ca_array_get ( chtype type,
}
catch ( cacChannel::unsupportedByService & )
{
caStatus = ECA_NOTINSERVICE;
caStatus = ECA_UNAVAILINSERV;
}
catch ( cacChannel::requestTimedOut & )
{
@@ -355,19 +425,16 @@ int epicsShareAPI ca_array_get_callback ( chtype type,
arrayElementCount count, chid pChan,
caEventCallBackFunc *pfunc, void *arg )
{
if ( type < 0 ) {
return ECA_BADTYPE;
}
unsigned tmpType = static_cast < unsigned > ( type );
autoPtrDestroy < getCallback > pNotify
( new getCallback ( *pChan, pfunc, arg ) );
if ( ! pNotify.get() ) {
return ECA_ALLOCMEM;
}
int caStatus;
try {
if ( type < 0 ) {
return ECA_BADTYPE;
}
unsigned tmpType = static_cast < unsigned > ( type );
autoPtrDestroy < getCallback > pNotify
( new ( pChan->getClientCtx().getCallbackFreeList )
getCallback ( *pChan, pfunc, arg ) );
pChan->read ( tmpType, count, *pNotify );
pNotify.release ();
caStatus = ECA_NORMAL;
@@ -394,7 +461,7 @@ int epicsShareAPI ca_array_get_callback ( chtype type,
}
catch ( cacChannel::unsupportedByService & )
{
caStatus = ECA_NOTINSERVICE;
caStatus = ECA_UNAVAILINSERV;
}
catch ( cacChannel::requestTimedOut & )
{
@@ -421,19 +488,16 @@ int epicsShareAPI ca_array_get_callback ( chtype type,
int epicsShareAPI ca_array_put_callback ( chtype type, arrayElementCount count,
chid pChan, const void *pValue, caEventCallBackFunc *pfunc, void *usrarg )
{
if ( type < 0 ) {
return ECA_BADTYPE;
}
unsigned tmpType = static_cast < unsigned > ( type );
autoPtrDestroy < putCallback > pNotify
( new putCallback ( *pChan, pfunc, usrarg ) );
if ( ! pNotify.get() ) {
return ECA_ALLOCMEM;
}
int caStatus;
try {
if ( type < 0 ) {
return ECA_BADTYPE;
}
unsigned tmpType = static_cast < unsigned > ( type );
autoPtrFreeList < putCallback > pNotify
( pChan->getClientCtx().putCallbackFreeList,
new ( pChan->getClientCtx().putCallbackFreeList )
putCallback ( *pChan, pfunc, usrarg ) );
pChan->write ( tmpType, count, pValue, *pNotify );
pNotify.release ();
caStatus = ECA_NORMAL;
@@ -460,7 +524,7 @@ int epicsShareAPI ca_array_put_callback ( chtype type, arrayElementCount count,
}
catch ( cacChannel::unsupportedByService & )
{
caStatus = ECA_NOTINSERVICE;
caStatus = ECA_UNAVAILINSERV;
}
catch ( cacChannel::requestTimedOut & )
{
@@ -516,7 +580,7 @@ int epicsShareAPI ca_array_put ( chtype type, arrayElementCount count,
}
catch ( cacChannel::unsupportedByService & )
{
caStatus = ECA_NOTINSERVICE;
caStatus = ECA_UNAVAILINSERV;
}
catch ( cacChannel::requestTimedOut & )
{
@@ -540,7 +604,6 @@ int epicsShareAPI ca_array_put ( chtype type, arrayElementCount count,
int epicsShareAPI ca_change_connection_event ( chid pChan, caCh *pfunc )
{
return pChan->changeConnCallBack ( pfunc );
return ECA_INTERNAL;
}
/*
@@ -602,21 +665,19 @@ int epicsShareAPI ca_add_masked_array_event (
}
try {
autoPtrDestroy < oldSubscription > pSubsr
( new oldSubscription ( *pChan, pCallBack, pCallBackArg ) );
if ( pSubsr.get () ) {
evid pTmp = pSubsr.release ();
if ( monixptr ) {
*monixptr = pTmp;
}
pTmp->begin ( tmpType, count, mask );
// dont touch pTmp after this because
// the first callback might have canceled it
return ECA_NORMAL;
}
else {
return ECA_ALLOCMEM;
autoPtrFreeList < oldSubscription > pSubsr
( pChan->getClientCtx().subscriptionFreeList,
new ( pChan->getClientCtx().subscriptionFreeList )
oldSubscription ( *pChan,
pCallBack, pCallBackArg ) );
evid pTmp = pSubsr.release ();
if ( monixptr ) {
*monixptr = pTmp;
}
pTmp->begin ( tmpType, count, mask );
// dont touch pTmp after this because
// the first callback might have canceled it
return ECA_NORMAL;
}
catch ( cacChannel::badType & )
{
@@ -636,7 +697,7 @@ int epicsShareAPI ca_add_masked_array_event (
}
catch ( cacChannel::unsupportedByService & )
{
return ECA_NOTINSERVICE;
return ECA_UNAVAILINSERV;
}
catch ( std::bad_alloc & )
{
@@ -657,7 +718,10 @@ int epicsShareAPI ca_add_masked_array_event (
// extern "C"
int epicsShareAPI ca_clear_event ( evid pMon )
{
pMon->destroy ();
oldChannelNotify & chan = pMon->channel ();
ca_client_context & cac = chan.getClientCtx ();
pMon->ioCancel ();
cac.destroySubscription ( *pMon );
return ECA_NORMAL;
}
@@ -787,7 +851,7 @@ void epicsShareAPI ca_signal ( long ca_status, const char *message )
* (if they call this routine again).
*/
// extern "C"
const char * epicsShareAPI ca_message ( long ca_status )
const char * epicsShareAPI ca_message ( long ca_status ) // X aCC 361
{
unsigned msgNo = CA_EXTRACT_MSG_NO ( ca_status );
@@ -1181,36 +1245,43 @@ epicsShareDef const unsigned short dbr_size[LAST_BUFFER_TYPE+1] = {
sizeof(dbr_float_t), /* IEEE Float */
sizeof(dbr_enum_t), /* item number */
sizeof(dbr_char_t), /* character */
sizeof(dbr_long_t), /* long */
sizeof(dbr_double_t), /* double */
sizeof(struct dbr_sts_string), /* string field with status */
sizeof(struct dbr_sts_short), /* short field with status */
sizeof(struct dbr_sts_float), /* float field with status */
sizeof(struct dbr_sts_enum), /* item number with status */
sizeof(struct dbr_sts_char), /* char field with status */
sizeof(struct dbr_sts_long), /* long field with status */
sizeof(struct dbr_sts_double), /* double field with time */
sizeof(struct dbr_time_string), /* string field with time */
sizeof(struct dbr_time_short), /* short field with time */
sizeof(struct dbr_time_float), /* float field with time */
sizeof(struct dbr_time_enum), /* item number with time */
sizeof(struct dbr_time_char), /* char field with time */
sizeof(struct dbr_time_long), /* long field with time */
sizeof(struct dbr_time_double), /* double field with time */
sizeof(struct dbr_sts_string), /* graphic string info */
sizeof(struct dbr_gr_short), /* graphic short info */
sizeof(struct dbr_gr_float), /* graphic float info */
sizeof(struct dbr_gr_enum), /* graphic item info */
sizeof(struct dbr_gr_char), /* graphic char info */
sizeof(struct dbr_gr_long), /* graphic long info */
sizeof(struct dbr_gr_double), /* graphic double info */
sizeof(struct dbr_sts_string), /* control string info */
sizeof(struct dbr_ctrl_short), /* control short info */
sizeof(struct dbr_ctrl_float), /* control float info */
sizeof(struct dbr_ctrl_enum), /* control item info */
sizeof(struct dbr_ctrl_char), /* control char info */
sizeof(struct dbr_ctrl_long), /* control long info */
sizeof(struct dbr_ctrl_double), /* control double info */
sizeof(dbr_put_ackt_t), /* put ackt */
sizeof(dbr_put_acks_t), /* put acks */
sizeof(struct dbr_stsack_string),/* string field with status/ack*/
@@ -1224,36 +1295,43 @@ epicsShareDef const unsigned short dbr_value_size[LAST_BUFFER_TYPE+1] = {
sizeof(dbr_float_t), /* IEEE Float */
sizeof(dbr_enum_t), /* item number */
sizeof(dbr_char_t), /* character */
sizeof(dbr_long_t), /* long */
sizeof(dbr_double_t), /* double */
sizeof(dbr_string_t), /* string max size */
sizeof(dbr_short_t), /* short */
sizeof(dbr_float_t), /* IEEE Float */
sizeof(dbr_enum_t), /* item number */
sizeof(dbr_char_t), /* character */
sizeof(dbr_long_t), /* long */
sizeof(dbr_double_t), /* double */
sizeof(dbr_string_t), /* string max size */
sizeof(dbr_short_t), /* short */
sizeof(dbr_float_t), /* IEEE Float */
sizeof(dbr_enum_t), /* item number */
sizeof(dbr_char_t), /* character */
sizeof(dbr_long_t), /* long */
sizeof(dbr_double_t), /* double */
sizeof(dbr_string_t), /* string max size */
sizeof(dbr_short_t), /* short */
sizeof(dbr_float_t), /* IEEE Float */
sizeof(dbr_enum_t), /* item number */
sizeof(dbr_char_t), /* character */
sizeof(dbr_long_t), /* long */
sizeof(dbr_double_t), /* double */
sizeof(dbr_string_t), /* string max size */
sizeof(dbr_short_t), /* short */
sizeof(dbr_float_t), /* IEEE Float */
sizeof(dbr_enum_t), /* item number */
sizeof(dbr_char_t), /* character */
sizeof(dbr_long_t), /* long */
sizeof(dbr_double_t), /* double */
sizeof(dbr_ushort_t), /* put_ackt */
sizeof(dbr_ushort_t), /* put_acks */
sizeof(dbr_string_t), /* string max size */

View File

@@ -56,11 +56,17 @@ unsigned accessUpdateCount;
unsigned connectionUpdateCount;
unsigned getCallbackCount;
static epicsTimeStamp showProgressBeginTime;
static double timeoutToPendIO = 1e20;
void showProgressBegin ( const char *pTestName, unsigned interestLevel )
{
if ( interestLevel > 0 ) {
if ( interestLevel > 1 ) {
printf ( "%s ", pTestName );
epicsTimeGetCurrent ( & showProgressBeginTime );
}
printf ( "{" );
}
@@ -69,10 +75,15 @@ void showProgressBegin ( const char *pTestName, unsigned interestLevel )
void showProgressEnd ( unsigned interestLevel )
{
if ( interestLevel > 0 ) {
printf ( "}" );
if ( interestLevel > 1 ) {
printf ( "\n" );
epicsTimeStamp showProgressEndTime;
double delay;
epicsTimeGetCurrent ( & showProgressEndTime );
delay = epicsTimeDiffInSeconds ( &showProgressEndTime, &showProgressBeginTime );
printf ( " %f sec\n", delay );
}
else {
fflush ( stdout );
@@ -137,7 +148,7 @@ void monitorSubscriptionFirstUpdateTest ( const char *pName, chid chan, unsigned
/* this may fail if there is an unusual deadband */
status = ca_get ( DBR_CTRL_DOUBLE, chan, &currentVal );
SEVCHK ( status, NULL );
status = ca_pend_io ( 100.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, NULL );
eventCount = 0u;
waitCount = 0u;
@@ -178,7 +189,7 @@ void monitorSubscriptionFirstUpdateTest ( const char *pName, chid chan, unsigned
status = ca_add_event ( DBR_FLOAT, chan2,
nUpdatesTester, &eventCount, 0 );
SEVCHK ( status, 0 );
status = ca_pend_io ( 20.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK (status, 0);
epicsThreadSleep ( 0.1 );
ca_poll ();
@@ -194,7 +205,7 @@ void monitorSubscriptionFirstUpdateTest ( const char *pName, chid chan, unsigned
/* this may fail if there is an unusual deadband */
status = ca_get ( DBR_CTRL_DOUBLE, chan2, &currentVal );
SEVCHK ( status, NULL );
status = ca_pend_io ( 100.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, NULL );
eventCount = 0u;
waitCount = 0u;
@@ -553,7 +564,7 @@ void verifyBlockingConnect ( appChan *pChans, unsigned chanCount,
SEVCHK ( status, NULL );
}
status = ca_pend_io ( 1000.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, NULL );
ca_self_test ();
@@ -703,7 +714,7 @@ void grEnumTest ( chid chan, unsigned interestLevel )
status = ca_get (DBR_GR_ENUM, chan, &ge);
SEVCHK (status, "DBR_GR_ENUM ca_get()");
status = ca_pend_io (2.0);
status = ca_pend_io (timeoutToPendIO);
assert (status == ECA_NORMAL);
assert ( ge.no_str >= 0 && ge.no_str < NELEMENTS(ge.strs) );
@@ -713,7 +724,7 @@ void grEnumTest ( chid chan, unsigned interestLevel )
for (i=0; i<count; i++) {
printf ("\"%s\" ", ge.strs[i]);
}
printf ("}\n");
printf ("}");
}
showProgressEnd ( interestLevel );
}
@@ -774,7 +785,7 @@ void ctrlDoubleTest ( chid chan, unsigned interestLevel )
ca_element_count(chan),
chan, pCtrlDbl);
SEVCHK (status, "ctrlDoubleTest, ca_array_get");
status = ca_pend_io (30.0);
status = ca_pend_io ( timeoutToPendIO );
assert (status==ECA_NORMAL);
/*
@@ -825,7 +836,7 @@ void verifyBlockInPendIO ( chid chan, unsigned interestLevel )
resp = -99.99f;
SEVCHK ( ca_put (DBR_FLOAT, chan, &req), NULL );
SEVCHK ( ca_get (DBR_FLOAT, chan, &resp), NULL );
SEVCHK ( ca_pend_io (2000.0) , NULL );
SEVCHK ( ca_pend_io (timeoutToPendIO) , NULL );
if ( resp != req ) {
printf (
"get block test failed - val written %f\n", req);
@@ -858,7 +869,7 @@ void floatTest ( chid chan, dbr_float_t beginValue, dbr_float_t increment,
SEVCHK ( status, NULL );
status = ca_get ( DBR_FLOAT, chan, &fretval );
SEVCHK ( status, NULL );
status = ca_pend_io ( 10.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK (status, NULL);
if ( fabs ( fval - fretval ) > epsilon ) {
printf ( "float test failed val written %f\n", fval );
@@ -888,7 +899,7 @@ void doubleTest ( chid chan, dbr_double_t beginValue,
SEVCHK ( status, NULL );
status = ca_get ( DBR_DOUBLE, chan, &fretval );
SEVCHK ( status, NULL );
status = ca_pend_io ( 100.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, NULL );
if ( fabs ( fval - fretval ) > epsilon ) {
printf ( "double test failed val written %f\n", fval );
@@ -1010,7 +1021,7 @@ void verifyLongIO ( chid chan, unsigned interestLevel )
status = ca_get ( DBR_CTRL_LONG, chan, &cl );
SEVCHK ( status, "control long fetch failed\n" );
status = ca_pend_io ( 10.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "control long pend failed\n" );
incr = ( cl.upper_ctrl_limit - cl.lower_ctrl_limit );
@@ -1025,7 +1036,7 @@ void verifyLongIO ( chid chan, unsigned interestLevel )
ca_put ( DBR_LONG, chan, &iter );
ca_get ( DBR_LONG, chan, &rdbk );
status = ca_pend_io ( 10.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "get pend failed\n" );
assert ( iter == rdbk );
}
@@ -1053,7 +1064,7 @@ void verifyShortIO ( chid chan, unsigned interestLevel )
status = ca_get ( DBR_CTRL_SHORT, chan, &cl );
SEVCHK ( status, "control short fetch failed\n" );
status = ca_pend_io ( 10.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "control short pend failed\n" );
incr = (dbr_short_t) ( cl.upper_ctrl_limit - cl.lower_ctrl_limit );
@@ -1070,7 +1081,7 @@ void verifyShortIO ( chid chan, unsigned interestLevel )
ca_put ( DBR_SHORT, chan, &iter );
ca_get ( DBR_SHORT, chan, &rdbk );
status = ca_pend_io ( 10.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "get pend failed\n" );
assert ( iter == rdbk );
}
@@ -1097,7 +1108,7 @@ void verifyHighThroughputRead ( chid chan, unsigned interestLevel )
status = ca_get ( DBR_FLOAT, chan, &temp );
SEVCHK ( status ,NULL );
}
status = ca_pend_io (2000.0);
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, NULL );
showProgressEnd ( interestLevel );
}
@@ -1118,7 +1129,7 @@ void verifyHighThroughputWrite ( chid chan, unsigned interestLevel )
status = ca_put ( DBR_DOUBLE, chan, &fval );
SEVCHK ( status, NULL );
}
SEVCHK ( ca_pend_io (2000.0), NULL );
SEVCHK ( ca_pend_io (timeoutToPendIO), NULL );
showProgressEnd ( interestLevel );
}
else{
@@ -1205,7 +1216,7 @@ void verifyBadString ( chid chan, unsigned interestLevel )
assert ( status == ECA_NORMAL );
status = ca_array_get ( DBR_STRING, 1u, chan, respStr );
assert ( status == ECA_NORMAL );
status = ca_pend_io ( 0.0 );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
if ( strcmp ( stimStr, respStr ) ) {
printf (
@@ -1287,9 +1298,9 @@ void test_sync_groups ( chid chan, unsigned interestLevel )
multiple_sg_requests ( chan, gid1 );
multiple_sg_requests ( chan, gid2 );
status = ca_sg_block ( gid1, 15.0 );
status = ca_sg_block ( gid1, 500.0 );
SEVCHK ( status, "SYNC GRP1" );
status = ca_sg_block ( gid2, 15.0 );
status = ca_sg_block ( gid2, 500.0 );
SEVCHK ( status, "SYNC GRP2" );
status = ca_sg_delete ( gid1 );
SEVCHK ( status, NULL );
@@ -1331,7 +1342,7 @@ void multiSubscriptionDeleteTest ( chid chan, unsigned interestLevel )
* is still able to punch through with a request.
*/
SEVCHK ( ca_get ( DBR_FLOAT,chan,&getResp ), NULL );
SEVCHK ( ca_pend_io ( 1000.0 ), NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
showProgress ( interestLevel );
@@ -1371,7 +1382,7 @@ void multiSubscriptionDeleteTest ( chid chan, unsigned interestLevel )
* force all of the clear event requests to complete
*/
SEVCHK ( ca_get (DBR_FLOAT,chan,&temp), NULL );
SEVCHK ( ca_pend_io (1000.0), NULL );
SEVCHK ( ca_pend_io (timeoutToPendIO), NULL );
showProgressEnd ( interestLevel );
}
@@ -1402,7 +1413,7 @@ void singleSubscriptionDeleteTest ( chid chan, unsigned interestLevel )
* force the subscription request to complete
*/
SEVCHK ( ca_get ( DBR_FLOAT, chan, &getResp ), NULL );
SEVCHK ( ca_pend_io ( 1000.0 ), NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
/*
* attempt to generate heavy event traffic before initiating
@@ -1447,7 +1458,7 @@ void channelClearWithEventTrafficTest ( const char *pName, unsigned interestLeve
int status = ca_create_channel ( pName, 0, 0,
CA_PRIORITY_DEFAULT, &chan );
status = ca_pend_io ( 100.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "channelClearWithEventTrafficTest: channel connect failed" );
assert ( status == ECA_NORMAL );
@@ -1459,7 +1470,7 @@ void channelClearWithEventTrafficTest ( const char *pName, unsigned interestLeve
* force the subscription request to complete
*/
SEVCHK ( ca_get ( DBR_FLOAT, chan, &getResp ), NULL );
SEVCHK ( ca_pend_io ( 1000.0 ), NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
/*
* attempt to generate heavy event traffic before initiating
@@ -1550,8 +1561,8 @@ static unsigned arrayEventExceptionNotifyComplete = 0;
void arrayEventExceptionNotify ( struct event_handler_args args )
{
if ( args.status == ECA_NORMAL ) {
printf ( "arrayEventExceptionNotify: expected exception but didnt receive one \"%s\" because \"%s\"",
ca_name ( args.chid ), ca_message ( args.status ) );
printf ( "arrayEventExceptionNotify: expected exception but didnt receive one against \"%s\" \n",
ca_name ( args.chid ) );
}
else {
arrayEventExceptionNotifyComplete = 1;
@@ -1776,7 +1787,7 @@ void arrayTest ( chid chan, unsigned maxArrayBytes, unsigned interestLevel )
status = ca_array_get ( DBR_DOUBLE, ca_element_count (chan),
chan, pRF );
SEVCHK ( status, "array read request failed" );
status = ca_pend_io ( 30.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "array read failed" );
/*
@@ -1800,7 +1811,7 @@ void arrayTest ( chid chan, unsigned maxArrayBytes, unsigned interestLevel )
status = ca_array_get ( DBR_STRING,
ca_element_count (chan), chan, pRS );
SEVCHK ( status, "array read request failed" );
status = ca_pend_io ( 300.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "array read failed" );
free ( pRS );
}
@@ -1891,52 +1902,54 @@ void arrayTest ( chid chan, unsigned maxArrayBytes, unsigned interestLevel )
void unequalServerBufferSizeTest ( const char * pName, unsigned interestLevel )
{
dbr_double_t *pRF, *pWF;
unsigned connections;
chid newChan;
int status;
showProgressBegin ( "unequalServerBufferSizeTest", interestLevel );
{
chid newChan;
/* this test must be run when no channels are connected */
connections = ca_get_ioc_connection_count ();
assert ( connections == 0u );
status = ca_create_channel ( pName, 0, 0, 0, & newChan );
assert ( status == ECA_NORMAL );
status = ca_pend_io ( 100.0 );
assert ( status == ECA_NORMAL );
status = ca_create_channel ( pName, 0, 0, 0, & newChan );
assert ( status == ECA_NORMAL );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
if ( ! ca_write_access ( newChan ) ) {
printf ( "skipping unequal buffer size test - no write access\n" );
status = ca_clear_channel ( newChan );
assert ( status == ECA_NORMAL );
return;
}
pRF = (dbr_double_t *) calloc ( ca_element_count (newChan), sizeof (*pRF) );
assert ( pRF != NULL );
pWF = (dbr_double_t *) calloc ( ca_element_count (newChan), sizeof (*pWF) );
assert ( pWF != NULL );
status = ca_array_get ( DBR_DOUBLE, ca_element_count ( newChan ),
newChan, pRF );
status = ca_pend_io ( 100.0 );
assert ( status == ECA_NORMAL );
status = ca_clear_channel ( newChan );
assert ( status == ECA_NORMAL );
status = ca_create_channel ( pName, 0, 0, 0, &newChan );
assert ( status == ECA_NORMAL );
status = ca_pend_io ( 100.0 );
assert ( status == ECA_NORMAL );
status = ca_array_put ( DBR_DOUBLE, ca_element_count ( newChan ),
newChan, pWF );
status = ca_array_get ( DBR_DOUBLE, 1,
newChan, pRF );
status = ca_pend_io ( 100.0 );
assert ( status == ECA_NORMAL );
if ( ! ca_write_access ( newChan ) ) {
printf ( "skipping unequal buffer size test - no write access\n" );
status = ca_clear_channel ( newChan );
assert ( status == ECA_NORMAL );
return;
}
pRF = (dbr_double_t *) calloc ( ca_element_count (newChan), sizeof (*pRF) );
assert ( pRF != NULL );
pWF = (dbr_double_t *) calloc ( ca_element_count (newChan), sizeof (*pWF) );
assert ( pWF != NULL );
status = ca_array_get ( DBR_DOUBLE, ca_element_count ( newChan ),
newChan, pRF );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
status = ca_clear_channel ( newChan );
assert ( status == ECA_NORMAL );
status = ca_create_channel ( pName, 0, 0, 0, &newChan );
assert ( status == ECA_NORMAL );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
status = ca_array_put ( DBR_DOUBLE, ca_element_count ( newChan ),
newChan, pWF );
status = ca_array_get ( DBR_DOUBLE, 1,
newChan, pRF );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
status = ca_clear_channel ( newChan );
assert ( status == ECA_NORMAL );
free ( pRF );
free ( pWF );
@@ -2079,7 +2092,7 @@ void monitorUpdateTest ( chid chan, unsigned interestLevel )
* is still able to punch through with a request.
*/
SEVCHK ( ca_get ( DBR_FLOAT, chan, &getResp) ,NULL );
SEVCHK ( ca_pend_io ( 1000.0 ) ,NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ) ,NULL );
showProgress ( interestLevel );
@@ -2135,7 +2148,7 @@ void monitorUpdateTest ( chid chan, unsigned interestLevel )
*/
getResp = -1;
SEVCHK ( ca_get ( DBR_FLOAT, chan, &getResp ), NULL );
SEVCHK ( ca_pend_io ( 1000.0 ), NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
assert ( getResp == temp );
@@ -2201,7 +2214,7 @@ void monitorUpdateTest ( chid chan, unsigned interestLevel )
* complete
*/
SEVCHK ( ca_get ( DBR_FLOAT, chan, &temp ), NULL );
SEVCHK ( ca_pend_io ( 1000.0 ), NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
/* printf ( "flow control bypassed %u events\n", flowCtrlCount ); */
@@ -2214,8 +2227,15 @@ void verifyReasonableBeaconPeriod ( chid chan )
double beaconPeriod, expectedBeaconPeriod, error, percentError;
unsigned attempts = 0u;
long status = envGetDoubleConfigParam (
&EPICS_CA_BEACON_PERIOD, &expectedBeaconPeriod );
int status;
if ( envGetConfigParamPtr ( & EPICS_CAS_BEACON_PERIOD ) ) {
status = envGetDoubleConfigParam ( & EPICS_CAS_BEACON_PERIOD,
& expectedBeaconPeriod );
}
else {
status = envGetDoubleConfigParam ( & EPICS_CA_BEACON_PERIOD,
& expectedBeaconPeriod );
}
assert ( status >=0 );
while ( 1 ) {
@@ -2242,9 +2262,12 @@ void verifyReasonableBeaconPeriod ( chid chan )
}
}
void verifyOldPend ()
void verifyOldPend ( unsigned interestLevel)
{
int status;
showProgressBegin ( "verifyOldPend", interestLevel );
/*
* verify that the old ca_pend() is in the symbol table
*/
@@ -2252,9 +2275,11 @@ void verifyOldPend ()
assert ( status == ECA_NORMAL );
status = ca_pend ( 1e-12, 0 );
assert ( status == ECA_TIMEOUT );
showProgressEnd ( interestLevel );
}
void verifyTimeStamps ( chid chan )
void verifyTimeStamps ( chid chan, unsigned interestLevel )
{
struct dbr_time_double first;
struct dbr_time_double last;
@@ -2264,17 +2289,19 @@ void verifyTimeStamps ( chid chan )
double diff;
int status;
showProgressBegin ( "verifyTimeStamps", interestLevel );
status = epicsTimeGetCurrent ( & localTime );
assert ( status >= 0 );
status = ca_get ( DBR_TIME_DOUBLE, chan, & first );
SEVCHK ( status, "fetch of dbr time double failed\n" );
status = ca_pend_io ( 20.0 );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
status = ca_get ( DBR_TIME_DOUBLE, chan, & last );
SEVCHK ( status, "fetch of dbr time double failed\n" );
status = ca_pend_io ( 20.0 );
status = ca_pend_io ( timeoutToPendIO );
assert ( status == ECA_NORMAL );
length = epicsTimeToStrftime ( buf, sizeof ( buf ),
@@ -2290,51 +2317,75 @@ void verifyTimeStamps ( chid chan )
diff = epicsTimeDiffInSeconds ( & first.stamp, & localTime );
printf ("Time difference between client and server %g sec\n",
diff );
showProgressEnd ( interestLevel );
}
/*
* attempts to verify from the client side that
* channel priorities work correctly
*/
void verifyChannelPriorities ( const char *pName )
void verifyChannelPriorities ( const char *pName, unsigned interestLevel )
{
static const unsigned nPrio = 30;
chid chanArray[ 30 ];
double value;
unsigned i;
int status;
showProgressBegin ( "verifyChannelPriorities", interestLevel );
for ( i = 0u; i < nPrio; i++ ) {
unsigned priority =
( i * ( CA_PRIORITY_MAX - CA_PRIORITY_MIN ) ) / nPrio;
priority += CA_PRIORITY_MIN;
int status;
double value;
chid chan0, chan1;
unsigned priority0, priority1;
priority0 = ( i * ( CA_PRIORITY_MAX - CA_PRIORITY_MIN ) ) / nPrio;
priority0 += CA_PRIORITY_MIN;
if ( priority0 > CA_PRIORITY_MAX ) {
priority0 = CA_PRIORITY_MAX;
}
priority1 = ( (i+1) * ( CA_PRIORITY_MAX - CA_PRIORITY_MIN ) ) / nPrio;
priority1 += CA_PRIORITY_MIN;
if ( priority1 > CA_PRIORITY_MAX ) {
priority1 = CA_PRIORITY_MAX;
}
status = ca_create_channel ( pName, 0, 0,
priority, &chanArray[i] );
priority0, &chan0 );
SEVCHK ( status, "prioritized channel create failed" );
}
status = ca_pend_io ( 100.0 );
SEVCHK ( status, "prioritized channel connect failed" );
assert ( status == ECA_NORMAL );
for ( i = 0u; i < nPrio; i++ ) {
status = ca_create_channel ( pName, 0, 0,
priority1, &chan1 );
SEVCHK ( status, "prioritized channel create failed" );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "prioritized channel connect failed" );
assert ( status == ECA_NORMAL );
value = i;
status = ca_put ( DBR_DOUBLE, chanArray[i], &value );
status = ca_put ( DBR_DOUBLE, chan0, &value );
SEVCHK ( status, "prioritized channel put failed" );
status = ca_put ( DBR_DOUBLE, chan1, &value );
SEVCHK ( status, "prioritized channel put failed" );
}
status = ca_flush_io ();
SEVCHK ( status, "prioritized channel flush failed" );
for ( i = 0u; i < nPrio; i++ ) {
status = ca_get ( DBR_DOUBLE, chanArray[i], &value );
status = ca_flush_io ();
SEVCHK ( status, "prioritized channel flush failed" );
status = ca_get ( DBR_DOUBLE, chan0, &value );
SEVCHK ( status, "prioritized channel get failed" );
status = ca_get ( DBR_DOUBLE, chan1, &value );
SEVCHK ( status, "prioritized channel get failed" );
}
status = ca_pend_io ( 10.0 );
SEVCHK ( status, "prioritized channel pen io failed" );
for ( i = 0u; i < nPrio; i++ ) {
status = ca_clear_channel ( chanArray[i] );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, "prioritized channel pend io failed" );
status = ca_clear_channel ( chan0 );
SEVCHK ( status, "prioritized channel clear failed" );
status = ca_clear_channel ( chan1 );
SEVCHK ( status, "prioritized channel clear failed" );
}
showProgressEnd ( interestLevel );
}
void verifyImmediateTearDown ()
@@ -2357,13 +2408,23 @@ int acctst ( char *pName, unsigned interestLevel, unsigned channelCount,
{
chid chan;
int status;
long lstatus;
unsigned i;
appChan *pChans;
unsigned connections;
unsigned maxArrayBytes = 10000000;
printf ( "CA Client V%s, channel name \"%s\"\n",
ca_version (), pName );
lstatus = envGetDoubleConfigParam ( &EPICS_CA_CONN_TMO, &timeoutToPendIO );
if ( lstatus ) {
timeoutToPendIO = 1e10;
printf ( "EPICS \"%s\" double fetch failed\n",
EPICS_CA_CONN_TMO.name);
printf ( "Defaulting \"%s\" = %f\n",
EPICS_CA_CONN_TMO.name, timeoutToPendIO );
}
printf ( "CA Client V%s, channel name \"%s\", timeout %g\n",
ca_version (), pName, timeoutToPendIO );
if ( select == ca_enable_preemptive_callback ) {
printf ( "Preemptive call back is enabled.\n" );
}
@@ -2384,14 +2445,15 @@ int acctst ( char *pName, unsigned interestLevel, unsigned channelCount,
connections = ca_get_ioc_connection_count ();
assert ( connections == 0u );
/* this test must be run when no channels are connected */
unequalServerBufferSizeTest ( pName, interestLevel );
showProgressBegin ( "connecting to test channel", interestLevel );
status = ca_search ( pName, & chan );
SEVCHK ( status, NULL );
assert ( strcmp ( pName, ca_name ( chan ) ) == 0 );
status = ca_pend_io ( 100.0 );
status = ca_pend_io ( timeoutToPendIO );
SEVCHK ( status, NULL );
showProgressEnd ( interestLevel );
printf ( "native type was %s, native count was %lu\n",
dbf_type_to_text ( ca_field_type ( chan ) ),
@@ -2403,15 +2465,15 @@ int acctst ( char *pName, unsigned interestLevel, unsigned channelCount,
printf ( "testing with a local channel\n" );
}
grEnumTest ( chan, interestLevel );
test_sync_groups ( chan, interestLevel );
verifyChannelPriorities ( pName );
verifyTimeStamps ( chan );
verifyOldPend ();
verifyChannelPriorities ( pName, interestLevel );
verifyTimeStamps ( chan, interestLevel );
verifyOldPend ( interestLevel );
exceptionTest ( chan, interestLevel );
arrayTest ( chan, maxArrayBytes, interestLevel );
verifyMonitorSubscriptionFlushIO ( chan, interestLevel );
monitorSubscriptionFirstUpdateTest ( pName, chan, interestLevel );
grEnumTest ( chan, interestLevel );
ctrlDoubleTest ( chan, interestLevel );
verifyBlockInPendIO ( chan, interestLevel );
verifyAnalogIO ( chan, DBR_FLOAT, FLT_MIN, FLT_MAX,
@@ -2470,7 +2532,7 @@ int acctst ( char *pName, unsigned interestLevel, unsigned channelCount,
SEVCHK ( ca_put ( DBR_PUT_ACKT, chan, &acktIn ), NULL );
SEVCHK ( ca_put ( DBR_PUT_ACKS, chan, &acksIn ), NULL );
SEVCHK ( ca_get ( DBR_STSACK_STRING, chan, &stsackOut ), NULL );
SEVCHK ( ca_pend_io ( 2000.0 ), NULL );
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
}
#endif

View File

@@ -12,23 +12,24 @@
#define addrListh
#include "shareLib.h"
#include "envDefs.h"
#include "envDefs.h"
#include "osiSock.h"
#ifdef __cplusplus
extern "C" {
#endif
epicsShareFunc void epicsShareAPI configureChannelAccessAddressList
( ELLLIST *pList, SOCKET sock, unsigned short port );
( struct ELLLIST *pList, SOCKET sock, unsigned short port );
epicsShareFunc void epicsShareAPI addAddrToChannelAccessAddressList
( ELLLIST *pList, const ENV_PARAM *pEnv, unsigned short port );
( struct ELLLIST *pList, const ENV_PARAM *pEnv, unsigned short port );
epicsShareFunc void epicsShareAPI printChannelAccessAddressList
( const ELLLIST *pList );
( const struct ELLLIST *pList );
epicsShareFunc void epicsShareAPI removeDuplicateAddresses
( ELLLIST *pDestList, ELLLIST *pSrcList, int silent);
( struct ELLLIST *pDestList, ELLLIST *pSrcList, int silent);
#ifdef __cplusplus
}

View File

@@ -34,10 +34,14 @@ public:
~autoPtrDestroy ();
T & operator * () const;
T * operator -> () const;
autoPtrDestroy<T> & operator = ( T * );
T * get () const;
T * release ();
private:
T *p;
// not implemented
autoPtrDestroy<T> & operator = ( const autoPtrDestroy<T> & );
autoPtrDestroy ( const autoPtrDestroy<T> & );
};
template < class T >
@@ -48,7 +52,7 @@ template < class T >
inline autoPtrDestroy<T>::~autoPtrDestroy ()
{
if ( this->p ) {
p->destroy ();
this->p->destroy ();
}
}
@@ -64,6 +68,16 @@ inline T * autoPtrDestroy<T>::operator -> () const
return this->p;
}
template < class T >
inline autoPtrDestroy<T> & autoPtrDestroy<T>::operator = ( T * pIn )
{
if ( this->p ) {
this->p->destroy ();
}
this->p = pIn;
return *this;
}
template < class T >
inline T * autoPtrDestroy<T>::get () const
{

104
src/ca/autoPtrFreeList.h Normal file
View File

@@ -0,0 +1,104 @@
/*************************************************************************\
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* EPICS BASE Versions 3.13.7
* and higher are distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/*
* $Id$
*
*
* L O S A L A M O S
* Los Alamos National Laboratory
* Los Alamos, New Mexico 87545
*
* Copyright, The Regents of the University of California.
*
*
* Author Jeffrey O. Hill
* johill@lanl.gov
* 505 665 1831
*/
#ifndef autoPtrFreeListh
#define autoPtrFreeListh
#ifdef epicsExportSharedSymbols
# define autoPtrFreeListh_epicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include "tsFreeList.h"
#include "cxxCompilerDependencies.h"
#ifdef autoPtrFreeListh_epicsExportSharedSymbols
# define epicsExportSharedSymbols
#endif
template < class T >
class autoPtrFreeList {
public:
autoPtrFreeList ( tsFreeList < T > &, T * );
~autoPtrFreeList ();
T & operator * () const;
T * operator -> () const;
T * get () const;
T * release ();
private:
T * p;
tsFreeList < T > & freeList;
// not implemented
autoPtrFreeList & operator = ( const autoPtrFreeList & );
autoPtrFreeList ( const autoPtrFreeList<T> & );
};
template < class T >
inline autoPtrFreeList<T>::autoPtrFreeList ( tsFreeList < T > & freeListIn, T * pIn ) :
p ( pIn ), freeList ( freeListIn ) {}
template < class T >
inline autoPtrFreeList<T>::~autoPtrFreeList ()
{
if ( this->p ) {
this->p->~T();
// its probably a good idea to require that the class has placement delete
// by calling it during cleanup if the compiler supports it
# if defined ( CXX_PLACEMENT_DELETE )
T::operator delete ( this->p, this->freeList );
# else
this->freeList.release ( this->p );
# endif
}
}
template < class T >
inline T & autoPtrFreeList<T>::operator * () const
{
return * this->p;
}
template < class T >
inline T * autoPtrFreeList<T>::operator -> () const
{
return this->p;
}
template < class T >
inline T * autoPtrFreeList<T>::get () const
{
return this->p;
}
template < class T >
inline T * autoPtrFreeList<T>::release ()
{
T *pTmp = this->p;
this->p = 0;
return pTmp;
}
#endif // #ifdef autoPtrFreeListh

View File

@@ -42,6 +42,7 @@ private:
cacRecycle &r;
tsDLList < class baseNMIU > &eventq;
chronIntIdResTable < baseNMIU > &ioTable;
// not implemented
autoPtrRecycle ( const autoPtrRecycle & );
autoPtrRecycle & operator = ( const autoPtrRecycle & );
};

View File

@@ -19,7 +19,7 @@
* Author: Jeff Hill
*/
#include <stdexcept>
#include <limits.h>
#include <float.h>
@@ -30,18 +30,6 @@
#include "virtualCircuit.h"
#include "bhe.h"
epicsSingleton < tsFreeList < class bhe, 1024 > > bhe::pFreeList;
void * bhe::operator new ( size_t size )
{
return bhe::pFreeList->allocate ( size );
}
void bhe::operator delete ( void *pCadaver, size_t size )
{
bhe::pFreeList->release ( pCadaver, size );
}
/*
* set average to -1.0 so that when the next beacon
* occurs we can distinguish between:
@@ -56,9 +44,10 @@ void bhe::operator delete ( void *pCadaver, size_t size )
* zero (so we can correctly compute the period
* between the 1st and 2nd beacons)
*/
bhe::bhe ( const epicsTime & initialTimeStamp, const inetAddrID & addr ) :
bhe::bhe ( const epicsTime & initialTimeStamp,
unsigned initialBeaconNumber, const inetAddrID & addr ) epicsThrows (()) :
inetAddrID ( addr ), timeStamp ( initialTimeStamp ), averagePeriod ( - DBL_MAX ),
lastBeaconNumber ( UINT_MAX )
lastBeaconNumber ( initialBeaconNumber )
{
# ifdef DEBUG
{
@@ -88,11 +77,15 @@ void bhe::beaconAnomalyNotify ()
* updates beacon period, and looks for beacon anomalies
*/
bool bhe::updatePeriod ( const epicsTime & programBeginTime,
const epicsTime & currentTime, unsigned beaconNumber,
const epicsTime & currentTime, ca_uint32_t beaconNumber,
unsigned protocolRevision )
{
//
// this block is enetered if the beacon was created as a side effect of
// creating a connection and so we dont yet know the first beacon time
// and sequence number
//
if ( this->timeStamp == epicsTime () ) {
if ( CA_V410 ( protocolRevision ) ) {
this->lastBeaconNumber = beaconNumber;
}
@@ -110,18 +103,33 @@ bool bhe::updatePeriod ( const epicsTime & programBeginTime,
return false;
}
// detect beacon duplications due to IP redundant packet routes
// 1) detect beacon duplications due to redundant routes
// 2) detect lost beacons due to input queue overrun or damage
if ( CA_V410 ( protocolRevision ) ) {
unsigned lastBeaconNumberSave = this->lastBeaconNumber;
unsigned beaconSeqAdvance;
if ( beaconNumber > this->lastBeaconNumber ) {
beaconSeqAdvance = beaconNumber - this->lastBeaconNumber;
}
else {
beaconSeqAdvance = ( ca_uint32_max - this->lastBeaconNumber ) + beaconNumber;
}
this->lastBeaconNumber = beaconNumber;
if ( beaconNumber != lastBeaconNumberSave + 1 ) {
// throw out sequence numbers just prior to, or the same as, the last one received
// (this situation is probably caused by a temporary duplicate route )
if ( beaconSeqAdvance == 0 || beaconSeqAdvance > ca_uint32_max - 256 ) {
return false;
}
// throw out sequence numbers that jump forward by only a few numbers
// (this situation is probably caused by a duplicate route
// or a beacon due to input queue overun)
if ( beaconSeqAdvance > 1 && beaconSeqAdvance < 4 ) {
return false;
}
}
/*
* compute the beacon period (if we have seen at least two beacons)
*/
// compute the beacon period (if we have seen at least two beacons)
bool netChange = false;
double currentPeriod = currentTime - this->timeStamp;
if ( this->averagePeriod < 0.0 ) {
@@ -191,10 +199,8 @@ bool bhe::updatePeriod ( const epicsTime & programBeginTime,
netChange = true;
}
else {
/*
* update state of health for active virtual circuits
* if the beacon looks ok
*/
// update state of health for active virtual circuits
// if the beacon looks ok
tsDLIter < tcpiiu > iter = this->iiuList.firstIter ();
while ( iter.valid() ) {
iter->beaconArrivalNotify ();
@@ -202,20 +208,11 @@ bool bhe::updatePeriod ( const epicsTime & programBeginTime,
}
}
/*
* update a running average period
*/
this->averagePeriod = currentPeriod * 0.125 + this->averagePeriod * 0.875;
// update a running average period
this->averagePeriod = currentPeriod * 0.125 +
this->averagePeriod * 0.875;
}
//{
// char name[64];
// this->name ( name, sizeof ( name ) );
//
// printf ( "new beacon period %f for %s\n",
// this->averagePeriod, name );
//}
this->timeStamp = currentTime;
return netChange;
@@ -227,16 +224,16 @@ void bhe::show ( unsigned /* level */ ) const
static_cast <const void *> ( this ), this->averagePeriod );
}
void bhe::destroy ()
{
delete this;
}
double bhe::period () const
double bhe::period () const epicsThrows (())
{
return this->averagePeriod;
}
epicsTime bhe::updateTime () const
{
return this->timeStamp;
}
void bhe::registerIIU ( tcpiiu & iiu )
{
this->iiuList.add ( iiu );
@@ -249,3 +246,34 @@ void bhe::unregisterIIU ( tcpiiu & iiu )
this->averagePeriod = - DBL_MAX;
}
void * bhe::operator new ( size_t ) // X aCC 361
{
// The HPUX compiler seems to require this even though no code
// calls it directly
throw std::logic_error ( "why is the compiler calling private operator new" );
}
void bhe::operator delete ( void * )
{
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void * bheFreeStore::allocate ( size_t size )
{
return freeList.allocate ( size );
}
void bheFreeStore::release ( void * pCadaver )
{
freeList.release ( pCadaver );
}
epicsShareFunc bheMemoryManager::~bheMemoryManager () {}

View File

@@ -28,48 +28,85 @@
# undef epicsExportSharedSymbols
#endif
#include "shareLib.h"
#include "tsDLList.h"
#include "tsFreeList.h"
#include "epicsSingleton.h"
#include "epicsTime.h"
#include "cxxCompilerDependencies.h"
#ifdef bhehEpicsExportSharedSymbols
# define epicsExportSharedSymbols
# include "shareLib.h"
#endif
#include "inetAddrID.h"
#include "shareLib.h"
#include "caProto.h"
class tcpiiu;
class bheMemoryManager;
// using a pure abstract wrapper class around the free list avoids
// Tornado 2.0.1 GNU compiler bugs
class bheMemoryManager {
public:
epicsShareFunc virtual ~bheMemoryManager ();
virtual void * allocate ( size_t ) = 0;
virtual void release ( void * ) = 0;
};
class bhe : public tsSLNode < bhe >, public inetAddrID {
public:
epicsShareFunc bhe ( const epicsTime &initialTimeStamp, const inetAddrID &addr );
epicsShareFunc bhe ( const epicsTime & initialTimeStamp,
unsigned initialBeaconNumber, const inetAddrID & addr ) epicsThrows (());
epicsShareFunc ~bhe ();
epicsShareFunc void destroy ();
epicsShareFunc bool updatePeriod ( const epicsTime & programBeginTime,
const epicsTime & currentTime, unsigned beaconNumber,
unsigned protocolRevision );
epicsShareFunc double period () const;
epicsShareFunc bool updatePeriod (
const epicsTime & programBeginTime,
const epicsTime & currentTime, ca_uint32_t beaconNumber,
unsigned protocolRevision );
epicsShareFunc double period () const epicsThrows (());
epicsShareFunc epicsTime updateTime () const;
epicsShareFunc void show ( unsigned level) const;
epicsShareFunc void registerIIU ( tcpiiu & );
epicsShareFunc void unregisterIIU ( tcpiiu & );
epicsShareFunc void * operator new ( size_t size );
epicsShareFunc void operator delete ( void *pCadaver, size_t size );
epicsShareFunc void * operator new ( size_t size, bheMemoryManager & );
#ifdef CXX_PLACEMENT_DELETE
epicsShareFunc void operator delete ( void *, bheMemoryManager & ) epicsThrows (());
#endif
private:
tsDLList < tcpiiu > iiuList;
epicsTime timeStamp;
double averagePeriod;
unsigned lastBeaconNumber;
ca_uint32_t lastBeaconNumber;
void beaconAnomalyNotify ();
static epicsSingleton < tsFreeList < class bhe, 1024 > > pFreeList;
bhe ( const bhe & );
bhe & operator = ( const bhe & );
void * operator new ( size_t size );
epicsShareFunc void operator delete ( void * );
};
// using a wrapper class around the free list avoids
// Tornado 2.0.1 GNU compiler bugs
class bheFreeStore : public bheMemoryManager {
public:
void * allocate ( size_t );
void release ( void * );
private:
tsFreeList < bhe, 0x100 > freeList;
};
inline void * bhe::operator new ( size_t size,
bheMemoryManager & mgr )
{
return mgr.allocate ( size );
}
#ifdef CXX_PLACEMENT_DELETE
inline void bhe::operator delete ( void * pCadaver,
bheMemoryManager & mgr ) epicsThrows(())
{
mgr.release ( pCadaver );
}
#endif
#endif // ifdef bheh

View File

@@ -20,8 +20,9 @@ extern "C" {
enum appendNumberFlag {appendNumber, dontAppendNumber};
int catime ( char *channelName, unsigned channelCount, enum appendNumberFlag appNF );
int acctst ( char *pname, unsigned logggingInterestLevel, unsigned channelCount,
unsigned repititionCount, enum ca_preemptive_callback_select select );
int acctst ( char *pname, unsigned logggingInterestLevel,
unsigned channelCount, unsigned repititionCount,
enum ca_preemptive_callback_select select );
#define CATIME_OK 0
#define CATIME_ERROR -1

View File

@@ -10,6 +10,7 @@
#include <stdio.h>
#include <limits.h>
#include <math.h>
#include "cadef.h"
#include "dbDefs.h"
@@ -25,44 +26,68 @@ extern "C" void eventCallBack ( struct event_handler_args args )
(*pCount)++;
}
/*
* caEventRate ()
*/
void caEventRate ( const char *pName )
void caEventRate ( const char *pName, unsigned count )
{
static const double initialSamplePeriod = 1.0;
static const double maxSamplePeriod = 60.0 * 60.0;
printf ( "Connecting to CA Channel \"%s\".", pName );
fflush ( stdout );
chid chan;
int status = ca_search ( pName, &chan );
SEVCHK(status, NULL);
unsigned eventCount = 0u;
status = ca_add_event ( DBR_FLOAT, chan, eventCallBack, &eventCount, NULL);
SEVCHK ( status, __FILE__ );
status = ca_pend_io ( 10.0 );
if ( status != ECA_NORMAL ) {
errlogPrintf ( "caEventRate: %s not found\n", pName );
fprintf ( stderr, " not found.\n" );
return;
}
printf ( " done.\n" );
printf ( "Subscribing %u times.", count );
fflush ( stdout );
unsigned eventCount = 0u;
for ( unsigned i = 0u; i < count; i++ ) {
status = ca_add_event ( DBR_FLOAT, chan, eventCallBack, &eventCount, NULL);
SEVCHK ( status, __FILE__ );
}
status = ca_flush_io ();
SEVCHK ( status, __FILE__ );
printf ( " done.\n" );
printf ( "Waiting for initial value events." );
fflush ( stdout );
// let the first one go by
while ( eventCount < 1u ) {
while ( eventCount < count ) {
status = ca_pend_event ( 0.01 );
if ( status != ECA_TIMEOUT ) {
SEVCHK ( status, NULL );
}
}
printf ( " done.\n" );
double samplePeriod = initialSamplePeriod;
double X = 0.0;
double XX = 0.0;
unsigned N = 0u;
while ( true ) {
unsigned nEvents, lastEventCount, curEventCount;
epicsTime begin = epicsTime::getCurrent ();
lastEventCount = eventCount;
status = ca_pend_event ( samplePeriod );
curEventCount = eventCount;
epicsTime end = epicsTime::getCurrent ();
if ( status != ECA_TIMEOUT ) {
SEVCHK ( status, NULL );
}
@@ -71,11 +96,22 @@ void caEventRate ( const char *pName )
nEvents = curEventCount - lastEventCount;
}
else {
nEvents = ( UINT_MAX - lastEventCount ) + curEventCount +1u;
nEvents = ( UINT_MAX - lastEventCount ) + curEventCount + 1u;
}
errlogPrintf ( "CA Channel \"%s\" is producing %g subscription update events per second.\n",
pName, nEvents / samplePeriod );
N++;
double period = end - begin;
double Hz = nEvents / period;
X += Hz;
XX += Hz * Hz;
double mean = X / N;
double stdDev = sqrt ( XX / N - mean * mean );
printf ( "CA Event Rate (Hz): current %g mean %g std dev %g\n",
Hz, mean, stdDev );
if ( samplePeriod < maxSamplePeriod ) {
samplePeriod += samplePeriod;

Some files were not shown because too many files have changed in this diff Show More