Compare commits

...

417 Commits

Author SHA1 Message Date
Janet B. Anderson
1f39f39d79 R3.13.0.beta1 1996-08-15 14:50:15 +00:00
Marty Kraimer
d807b2ace5 More changes for handling forms 1996-08-14 20:59:07 +00:00
Janet B. Anderson
18c52e5839 CVS:Now allows archname in targets.
--------------------i--------------------------------------------------
1996-08-14 20:47:46 +00:00
Janet B. Anderson
81cd82fcca SPECIAL_LANG not needed any more. 1996-08-14 20:46:24 +00:00
Janet B. Anderson
f1d714a57e Added PHONEY stmnts. 1996-08-14 20:42:46 +00:00
Janet B. Anderson
7ce03e13e8 Removed reference to SPECIAL_LANG 1996-08-14 20:41:17 +00:00
Marty Kraimer
3ca0a1f556 More changes for code that handles forms 1996-08-14 18:50:13 +00:00
Jim Kowalkowski
b8a0083745 fixed a put() function that did not return anything 1996-08-14 16:29:38 +00:00
Janet B. Anderson
11925a7168 Added sch2edif and e2db and flags. 1996-08-14 14:33:48 +00:00
Jim Kowalkowski
e81b990a31 added first() to list class, added first()/last() to iterator. 1996-08-14 12:32:09 +00:00
Jim Kowalkowski
edff93791b fixes for converting aitString to aitInt8* and back
fixes for managing the units field for the dbr types
1996-08-14 12:30:15 +00:00
Jeff Hill
5ca9baaede removed os specific code 1996-08-13 23:16:23 +00:00
Jeff Hill
ea0ff36f65 fixed warning 1996-08-13 23:15:36 +00:00
Jeff Hill
a2b8735fe5 check status in call back 1996-08-13 23:14:59 +00:00
Jeff Hill
cb9583a21a win NT changes 1996-08-13 23:13:35 +00:00
Jeff Hill
3d1180b17f C++ support 1996-08-13 23:07:40 +00:00
Jeff Hill
507a125c2c removed include of netdb.h 1996-08-13 23:00:29 +00:00
Jeff Hill
c5bfbfccc0 added init to mutex class 1996-08-13 22:58:38 +00:00
Jeff Hill
d3e21e87b2 fdMgr.h => fdmanager.h 1996-08-13 22:58:15 +00:00
Jeff Hill
9c05191e9e added init for mutex class 1996-08-13 22:56:14 +00:00
Jeff Hill
9c2248a5c6 doc 1996-08-13 22:54:42 +00:00
Jeff Hill
546bb97e92 fixed little endian problem 1996-08-13 22:54:20 +00:00
Jeff Hill
c556f69387 changes for MVC++ 1996-08-13 22:53:14 +00:00
Jeff Hill
2ec12266ad dfMgr =>fdManager 1996-08-13 22:48:25 +00:00
Jeff Hill
13c03c4cde fixed tabs 1996-08-13 22:45:21 +00:00
Jeff Hill
99deec1134 fdMgr.h => fdManager.h 1996-08-13 22:44:24 +00:00
Jeff Hill
1938a00761 use put convert 1996-08-13 22:43:50 +00:00
Janet B. Anderson
e50d5375f8 Added mangen and capfast rules. 1996-08-13 21:48:00 +00:00
Jeff Hill
30e64505e3 added C++ support 1996-08-13 21:42:57 +00:00
Jeff Hill
0b3df30c4f many sequnecer changes from Andy Kozubal 1996-08-13 15:39:22 +00:00
Jim Kowalkowski
070673fa89 changes for better string manipulation and fixes for the units field 1996-08-13 15:07:48 +00:00
Jeff Hill
bfb6dcc118 fixed problem in ca_import_cancel() 1996-08-12 21:50:41 +00:00
Marty Kraimer
46c39c3253 Fixed various bugs related to forms 1996-08-12 20:17:49 +00:00
Jim Kowalkowski
ad232dd2d9 Re-added the installString() function I took out. 1996-08-12 15:37:46 +00:00
Janet B. Anderson
c40ff7da52 Removed .cvsignore file. 1996-08-12 15:14:01 +00:00
Janet B. Anderson
2af23a4893 SPECIAL_LANG changed for new compilers. 1996-08-09 14:01:27 +00:00
Marty Kraimer
7260cf15fb removed .cvsignore; added comment about cd path to startup file 1996-08-09 13:23:17 +00:00
Jim Kowalkowski
ee2cf25c35 fix getRef(aitString*&) to return the correct value if gdd is scalar 1996-08-09 02:29:16 +00:00
Jim Kowalkowski
08ec0e69d8 rewrite of aitString class - more intuitive now, I think 1996-08-09 02:28:09 +00:00
Marty Kraimer
e906138c55 Mods for handling forms 1996-08-08 19:05:34 +00:00
Marty Kraimer
0e6b238881 Changes for new config rules 1996-08-08 19:04:30 +00:00
Marty Kraimer
82e39acd3a Changed rule for dbExpand 1996-08-08 19:03:55 +00:00
Janet B. Anderson
85ef2f5a10 Added prod rule. 1996-08-07 22:38:13 +00:00
Janet B. Anderson
733ed90bd7 Uninstall rule changes. 1996-08-07 21:00:46 +00:00
Janet B. Anderson
4c8c63c9e1 DIRS now used by src/Makefile 1996-08-07 20:50:35 +00:00
Janet B. Anderson
aeaad63186 Now includes RULES_TOP, changed DIRS def. 1996-08-07 20:49:37 +00:00
Janet B. Anderson
70a87d2c95 Now includes RULES_DIRS, added rules for applications 1996-08-07 20:46:45 +00:00
Janet B. Anderson
41b53c1a67 Simplified syntax 1996-08-07 20:40:25 +00:00
Janet B. Anderson
a4ac96afdc Added VPATH, PHONEY, mangen rule, double colon rules. 1996-08-07 20:37:29 +00:00
Janet B. Anderson
a5d46a7a07 Added VPATH, PHONEY, mangen rule and changed rules to double colen rules 1996-08-07 20:23:31 +00:00
Janet B. Anderson
e37d227975 Now installs only build specific config files. 1996-08-07 20:14:26 +00:00
Janet B. Anderson
adab5e6a1a Make some includes optional 1996-08-07 20:12:37 +00:00
Janet B. Anderson
56a11aa90c New Makefile added. 1996-08-07 20:11:03 +00:00
Janet B. Anderson
969152088f Removed reference to EPICS_BASE 1996-08-07 20:10:00 +00:00
Janet B. Anderson
2a5871e303 Bug fix for SRCS.c 1996-08-07 20:09:03 +00:00
Janet B. Anderson
b5c459b036 Added option for creation of missing parent dirs 1996-08-07 20:08:00 +00:00
Janet B. Anderson
cffd160cf0 installEpics must be installed first. 1996-08-07 20:06:22 +00:00
Jim Kowalkowski
c4aa64946f Fixes to the string class.
Changes units field to a aitString instead of aitInt8.
1996-08-06 19:14:13 +00:00
Jeff Hill
069c404d64 use ca_import_cancel() 1996-08-05 23:50:59 +00:00
Jeff Hill
998e413bed gddScaler => gddScalar 1996-08-05 23:22:58 +00:00
Jeff Hill
8fd7fff71c use ca_import_cancel() 1996-08-05 22:41:08 +00:00
Jeff Hill
d799330ec0 removed READONLY which disagrees with VAX compiler 1996-08-05 21:58:57 +00:00
Jeff Hill
631de381fd fixed delete this confusion 1996-08-05 21:53:43 +00:00
Jeff Hill
f15f4ad524 added -include of HOME/.EPICS_CONFIG 1996-08-05 21:46:57 +00:00
Jeff Hill
13156bee16 removed ; from if 1996-08-05 19:33:40 +00:00
Jeff Hill
090e6ce3d3 fixed removes use of iter.cur() 1996-08-05 19:31:59 +00:00
Jeff Hill
fd2a536131 no change 1996-08-05 19:30:49 +00:00
Jeff Hill
6b6c9ce6a1 os depen code now smaller 1996-08-05 19:29:25 +00:00
Jeff Hill
95f4990b98 space became tab 1996-08-05 19:28:49 +00:00
Jeff Hill
ad2a272e90 added process() 1996-08-05 19:27:28 +00:00
Jeff Hill
7438234eb5 doc 1996-08-05 19:26:51 +00:00
Jeff Hill
67eb929b63 made os specific code smaller 1996-08-05 19:26:15 +00:00
Jeff Hill
5d73bdffb2 removed unused code 1996-08-05 19:25:17 +00:00
Jeff Hill
3c603a7e3f removed ERROR and OK 1996-08-05 19:24:23 +00:00
Jeff Hill
ec34df23fc removed unused proto 1996-08-05 19:21:26 +00:00
Jeff Hill
67dce79b62 removed incorrect ver number 1996-08-05 19:20:29 +00:00
Jeff Hill
70c885000e better msg for lack of fp 1996-08-05 19:18:56 +00:00
Jeff Hill
f2cd63c68f info level => warning several codes 1996-08-05 19:17:47 +00:00
Jeff Hill
7d342b5276 WIN sock specific fd range check 1996-08-05 19:16:27 +00:00
Jeff Hill
20880b3950 fixed O.xxx/Makefile 1996-07-30 21:27:39 +00:00
Marty Kraimer
6bd6481cbd check that recGblInitConstantLink returned TRUE before setting udf FALSE
Add DBE_LOG on call to db_post_event when necessary
1996-07-29 20:40:13 +00:00
Marty Kraimer
2433b09c1c additional include install commands were added 1996-07-29 20:35:04 +00:00
Marty Kraimer
a057f79d75 various bugs fixed 1996-07-29 20:33:43 +00:00
Marty Kraimer
1947538968 These utilities core dumped if given no arguments. 1996-07-29 20:29:00 +00:00
Marty Kraimer
dc6972ba06 "Allen Bradley 1746-HTSP" changed to "AB-1746HSTP1"
VS: ----------------------------------------------------------------------
1996-07-29 20:26:19 +00:00
Marty Kraimer
c4171b7ec0 initial check that argc>=2 1996-07-26 19:26:43 +00:00
Jim Kowalkowski
7f08759c2a Corrected a spelling with from gdd associated with the word Scalar. 1996-07-26 02:30:07 +00:00
Jim Kowalkowski
43b11de6ad Corrected a spelling error associated with the word Scalar from gdd. 1996-07-26 02:29:32 +00:00
Jim Kowalkowski
66ee6135ba Corrected the spelling error from gdd associated with the word Scalar 1996-07-26 02:28:37 +00:00
Jim Kowalkowski
3c4ffb5cc4 Fixed the spelling error with Scalar. 1996-07-26 02:23:18 +00:00
Jeff Hill
72a8c35f55 use pattern rule 1996-07-25 23:50:15 +00:00
Jeff Hill
53f2acfaa1 use RULES_DIRS 1996-07-25 21:38:53 +00:00
Jeff Hill
fe4cfd8091 no longer in use 1996-07-25 21:37:54 +00:00
Jeff Hill
8c2cefc5a4 eliminated for loops and redun recursion 1996-07-25 21:09:43 +00:00
Jeff Hill
dbe9f90ac1 DIRS def before include of RULES_TOP 1996-07-25 21:07:39 +00:00
Jeff Hill
4b47e7a979 use pointer (not ref) for list in iter class 1996-07-25 18:01:42 +00:00
Jeff Hill
d12ce5f58a updated tests to current version 1996-07-25 18:00:21 +00:00
Jeff Hill
f1b751a3d3 fixed missing ref in list decl 1996-07-25 17:58:16 +00:00
Jeff Hill
c324b8f598 instlled 1996-07-24 23:03:16 +00:00
Jeff Hill
64e851e05c use iter.remove() 1996-07-24 23:01:53 +00:00
Jeff Hill
e3fb1f6c90 fixed gnu warning int=>size_t 1996-07-24 22:48:06 +00:00
Jeff Hill
0844d7132f removed OPTIM_YES=-g which caused link fail 1996-07-24 22:47:29 +00:00
Jeff Hill
dd8fa0e290 installed makefiles 1996-07-24 22:26:29 +00:00
Jeff Hill
276dd19293 removed gdd:: from func proto 1996-07-24 22:17:17 +00:00
Jeff Hill
a312de99b0 added remove() to iter class + made node's prev/next private 1996-07-24 22:12:09 +00:00
Jeff Hill
ccfcd95561 removed casSpecificOS.h 1996-07-24 22:05:18 +00:00
Jeff Hill
2e42535459 fixed net proto for gnu compiler 1996-07-24 22:03:36 +00:00
Jeff Hill
d3432d487a added pushOnToEventQueue() 1996-07-24 22:00:50 +00:00
Jeff Hill
c6701f8475 CXXCMPLR = STRICT 1996-07-24 21:57:17 +00:00
Jeff Hill
dba800ebb7 fixed gnu warnings 1996-07-24 21:55:33 +00:00
Jeff Hill
cda87cbf31 made acctst catime into targets 1996-07-24 21:52:36 +00:00
Jim Kowalkowski
376f37eb1e various fixes - dbmapper incorrectly worked with enum types 1996-07-23 17:13:34 +00:00
Janet B. Anderson
2f2f378238 Updated to reflect config dir changes. 1996-07-16 14:18:48 +00:00
Janet B. Anderson
4e1d778fc8 Reflects config dir modifications 1996-07-12 19:09:22 +00:00
Janet B. Anderson
9c1d4be29d Added tar rule 1996-07-12 16:12:02 +00:00
Janet B. Anderson
291b22271f Added target specific flags for cpp and snc 1996-07-12 15:58:14 +00:00
Jeff Hill
a8db0e5d73 fixed client disconnect problem under solaris 1996-07-12 00:40:48 +00:00
Janet B. Anderson
4ba33b8259 Major revision of config directory again. 1996-07-11 19:16:59 +00:00
Jeff Hill
4b7dd0f8b1 installed 1996-07-11 00:05:57 +00:00
Jeff Hill
0c831f7e5a fixed comment 1996-07-10 23:59:34 +00:00
Jeff Hill
4b655c1632 moved gddAppFuncTbl.h 1996-07-10 23:57:07 +00:00
Jeff Hill
01462e1c7c added install for gddAppFuncTable.h 1996-07-10 23:48:03 +00:00
Jeff Hill
5832c6fa25 moved to src/gdd 1996-07-10 23:44:42 +00:00
Jeff Hill
9eab30d3fc moved here from src/cas/generic 1996-07-10 23:44:12 +00:00
Jeff Hill
46beb63264 fixed GNU warnings 1996-07-10 23:36:10 +00:00
Jeff Hill
ab9a1d4022 fixed comment 1996-07-10 23:32:51 +00:00
Jeff Hill
0ab1978030 fixed GNU warnings 1996-07-10 23:30:12 +00:00
Jeff Hill
845a45d20e installed 1996-07-10 23:23:52 +00:00
Janet B. Anderson
2486f6b20f Initial version. 1996-07-10 20:58:06 +00:00
Jeff Hill
49e7beed3b fixed bug where slot is wrong when EPICS_VXI_LA_BASE isnt 0 1996-07-10 17:49:10 +00:00
Janet B. Anderson
d175ff7449 Remove old EPICS_BASE file. 1996-07-10 16:46:39 +00:00
Marty Kraimer
14a2f1866d added makeBaseApp 1996-07-10 14:50:42 +00:00
Marty Kraimer
236cf1ddf8 added macLib 1996-07-10 14:49:55 +00:00
Marty Kraimer
01402c6bbd added support for macro substitution 1996-07-10 14:46:49 +00:00
Marty Kraimer
b1450980b5 Changed dbExpandInclude to dbExpand 1996-07-10 14:46:01 +00:00
Marty Kraimer
b40676fe20 changed dbExpandInclude to dbExpand 1996-07-10 14:43:12 +00:00
Jeff Hill
dea19e8846 use strict ANSI compiler 1996-07-09 23:05:26 +00:00
Jeff Hill
d08070f69b silenced gcc warnings 1996-07-09 23:03:02 +00:00
Jeff Hill
3eeee76e99 mark fd entry in limbo during delete 1996-07-09 23:02:05 +00:00
Jeff Hill
2bcf574f79 nill 2nd arg to gettimeofday() 1996-07-09 23:01:31 +00:00
Jeff Hill
d4f77948a0 added new operators 1996-07-09 23:01:04 +00:00
Jeff Hill
1df41d2964 force timer into limbo state during delete 1996-07-09 23:00:06 +00:00
Jeff Hill
9b5fa04dae added installation of the include files 1996-07-09 22:58:55 +00:00
Jeff Hill
d1c337f7a3 added include of stddef.h for gcc compilation 1996-07-09 22:56:17 +00:00
Jeff Hill
543a610bb4 added cast 1996-07-09 22:55:22 +00:00
Jeff Hill
eed3471e15 store msg copy in the ctx 1996-07-09 22:54:31 +00:00
Jeff Hill
b0e533dd75 init stat and sev in gdd 1996-07-09 22:53:33 +00:00
Jeff Hill
04b02a71a5 store copy of msg in ctx 1996-07-09 22:51:14 +00:00
Jeff Hill
7a18c98df3 removed redundant stuff 1996-07-09 22:49:33 +00:00
Jeff Hill
a4b092c966 fast time fetch 1996-07-09 22:48:29 +00:00
Jeff Hill
9e62be865b fast time and limited execution time 1996-07-09 22:47:33 +00:00
Jeff Hill
1969cbb2af cleaned out redundant -I 1996-07-09 22:45:09 +00:00
Jeff Hill
495d94ee15 silence gcc warnings and default CLOCKS_PER_SEC if it isnt defined (for sunos4 and gcc) 1996-07-09 22:43:29 +00:00
Jeff Hill
4ca3bf9217 use strict ansi compiler 1996-07-09 22:42:02 +00:00
Jeff Hill
d7f522577f silence gcc warning 1996-07-09 22:41:28 +00:00
Jeff Hill
cdb0a5719b pass nill 2nd arg to gettimeofday() 1996-07-09 22:41:02 +00:00
Jeff Hill
a8bf57750d now supports build with gnu compilers 1996-07-09 22:39:40 +00:00
Janet B. Anderson
c0bb0d68af Changed location of iocCore files. 1996-07-09 20:42:14 +00:00
Janet B. Anderson
c2ebb2d91b Initial version 1996-07-09 20:04:58 +00:00
Janet B. Anderson
5d0347c8ef Added TARGET_CPPFLAGS 1996-07-09 14:33:14 +00:00
Janet B. Anderson
d9aeca1b19 Removed all references to OLDINSTALL 1996-07-08 17:42:26 +00:00
Janet B. Anderson
fb3ada00dd Updates for new directory structure. 1996-07-08 15:27:38 +00:00
Janet B. Anderson
67e383af94 Moved include RULES.Unix 1996-07-08 15:20:02 +00:00
Janet B. Anderson
5791d6b61c Directory drv/combine no longer exists. 1996-07-08 15:09:25 +00:00
Janet B. Anderson
637a046890 devSup no longer built. Individual *.o files installed. 1996-07-08 15:08:13 +00:00
Janet B. Anderson
e61dce7a96 drvSup no longer built. Individual *.o files installed. 1996-07-08 15:05:50 +00:00
Janet B. Anderson
a7bf1d42e6 Remove build of recSup. 1996-07-08 15:02:32 +00:00
Janet B. Anderson
a229aaa159 Added ERR_S_FILES to Makefile.* files and removed blderrSymTbl and errInc.* 1996-07-08 14:57:49 +00:00
Janet B. Anderson
c82788102c Moved InstallVersion to extensions 1996-07-06 20:24:21 +00:00
Janet B. Anderson
622ad2926d Moved InstallVersion to extensions. 1996-07-06 19:52:37 +00:00
Janet B. Anderson
4299e39bce Added INSTALLS 1996-07-06 18:56:51 +00:00
Jeff Hill
c3d2e1a46a use ./aitGen and ./genApps per Janet's request 1996-07-03 00:02:56 +00:00
Jeff Hill
39fdd3f785 added missing #define for traditional C 1996-07-02 23:12:01 +00:00
Jeff Hill
0f28113959 added func proto 1996-07-02 23:11:20 +00:00
Jeff Hill
433e81791b vms changes 1996-07-02 23:09:42 +00:00
Jeff Hill
5e2aea4dab took &tz out of gettimeofday() 1996-07-02 23:04:07 +00:00
Jeff Hill
0074252862 VMS changes and traditional C changes 1996-07-02 23:03:12 +00:00
Janet B. Anderson
125282e839 epics_R3_13_0_alpha5 1996-07-02 13:47:03 +00:00
Janet B. Anderson
ea7f95fe17 Added dbd and base/config dirs. Removed epics/config and base/rec. 1996-07-02 13:45:09 +00:00
Janet B. Anderson
9574829a43 Added uninstall of config dir. 1996-07-01 20:14:55 +00:00
Janet B. Anderson
9f6c8d2cb4 Removed extra print line. 1996-07-01 20:07:01 +00:00
Jeff Hill
d2adaabbfe fixed case where gdd was mapped to a string without cvrt 1996-07-01 19:59:12 +00:00
Jeff Hill
e32066749b one last update prior to first release 1996-07-01 19:56:15 +00:00
Jeff Hill
f93fa732ac moved exist test expire to exServer.cc 1996-07-01 19:53:47 +00:00
Jeff Hill
2fc14dc03b removed extra obj from fast build 1996-07-01 19:52:17 +00:00
Jeff Hill
8e8ff2a2f6 removed junk 1996-07-01 19:50:09 +00:00
Jeff Hill
969479e04f turned on analog value wrap-around test 1996-07-01 19:49:15 +00:00
Jeff Hill
9dddad37ca took out purify etc - also include dbMapper 1996-06-28 19:17:31 +00:00
Marty Kraimer
741d784ad3 don't create soft link for base 1996-06-28 18:46:25 +00:00
Jeff Hill
97b4200806 fixed sun4 problems 1996-06-28 18:24:46 +00:00
Janet B. Anderson
2727281cb4 Chnges for move of config directory. 1996-06-28 15:33:55 +00:00
Janet B. Anderson
e1ecb4f2e0 Moved config dir to base/config. 1996-06-28 15:20:11 +00:00
Janet B. Anderson
22ae937b08 Initial version after move of config directory. 1996-06-28 15:12:57 +00:00
Marty Kraimer
1e52376f87 added seq 1996-06-28 14:12:03 +00:00
Jim Kowalkowski
17333e4278 changes data type to string conversions to use installString(), not copy() 1996-06-27 14:33:13 +00:00
Marty Kraimer
6467c0a777 fixed rule for making dbCommon.h 1996-06-27 12:58:06 +00:00
Jeff Hill
e6768e0c94 added C++ support 1996-06-27 01:58:27 +00:00
Jeff Hill
a10641575b added caProto.h to INC 1996-06-26 23:33:34 +00:00
Jeff Hill
b06c40e470 changed where caProto.h comes from (again) 1996-06-26 23:32:17 +00:00
Jeff Hill
61c525792e added additional include paths 1996-06-26 23:10:16 +00:00
Jeff Hill
a7375e363b took path out of casInternal.h include 1996-06-26 23:08:55 +00:00
Jeff Hill
99b8d0d0fd added casInternal.h to INC 1996-06-26 23:08:25 +00:00
Jeff Hill
a76a338e8e added new src files 1996-06-26 22:14:15 +00:00
Jeff Hill
f1cd963176 added cas/generic 1996-06-26 22:13:46 +00:00
Jeff Hill
d89a50416c added casdef.h and gdd app jump table 1996-06-26 22:12:49 +00:00
Jeff Hill
2d55dafacc commented out drvCaenV265.c 1996-06-26 22:09:13 +00:00
Jeff Hill
418fa60dbd removed osi headers 1996-06-26 21:53:29 +00:00
Jeff Hill
a75f083371 removed extra files from INC 1996-06-26 21:52:31 +00:00
Jeff Hill
5a8bb49c77 fixed acctst catime targets for solaris 1996-06-26 21:48:51 +00:00
Jeff Hill
5f1ec28daf fixed build 1996-06-26 21:35:40 +00:00
Jeff Hill
31fd02f8e9 deleted 1996-06-26 21:33:58 +00:00
Jeff Hill
ebc6972f74 updated to match new gdd API 1996-06-26 21:27:27 +00:00
Jeff Hill
eb437e162f install header files 1996-06-26 21:20:22 +00:00
Jeff Hill
7121929f1e now matches gdd api revisions 1996-06-26 21:19:04 +00:00
Jeff Hill
7942f42242 fixed to match config in src 1996-06-26 21:17:10 +00:00
Jim Kowalkowski
91347ff65f Fixed up code in aitHelpers, removed unused variables in others
Fixed potential problem in gddAppTable.cc with the map functions
1996-06-26 21:00:08 +00:00
Marty Kraimer
aa8cceb119 changed epics.dbd to base.dbd and epicsLIBOBJS to baseLIBOBJS 1996-06-26 20:12:42 +00:00
Marty Kraimer
ee0faa077f added config 1996-06-26 20:09:07 +00:00
Jim Kowalkowski
78c7233d0e more correction to the aitString processing - testing menus 1996-06-26 02:42:06 +00:00
Jeff Hill
87b2b3b1e6 added CHAR_BIT to max bound calc for the "ref_cnt" member of class gdd 1996-06-26 00:19:40 +00:00
Janet B. Anderson
701d2ee9cb Top dir now base not epics. config dir moved to base/src/config 1996-06-25 21:57:43 +00:00
Janet B. Anderson
2b293e286a Top dir now base not epics 1996-06-25 21:55:26 +00:00
Janet B. Anderson
0a824f8b40 Command line parm now base dir 1996-06-25 21:54:42 +00:00
Janet B. Anderson
28c4ce844d Makefile includes now from base/src/config, removed all soft links 1996-06-25 21:48:55 +00:00
Jim Kowalkowski
e9a86c7e26 moved from extensions to base - fixed trouble in dbMapper.cc 1996-06-25 19:18:12 +00:00
Jim Kowalkowski
54d746e3f3 new in EPICS base 1996-06-25 19:11:52 +00:00
Marty Kraimer
6a116affea removed M_dbCa 1996-06-24 13:37:31 +00:00
Marty Kraimer
e73ba4b3c3 removed calinh.h . #if 0 for "casdef.h". 1996-06-24 13:36:59 +00:00
Marty Kraimer
4a5a2f463b commented out fdMgr.cc 1996-06-24 13:34:40 +00:00
Marty Kraimer
055b8a7149 added task_params.h 1996-06-24 13:32:35 +00:00
Marty Kraimer
00ca9457c4 Changed dbFindRecdes to dbFindRecordType 1996-06-24 13:31:01 +00:00
Marty Kraimer
0238591d9a removed calink.h obsolete 1996-06-24 13:28:50 +00:00
Marty Kraimer
459571b648 extension .db changed to .dbd 1996-06-24 13:28:08 +00:00
Marty Kraimer
0646d6795f changed recdes to recordType 1996-06-24 13:27:00 +00:00
Marty Kraimer
a56d58cf95 removed calink 1996-06-24 13:26:33 +00:00
Marty Kraimer
47171dd159 added dbd 1996-06-24 13:25:36 +00:00
Marty Kraimer
47ad9222a2 extension .db goes to .dbd 1996-06-24 13:23:53 +00:00
Marty Kraimer
4376d7b186 main changes is recdes => recordType 1996-06-24 13:20:20 +00:00
Marty Kraimer
6f2acd5645 Changed extension .db to .dbd 1996-06-24 13:19:07 +00:00
Marty Kraimer
87307b87bf Changed extension db to dbd 1996-06-24 13:15:57 +00:00
Marty Kraimer
00d9239af7 changed .db to .dbd 1996-06-21 17:54:55 +00:00
Marty Kraimer
f119d0556f removed calink.h 1996-06-21 12:40:44 +00:00
Jeff Hill
c7667fded7 solaris port 1996-06-21 02:30:58 +00:00
Jeff Hill
b5bb5a0f46 added PROD excas 1996-06-21 02:29:49 +00:00
Jeff Hill
dda17e5eaf correct install 1996-06-21 02:28:47 +00:00
Jeff Hill
f67af0cd21 SOLARIS port 1996-06-21 02:18:11 +00:00
Jeff Hill
160aab02eb added fdMgr.cc 1996-06-21 02:08:36 +00:00
Jeff Hill
9a1e7a3034 added stdio.h include 1996-06-21 02:03:40 +00:00
Jeff Hill
d141e38a80 add fdMgr.h fdMgr.cc 1996-06-21 01:08:54 +00:00
Jeff Hill
25b5b8d5c2 use sigemptyset() and cc -Xc changes 1996-06-21 01:07:46 +00:00
Jeff Hill
ad26ee285f added INC += fdMgr.h 1996-06-21 01:06:20 +00:00
Jeff Hill
7f00b2034f removed include of calink.h 1996-06-21 00:57:05 +00:00
Jeff Hill
2f6e847cf6 added IOC_LOG_FILE_COMMAND 1996-06-21 00:22:23 +00:00
Jeff Hill
484427be12 eliminated include of calink.h 1996-06-20 23:21:37 +00:00
Jeff Hill
20d75f926c removed extra files 1996-06-20 22:37:15 +00:00
Jeff Hill
922206cbcc installed 1996-06-20 22:34:05 +00:00
Jeff Hill
9ab235fee7 installed test codes for the ca server templates 1996-06-20 22:26:40 +00:00
Jeff Hill
dda8b9c9f6 installed ca server templates 1996-06-20 22:15:56 +00:00
Jeff Hill
117b4c7a9f removed casdef.h 1996-06-20 21:47:58 +00:00
Jeff Hill
ce6fe283b8 moved to src/cas/generic 1996-06-20 21:47:19 +00:00
Jeff Hill
f904389afc restored io_done_sem (removed by cleanup) 1996-06-20 21:43:15 +00:00
Jeff Hill
de3bf16215 fixed posix signal problem with "cc -Xc" 1996-06-20 21:19:35 +00:00
Jeff Hill
ac20fb5a17 changed installed include files 1996-06-20 18:11:02 +00:00
Jeff Hill
88ef5bfc7c changed where casInternal comes from 1996-06-20 18:09:43 +00:00
Jeff Hill
04a8db049f changed where caProto.h comes from 1996-06-20 18:08:35 +00:00
Jeff Hill
a624ea2c0c moved to the ca directory 1996-06-20 18:06:56 +00:00
Jeff Hill
4609aa45d5 remove calink.h install 1996-06-20 18:06:05 +00:00
Jeff Hill
473f12132d installed into CVS 1996-06-20 18:02:22 +00:00
Jeff Hill
8d43b12d93 removed sbufLib 1996-06-20 17:43:55 +00:00
Jeff Hill
fcc810efba eliminated sbufs 1996-06-20 16:27:33 +00:00
Jeff Hill
4697f951b9 ca server installation 1996-06-20 00:28:19 +00:00
Jeff Hill
14f53d7844 header difference 1996-06-19 20:52:59 +00:00
Jeff Hill
9ea7fc6dd1 fixed resource managr bug occurring in mixed SC/DC systems 1996-06-19 20:52:04 +00:00
Jeff Hill
8f299a1d80 removed #if 0 1996-06-19 20:49:37 +00:00
Jeff Hill
7263c8a271 dounled ca stack for each ca cleint in the server 1996-06-19 20:48:44 +00:00
Jeff Hill
41557f3946 many r3.13 changes 1996-06-19 20:39:25 +00:00
Jeff Hill
7cf7fea999 add gddFfuncTable 1996-06-19 20:07:33 +00:00
Jeff Hill
391cbf40b6 added iocLogPrintf() 1996-06-19 20:06:17 +00:00
Jeff Hill
093a0533c4 added more prototypes for C++ 1996-06-19 20:04:39 +00:00
Jeff Hill
db44eedef4 added missing defines/enums, corrected defines 1996-06-19 19:59:31 +00:00
Jeff Hill
1a78dc9064 C++ support 1996-06-19 19:44:53 +00:00
Jeff Hill
ca6ed090ff made character string pointers be const 1996-06-19 19:29:14 +00:00
Jeff Hill
df34a2eabc added sync grp status and ca_poll() 1996-06-19 19:27:10 +00:00
Jeff Hill
ad033dd8c2 no longer needed 1996-06-19 19:19:28 +00:00
Jeff Hill
16e9dc781a SIGHUP changes added by KECK 1996-06-19 18:03:17 +00:00
Jeff Hill
6e229435d1 log entries in header were different 1996-06-19 18:01:09 +00:00
Jeff Hill
65c14ab802 many 3.13 beta changes 1996-06-19 17:59:31 +00:00
Jeff Hill
ef0402dcbd now compilable by C++ 1996-06-19 17:16:48 +00:00
Jeff Hill
506003f300 print out the EPICS release when there is an assert failure 1996-06-19 17:14:12 +00:00
Jeff Hill
a03cf9b56e check for fd>FD_SETSIZE and improved func proto 1996-06-19 17:12:40 +00:00
Janet B. Anderson
a8f0ec2338 FIxed strlen test. 1996-06-19 14:39:54 +00:00
Janet B. Anderson
d7f50f503e END_STACK definition changed to 127. 1996-06-19 14:39:17 +00:00
Janet B. Anderson
fb82d0de0a Removed unused END_ELEMENTS definition. 1996-06-19 14:38:38 +00:00
Janet B. Anderson
20eed1bd05 Fixed END_STACK definition and fixed printf stmnt. 1996-06-19 14:37:06 +00:00
Janet B. Anderson
4b248c8abe GetVar now a function in blderrSymTbl 1996-06-19 14:31:39 +00:00
Janet B. Anderson
bd1b6d4f50 GetVar now part of libCom/blderrSymTbl 1996-06-19 14:29:43 +00:00
Janet B. Anderson
62551322b2 Mods to make -Wall -pedantic not complain - rc 1996-06-18 16:03:14 +00:00
Janet B. Anderson
64809b2c52 Changed END_STACK to 0xff 1996-06-18 15:55:33 +00:00
Marty Kraimer
dbb1fc2aa0 fixed several problems that made free_gdct crash of DTYP for 1996-06-14 18:31:23 +00:00
Marty Kraimer
b5fc2cd1dd for menuform parm fields present leading @ 1996-06-13 20:41:54 +00:00
Marty Kraimer
755abbeaef put to hardware links had bug 1996-06-13 20:40:59 +00:00
Marty Kraimer
601cb19fa4 changed error message 1996-06-13 18:36:06 +00:00
Marty Kraimer
5fc13933a5 remove duplicate def for dbGetString 1996-06-13 18:26:12 +00:00
Marty Kraimer
755aebb11b if nelm is 1 make nord also 1 1996-06-13 18:22:27 +00:00
Marty Kraimer
29a8aab459 dbGetPrompt was accidently removed 1996-06-13 18:20:55 +00:00
Janet B. Anderson
f0e6c62973 epics_R3_13_0_alpha4 1996-06-12 20:19:57 +00:00
Marty Kraimer
a2939aa9c5 added dbGetDefault 1996-06-12 20:10:24 +00:00
John Winans
f2b70591eb Added better debugging code to the initXX logic. 1996-06-12 20:04:51 +00:00
Janet B. Anderson
7412b68956 HP_UX fix for sockio. 1996-06-11 20:39:52 +00:00
Marty Kraimer
49173bcb97 Prevent unilialized precision for cvtStringToDouble 1996-06-11 19:51:14 +00:00
Marty Kraimer
e52d0e0929 Fixed numerous bugs 1996-06-11 19:49:47 +00:00
Janet B. Anderson
470c461102 MakeRelease is now in release tar file. 1996-06-07 19:19:10 +00:00
Janet B. Anderson
70e01fcb18 linux fix for socketio include. 1996-06-07 19:02:50 +00:00
John Winans
8c55790b98 Changed 'send' command to 'DISP?' 1996-06-06 21:20:08 +00:00
John Winans
391565de5c Fixed external reference to GPIB driver's DRVET 1996-06-06 14:35:41 +00:00
Janet B. Anderson
b9395b020c Removed extra quote mark. 1996-06-04 14:51:42 +00:00
Jim Kowalkowski
4ccdf79d2f added support for user defined soft events 1996-05-31 12:23:20 +00:00
Marty Kraimer
97dc3b8899 initialized status 1996-05-10 17:38:19 +00:00
Marty Kraimer
13a5f820c6 removed seq_taskLib.h 1996-05-10 17:32:17 +00:00
Marty Kraimer
da20e059f7 remove hard path to base/include 1996-05-10 16:10:18 +00:00
Janet B. Anderson
2c5958f022 EPICS Version R3.13.0.alpha3 1996-05-10 14:51:49 +00:00
Marty Kraimer
a9cad7df54 emoved hard path to base/include 1996-05-10 14:46:41 +00:00
Marty Kraimer
42f6f3c9ce Obsolete 1996-05-09 19:39:01 +00:00
Marty Kraimer
87a9b22a15 I am committing changes made by LANL and LBL 1996-05-09 19:30:37 +00:00
Marty Kraimer
012180ab65 Still working on 3.13.0.alpha3 1996-05-09 14:51:09 +00:00
John Winans
ad2128b691 Created to ignore the O.* make-generated directories 1996-05-03 19:06:30 +00:00
John Winans
7e8bdc7e43 Added the EOS logic from Mark Rivers. (It is only supported for HiDEOS
GPIB interfaces.)
1996-05-03 19:05:37 +00:00
John Winans
e1042ca5ee Fixed a reversed set of parms to a semBCreate().
Changed the data type of a parameter to memory probe call.
1996-05-03 19:04:44 +00:00
Marty Kraimer
2390c0ace5 added client_stat_summary until Jeff can add functionality to client_stat 1996-05-03 14:20:14 +00:00
Marty Kraimer
17989d29fe added POSITIVE_HOME NEGATIVE_HOME. (Ric Claus SLAC) 1996-05-03 14:17:18 +00:00
Marty Kraimer
92b1b34e02 Mods contributed by Ric Claus (SLAC) 1996-05-03 14:14:22 +00:00
Marty Kraimer
427ea50c50 Added devSmAB1746HSTP1 (From Ric Claus at SLAC) 1996-05-03 14:13:37 +00:00
Marty Kraimer
cdd3e932fb added check for dbPutString to DBF_STRING if string size too long 1996-05-03 14:12:35 +00:00
Marty Kraimer
3e0445f2ad Fixed many bugs 1996-05-03 14:11:06 +00:00
Marty Kraimer
bbbc3b6329 added devSmAB1746Hstp1 1996-05-03 14:10:24 +00:00
Marty Kraimer
14d712b57c Added callbackSetQueueSize 1996-05-03 14:09:27 +00:00
Marty Kraimer
a6d0a677ee Modified astac to display record name 1996-05-03 14:07:52 +00:00
Marty Kraimer
b258b2fc14 periodicTask - start_time=tickGet 1996-04-22 15:46:44 +00:00
Marty Kraimer
535ef14cf8 Changes for dynamic link modification 1996-04-22 14:44:45 +00:00
Marty Kraimer
5a983c11cb Make sure link structure is allocated 1996-04-22 14:40:24 +00:00
Marty Kraimer
8bd797aa5b Changes for dynamic link modificartion 1996-04-22 14:37:42 +00:00
Marty Kraimer
28797e7a1a Changes for dynamic link modification 1996-04-22 14:33:50 +00:00
Jeff Hill
2a3fc15e9e fixed problem where epvxiWrite() was only able to xmit positive characters 1996-04-09 15:32:50 +00:00
Jeff Hill
9fae1fa33c dont allow init to be called more than once 1996-03-29 22:35:56 +00:00
Janet B. Anderson
13ff432956 Fixed location of sh. 1996-03-26 18:31:35 +00:00
Marty Kraimer
461584c4d1 Moved to central location 1996-03-26 17:06:50 +00:00
Marty Kraimer
59e1ef1d77 Created notice in one place 1996-03-26 17:03:43 +00:00
Janet B. Anderson
359225dd34 Fixed link and compile lines. 1996-03-22 17:49:20 +00:00
Marty Kraimer
6dceef4956 Added breakpoint tables 1996-03-12 18:58:08 +00:00
Marty Kraimer
81eac9ddec Breakpoint Tables were not working 1996-03-11 16:22:29 +00:00
Janet B. Anderson
3e1e1ae6aa Renamed EPICS version R3.12.2.2 to R3.13.0.alpha2 1996-03-07 19:25:58 +00:00
Marty Kraimer
3ed241a857 Made checkLink STATIC; Added STATIC to all internal forward references 1996-03-06 14:18:45 +00:00
Marty Kraimer
6e37e4a8b7 Made STATIC static 1996-03-06 14:17:34 +00:00
Marty Kraimer
45910c7eae Added module 1996-03-06 14:16:14 +00:00
Janet B. Anderson
ab72202752 epicsVersion.h now in src/include. 1996-03-04 21:03:48 +00:00
Janet B. Anderson
b728e45751 EPICS Version R3.12.2.2 1996-03-04 20:58:54 +00:00
Janet B. Anderson
8b4249b582 Updated for R3.12.2.2 1996-03-04 17:25:05 +00:00
Janet B. Anderson
bf260930ea Removed unused ARCH_TYPE 1996-03-04 17:24:41 +00:00
Janet B. Anderson
e460c225da Added the command to invoke the gnu version of make as a parm to GetVar 1996-03-04 16:44:53 +00:00
Janet B. Anderson
4a07ca3a11 The command to invoke the gnu version of make is now a parm to GetVar 1996-03-04 16:43:47 +00:00
Marty Kraimer
2aeca30e8f Removed gmake 1996-03-04 14:21:27 +00:00
Marty Kraimer
6ad8e0f575 Simplify 1996-03-04 14:20:33 +00:00
Marty Kraimer
18822cda96 Call printf instead of epicsPrintf to prevent deadlocks. 1996-03-04 14:19:51 +00:00
Marty Kraimer
acaa1b6fbf Cosmetic change 1996-03-04 14:15:04 +00:00
Marty Kraimer
38875dd8a7 Added drvVmic2534 from LBL. NOTE: NOTE YET ANSIFIED 1996-03-04 14:13:53 +00:00
Marty Kraimer
af39a62adc Added devVmic2534 which came from LBL 1996-03-04 14:13:01 +00:00
Marty Kraimer
fc981f3f7b Bug fix reported by Bill Brown and LBL 1996-03-04 14:12:19 +00:00
Marty Kraimer
f726540476 Added dbDumpPath 1996-03-04 14:11:36 +00:00
Marty Kraimer
759d10c50e Added Vmic2534 1996-03-04 14:09:15 +00:00
Marty Kraimer
27d9d4d708 Added epicsLIBOBJS 1996-03-04 14:08:36 +00:00
Marty Kraimer
8643ae7413 New module 1996-03-04 14:07:46 +00:00
Marty Kraimer
f04b9fd8d3 If asInit fails generate error message and terminate. 1996-03-04 14:06:42 +00:00
Marty Kraimer
574eb184cf If asSetFilename has been called and asInit fails make sure error returned 1996-03-04 14:05:11 +00:00
Janet B. Anderson
ff33b704aa Updated README files to reflect directory changes and new installEpics. 1996-02-20 21:04:04 +00:00
Janet B. Anderson
b23500efe6 Moved tools to src/tools dir. base/tools dir removed. 1996-02-20 20:58:44 +00:00
Janet B. Anderson
14f0ea61dd GetVar now found in base/bin dir. base/tools dir removed. 1996-02-20 20:57:15 +00:00
Janet B. Anderson
6dc0835a7d Changed field reference from val to oval in devGpibLib_aoGpibWork 1996-02-16 22:04:58 +00:00
Marty Kraimer
ade952f351 Forgot a ) 1996-02-16 19:57:44 +00:00
Marty Kraimer
dd34fb320b Fixed bugs 1996-02-16 19:27:11 +00:00
Marty Kraimer
86e4be2f04 Dont use path if filename contains / 1996-02-16 19:26:20 +00:00
Jim Kowalkowski
06626adbb8 New file for gnu loader to create C++ executables. 1996-01-31 20:43:47 +00:00
Jim Kowalkowski
5a32f7143d Now installing BSlib. Wow. 1996-01-29 17:18:55 +00:00
Jim Kowalkowski
717ace8079 Added the simple program to allow loading of C++ object modules. 1996-01-29 17:05:58 +00:00
Marty Kraimer
95294e2f3e added 1996-01-25 21:45:25 +00:00
Marty Kraimer
341ec908c2 moved files from /base/include 1996-01-25 21:39:01 +00:00
Marty Kraimer
f91c3356ab uninstall base/man 1996-01-25 21:37:09 +00:00
Marty Kraimer
6b6ef88793 base/rec=>base/db base/include now installed 1996-01-25 21:29:42 +00:00
Marty Kraimer
adea6a0894 moved flex.skel.static from base/include 1996-01-25 21:27:08 +00:00
Marty Kraimer
866e676a7a .ascii=>.db 1996-01-25 21:26:43 +00:00
Marty Kraimer
a8da2b9da4 moved include files from base/include 1996-01-25 21:24:40 +00:00
Marty Kraimer
ff6d6cb70a made iocLogDisable global 1996-01-25 21:20:56 +00:00
Marty Kraimer
d205dc9b10 moved include files. .ascii=> .db; path changes 1996-01-25 21:15:09 +00:00
Marty Kraimer
777e2d093d moved include file from base/include 1996-01-25 21:14:42 +00:00
Marty Kraimer
dbfab6b29e moved includes; .ascii=> .db; path changes 1996-01-25 21:13:33 +00:00
Marty Kraimer
ecaaeb439a extension .ascii => .db 1996-01-25 21:10:07 +00:00
Marty Kraimer
a635590f31 moved include files from base/include 1996-01-25 21:08:08 +00:00
Marty Kraimer
795b9645c9 moved include from base/include; .ascii => .db 1996-01-25 21:07:08 +00:00
Marty Kraimer
fcf601fbf1 moved include file from base/include 1996-01-25 21:05:49 +00:00
Marty Kraimer
b95596f602 Moved include files from base/include 1996-01-25 21:04:37 +00:00
Jeff Hill
d0766a4f38 fixed compile faill resulting from union member name change 1996-01-18 20:54:56 +00:00
Jeff Hill
a650cd3ca2 dont print benign message about client disconnect 1995-12-20 16:59:16 +00:00
Jeff Hill
96bd0f11c9 dont print no connect msg if it is benign 1995-12-20 16:56:47 +00:00
Jeff Hill
aaa2580224 Use connectWithTimeout() instead of connect() 1995-12-19 19:49:20 +00:00
Jeff Hill
84f32df855 added include required by UCX 1995-12-19 19:47:56 +00:00
Jeff Hill
79baa59608 optimized alarm entry sort 1995-12-19 19:41:24 +00:00
Jeff Hill
853031bc90 added author name 1995-12-19 19:40:07 +00:00
Jeff Hill
c3734dcfee function prototype changes 1995-12-19 19:36:20 +00:00
Jeff Hill
f2a8150e2d -cjm 20-Nov-95 Add code for gettimeofday 1995-12-19 19:35:24 +00:00
Jeff Hill
5b8ef5a985 use memset instead of bzero following advice from Jeff Hill and add
a definition of struct timezone to support gettimeofday
1995-12-19 19:35:00 +00:00
Jeff Hill
3aff8d6754 added missing arg to execlp() 1995-12-19 19:33:42 +00:00
Jeff Hill
c12944df48 lock applied externally 1995-12-19 19:32:02 +00:00
Jeff Hill
a09ab523bb no longer uses local variable 1995-12-19 19:31:28 +00:00
Jeff Hill
c02903d397 fixed spelling 1995-12-19 19:30:41 +00:00
Jeff Hill
33608d5c23 added missing prototype 1995-12-19 19:30:18 +00:00
Jeff Hill
293294cb48 changed put test 1995-12-19 19:29:04 +00:00
Jeff Hill
03104dd373 Dont check the array element count when they add the event (just clip it) 1995-12-19 19:28:11 +00:00
Janet B. Anderson
6a922b6515 Added path statements. Moved export statements. 1995-12-11 15:12:01 +00:00
636 changed files with 65981 additions and 9830 deletions

21
COPYRIGHT_Combined Normal file
View File

@@ -0,0 +1,21 @@
/* Experimental Physics and Industrial Control System (EPICS)
*
* Copyright 1991, the Regents of the University of California,
* and the University of Chicago Board of Governors.
*
* This software was produced under U.S. Government contracts:
* (W-7405-ENG-36) at the Los Alamos National Laboratory,
* and (W-31-109-ENG-38) at Argonne National Laboratory.
*
* Initial development by:
* The Controls and Automation Group (AT-8)
* Ground Test Accelerator
* Accelerator Technology Division
* Los Alamos National Laboratory
*
* Co-developed with
* The Controls and Computing Group
* Accelerator Systems Division
* Advanced Photon Source
* Argonne National Laboratory
***********************************************************************/

View File

@@ -10,6 +10,21 @@
# [-b] - For fully built release
#
# $Log$
# Revision 1.7 1996/06/25 21:54:42 jba
# Command line parm now base dir
#
# Revision 1.6 1996/06/07 19:19:10 jba
# MakeRelease is now in release tar file.
#
# Revision 1.5 1996/03/04 21:03:48 jba
# epicsVersion.h now in src/include.
#
# Revision 1.4 1996/02/20 21:03:53 jba
# Updated README files to reflect directory changes and new installEpics.
#
# Revision 1.3 1995/10/03 15:42:26 jba
# Added *COPYRIGHT* files to release tar file.
#
# Revision 1.2 1995/08/28 15:49:54 jba
# Added startup directory to release tar file
#
@@ -52,14 +67,12 @@
#
#
EPICS=${1};
if [ ! -d include -o ! -d src ]; then
echo "Cannot find src or include, are you at the top of EPICS base ?"
if [ ! -d src ]; then
echo "Cannot find src directory, are you at the top of EPICS base ?"
exit 1
fi
cd $EPICS/base
FULLY_BUILT=NO
if [ "${2}" = "-b" ]; then
@@ -67,8 +80,8 @@ if [ "${2}" = "-b" ]; then
shift
fi
# Retrieve EPICS release string from include/epicsVersion.h
grep EPICS_VERSION_STRING include/epicsVersion.h > /dev/null 2>&1 || ERR=1;
# Retrieve EPICS release string from src/include/epicsVersion.h
grep EPICS_VERSION_STRING src/include/epicsVersion.h > /dev/null 2>&1 || ERR=1;
if [ "$ERR" = "1" ];
then
@@ -76,7 +89,7 @@ if [ "$ERR" = "1" ];
exit 1;
fi
RELS=`grep "EPICS_VERSION_STRING" include/epicsVersion.h \
RELS=`grep "EPICS_VERSION_STRING" src/include/epicsVersion.h \
| sed -e 's-.*Version--' \
-e 's-[ ][ ]*--g' \
-e 's-".*--' \
@@ -84,7 +97,7 @@ RELS=`grep "EPICS_VERSION_STRING" include/epicsVersion.h \
if [ -z "${RELS}" ];
then
echo "TOP: Cannot retrieve release number from include/epicsVersion.h";
echo "TOP: Cannot retrieve release number from src/include/epicsVersion.h";
exit 1;
fi
@@ -95,17 +108,17 @@ echo TOP: Creating ../${RELS}.Tar;
if [ -f ${RELS}.Tar* ];
then
echo "TOP: This release has already been created.";
echo "TOP: Remove Tar file or edit include/epicsVersion.h.";
echo "TOP: Remove Tar file or edit src/include/epicsVersion.h.";
exit 1;
fi
# Create list of files and dirs to include in Tar file
cd $EPICS
cd ..
ls base/README* | xargs tar cvf ${RELS}.Tar
ls base/Makefile* > /tmp/make_release.out.$$;
ls base/Make* > /tmp/make_release.out.$$;
ls base/*COPYRIGHT* >> /tmp/make_release.out.$$;
@@ -115,22 +128,29 @@ if [ -d startup ];
>> /tmp/make_release.out.$$;
fi
find config base/include base/man base/tools -name CVS -prune -o \
! -type d -print >> /tmp/make_release.out.$$;
# binary / library / default.dctsdr / <rec>Record.h / etc.
if [ $FULLY_BUILT = "YES" ];
then
find base/include -name CVS -prune -o ! -type d -print \
>> /tmp/make_release.out.$$;
find base/man -name CVS -prune -o ! -type d -print \
>> /tmp/make_release.out.$$;
find base/bin -name CVS -prune -o ! -type d -print \
>> /tmp/make_release.out.$$;
find base/lib -name CVS -prune -o ! -type d -print \
>> /tmp/make_release.out.$$;
find base/rec -name CVS -prune -o ! -type d -print \
find base/dbd -name CVS -prune -o ! -type d -print \
>> /tmp/make_release.out.$$;
fi
find base/config -name CVS -prune -o -name SCCS -prune -o ! -type d -print \
| grep -v '/O\..*$' >> /tmp/make_release.out.$$
find base/src -name CVS -prune -o -name SCCS -prune -o ! -type d -print \
| grep -v '/O\..*$' >> /tmp/make_release.out.$$

132
Makefile
View File

@@ -1,5 +1,4 @@
#
#
# Top Level EPICS Makefile
# by Matthew Needes and Mike Bordua
#
@@ -11,136 +10,25 @@
# However, the release dependencies DOES require a complete
# install because the release.% syntax is illegal.
#
# $Log$
# Revision 1.23 1995/02/13 15:00:09 jba
# Changed include file from CONFIG_SITE to CONFIG
#
# Revision 1.22 1994/11/14 23:12:17 tang
# Replace ARCH_TYPE with .
#
# Revision 1.1.1.1 1994/11/09 01:08:53 epics
# Import of R3.12.0Beta
#
# Revision 1.18 1994/10/13 19:44:34 mda
# Introduce temporary symbol (ARCH_TYPE=$$ARCH) and use in later targets/rules
# to avoid problem with $* symbol resolution in some versions of gnumake.
#
# Revision 1.17 1994/10/05 18:45:57 jba
# Modified syntax of makefile usage
#
# Revision 1.16 1994/09/09 17:32:27 jba
# Cleanup of files
#
# Revision 1.15 1994/09/08 17:25:39 mcn
# Changed clean to tools/Clean. Added "uninstall" dependency.
#
# Revision 1.14 1994/09/07 20:42:19 jba
# Minor changes
#
# Revision 1.13 1994/09/07 19:15:17 jba
# Modified to eork with extensions and do depends
#
# Revision 1.12 1994/08/21 00:55:51 mcn
# New stuff.
#
# Revision 1.11 1994/08/19 15:38:01 mcn
# Dependencies are now generated with a "make release".
#
# Revision 1.10 1994/08/12 18:51:29 mcn
# Added Log and/or Id.
#
# $Id$
#
EPICS=..
include $(EPICS)/config/CONFIG
TOP=.
include $(TOP)/config/CONFIG_BASE
all: install
DIRS = src config
build:
@(for ARCH in ${BUILD_ARCHS}; \
do \
ARCH_TYPE=$$ARCH \
${MAKE} ${MFLAGS} $@.$$ARCH; \
done)
install:
@(for ARCH in ${BUILD_ARCHS}; \
do \
ARCH_TYPE=$$ARCH \
${MAKE} ${MFLAGS} $@.$$ARCH; \
done)
depends:
@(for ARCH in ${BUILD_ARCHS}; \
do \
ARCH_TYPE=$$ARCH \
${MAKE} ${MFLAGS} $@.$$ARCH; \
done)
clean:
@(for ARCH in ${BUILD_ARCHS}; \
do \
ARCH_TYPE=$$ARCH \
${MAKE} ${MFLAGS} $@.$$ARCH; \
done)
uninstall:
@(for ARCH in ${BUILD_ARCHS}; \
do \
ARCH_TYPE=$$ARCH \
${MAKE} ${MFLAGS} $@.$$ARCH; \
done)
include $(TOP)/config/RULES_TOP
release:
@echo TOP: Creating Release...
@./MakeRelease ${EPICS}
@./MakeRelease ${TOP}
built_release: install
@echo TOP: Creating Fully Built Release...
@./MakeRelease ${EPICS} -b
@./MakeRelease ${TOP} -b
# Notes for single architecture build rules:
# CheckArch only has to be run for dirs.% . That
# way it will only be run ONCE when filtering down
# dependencies.
#
# CheckArch does not have to be run for cleans
# because you might want to eliminate binaries for
# an old architecture.
# DIRS RULE syntax: make depends.arch
# e.g.: make depends.mv167
#
# Create dependencies for an architecture. We MUST
# do this separately for each architecture because
# some things may be included on a per architecture
# basis.
build.%:
@echo $*: Building
@${MAKE} ${MFLAGS} T_A=$* -f Makefile.subdirs build
install.%:
@echo $*: Installing
@${MAKE} ${MFLAGS} T_A=$* -f Makefile.subdirs install
depends.%:
@echo $*: Performing Make Depends
@${MAKE} ${MFLAGS} T_A=$* -f Makefile.subdirs depends
# Illegal Syntax
release.%:
@echo
@echo "The release.arch syntax is not supported by this build."
@echo " Use 'make release' or 'make built_release' instead."
@echo
uninstall.%:
@echo "TOP: Uninstalling $* "
@rm -rf ./bin/$* ./lib/$* rec.bak rec
clean.%:
@echo "TOP: Cleaning $* "
@find src -type d -name "O.$*" -prune -exec rm -rf {} \;
uninstall::
@DIR1=`pwd`;cd $(INSTALL_LOCATION);DIR2=`pwd`;cd $$DIR1;\
if [ "$$DIR1" != "$$DIR2" ]; then rm -fr $(INSTALL_LOCATION)/config; fi

View File

@@ -1,76 +0,0 @@
#
# base $Id$
#
# EPICS Makefile For Subdirectory Recursions
# by Matthew Needes and Mike Bordua
#
# $Log$
# Revision 1.13 1994/09/09 17:32:29 jba
# Cleanup of files
#
# Revision 1.12 1994/09/08 17:25:41 mcn
# Changed clean to tools/Clean. Added "uninstall" dependency.
#
# Revision 1.11 1994/09/07 19:15:19 jba
# Modified to eork with extensions and do depends
#
# Revision 1.10 1994/08/21 00:55:52 mcn
# New stuff.
#
# Revision 1.9 1994/08/19 15:38:03 mcn
# Dependencies are now generated with a "make release".
#
# Revision 1.8 1994/08/12 18:51:28 mcn
# Added Log and/or Id.
#
#
EPICS=..
include $(EPICS)/config/CONFIG_BASE
all: build
build: dirs
@(for DIR in ${DIRS}; \
do \
TMP=`pwd`; echo "${T_A}: $@: $$DIR"; \
cd $$DIR/O.${T_A}; ${MAKE} ${MFLAGS} $@; \
cd $$TMP; \
done)
install: dirs
@(for DIR in ${DIRS}; \
do \
TMP=`pwd`; echo "${T_A}: $@: $$DIR"; \
cd $$DIR/O.${T_A}; ${MAKE} ${MFLAGS} $@; \
cd $$TMP; \
done)
depends: dirs
@(for DIR in ${DIRS}; \
do \
TMP=`pwd`; echo "${T_A}: $@: $$DIR"; \
cd $$DIR/O.${T_A}; ${MAKE} ${MFLAGS} $@; \
cd $$TMP; \
done)
dirs:
@echo ${T_A}: Creating Directories
@for DIR in ${DIRS}; \
do \
TMP=`pwd`; \
cd $$DIR ; \
if [ -f Makefile.${BUILD_TYPE} ] ; then \
test -d O.${T_A} || \
mkdir O.${T_A}; \
test -f O.${T_A}/Makefile || \
ln -s ../Makefile.${BUILD_TYPE} O.${T_A}/Makefile \
> /dev/null 2> /dev/null; \
test -f O.${T_A}/Target.include || \
echo "T_A=${T_A}" > O.${T_A}/Target.include; \
test -f O.${T_A}/.DEPENDS || \
touch O.${T_A}/.DEPENDS; \
fi ; \
cd $$TMP; \
done

160
README
View File

@@ -13,7 +13,7 @@ Notes:
2. You must use GNU make (which is now THE supported make utility) for
the build, gnumake. Set your path so that a recent version (e.g.
V3.70) of gnumake is available (as make) before any system supplied makes.
V3.70) of gnumake is available.
----------------------------------------------------------------------------
Part 1 - Configuring and Building EPICS Base
@@ -27,9 +27,9 @@ Notes:
1.2 To add a target architecture to EPICS:
cd epics/config
cp CONFIG_ARCH.mv167 CONFIG_ARCH.YOUR_ARCH
edit CONFIG_ARCH.YOUR_ARCH - For compiler flags / etc.
cd base/config
cp CONFIG.mv167 CONFIG.YOUR_ARCH
edit CONFIG.YOUR_ARCH - For compiler flags / etc.
cp CONFIG.Vx.68k CONFIG.Vx.YOUR_ARCH_CLASS
cp CONFIG_SITE.Vx.68k CONFIG_SITE.Vx.YOUR_ARCH_CLASS
@@ -42,21 +42,13 @@ Notes:
cd epics/base
gnumake - To build and install EPICS.
gnumake clean - To clean temporary object files. Clean will
remove files from ALL O.ARCH dirs, not
only those specified in BUILD_ARCHS.
gnumake clean - To clean temporary object files. Top level
clean will remove all the O.ARCH dirs, not
only those specified in BUILD_ARCHS.
gnumake uninstall - Only available at the top level directory.
Cleans directories created by the install.
1.4 To create an EPICS release:
edit base/include/version.h - ONLY IF you need to change the EPICS
version number.
gnumake release - Will create Tar file
gnumake built_release - Will create Tar file, after generating
dependencies, INCLUDING BINARIES.
1.5 "Partial" build commands:
1.4 "Partial" build commands:
gnumake clean.sun4 - Cleans sun4 binaries in O.sun4 dirs only.
gnumake install.sun4 - Builds sun4 only.
@@ -64,12 +56,12 @@ Notes:
be complete before this can be issued).
NOTES:
1. base/MakeRelease will create tar files in the directory ABOVE
base. These tar files are then meant to be untarred at that level.
This release will include the "epics/config" directory.
2. EPICS binaries are kept in the bin/ARCH and lib/ARCH directories.
EPICS shellscripts are kept in the tools directory.
1. EPICS binaries and shellscripts are installed into the directory
$(INSTALL_LOCATION)/bin/ARCH.
2. EPICS libraries are installed into the $(INSTALL_LOCATION)/lib/ARCH
directory.
3. During a normal build (a "make" or "make install"), the "depends"
dependency will NOT be invoked. Only if "make depends" is run
@@ -88,7 +80,7 @@ NOTES:
mv167 target.
----------------------------------------------------------------------------
Part 2 --- Configuration Files in epics/config
Part 2 --- Configuration Files in epics/base/config
----------------------------------------------------------------------------
CONFIG - This file is meant to be included in the low-level EPICS Makefiles.
It includes the other EPICS makefiles, and allows individual developers
@@ -99,13 +91,15 @@ CONFIG_SITE - This file is meant to be changed only by the EPICS system
manager. It specifies:
HOST_ARCH: The system's host architecture (sun4/hp700/etc).
BUILD_ARCHS: List of architectures to be built.
This now come from an environment variable.
CROSS_COMPILER_HOST_ARCHS: List of unix architectures with cross_compilers.
CROSS_COMPILER_TARGET_ARCHS: List of architectures to build epics for.
VX_DIR: Location of vxWorks.
STATIC_BUILD: Whether or not to build clients statically.
etc.
----------------------------------------------------------------------------
CONFIG_ARCH.ARCH - This file defines a particular architecture. It
CONFIG.ARCH - This file defines a particular architecture. It
contains the following variables:
BUILD_TYPE: Unix / Vx
@@ -113,23 +107,21 @@ contains the following variables:
Architecture dependent build flags. The flag names / contents
depend on your architecture class.
----------------------------------------------------------------------------
CONFIG_SITE.BUILD_TYPE.ARCH_CLASS - Contains definitions of where to
find things, like X11 / Motif, etc.
----------------------------------------------------------------------------
CONFIG.BUILD_TYPE.ARCH_CLASS - Contains definitions pertaining to a
particular architecture class. This file's primary usefulness is to
define compile and link flags.
CONFIG_SITE.ARCH - Contains site specific definitions pertaining to a
particular architecture. This file's primary usefulness is to
define site specific compile and link flags.
----------------------------------------------------------------------------
CONFIG_COMMON - Contains definitions describing the layout of base.
----------------------------------------------------------------------------
CONFIG_BASE
CONFIG_EXTENSIONS - Defines what subdirectories get built by default under
base and extensions.
CONFIG_BASE - Defines what subdirectories get built by default under base.
----------------------------------------------------------------------------
RULES.Vx - Rules for building with VxWorks makefiles.
----------------------------------------------------------------------------
RULES.Unix - Rules for building with Unix makefiles.
----------------------------------------------------------------------------
RULES_TOP - Top level rules for building.
----------------------------------------------------------------------------
RULES_ARCHS
RULES_DIRS - Allows top-level type command syntax in low-level directories.
----------------------------------------------------------------------------
@@ -141,18 +133,18 @@ Filename SYS_MGR ADD_VX_ARCH ADD_UNIX_ARCH DEVELOPER
CONFIG m - - m
CONFIG_SITE m m m -
CONFIG_ARCH.ARCH - c c -
CONFIG_SITE.Unix.ARCH_CLASS m - c* -
CONFIG_SITE.Vx.ARCH_CLASS m c* - -
CONFIG.Unix.ARCH_CLASS - - c* -
CONFIG_SITE_ENV m - - -
CONFIG.ARCH - c c -
CONFIG_SITE.ARCH - c c -
CONFIG.Vx.ARCH_CLASS - c* - -
RULES.Vx - - - -
RULES.Unix - - - -
CONFIG_BASE - - - -
CONFIG_EXTENSIONS - - - -
CONFIG_COMMON - - - -
CONFIG_ENV - - - -
RULES_ARCHS - - - -
RULES_DIRS - - - -
RULES_TOP - - - -
m - Modify an existing file.
c - Create a new file.
@@ -170,63 +162,57 @@ RULES_DIRS - - - -
(files are numbered in the order of their inclusion)
src/db/Makefile.Vx (An example EPICS makefile)
^ ^ ^
| | +--- 3. RULES.Vx
| | Default rules.
| +------- 2. CONFIG
| ^ ^ ^ ^ ^
| | | | | |
| | | | | +- 1. CONFIG_SITE
| | | | | HOST_ARCH = sun4
| | | | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
| | | | | VX_DIR = /vxworks
| | | | | More.
| | | | +--- 2. CONFIG_COMMON
| | | | General info about base.
| | | +----- 3. CONFIG_ARCH.hkv2f
| | | BUILD_TYPE = Vx
| | | ARCH_CLASS = 68k
| | | Arch Specific Compiler Flag Setup
| | +------- 4. CONFIG_SITE.Vx.68k
| | Directory locations
| +--------- 5. CONFIG.Vx.68k
| Compiler/utility setup for ARCH_CLASS
+---------- 1. Target.include
T_A definition (target architecture)
^ ^
| +--- 3. RULES.Vx
| Default rules.
+------- 2. CONFIG
^ ^ ^ ^
| | | |
| | | +- 1. CONFIG_SITE
| | | HOST_ARCH = sun4
| | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
| | | VX_DIR = /vxworks
| | | More.
| | +--- 2. CONFIG_COMMON
| | General info about base.
| +----- 3. CONFIG.hkv2f
| ^ BUILD_TYPE = Vx
| | ARCH_CLASS = 68k
| | Arch Specific Compiler Flag Setup
| +--- a. CONFIG.Vx.68k
| Compiler/utility setup for ARCH_CLASS
+------- 4. CONFIG_SITE.hkv2f
Site Specific setup
---------------------------- sun4 example --------------------------------
(files are numbered in the order of their inclusion)
src/db/Makefile.Unix (An example EPICS makefile)
^ ^ ^
| | +--- 3. RULES.Unix
| | Default rules.
| +------- 2. CONFIG
| ^ ^ ^ ^ ^
| | | | | |
| | | | | +- 1. CONFIG_SITE
| | | | | HOST_ARCH = sun4
| | | | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
| | | | | VX_DIR = /vxworks
| | | | | More.
| | | | +--- 2. CONFIG_COMMON
| | | | General info about base.
| | | +----- 3. CONFIG_ARCH.sun4
| | | BUILD_TYPE = Unix
| | | ARCH_CLASS = sun4
| | | Arch Specific Compiler Flag Setup
| | +------- 4. CONFIG_SITE.Unix.sun4
| | Directory locations
| +--------- 5. CONFIG.Unix.sun4
| Compiler/utility setup for ARCH_CLASS
+---------- 1. Target.include
T_A definition (target architecture)
^ ^
| +--- 3. RULES.Unix
| Default rules.
+------- 2. CONFIG
^ ^ ^ ^
| | | |
| | | +- 1. CONFIG_SITE
| | | HOST_ARCH = sun4
| | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
| | | VX_DIR = /vxworks
| | | More.
| | +--- 2. CONFIG_COMMON
| | General info about base.
| +----- 3. CONFIG.sun4
| BUILD_TYPE = Unix
| ARCH_CLASS = sun4
| Arch Specific Compiler Flag Setup
+------- 4. CONFIG_SITE.sun4
Directory locations
----------------------------------------------------------------------------
Part 4 --- EPICS dependencies
Part 4 --- EPICS makefile rules
----------------------------------------------------------------------------
Dependencies supported by lower level Makefiles:
Rules supported by lower level Makefiles:
depends - Generate include dependencies
build - Builds objects, using libraries from "build_libs"

View File

@@ -8,18 +8,7 @@
2) At this point, support for Linux only involves channel access
clients. Since Vxworks is not available for Linux, you must
use other platforms for developing server side code. As for
building databases with dct and gdct, this requires that the
$EPICS/base/tools/makesdr script works properly. Since makesdr
is slated to be removed from the EPICS distribution in a future
release, we didn't feel it was important to include this capability
now. Consequently, when you run make you will receive the error
gnumake[4]: *** [bldDefaultSdr] Error 127
and
gnumake[3]: *** [comsubs.o] Error 1
use other platforms for developing server side code.
3) You MUST start caRepeater by hand before running a client.
Prior to running a client, you must run:

View File

@@ -10,5 +10,3 @@
might be necessary.
- epics/base/tools/bsdinstall was written to replace install for hp.

34
README.niCpu030 Normal file
View File

@@ -0,0 +1,34 @@
The CPU030 may need to have the nivxi path set correctly:
From the vxWorks shell type "vxitedit" (you may need to
loading the NI vxitedit package first)
take option 2
take option 3
type list
type modify 0
type in the correct path when promped
(the path should end in nivxi
and should traverse the niCpu030
directories shipped with the 030
ie something of the form "???/config/niCPU030/nivxi"
type save
type exit
.
.
.
see "Getting Started with Your VXIcpu-030" from NI
You may may need to setup front panel to backplane trigger
routing:
To take a TTL input and map it to VXI backplane ECL trigger 0
type in (to the vxWorks shell):
epvxiRouteTriggerECL(<logical address>, 1, 0)
where <logical address> specifies the card with the
front panel trigger connection.
johill@lanl.gov

View File

@@ -11,9 +11,8 @@ solaris directory /usr/ccs/bin is in your search path.
2. It is not possible to compile EPICS under Solaris 2 using only the
GNU gcc compiler -- you must have the Sun SPARCworks ANSI C compiler.
3. EPICS under Solaris 2 no longer uses the UCB compatability
libraries. It does require the /usr/ucb/install program however. In
order to ensure that the /usr/ucblib files are not inherited, you
3. EPICS under Solaris 2 no longer uses the UCB compatability libraries.
In order to ensure that the /usr/ucblib files are not inherited, you
should ensure that your LD_LIBRARY_PATH environment variable does not
include /usr/ucblib when you build any of the host tools.

View File

@@ -0,0 +1,11 @@
/*****************************************************************
COPYRIGHT NOTIFICATION
*****************************************************************
(C) COPYRIGHT 1991 Regents of the University of California,
and the University of Chicago Board of Governors.
This software was developed under a United States Government license
described on the COPYRIGHT_Combined file included as part
of this distribution.
**********************************************************************/

45
config/CONFIG Normal file
View File

@@ -0,0 +1,45 @@
#
# $Id$
#
# The developer may edit this file.
# Site-specific build options
#
include $(EPICS_BASE)/config/CONFIG_SITE
# EPICS base definitions
#
include $(EPICS_BASE)/config/CONFIG_COMMON
# assume T_A is the host arch if not specified
ifndef T_A
T_A = $(HOST_ARCH)
endif
# Architecture specific definitions
#
include $(EPICS_BASE)/config/CONFIG.$(T_A)
#
-include $(EPICS_BASE)/config/CONFIG_SITE.$(T_A)
# User specific definitions
#
-include $(HOME)/.EPICS_CONFIG
# All EPICS options other than BUILD_TYPE
# may be overridden here.
#
# EXAMPLES
# --------
# Build client objects statically ? must be either YES or NO
#STATIC_BUILD=NO
# Unix Optimization, must be either YES or NO
#UNIX_OPT=YES
# VxWorks Optimization, must be either YES or NO
#VX_OPT=YES
# Generate Verbose Compiler Warnings for Unix, must be either YES or NO
#UNIX_WARN=YES
# Generate Verbose Compiler Warnings for VxWorks, must be either YES or NO
#VX_WARN=YES
#etc.
#

125
config/CONFIG.Linux Normal file
View File

@@ -0,0 +1,125 @@
#
# $Id$
#
# This file is maintained by the EPICS community.
# Compiler and utility invocation (supply path to compiler here)
# (with warning flags built in)
# Paths to compilers
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Unix
GCC = gcc
ACC = acc
SUNCC = cc
AR = ar
ARFLAGS = r
RANLIB = ranlib
RANLIBFLAGS = -t
YACC = $(EYACC)
LEX = $(ELEX)
G++ = g++
CCC = CC
RMDIR = rm -rf
MKDIR = mkdir
ACC_ANSI_INVOKE_W_NO = $(ACC) -Xa -w
ACC_ANSI_INVOKE_W_YES = $(ACC) -Xa
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -w
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs
ACC_STRICT_INVOKE_W_NO = $(ACC) -Xc -w
ACC_STRICT_INVOKE_W_YES = $(ACC) -Xc
SUNCC_TRAD_INVOKE_W_NO = $(SUNCC) -w
SUNCC_TRAD_INVOKE_W_YES = $(SUNCC)
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
CC = $(C_$(CMPLR))
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
CCC_LD_FLAGS =
CCC_LD_LIBS =
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
-Wmissing-prototypes -Woverloaded-virtual \
-Wwrite-strings -Wconversion -Wstrict-prototypes\
-Wpointer-arith -Winline
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
# GNU make likes CXX instead of CCC
CXX = $(CXX_$(CXXCMPLR))
# Static Build options
ACC_SFLAGS_YES= -Bstatic
ACC_SFLAGS_NO=
CC_SFLAGS_YES= -Bstatic
CC_SFLAGS_NO=
GCC_SFLAGS_YES= -static
GCC_SFLAGS_NO=
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
SF_STRICT = $(SF_ANSI)
UNIX_SFLAGS = $(SF_$(CMPLR))
# Optimization
OPTIM_YES = -O
OPTIM_NO =
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
# Include files
UNIX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE)
# Operating system flags
OP_SYS_FLAGS = -DUNIX
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
UNIX_LDLIBS = -lm
ARCH_DEP_CFLAGS = -D_X86_ -Dlinux
ARCH_DEP_CCFLAGS = $(ARCH_DEP_CFLAGS)
UNIX_CFLAGS = $(UNIX_SFLAGS) $(USR_INCLUDES) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
UNIX_CCFLAGS = $(UNIX_CFLAGS)
# Target specific flags
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_CCFLAGS = $($(basename $@)_CCFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
CCFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CCFLAGS) $(USR_CCFLAGS) $(ARCH_DEP_CCFLAGS) $(UNIX_CCFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
# GNU make likes CXX instead of CCC
CXXFLAGS = $(CCFLAGS)
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
# Override SUN defaults
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.Unix.Linux

70
config/CONFIG.Vx.68k Normal file
View File

@@ -0,0 +1,70 @@
# $Id$
#
# This file is maintained by the EPICS community.
AR = $(VX_GNU_BIN)/ar68k
RANLIB = $(VX_GNU_BIN)/ranlib68k
YACC = $(EYACC)
LEX = $(ELEX)
CC = $(VX_GNU_BIN)/cc68k -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc
CXX = $(VX_GNU_BIN)/cc68k -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc
CPP = $(VX_GNU_BIN)/cpp68k -nostdinc
#CPP = $(CC) -E
GCC = $(CC)
LD = $(VX_GNU_BIN)/ld68k -r
EPICS_LDLIBS =
MV=mv
RM=rm -f
MKDIR=mkdir
RMDIR=rm -rf
# special c library requirements
SPECIAL_LANG =
# Compiler flags, don't mess with this
# Optimization flags
VX_OPT_YES = -O
VX_OPT_NO =
VX_OPT_FLAGS = $(VX_OPT_$(VX_OPT))
# Include files
VX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE) -I$(VX_INCLUDE)
# Warnings
#At some time we should turn on pedantic
#VX_WARN_YES = -Wall -pedantic
VX_WARN_YES = -W
VX_WARN_NO =
VX_WARN_FLAGS = $(VX_WARN_$(VX_WARN))
# Operating system flags
VX_OP_SYS_FLAGS = -DvxWorks -DV5_vxWorks
# Arch dependent flags are set in CONFIG_ARCH.*
VX_CFLAGS = $(VX_OPT_FLAGS) $(VX_WARN_FLAGS) $(USR_INCLUDES) \
$(VX_INCLUDES) $(VX_OP_SYS_FLAGS)
VX_LDFLAGS = -o
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(VX_CFLAGS)
CXXFLAGS = $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(VX_CFLAGS)
LDFLAGS = $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(VX_LDFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
# Build compile line here
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
LINK.c = $(LD) $(LDFLAGS)
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.cc = $(LD) $(LDFLAGS)
CPPSNCFLAGS = $(USR_INCLUDES) $(VX_INCLUDES)
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
DEPENDS_RULE.cc = -$(COMPILE.cc) -M $(SRCS.cc) > .DEPENDS

118
config/CONFIG.alpha Normal file
View File

@@ -0,0 +1,118 @@
# CONFIG.Unix.alpha
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Unix
# Compiler and utility invocation (supply path to compiler here)
# (with warning flags built in)
# Paths to compilers
GCC = gcc
ACC = cc -std
TRADCC = cc -traditional
AR = ar
RANLIB = ranlib
YACC = $(EYACC)
LEX = $(ELEX)
G++ = g++
CCC = CC
RMDIR = rm -rf
MKDIR = mkdir
ACC_ANSI_INVOKE_W_NO = $(ACC) -w
ACC_ANSI_INVOKE_W_YES = $(ACC)
ACC_STRICT_INVOKE_W_YES = $(ACC) -stdl -w
ACC_STRICT_INVOKE_W_NO = $(ACC) -stdl
ACC_TRAD_INVOKE_W_NO = $(ACC) -w
ACC_TRAD_INVOKE_W_YES = $(ACC)
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
CC = $(C_$(CMPLR))
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
CCC_LD_FLAGS =
CCC_LD_LIBS =
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
-Wmissing-prototypes -Woverloaded-virtual \
-Wwrite-strings -Wconversion -Wstrict-prototypes\
-Wpointer-arith -Winline
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
# GNU make likes CXX instead of CCC
CXX = $(CXX_$(CXXCMPLR))
# Static Build options
ACC_SFLAGS_YES= -non_shared
ACC_SFLAGS_NO= -call_shared
CC_SFLAGS_YES= -non_shared
CC_SFLAGS_NO= -call_shared
GCC_SFLAGS_YES= -static
GCC_SFLAGS_NO=
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
SF_STRICT = $(SF_ANSI)
UNIX_SFLAGS = $(SF_$(CMPLR))
# Optimization
OPTIM_YES = -O
OPTIM_NO =
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
# Include files
UNIX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE)
# Operating system flags
OP_SYS_FLAGS = -DUNIX
SPECIAL_LDFLAGS =
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
UNIX_LDLIBS = -lm
ARCH_DEP_CFLAGS = -D_OSF_SOURCE -DLITTLE_ENDIAN
ARCH_DEP_CCFLAGS = $(ARCH_DEP_CFLAGS)
UNIX_CFLAGS = $(UNIX_SFLAGS) $(USR_INCLUDES) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
UNIX_CCFLAGS = $(UNIX_CFLAGS)
# Target specific flags
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_CCFLAGS = $($(basename $@)_CCFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
CCFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CCFLAGS) $(USR_CCFLAGS) $(ARCH_DEP_CCFLAGS) $(UNIX_CCFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
CXXFLAGS = $(CCFLAGS)
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
# Override defaults
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)
DEPEND_RULE.c = @echo echo no DEPENDS_RULE.c defined in CONFIG.Unix.alpha
DEPEND_RULE.cc = @echo echo no DEPENDS_RULE.cc defined in CONFIG.Unix.alpha

17
config/CONFIG.hkv2f Normal file
View File

@@ -0,0 +1,17 @@
# $Id$
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
BUILD_TYPE = Vx
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = 68k
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DCPU=MC68020 -m68020 -DCPU_FAMILY=MC680X0

127
config/CONFIG.hp700 Normal file
View File

@@ -0,0 +1,127 @@
# CONFIG.Unix.hp700
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Unix
# Compiler and utility invocation (supply path to compiler here)
# (with warning flags built in)
# Paths to compilers
GCC = gcc
ACC = cc -Aa
HPACC = cc -Aa
HPCC = cc -Ac
TRADCC = cc
AR = ar
RANLIB = ranlib
YACC = $(EYACC)
LEX = $(ELEX)
G++ = g++
CCC = CC
RMDIR = rm -rf
MKDIR = mkdir
ACC_ANSI_INVOKE_W_NO = $(ACC) -w
ACC_ANSI_INVOKE_W_YES = $(ACC)
ACC_TRAD_INVOKE_W_NO = $(TRADCC) -w
ACC_TRAD_INVOKE_W_YES = $(TRADCC)
ACC_STRICT_INVOKE_W_NO = $(ACC) -w
ACC_STRICT_INVOKE_W_YES = $(ACC)
HPACC_ANSI_INVOKE_W_NO = $(HPACC) -w
HPACC_ANSI_INVOKE_W_YES = $(HPACC)
HPCC_TRAD_INVOKE_W_NO = $(HPCC) -w
HPCC_TRAD_INVOKE_W_YES = $(HPCC)
HPACC_STRICT_INVOKE_W_NO = $(HPACC) -w
HPACC_STRICT_INVOKE_W_YES = $(HPACC)
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
CCC_LD_FLAGS =
CCC_LD_LIBS =
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
-Wmissing-prototypes -Woverloaded-virtual \
-Wwrite-strings -Wconversion -Wstrict-prototypes\
-Wpointer-arith -Winline
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
# GNU make likes CXX instead of CCC
CXX = $(CXX_$(CXXCMPLR))
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
CC = $(C_$(CMPLR))
# Static Build options
ACC_SFLAGS_YES= -Wl,-a,archive
ACC_SFLAGS_NO=
CC_SFLAGS_YES= -Wl,-a,archive
CC_SFLAGS_NO=
GCC_SFLAGS_YES= -static
GCC_SFLAGS_NO=
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
SF_STRICT = $(SF_ANSI)
UNIX_SFLAGS = $(SF_$(CMPLR))
# Optimization
OPTIM_YES = -O
OPTIM_NO =
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
# Include files
UNIX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE)
# Operating system flags
OP_SYS_FLAGS = -DUNIX
SPECIAL_LDFLAGS =
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
UNIX_LDLIBS = -lm
ARCH_DEP_CFLAGS = -D_HPUX_SOURCE -DHP_UX
ARCH_DEP_CCFLAGS = $(ARCH_DEP_CFLAGS)
UNIX_CFLAGS = $(UNIX_SFLAGS) $(USR_INCLUDES) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
UNIX_CCFLAGS = $(UNIX_CFLAGS)
# Target specific flags
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_CCFLAGS = $($(basename $@)_CCFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
CCFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CCFLAGS) $(USR_CCFLAGS) $(ARCH_DEP_CCFLAGS) $(UNIX_CCFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
CXXFLAGS = $(CCFLAGS)
ARFLAGS = rv
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
# Override defaults
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)
DEPEND_RULE.c = @echo echo no DEPENDS_RULE.c defined in CONFIG.Unix.hp700
DEPEND_RULE.cc = @echo echo no DEPENDS_RULE.cc defined in CONFIG.Unix.hp700

16
config/CONFIG.mv147 Normal file
View File

@@ -0,0 +1,16 @@
# $Id$
#
# This file is maintained by the EPICS community.
BUILD_TYPE = Vx
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = 68k
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DCPU=MC68030 -m68030 -DCPU_FAMILY=MC680X0

17
config/CONFIG.mv162 Normal file
View File

@@ -0,0 +1,17 @@
# $Id$
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
BUILD_TYPE = Vx
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = 68k
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DCPU=MC68040 -m68040 -DCPU_FAMILY=MC680X0

16
config/CONFIG.mv162lc Normal file
View File

@@ -0,0 +1,16 @@
# $Id$
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
BUILD_TYPE = Vx
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = 68k
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DCPU=MC68040 -msoft-float -DCPU_FAMILY=MC680X0

16
config/CONFIG.mv167 Normal file
View File

@@ -0,0 +1,16 @@
# $Id$
#
# This file is maintained by the EPICS community.
BUILD_TYPE = Vx
# For Vx directories of form:
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
ARCH_CLASS = 68k
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DCPU=MC68040 -m68040 -DCPU_FAMILY=MC680X0

16
config/CONFIG.niCpu030 Normal file
View File

@@ -0,0 +1,16 @@
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Vx
# For Vx directories of form:
#
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
#
ARCH_CLASS = 68k
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DCPU=MC68030 -m68030 -DCPU_FAMILY=MC680X0

125
config/CONFIG.sgi Normal file
View File

@@ -0,0 +1,125 @@
#
# $Id$
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Unix
# Compiler and utility invocation (supply path to compiler here)
# (with warning flags built in)
# Paths to compilers
GCC = cc
ACC = cc
KRCC = cc -cckr
AR = ar
ARFLAGS = r
RANLIB = ls
RANLIBFLAGS =
YACC = $(EYACC)
LEX = $(ELEX)
G++ = g++
CCC = CC
RMDIR = rm -rf
MKDIR = mkdir
ACC_ANSI_INVOKE_W_NO = $(ACC) -xansi -w
ACC_ANSI_INVOKE_W_YES = $(ACC) -xansi
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -xansi -w
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs -xansi
KRCC_TRAD_INVOKE_W_NO = $(KRCC) -w
KRCC_TRAD_INVOKE_W_YES = $(KRCC)
ACC_STRICT_INVOKE_W_NO = $(ACC) -ansi -w
ACC_STRICT_INVOKE_W_YES = $(ACC) -ansi
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
C_OLD = $(KRCC_TRAD_INVOKE_W_$(UNIX_WARN))
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
CC = $(C_$(CMPLR))
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
CCC_LD_FLAGS =
CCC_LD_LIBS =
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
-Wmissing-prototypes -Woverloaded-virtual \
-Wwrite-strings -Wconversion -Wstrict-prototypes\
-Wpointer-arith -Winline
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
# GNU make likes CXX instead of CCC
CXX = $(CXX_$(CXXCMPLR))
# Static Build options
ACC_SFLAGS_YES= -Bstatic
ACC_SFLAGS_NO=
CC_SFLAGS_YES= -Bstatic
CC_SFLAGS_NO=
GCC_SFLAGS_YES= -static
GCC_SFLAGS_NO=
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
SF_STRICT = $(SF_ANSI)
UNIX_SFLAGS = $(SF_$(CMPLR))
# Optimization
OPTIM_YES = -O
OPTIM_NO =
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
# Include files
UNIX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE)
# Operating system flags
OP_SYS_FLAGS = -DUNIX
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
UNIX_LDLIBS = -lm
ARCH_DEP_CFLAGS = -DSGI
ARCH_DEP_CCFLAGS = $(ARCH_DEP_CFLAGS)
UNIX_CFLAGS = $(UNIX_SFLAGS) $(USR_INCLUDES) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
UNIX_CCFLAGS = $(UNIX_CFLAGS)
# Target specific flags
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_CCFLAGS = $($(basename $@)_CCFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
CCFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CCFLAGS) $(USR_CCFLAGS) $(ARCH_DEP_CCFLAGS) $(UNIX_CCFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
# GNU make likes CXX instead of CCC
CXXFLAGS = $(CCFLAGS)
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
# Override defaults
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)
LOAD.c = ld -shared $(LDFLAGS)
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.Unix.sgi

146
config/CONFIG.solaris Normal file
View File

@@ -0,0 +1,146 @@
#
# $Id$: CONFIG.Unix.solaris,v $
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Unix
# Compiler and utility invocation (supply path to compiler here)
# (with warning flags built in)
# Paths to compilers
GCC = gcc
ACC = $(SPARCWORKS)/bin/cc
# SUNCC doesn't exist under Solaris
AR = ar
RANLIB =
YACC = $(EYACC)
LEX = $(ELEX)
G++ = /opt/gnu/bin/g++
CCC = /opt/SUNWspro/bin/CC
RMDIR = rm -rf
MKDIR = mkdir
ACC_ANSI_INVOKE_W_NO = $(ACC) -Xa -w
ACC_ANSI_INVOKE_W_YES = $(ACC) -Xa
ACC_STRICT_INVOKE_W_YES = $(ACC) -Xc -v
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -w
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs
ACC_LD_FLAGS =
ACC_LD_LIBS =
SUNCC_TRAD_INVOKE_W_NO = $(ACC_TRAD_INVOKE_W_NO)
SUNCC_TRAD_INVOKE_W_YES = $(ACC_TRAD_INVOKE_W_YES)
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
GCC_LD_LIBS =
GCC_LD_FLAGS =
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
CC = $(C_$(CMPLR))
LD_LIBS_OLD = $($(STANDARD)_LD_LIBS)
LD_LIBS_ANSI = $($(ANSI)_LD_LIBS)
LD_LIBS_STRICT = $($(ANSI)_LD_LIBS)
CCOMPILER_LDLIBS = $(LD_LIBS_$(CMPLR))
LD_FLAGS_OLD = $($(STANDARD)_LD_FLAGS)
LD_FLAGS_ANSI = $($(ANSI)_LD_FLAGS)
LD_FLAGS_STRICT = $($(ANSI)_LD_FLAGS)
CCOMPILER_LDFLAGS = $(LD_FLAGS_$(CMPLR))
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
CCC_LD_FLAGS = -L$(SPECIAL_LANG)
CCC_LD_LIBS =
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
-Wmissing-prototypes -Woverloaded-virtual \
-Wwrite-strings -Wconversion -Wstrict-prototypes\
-Wpointer-arith -Winline
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
# GNU make likes CXX instead of CCC
CXX = $(CXX_$(CXXCMPLR))
# Static Build options
#ACC_SFLAGS_YES= -dn
ACC_SFLAGS_YES= -Bstatic
ACC_SLIBS_YES= -lw -lintl -Bdynamic -ldl -Bstatic -lXext -lX
ACC_SLIBS_NO=
ACC_SFLAGS_NO=
CC_SFLAGS_YES= -dn
CC_SFLAGS_NO=
GCC_SFLAGS_YES= -static
GCC_SFLAGS_NO=
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
SF_STRICT = $(SF_ANSI)
UNIX_SFLAGS = $(SF_$(CMPLR))
SL_OLD = $($(STANDARD)_SLIBS_$(STATIC_BUILD))
SL_ANSI = $($(ANSI)_SLIBS_$(STATIC_BUILD))
SL_STRICT = $(SL_ANSI)
UNIX_SLIBS = $(SL_$(CMPLR))
# Optimization
OPTIM_YES = -O
OPTIM_NO =
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
# Include files
UNIX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE)
# Operating system flags
OP_SYS_FLAGS = -DUNIX
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB) $(CCOMPILER_LDFLAGS)
UNIX_LDLIBS = $(UNIX_SLIBS) -lm $(CCOMPILER_LDLIBS)
# Architecture specific build flags
ARCH_DEP_CFLAGS = -DSOLARIS
ARCH_DEP_CCFLAGS = $(ARCH_DEP_CFLAGS)
ARCH_DEP_LDLIBS = -lsocket -lnsl
# -lsocket needed by libca.a
# -lnsl needed by libca.a
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(USR_INCLUDES) $(OP_SYS_FLAGS)
UNIX_CCFLAGS = $(UNIX_CFLAGS)
# Target specific flags
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_CCFLAGS = $($(basename $@)_CCFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
CCFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CCFLAGS) $(USR_CCFLAGS) $(ARCH_DEP_CCFLAGS) $(UNIX_CCFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
# GNU make likes CXX instead of CCC
CXXFLAGS = $(CCFLAGS)
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
# Override SUN defaults
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)
DEPENDS_RULE.c = -$(COMPILE.c) -xM $(SRCS.c) > .DEPENDS
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.Unix.solaris

139
config/CONFIG.sun4 Normal file
View File

@@ -0,0 +1,139 @@
#
# $Id$
#
# This file is maintained by the EPICS community.
# BUILD_TYPE
# Currently either Vx or Unix
BUILD_TYPE = Unix
# Compiler and utility invocation (supply path to compiler here)
# (with warning flags built in)
# Paths to compilers
GCC = gcc
ACC = /usr/lang/acc
SUNCC = cc
AR = ar
ARFLAGS = r
RANLIB = ranlib
RANLIBFLAGS = -t
YACC = $(EYACC)
LEX = $(ELEX)
G++ = g++
CCC = /usr/lang/CC
RMDIR = rm -rf
MKDIR = mkdir
ACC_ANSI_INVOKE_W_NO = $(ACC) -Xa -w
ACC_ANSI_INVOKE_W_YES = $(ACC) -Xa
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -w
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs
ACC_STRICT_INVOKE_W_NO = $(ACC) -Xc -w
ACC_STRICT_INVOKE_W_YES = $(ACC) -Xc -vc
ACC_LD_FLAGS = -L$(SPECIAL_LANG)
ACC_LD_LIBS =
SUNCC_TRAD_INVOKE_W_NO = $(SUNCC) -w
SUNCC_TRAD_INVOKE_W_YES = $(SUNCC)
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w -D__USE_FIXED_PROTOTYPES__
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi -D__USE_FIXED_PROTOTYPES__
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic -D__USE_FIXED_PROTOTYPES__
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic -D__USE_FIXED_PROTOTYPES__
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
GCC_LD_LIBS = -liberty
GCC_LD_FLAGS =
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
CC = $(C_$(CMPLR))
LD_LIBS_OLD = $($(STANDARD)_LD_LIBS)
LD_LIBS_ANSI = $($(ANSI)_LD_LIBS)
LD_LIBS_STRICT = $($(ANSI)_LD_LIBS)
CCOMPILER_LDLIBS = $(LD_LIBS_$(CMPLR))
LD_FLAGS_OLD = $($(STANDARD)_LD_FLAGS)
LD_FLAGS_ANSI = $($(ANSI)_LD_FLAGS)
LD_FLAGS_STRICT = $($(ANSI)_LD_FLAGS)
CCOMPILER_LDFLAGS = $(LD_FLAGS_$(CMPLR))
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
CCC_LD_FLAGS = -L$(SPECIAL_LANG)
CCC_LD_LIBS =
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
-Wmissing-prototypes -Woverloaded-virtual \
-Wwrite-strings -Wconversion -Wstrict-prototypes\
-Wpointer-arith -Winline
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
# GNU make likes CXX instead of CCC
CXX = $(CXX_$(CXXCMPLR))
# Static Build options
ACC_SFLAGS_YES= -Bstatic
ACC_SFLAGS_NO=
CC_SFLAGS_YES= -Bstatic
CC_SFLAGS_NO=
GCC_SFLAGS_YES= -static
GCC_SFLAGS_NO=
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
SF_STRICT = $(SF_ANSI)
UNIX_SFLAGS = $(SF_$(CMPLR))
# Optimization
OPTIM_YES = -O
OPTIM_NO =
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
# Include files
UNIX_INCLUDES = -I. -I.. -I$(EPICS_BASE_INCLUDE)
# Operating system flags
OP_SYS_FLAGS = -DUNIX
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB) $(CCOMPILER_LDFLAGS)
UNIX_LDLIBS = -lm $(CCOMPILER_LDLIBS)
ARCH_DEP_CFLAGS = -DSUNOS4
ARCH_DEP_CCFLAGS = $(ARCH_DEP_CFLAGS)
UNIX_CFLAGS = $(UNIX_SFLAGS) $(USR_INCLUDES) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
UNIX_CCFLAGS = $(UNIX_CFLAGS)
# Target specific flags
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
TARGET_CCFLAGS = $($(basename $@)_CCFLAGS)
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
CCFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CCFLAGS) $(USR_CCFLAGS) $(ARCH_DEP_CCFLAGS) $(UNIX_CCFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
# GNU make likes CXX instead of CCC
CXXFLAGS = $(CCFLAGS)
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
# Override SUN defaults
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
LINK.cc = $(CXX) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS)
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.Unix.sun4

49
config/CONFIG_BASE Normal file
View File

@@ -0,0 +1,49 @@
#
# $Id$
#
# the order of following list is important
DIRS = \
tools \
include \
cxxTemplates \
toolsComm\
libCom \
libvxWorks\
cvtDctsdr \
dbStatic \
db \
bpt \
ca \
gdd \
cas \
util \
misc \
sequencer \
dbtools \
rsrv\
rec\
as \
drv\
dev\
devOpt\
iocCore
EPICS_BASE = $(TOP)
# EPICS include config file
include $(TOP)/config/CONFIG
EPICS_BASE = $(INSTALL_LOCATION)
#
# this speeds up the build by turning off implicit rules search
#
.PHONY: $(TOP)/config/CONFIG
.PHONY: $(TOP)/config/CONFIG.* $(TOP)/config/CONFIG_*
.PHONY: $(TOP)/config/RULES.* $(TOP)/config/RULES_* .DEPENDS
.PHONY: $(HOME)/.EPICS_CONFIG
.PHONY: ../Makefile.Vx ../Makefile.Unix ../Makefile.Host Makefile

80
config/CONFIG_COMMON Normal file
View File

@@ -0,0 +1,80 @@
#
# $Id$
#
# CONFIG_COMMON - Another EPICS BASE config file
# by Matthew Needes and Mike Bordua
#
# This file is to be maintained by the EPICS community.
#
# Common Configuration Information
BUILD_ARCHS=$(HOST_ARCH)
ifndef CROSS_COMPILER_HOST_ARCHS
BUILD_ARCHS+=$(CROSS_COMPILER_TARGET_ARCHS)
else
ifeq ($(HOST_ARCH),$(findstring $(HOST_ARCH),$(CROSS_COMPILER_HOST_ARCHS)))
BUILD_ARCHS+=$(CROSS_COMPILER_TARGET_ARCHS)
endif
endif
INSTALL_LOCATION = $(TOP)
INSTALL_LOCATION_LIB = $(INSTALL_LOCATION)/lib
INSTALL_LOCATION_BIN = $(INSTALL_LOCATION)/bin
INSTALL_INCLUDE = $(INSTALL_LOCATION)/include
INSTALL_DOC = $(INSTALL_LOCATION)/doc
INSTALL_MAN = $(INSTALL_LOCATION)/man
INSTALL_TEMPLATES = $(INSTALL_LOCATION)/templates
INSTALL_DBD = $(INSTALL_LOCATION)/dbd
INSTALL_CONFIG = $(INSTALL_LOCATION)/config
EPICS_BASE_INCLUDE = $(EPICS_BASE)/include
EPICS_BASE_DBD = $(EPICS_BASE)/dbd
EPICS_EXTENSIONS_INCLUDE = $(EPICS_EXTENSIONS)/include
EPICS_EXTENSIONS_TEMPLATES = $(EPICS_EXTENSIONS)/templates
DIVIDER = .
# private versions of lex/yacc from EPICS
EYACC = $(EPICS_BASE)/bin/$(HOST_ARCH)/antelope
ELEX = $(EPICS_BASE)/bin/$(HOST_ARCH)/e_flex -S$(EPICS_BASE_INCLUDE)/flex.skel.static
# install from EPICS
INSTALL = $(EPICS_BASE)/bin/$(HOST_ARCH)/installEpics
INSTALL_PRODUCT = $(INSTALL)
# dbtools from EPICS
# state notation language compiler (installed from base/src/sequencer)
SNC = $(EPICS_BASE)/bin/$(HOST_ARCH)/snc
# vxWorks definitions
VX_CONFIG_DIR = $(VX_DIR)/config
VX_INCLUDE = $(VX_DIR)/h
VX_GNU_BIN = $(VX_GNU)/$(HOST_ARCH).$(ARCH_CLASS)/bin
VX_GNU_LIB = $(VX_GNU)/$(HOST_ARCH).$(ARCH_CLASS)/lib
ifdef T_A
INSTALL_LIB = $(INSTALL_LOCATION_LIB)/$(T_A)
INSTALL_TCLLIB = $(INSTALL_LOCATION_LIB)/$(T_A)
INSTALL_BIN = $(INSTALL_LOCATION_BIN)/$(T_A)
EPICS_BASE_LIB = $(EPICS_BASE)/lib/$(T_A)
EPICS_BASE_BIN = $(EPICS_BASE)/bin/$(T_A)
EPICS_EXTENSIONS_LIB = $(EPICS_EXTENSIONS)/lib/$(T_A)
EPICS_EXTENSIONS_BIN = $(EPICS_EXTENSIONS)/bin/$(T_A)
VX_IMAGE = $(VX_CONFIG_DIR)/$(T_A)/vxWorks
VX_IMAGE_SYM = $(VX_CONFIG_DIR)/$(T_A)/vxWorks.sym
# location of installed vxWorks image
EPICS_VX_IMAGE = $(EPICS_BASE_BIN)/vxWorks
EPICS_VX_IMAGE_SYM = $(EPICS_BASE_BIN)/vxWorks.sym
endif

48
config/CONFIG_ENV Normal file
View File

@@ -0,0 +1,48 @@
# $Id$
# Author: Andrew Johnson
# Date: 20 April 1995
#
# Experimental Physics and Industrial Control System (EPICS)
#
# CONFIG_ENV - EPICS Environment Parameter configuration file
#
# This file is interpreted by the Bourne Shell, so spaces are
# not allowed around the '=' signs or in unquoted values.
# Makefile variables are not defined here.
#
#
# 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 interfaces found; NO = only use
# EPICS_CA_ADDR_LIST to create this list.
# EPICS_CA_CONN_TMO sec before sending echo request from client.
# EPICS_CA_BEACON_PERIOD quiescent sec between server beacons.
# EPICS_CA_REPEATER_PORT CA repeater port number.
# EPICS_CA_SERVER_PORT CA server port number.
EPICS_CA_ADDR_LIST=""
EPICS_CA_AUTO_ADDR_LIST=YES
EPICS_CA_CONN_TMO=30.0
EPICS_CA_BEACON_PERIOD=15.0
EPICS_CA_REPEATER_PORT=5065
EPICS_CA_SERVER_PORT=5064
# Log Server:
# EPICS_IOC_LOG_PORT Log server port number.
EPICS_IOC_LOG_PORT=7004
# Other services:
EPICS_CMD_PROTO_PORT=
EPICS_AR_PORT=7002

109
config/CONFIG_SITE Normal file
View File

@@ -0,0 +1,109 @@
#
# $Id$
#
# CONFIG_SITE - EPICS BASE config file
# by Matthew Needes and Mike Bordua
#
# This file is to be modified by the EPICS system manager
# only.
#
# The host architecture performing the build,
# i.e.: the arch running DCT/getrel/etc.
#
# Currently Supporting:
# sun4
# hp700
# alpha
# solaris
# sgi
# Linux
#
# HOST_ARCH now an environment variable
# HOST_ARCH=$(shell /usr/local/epics/startup/HostArch)
ifndef HOST_ARCH
HOST_ARCH=unsupported
endif
# The architectures to build EPICS for
#
# Currently Supporting:
# mv167
# mv162
# mv162lc
# mv147
# hkv2f
# niCpu030
#
CROSS_COMPILER_TARGET_ARCHS=mv167
# If only a subset of the host architectures perform
# the build for the CROSS_COMPILER_TARGET_ARCHS
# uncomment the following line and specify them.
#
#CROSS_COMPILER_HOST_ARCHS=sun4
# VxWorks directory
#VX_DIR=/usr/csite/vw/5.1.1/vw
#VX_DIR=/usr/local/vw/vxV51.mm
#VX_DIR=/usr/local/vw/vxV52/vw
VX_DIR=/usr/local/vw/vxV52p1/vw
#VX_GNU = $(VX_DIR)
VX_GNU = $(VX_DIR)/../vxgccV2.2.3.1
# Client ANSI Compiler
# GCC (gcc -ansi)
# ACC (acc)
# HPACC (cc -Aa)
#ANSI=HPACC
ANSI=ACC
# Client Standard C Compiler choice
# GCC (gcc -traditional)
# ACC (acc -Xs)
# SUNCC (cc)
# HPCC (cc -Ac)
#STANDARD=HPCC
STANDARD=ACC
# Client C++ Compiler (Not supported yet)
# G++ (g++) GNU C++
# CCC (CC) SUN C++
#CPLUSPLUS=G++
CPLUSPLUS=CCC
# Build client objects statically ?
# must be either YES or NO
STATIC_BUILD=NO
# Unix Optimization
# must be either YES or NO
UNIX_OPT=YES
# VxWorks Optimization
# must be either YES or NO
VX_OPT=YES
# Generate Verbose Compiler Warnings for Unix
# must be either YES or NO
UNIX_WARN=YES
# Generate Verbose Compiler Warnings for VxWorks
# must be either YES or NO
VX_WARN=YES
# sch2edif compiler and flags
SCH2EDIF = sch2edif
SCH2EDIF_PATH =
SCH2EDIF_SYSFLAGS = -n -ap -p.+..+$(SCH2EDIF_PATH)+$(EPICS_EXTENSIONS)/templates/capfast/sym+
SCH2EDIF_FLAGS =
# e2db and flags
# - again there is an assumption where edb.def is installed.
E2DB = $(EPICS_EXTENSIONS)/bin/$(HOST_ARCH)/e2db
E2DB_SYSFLAGS = -ate -d $(EPICS_EXTENSIONS)/templates/capfast/edb.def
E2DB_FLAGS =

20
config/CONFIG_SITE.Linux Normal file
View File

@@ -0,0 +1,20 @@
#
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Default SUN compiler, individual Makefiles will override
# if they cannot support ANSI compilation.
# STRICT - ANSI C - force warning flags
# ANSI - ANSI C
# OLD - Standard C - Not appropriate here.
CMPLR=ANSI
# Default SUN C++ compiler, individual Makefiles will override
# if they are coded to a higher standard.
# STRICT - ANSI C++ force strict warning flags
# NORMAL - ANSI C++ optional warning flags
CXXCMPLR=NORMAL
#CXXCMPLR=STRICT

21
config/CONFIG_SITE.alpha Normal file
View File

@@ -0,0 +1,21 @@
#
# CONFIG_SITE.Unix.alpha
#
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Default compiler, individual Makefiles will override
# if they cannot support ANSI compilation.
# STRICT - ANSI C - force warning flags
# ANSI - ANSI C
# OLD - Standard C - Not appropriate here.
CMPLR=ANSI
# Default SUN C++ compiler, individual Makefiles will override
# if they are coded to a higher standard.
# STRICT - ANSI C++ force strict warning flags
# NORMAL - ANSI C++ optional warning flags
CXXCMPLR=NORMAL
#CXXCMPLR=STRICT

9
config/CONFIG_SITE.hkv2f Normal file
View File

@@ -0,0 +1,9 @@
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Epics defs

21
config/CONFIG_SITE.hp700 Normal file
View File

@@ -0,0 +1,21 @@
#
# CONFIG_SITE.Unix.hp700
#
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Default compiler, individual Makefiles will override
# if they cannot support ANSI compilation.
# STRICT - ANSI C - force warning flags
# ANSI - ANSI C
# OLD - Standard C - Not appropriate here.
CMPLR=ANSI
# Default SUN C++ compiler, individual Makefiles will override
# if they are coded to a higher standard.
# STRICT - ANSI C++ force strict warning flags
# NORMAL - ANSI C++ optional warning flags
CXXCMPLR=NORMAL
#CXXCMPLR=STRICT

9
config/CONFIG_SITE.mv147 Normal file
View File

@@ -0,0 +1,9 @@
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Epics defs

9
config/CONFIG_SITE.mv162 Normal file
View File

@@ -0,0 +1,9 @@
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Epics defs

View File

@@ -0,0 +1,9 @@
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Epics defs

9
config/CONFIG_SITE.mv167 Normal file
View File

@@ -0,0 +1,9 @@
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Epics defs

View File

@@ -0,0 +1,9 @@
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Epics defs

27
config/CONFIG_SITE.sgi Normal file
View File

@@ -0,0 +1,27 @@
#
# $Id$
#
# Revision 1.2 1994/06/28 00:02:32 bordua
# First cut at the RULES and CONFIGS.
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Default SUN compiler, individual Makefiles will override
# if they cannot support ANSI compilation.
# STRICT - ANSI C - force warning flags
# ANSI - ANSI C
# OLD - Standard C - Not appropriate here.
CMPLR=ANSI
# Default SUN C++ compiler, individual Makefiles will override
# if they are coded to a higher standard.
# STRICT - ANSI C++ force strict warning flags
# NORMAL - ANSI C++ optional warning flags
CXXCMPLR=NORMAL
#CXXCMPLR=STRICT
# Special C library requirements
SPECIAL_LANG = /usr/lang/SC2.0.1patch

View File

@@ -0,0 +1,26 @@
#
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Default SUN compiler, individual Makefiles will override
# if they cannot support ANSI compilation.
# STRICT - ANSI C - force warning flags
# ANSI - ANSI C
# OLD - Standard C - Not appropriate here.
CMPLR=ANSI
# Default SUN C++ compiler, individual Makefiles will override
# if they are coded to a higher standard.
# STRICT - ANSI C++ force strict warning flags
# NORMAL - ANSI C++ optional warning flags
CXXCMPLR=NORMAL
#CXXCMPLR=STRICT
# Unbundled C compiler stuff
SPARCWORKS = /opt/SUNWspro
#SPECIAL_LANG = $(SPARCWORKS)/lib
SPECIAL_LANG = .

31
config/CONFIG_SITE.sun4 Normal file
View File

@@ -0,0 +1,31 @@
#
# $Id$
#
# Site Specific Configuration Information
# Only the local epics system manager should modify this file
# Default SUN compiler, individual Makefiles will override
# if they cannot support ANSI compilation.
# STRICT - ANSI C - force warning flags
# ANSI - ANSI C
# OLD - Standard C - Not appropriate here.
CMPLR=ANSI
# Default SUN C++ compiler, individual Makefiles will override
# if they are coded to a higher standard.
# STRICT - ANSI C++ force strict warning flags
# NORMAL - ANSI C++ optional warning flags
CXXCMPLR=NORMAL
#CXXCMPLR=STRICT
#CMPLR=STRICT
#ANSI=GCC
#STANDARD=GCC
#CPLUSPLUS=G++
# Special C library requirements
#SPECIAL_LANG = /usr/lang/SC3.0.1
#SPECIAL_LANG = /usr/lang/lib
SPECIAL_LANG = .

40
config/CONFIG_SITE_ENV Normal file
View File

@@ -0,0 +1,40 @@
# $Id$
# Author: Andrew Johnson
# Date: 1 May 1995
#
# Experimental Physics and Industrial Control System (EPICS)
#
# CONFIG_SITE_ENV - EPICS Environment Parameter Site configuration file
#
# This file is interpreted by the Bourne Shell, so spaces are
# not allowed around the '=' signs or in unquoted values.
# Makefile variables are not defined here.
#
# Site-specific environment settings
# Time service:
# EPICS_TS_MIN_WEST the local time difference from GMT.
# EPICS_TS_NTP_INET ntp or Unix time server ip addr.
EPICS_TS_MIN_WEST=360
EPICS_TS_NTP_INET=
# Log Server:
# EPICS_IOC_LOG_INET
# Log server ip addr.
# EPICS_IOC_LOG_FILE_NAME
# pathname to the log file.
# EPICS_IOC_LOG_FILE_LIMIT
# maximum log file size.
# EPICS_IOC_LOG_FILE_COMMAND
# A shell command string used to obtain a new
# path name in response to SIGHUP - the new path name will
# replace any path name supplied in EPICS_IOC_LOG_FILE_NAME
EPICS_IOC_LOG_INET=164.54.8.167
EPICS_IOC_LOG_FILE_NAME=/home/phebos1/epics/apple/log/iocLog.text
EPICS_IOC_LOG_FILE_COMMAND=
EPICS_IOC_LOG_FILE_LIMIT=1000000

10
config/Makefile Normal file
View File

@@ -0,0 +1,10 @@
#
# $Id$
#
TOP=..
include $(TOP)/config/CONFIG_BASE
include $(TOP)/config/RULES_ARCHS

30
config/Makefile.Unix Normal file
View File

@@ -0,0 +1,30 @@
#
# $Id$
#
TOP = ../..
include $(TOP)/config/CONFIG_BASE
CONFIGS += CONFIG
CONFIGS += CONFIG_BASE
CONFIGS += CONFIG_COMMON
CONFIGS += CONFIG_ENV
CONFIGS += CONFIG.Vx.68k
CONFIGS += CONFIG_SITE
CONFIGS += CONFIG_SITE_ENV
CONFIGS += $(HOST_ARCH:%=CONFIG.%)
CONFIGS += $(CROSS_COMPILER_TARGET_ARCHS:%=CONFIG.%)
CONFIGS += $(HOST_ARCH:%=CONFIG_SITE.%)
CONFIGS += $(CROSS_COMPILER_TARGET_ARCHS:%=CONFIG_SITE.%)
CONFIGS += RULES.Unix
CONFIGS += RULES.Vx
CONFIGS += RULES_ARCHS
CONFIGS += RULES_DIRS
CONFIGS += RULES_TOP
include $(TOP)/config/RULES.Unix

197
config/RULES.Unix Normal file
View File

@@ -0,0 +1,197 @@
# $Id$
VPATH += .:..
INSTALL_PROD=$(PROD:%=$(INSTALL_BIN)/%)
INSTALL_LIBS=$(LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_INC=$(INC:%=$(INSTALL_INCLUDE)/%)
INSTALL_MANS+=$(MAN1:%=$(INSTALL_MAN)/man1/%)
INSTALL_MANS+=$(MAN2:%=$(INSTALL_MAN)/man2/%)
INSTALL_MANS+=$(MAN3:%=$(INSTALL_MAN)/man3/%)
INSTALL_MANS+=$(MAN4:%=$(INSTALL_MAN)/man4/%)
INSTALL_MANS+=$(MAN5:%=$(INSTALL_MAN)/man5/%)
INSTALL_MANS+=$(MAN6:%=$(INSTALL_MAN)/man6/%)
INSTALL_MANS+=$(MAN7:%=$(INSTALL_MAN)/man7/%)
INSTALL_MANS+=$(MAN8:%=$(INSTALL_MAN)/man8/%)
INSTALL_MANS+=$(MAN9:%=$(INSTALL_MAN)/man9/%)
INSTALL_DOCS=$(DOCS:%=$(INSTALL_DOC)/%)
INSTALL_SCRIPTS=$(SCRIPTS:%=$(INSTALL_BIN)/%)
INSTALL_TEMPLATE=$(TEMPLATES:%=$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%)
INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%)
INSTALL_TCLINDEX=$(TCLINDEX:%=$(INSTALL_TCLLIB)/%)
INSTALL_CONFIGS=$(CONFIGS:%=$(INSTALL_CONFIG)/%)
all:: install
pre_build::
build:: pre_build $(LIBNAME) $(TARGETS) $(PROD)
inc:: $(INSTALL_INC)
install:: inc build $(INSTALL_LIBS) $(TARGETS) $(INSTALL_SCRIPTS) $(INSTALL_PROD) \
$(INSTALL_MANS) $(INSTALL_DOCS) $(INSTALL_TEMPLATE) \
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) $(INSTALL_CONFIGS)
depends:: $(SRCS.c) $(SRCS.cc)
ifdef SRCS
echo you have a SRCS in your Makefile
exit 2
endif
ifdef SRCS.c
$(DEPENDS_RULE.c)
endif
ifdef SRCS.cc
$(DEPENDS_RULE.cc)
endif
clean::
@echo "Cleaning"
@$(RM) *.i *.o *.a $(TARGETS) $(PROD) $(LIBNAME) $(INC)
$(TARGETS) $(PROD): $(DEPLIBS)
# The order of the following dependencies is
# VERY IMPORTANT !!!!
%: %.o
$(RM) $@
$(LINK.c) -o $@ $< $(LDLIBS)
#$(PROD): $(OBJS) $(DEPLIBS)
# $(RM) $@
# $(LINK.c) -o $@ ${OBJS} $(LDLIBS)
%.o: %.c
$(RM) $@
$(COMPILE.c) $<
%.o: %.cc
$(RM) $@
$(COMPILE.cc) $<
%.c: %.y
$(RM) y.tab.c y.tab.h
$(YACC) $(YACCOPT) $<
@if [ -f y.tab.c ]; \
then \
echo "/bin/mv y.tab.c $*.c"; \
/bin/mv y.tab.c $*.c; \
fi
@if [ -f y.tab.h ]; \
then \
echo "/bin/mv y.tab.h $*.h"; \
/bin/mv y.tab.h $*.h; \
fi
%.c: %.l
$(RM) lex.yy.c
$(LEX) $(LEXOPT) $<
$(RM) $@
/bin/mv lex.yy.c $@
#state notation language rules
%.c: %.st
@echo "preprocessing $*.st"
@$(RM) $*.i
$(CPP) $(CPPFLAGS) $< $*.i
@echo "converting $*.i"
@$(RM) $@
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i
%.c: %.stt
@echo "converting $<
@$(RM) $@
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $<
# Capfast Rules:
%.db: %.edf
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
%.edf: ../%.sch $(DEPSCHS)
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<
# Mangen Rule:
%.1:%
$(RM) $(<F)
$(RM) $(<F).nr
ln -s $<
$(MANGEN) -s $(<F)
mv $(<F).nr $(<F).1
$(LIBNAME): $(LIBOBJS)
@echo Building library $@
$(RM) $@
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
@if [ ! -z "$(RANLIB)" ] ; then\
echo $(RANLIB) $@; \
$(RANLIB) $@; \
fi
$(INSTALL_BIN)/%: %
@echo "Installing $@"
@test -d $(INSTALL_LOCATION_BIN) || mkdir $(INSTALL_LOCATION_BIN)
@test -d $(INSTALL_BIN) || mkdir $(INSTALL_BIN)
@$(INSTALL_PRODUCT) -m 555 $< $(INSTALL_BIN)
$(INSTALL_LIB)/%.a: %.a
@echo "Installing library $@"
@test -d $(INSTALL_LOCATION_LIB) || mkdir $(INSTALL_LOCATION_LIB)
@test -d $(INSTALL_LIB) || mkdir $(INSTALL_LIB)
@$(INSTALL) -m 644 $< $(INSTALL_LIB)
@if [ ! -z "$(RANLIB)" ] ; then\
$(RANLIB) $(RANLIBFLAGS) $@; \
fi
$(INSTALL_CONFIG)/%: %
@echo "Installing $@"
@test -d $(INSTALL_CONFIG) || mkdir $(INSTALL_CONFIG)
@$(INSTALL) -m 644 $< $(INSTALL_CONFIG)
$(INSTALL_TCLLIB)/%: %
@echo "Installing Tcl library $@"
@test -d $(INSTALL_LOCATION_LIB) || mkdir $(INSTALL_LOCATION_LIB)
@test -d $(INSTALL_LIB) || mkdir $(INSTALL_LIB)
@$(INSTALL) -m 644 $< $(INSTALL_LIB)
$(INSTALL_TCLLIB)/$(TCLINDEX): $(INSTALL_TCLLIBS)
@echo "Updating $@"
@echo eval auto_mkindex $(INSTALL_LIB) "$(TCLLIBNAME)" | tclsh
$(INSTALL_MAN)/man9/% \
$(INSTALL_MAN)/man8/% \
$(INSTALL_MAN)/man7/% \
$(INSTALL_MAN)/man6/% \
$(INSTALL_MAN)/man5/% \
$(INSTALL_MAN)/man4/% \
$(INSTALL_MAN)/man3/% \
$(INSTALL_MAN)/man2/% \
$(INSTALL_MAN)/man1/%: %
@echo "Installing $@"
@test -d $(INSTALL_MAN) || mkdir $(INSTALL_MAN)
@test -d $(@D) || mkdir $(@D)
@$(INSTALL) -m 644 $< $(@D)
$(INSTALL_INCLUDE)/%: %
@echo "Installing $@"
@test -d $(INSTALL_INCLUDE) || mkdir $(INSTALL_INCLUDE)
@$(INSTALL) -m 644 $< $(INSTALL_INCLUDE)
$(INSTALL_DOC)/%: %
@echo "Installing $@"
@test -d $(INSTALL_DOC) || mkdir $(INSTALL_DOC)
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: %
@echo "Installing $@"
@$(INSTALL) -d -m 644 $< $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
.PRECIOUS: %.o %.c
.PHONY: all inc depends build install pre-build clean
-include .DEPENDS

210
config/RULES.Vx Normal file
View File

@@ -0,0 +1,210 @@
# $Id$
VPATH += .:..
INCREC +=$(RECTYPES) $(MENUS)
INSTALL_PROD=$(PROD:%=$(INSTALL_BIN)/%)
INSTALL_LIBS=$(LIBNAME:%=$(INSTALL_BIN)/%)
INSTALL_INC=$(INC:%=$(INSTALL_INCLUDE)/%)
INSTALL_INCREC=$(INCREC:%=$(INSTALL_INCLUDE)/%)
INSTALL_MANS+=$(MAN1:%=$(INSTALL_MAN)/man1/%)
INSTALL_MANS+=$(MAN2:%=$(INSTALL_MAN)/man2/%)
INSTALL_MANS+=$(MAN3:%=$(INSTALL_MAN)/man3/%)
INSTALL_MANS+=$(MAN4:%=$(INSTALL_MAN)/man4/%)
INSTALL_MANS+=$(MAN5:%=$(INSTALL_MAN)/man5/%)
INSTALL_MANS+=$(MAN6:%=$(INSTALL_MAN)/man6/%)
INSTALL_MANS+=$(MAN7:%=$(INSTALL_MAN)/man7/%)
INSTALL_MANS+=$(MAN8:%=$(INSTALL_MAN)/man8/%)
INSTALL_MANS+=$(MAN9:%=$(INSTALL_MAN)/man9/%)
INSTALL_DOCS=$(DOCS:%=$(INSTALL_DOC)/%)
INSTALL_SCRIPTS=$(SCRIPTS:%=$(INSTALL_BIN)/%)
INSTALL_INSTALLS=$(INSTALLS:%=$(INSTALL_BIN)/%)
INSTALL_BPTS=$(BPTS:%=$(INSTALL_DBD)/%)
INSTALL_DBS=$(DBDINSTALL:%=$(INSTALL_DBD)/%)\
$(RECTYPES:%.h=$(INSTALL_DBD)/%.dbd)\
$(MENUS:%.h=$(INSTALL_DBD)/%.dbd)
INSTALL_DBDNAME=$(DBDNAME:%=$(INSTALL_DBD)/%)
all:: install
pre_build::
build:: pre_build $(MENUS) $(RECTYPES) $(BPTS)\
$(LIBNAME) $(TARGETS) $(PROD) $(DBDEXPAND)
inc:: $(INSTALL_INC)
install:: inc build $(INSTALL_INCREC)\
$(INSTALL_LIBS) $(TARGETS) $(INSTALL_PROD) $(INSTALL_MANS)\
$(INSTALL_DOCS) $(INSTALL_SCRIPTS)\
$(INSTALL_INSTALLS) $(INSTALL_DBS) $(INSTALL_BPTS)\
$(INSTALL_DBDNAME)
depends:: $(SRCS.c) $(SRCS.cc)
ifdef SRCS
echo you have a SRCS in your Makefile
exit 2
endif
ifdef SRCS.c
$(DEPENDS_RULE.c)
endif
ifdef SRCS.cc
$(DEPENDS_RULE.cc)
endif
clean::
@echo "Cleaning"
@$(RM) *.i *.o *.a $(TARGETS) $(PROD) $(LIBNAME) $(INC) \
$(DBDINSTALL) $(MENUS) $(RECTYPES) $(BPTS) $(DBDEXPAND)
# The order of the following dependencies is
# VERY IMPORTANT !!!!
%: %.o
$(RM) $@
$(LINK.c) $@ $<
#$(PROD): $(OBJS)
# $(RM) $@
# $(LINK.c) $@ $(OBJS)
%.o: %.c
$(RM) $@
$(COMPILE.c) $<
%.o: %.cc
$(RM) $@
$(COMPILE.cc) $<
%.c: %.y
$(RM) y.tab.c y.tab.h
$(YACC) $(YACCOPT) $<
@if [ -f y.tab.c ]; \
then \
echo "/bin/mv y.tab.c $*.c"; \
/bin/mv y.tab.c $*.c; \
fi
@if [ -f y.tab.h ]; \
then \
echo "/bin/mv y.tab.h $*.h"; \
/bin/mv y.tab.h $*.h; \
fi
%.c: %.l
$(RM) lex.yy.c
$(LEX) $(LEXOPT) $<
$(RM) $@
/bin/mv lex.yy.c $@
#state notation language rules
%.c: %.st
@echo "preprocessing $*.st"
@$(RM) $*.i
$(CPP) $(CPPFLAGS) $< $*.i
@echo "converting $*.i"
@$(RM) $@
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i
%.c: %.stt
@echo "converting $<
@$(RM) $@
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $<
# Capfast Rules:
%.db: %.edf
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
%.edf: ../%.sch $(DEPSCHS)
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<
# Mangen Rule:
%.1:%
$(RM) $(<F)
$(RM) $(<F).nr
ln -s $<
$(MANGEN) -s $(<F)
mv $(<F).nr $(<F).1
$(INSTALL_DBD)/%: %
@echo "Installing $@"
@test -d $(INSTALL_DBD) || mkdir $(INSTALL_DBD)
@$(INSTALL) -m 644 $< $(INSTALL_DBD)
%Record.h: %Record.dbd
$(RM) $@
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbToRecordtypeH \
$(USER_DBDFLAGS) $<
menu%.h: menu%.dbd
$(RM) $@
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbToMenuH $<
bpt%.dbd: bpt%.data
$(RM) $@
$(EPICS_BASE)/bin/$(HOST_ARCH)/makeBpt $<
$(DBDNAME): $(DBDEXPAND)
@echo expanding dbd
@$(RM) $@
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbExpand\
$(USER_DBDFLAGS) $< > $@
%.1:%
$(RM) $(<F)
$(RM) $(<F).nr
ln -s $<
$(MANGEN) -s $(<F)
mv $(<F).nr $(<F).1
$(LIBNAME): $(LIBOBJS)
@echo Building library $@
@$(RM) $@
$(LINK.c) $@ $(LIBOBJS)
$(INSTALL_BIN)/%: %
@echo "Installing $@"
@test -d $(INSTALL_LOCATION_BIN) || mkdir $(INSTALL_LOCATION_BIN)
@test -d $(INSTALL_BIN) || mkdir $(INSTALL_BIN)
@$(INSTALL) -m 555 $< $(INSTALL_BIN)
$(INSTALL_BIN)/%: $(EPICS_BASE_BIN)/%
@echo "Installing $@"
@test -d $(INSTALL_LOCATION_BIN) || mkdir $(INSTALL_LOCATION_BIN)
@test -d $(INSTALL_BIN) || mkdir $(INSTALL_BIN)
@$(INSTALL) -m 555 $< $(INSTALL_BIN)
$(INSTALL_MAN)/man9/% \
$(INSTALL_MAN)/man8/% \
$(INSTALL_MAN)/man7/% \
$(INSTALL_MAN)/man6/% \
$(INSTALL_MAN)/man5/% \
$(INSTALL_MAN)/man4/% \
$(INSTALL_MAN)/man3/% \
$(INSTALL_MAN)/man2/% \
$(INSTALL_MAN)/man1/%: %
@echo "Installing $@"
@test -d $(INSTALL_MAN) || mkdir $(INSTALL_MAN)
@test -d $(@D) || mkdir $(@D)
@$(INSTALL) -m 644 $< $(@D)
$(INSTALL_INCLUDE)/%: %
@echo "Installing $@"
@test -d $(INSTALL_INCLUDE) || mkdir $(INSTALL_INCLUDE)
@$(INSTALL) -m 644 $< $(INSTALL_INCLUDE)
$(INSTALL_DOC)/%: %
@echo "Installing $@"
@test -d $(INSTALL_DOC) || mkdir $(INSTALL_DOC)
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
.PRECIOUS: %.o %.c
.PHONY: all inc depends build install pre-build clean
-include .DEPENDS

90
config/RULES_ARCHS Normal file
View File

@@ -0,0 +1,90 @@
#
# $Id$
#
# EPICS RULES_ARCH
# by Matthew Needes and Mike Bordua and Janet Andersoni and Jeff Hill
#
all:: install
ACTIONS += inc
ACTIONS += build
ACTIONS += install
ACTIONS += depends
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
#
# hostActionArchTargets
#
hostArchs = $(HOST_ARCH) $(filter-out $(HOST_ARCH),$(CROSS_COMPILER_HOST_ARCHS))
hostActionArchTargets = $(foreach x, $(ACTIONS),\
$(foreach arch,$(hostArchs), $(x)$(DIVIDER)$(arch)))
ifeq (Makefile.$(BUILD_TYPE), $(wildcard Makefile.$(BUILD_TYPE)))
hostDirs = $(addprefix O.,$(hostArchs))
$(hostActionArchTargets) : $(hostDirs)
$(MAKE) -C O.$(archPart) -f ../Makefile.$(BUILD_TYPE) T_A=$(archPart) $(actionPart)
$(hostArchs) : % : O.%
$(MAKE) -C O.$@ -f ../Makefile.$(BUILD_TYPE) T_A=$@
else
$(hostActionArchTargets) :
$(hostArchs) :
endif
#
# crossActionArchTargets
#
crossArchs = $(CROSS_COMPILER_TARGET_ARCHS)
crossActionArchTargets = $(foreach x, $(ACTIONS), \
$(foreach arch, $(CROSS_COMPILER_TARGET_ARCHS), $(x)$(DIVIDER)$(arch)))
ifeq (Makefile.Vx, $(wildcard Makefile.Vx))
crossDirs = $(addprefix O.,$(crossArchs))
$(crossActionArchTargets) : $(crossDirs)
$(MAKE) -C O.$(archPart) -f ../Makefile.Vx T_A=$(archPart) $(actionPart)
$(crossArchs) : % : O.%
$(MAKE) -C O.$@ -f ../Makefile.Vx T_A=$@
else
$(crossActionArchTargets) :
$(crossArchs) :
endif
$(hostDirs) :
$(MKDIR) $@
echo "T_A=$(subst O.,,$@)" > $@/Makefile
echo "include ../Makefile.$(BUILD_TYPE)" >> $@/Makefile
$(crossDirs) :
$(MKDIR) $@
echo "T_A=$(subst O.,,$@)" > $@/Makefile
echo "include ../Makefile.Vx" >> $@/Makefile
#
# host/cross action targets
#
$(ACTIONS) clean : % : %$(DIVIDER)host %$(DIVIDER)cross
HostActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)host)
CrossActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)cross)
$(HostActionTargets) : %$(DIVIDER)host : $(addprefix %$(DIVIDER), $(hostArchs))
$(CrossActionTargets) : %$(DIVIDER)cross : $(addprefix %$(DIVIDER), $(crossArchs))
#
# arch targets
#
host : $(hostArchs)
cross : $(crossArchs)
#
# special clean rule
#
clean$(DIVIDER)% :
$(RMDIR) O.$*
.PHONY : $(HostActionTargets)
.PHONY : $(CrossActionTargets)
.PHONY : $(crossActionArchTargets)
.PHONY : $(hostActionArchTargets)
.PHONY : $(hostArchs) $(crossArchs)
.PHONY : $(ACTIONS) clean all host cross

42
config/RULES_DIRS Normal file
View File

@@ -0,0 +1,42 @@
#
# $Id$
#
ARCHS= $(BUILD_ARCHS) host cross
ACTIONS = clean inc install depends
dirPart = $(word 1, $(subst $(DIVIDER), ,$@))
actionArchPart = $(subst $(dirPart)$(DIVIDER), ,$@)
dirActionArchTargets = $(foreach dir, $(DIRS), \
$(foreach action, $(ACTIONS),\
$(foreach arch, $(ARCHS), \
$(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch))))
dirArchTargets += $(foreach dir, $(DIRS), \
$(foreach arch, $(ARCHS),\
$(dir)$(DIVIDER)$(arch)))
dirActionTargets += $(foreach dir, $(DIRS), \
$(foreach action, $(ACTIONS),\
$(dir)$(DIVIDER)$(action)))
actionArchTargets = $(foreach action, $(ACTIONS),\
$(foreach arch, $(ARCHS), \
$(action)$(DIVIDER)$(arch)))
all:: inc install
rebuild:: clean uninstall all
$(DIRS) $(dirActionTargets) $(dirArchTargets)$(dirActionArchTargets) ::
$(MAKE) -C $(dirPart) $(actionArchPart)
$(ARCHS) $(ACTIONS) $(actionArchTargets):%: $(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
.PHONY : $(DIRS)
.PHONY : $(ARCHS) $(ACTIONS)
.PHONY : $(dirActionTargets) $(dirArchTargets)
.PHONY : $(dirActionArchTargets)
.PHONY : $(actionArchTargets)

50
config/RULES_TOP Normal file
View File

@@ -0,0 +1,50 @@
#
# $Id$
#
include $(TOP)/config/RULES_DIRS
uninstall$(DIVIDER)%::
@$(RMDIR) $(INSTALL_LOCATION_BIN)/$* $(INSTALL_LOCATION_LIB)/$* \
$(INSTALL_LOCATION)/dbd $(INSTALL_MAN) $(INSTALL_INCLUDE)
@$(RMDIR) rec.bak rec
uninstall:: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
tar:
@DIRNAME=$(notdir $(shell pwd)); \
echo "TOP: Creating $$DIRNAME.Tar file..."; \
ls Makefile* | xargs tar vcf $$DIRNAME.Tar; \
if [ -f .current_rel_hist ]; then \
ls .current_rel_hist | xargs tar vrf $$DIRNAME.Tar ; \
fi ;\
if [ -f EPICS_BASE ]; then \
ls EPICS_BASE | xargs tar vrf $$DIRNAME.Tar ; \
fi ;\
for DIR in ${DIRS}; do \
find $${DIR} -name CVS -prune -o ! -type d -print \
| grep -v "/O\..*$$" | xargs tar vrf $$DIRNAME.Tar; \
done
help:
@echo "Usage: gnumake [options] [target] ..."
@echo "Targets supported by all Makefiles:"
@echo " install - Installs executables in bin/<arch> (default rule)"
@echo " build - Builds objects, using libraries from "build_libs"
@echo " clean - Cleans objects. Clean removes the" O.<arch> dirs
@echo " in all except the O.<arch> level Makefile"
@echo " depends - Generates include dependencies"
@echo "\"Partial\" build targets supported by Makefiles:"
@echo " install.<arch> - Builds and installs <arch> only.
@echo " clean.<arch> - Cleans <arch> binaries in O.<arch> dirs only."
@echo " build.<arch> - Builds <arch> only.
@echo " depends.<arch> - Generates <arch> dependencies only.
@echo "Targets supported by top level Makefile:"
@echo " uninstall - Cleans directories created by the install."
@echo " tar - Create tar file "
@echo "Indiv. object targets are supported by O.<arch> level Makefile .e.g"
@echo " xxxRecord.o
.PHONY : uninstall tar help
.PHONY : $(addprefix uninstall$(DIVIDER), $(BUILDARCHS))

View File

@@ -1,42 +1,14 @@
# $Id$
# Author: Robert Zieman (ANL)
# Date: 6/03/91
#
# Experimental Physics and Industrial Control System (EPICS)
#
# Copyright 1991, the Regents of the University of California,
# and the University of Chicago Board of Governors.
#
# This software was produced under U.S. Government contracts:
# (W-7405-ENG-36) at the Los Alamos National Laboratory,
# and (W-31-109-ENG-38) at Argonne National Laboratory.
#
# Initial development by:
# The Controls and Automation Group (AT-8)
# Ground Test Accelerator
# Accelerator Technology Division
# Los Alamos National Laboratory
#
# Co-developed with
# The Controls and Computing Group
# Accelerator Systems Division
# Advanced Photon Source
# Argonne National Laboratory
#
# Modification Log:
# -----------------
# .01 mm-dd-yy iii Comment
# .02 08-16-93 rcz moving most of these pre-builds back to the
# object area Imakefile and adding DependTarget($(EARLYSRC))
#
# ...
# $Id$
#
all: bld_errSym
TOP = ..
include $(TOP)/config/CONFIG_BASE
bld_errSym:
cd libCom; ../../tools/blderrSymTbl
#
# Directories to build defined in CONFIG_BASE
#
include $(TOP)/config/RULES_DIRS
clean:
/bin/rm -f libCom/errInc.o

View File

@@ -1,15 +1,7 @@
#
# $Id$
#
# Lowest Level Directroy Makefile
# by Janet Anderson
#
# $Log$
#
EPICS=../../..
TOP=../..
include $(EPICS)/config/CONFIG_BASE
include $(TOP)/config/CONFIG_BASE
include $(EPICS)/config/RULES_ARCHS
include $(TOP)/config/RULES_ARCHS

View File

@@ -1,23 +1,25 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
USR_CFLAGS = -D_NO_PROTO
USR_LDLIBS = -lAs -lCom -lDb -lCom -lm -s
USR_LDFLAGS = -L.
DEPLIBS_BASE = $(EPICS_BASE_LIB)
DEPLIBS_BASE = $(INSTALL_LIB)
DEPLIBS = ./libAs.a\
$(DEPLIBS_BASE)/libCom.a\
$(DEPLIBS_BASE)/libDb.a
INC += asDbLib.h
INC += asLib.h
SRCS.c = ../ascheck.c asLib.c
OBJS = ascheck.o
LIBOBJS = asLib.o
LIBNAME = libAs.a
PROD = ascheck
include $(EPICS)/config/RULES.Unix
include $(TOP)/config/RULES.Unix
# Extra rule since asLib_lex.c is included in asLib.c
# In my opinion, these objects should really be built

View File

@@ -1,6 +1,5 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
USR_CFLAGS = -DACCESS_SECURITY -D_NO_PROTO
@@ -8,7 +7,7 @@ SRCS.c = ../asDbLib.c ../asCa.c asLib.c
LIBOBJS = asDbLib.o asCa.o asLib.o
LIBNAME = asLibrary
include $(EPICS)/config/RULES.Vx
include $(TOP)/config/RULES.Vx
# Extra rule since asLib_lex.c is included in asLib.c
# In my opinion, these objects should really be built

View File

@@ -65,7 +65,6 @@ DEVELOPMENT CENTER AT ARGONNE NATIONAL LABORATORY (708-252-2000).
#include <cadef.h>
#include <caerr.h>
#include <caeventmask.h>
#include <calink.h>
#include <task_params.h>
#include <alarm.h>
@@ -131,7 +130,6 @@ LOCAL void eventCallback(struct event_handler_args eha)
struct dbr_sts_double *pdata = eha.dbr;
int Ilocked=FALSE;
if(!caInitializing) {
FASTLOCK(&asLock);
Ilocked = TRUE;

View File

@@ -107,7 +107,7 @@ static long asDbAddRecords(void)
dbCommon *precord;
dbInitEntry(pdbbase,pdbentry);
status = dbFirstRecdes(pdbentry);
status = dbFirstRecordType(pdbentry);
while(!status) {
status = dbFirstRecord(pdbentry);
while(!status) {
@@ -119,7 +119,7 @@ static long asDbAddRecords(void)
}
status = dbNextRecord(pdbentry);
}
status = dbNextRecdes(pdbentry);
status = dbNextRecordType(pdbentry);
}
dbFinishEntry(pdbentry);
return(0);
@@ -184,8 +184,9 @@ static long asInitCommon(void)
int asInit(void)
{
asInitCommon();
return(0);
/*If no access configuration file defined return success*/
if(!pacf) return(0);
return(asInitCommon());
}
static void wdCallback(ASDBCALLBACK *pcallback)
@@ -300,7 +301,10 @@ ASMEMBERPVT asDbGetMemberPvt(void *paddress)
static void astacCallback(ASCLIENTPVT clientPvt,asClientStatus status)
{
printf("astac callback: status=%d",status);
char *recordname;
recordname = (char *)asGetClientPvt(clientPvt);
printf("astac callback %s: status=%d",recordname,status);
printf(" get %s put %s\n",(asCheckGet(clientPvt) ? "Yes" : "No"),
(asCheckPut(clientPvt) ? "Yes" : "No"));
}
@@ -328,6 +332,7 @@ int astac(char *pname,char *user,char *location)
errMessage(status,"asAddClient error");
return(1);
} else {
asPutClientPvt(*pasclientpvt,(void *)precord->name);
asRegisterClientCallback(*pasclientpvt,astacCallback);
}
return(0);

78
src/as/asDbLib.h Normal file
View File

@@ -0,0 +1,78 @@
/* share/epicsH/dbAsLib.h */
/* $Id$ */
/* Author: Marty Kraimer Date: 02-23-94*/
/*****************************************************************
COPYRIGHT NOTIFICATION
*****************************************************************
THE FOLLOWING IS A NOTICE OF COPYRIGHT, AVAILABILITY OF THE CODE,
AND DISCLAIMER WHICH MUST BE INCLUDED IN THE PROLOGUE OF THE CODE
AND IN ALL SOURCE LISTINGS OF THE CODE.
(C) COPYRIGHT 1993 UNIVERSITY OF CHICAGO
Argonne National Laboratory (ANL), with facilities in the States of
Illinois and Idaho, is owned by the United States Government, and
operated by the University of Chicago under provision of a contract
with the Department of Energy.
Portions of this material resulted from work developed under a U.S.
Government contract and are subject to the following license: For
a period of five years from March 30, 1993, the Government is
granted for itself and others acting on its behalf a paid-up,
nonexclusive, irrevocable worldwide license in this computer
software to reproduce, prepare derivative works, and perform
publicly and display publicly. With the approval of DOE, this
period may be renewed for two additional five year periods.
Following the expiration of this period or periods, the Government
is granted for itself and others acting on its behalf, a paid-up,
nonexclusive, irrevocable worldwide license in this computer
software to reproduce, prepare derivative works, distribute copies
to the public, perform publicly and display publicly, and to permit
others to do so.
*****************************************************************
DISCLAIMER
*****************************************************************
NEITHER THE UNITED STATES GOVERNMENT NOR ANY AGENCY THEREOF, NOR
THE UNIVERSITY OF CHICAGO, NOR ANY OF THEIR EMPLOYEES OR OFFICERS,
MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL
LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS
DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY
OWNED RIGHTS.
*****************************************************************
LICENSING INQUIRIES MAY BE DIRECTED TO THE INDUSTRIAL TECHNOLOGY
DEVELOPMENT CENTER AT ARGONNE NATIONAL LABORATORY (708-252-2000).
*
* Modification Log:
* -----------------
* .01 02-23-94 mrk Initial Implementation
*/
#ifndef INCdbAsLibh
#define INCdbAsLibh
#include <asLib.h>
#include <callback.h>
typedef struct {
CALLBACK callback;
long status;
} ASDBCALLBACK;
int asSetFilename(char *acf);
int asInit(void);
int asInitAsyn(ASDBCALLBACK *pcallback);
int asDbGetAsl( void *paddr);
ASMEMBERPVT asDbGetMemberPvt( void *paddr);
int asdbdump( void);
int aspuag(char *uagname);
int asphag(char *hagname);
int asprules(char *asgname);
int aspmem(char *asgname,int clients);
void asCaStart(void);
void asCaStop(void);
#endif /*INCdbAsLibh*/

223
src/as/asLib.h Normal file
View File

@@ -0,0 +1,223 @@
/* $Id$ */
/* Author: Marty Kraimer Date: 09-27-93*/
/*****************************************************************
COPYRIGHT NOTIFICATION
*****************************************************************
THE FOLLOWING IS A NOTICE OF COPYRIGHT, AVAILABILITY OF THE CODE,
AND DISCLAIMER WHICH MUST BE INCLUDED IN THE PROLOGUE OF THE CODE
AND IN ALL SOURCE LISTINGS OF THE CODE.
(C) COPYRIGHT 1993 UNIVERSITY OF CHICAGO
Argonne National Laboratory (ANL), with facilities in the States of
Illinois and Idaho, is owned by the United States Government, and
operated by the University of Chicago under provision of a contract
with the Department of Energy.
Portions of this material resulted from work developed under a U.S.
Government contract and are subject to the following license: For
a period of five years from March 30, 1993, the Government is
granted for itself and others acting on its behalf a paid-up,
nonexclusive, irrevocable worldwide license in this computer
software to reproduce, prepare derivative works, and perform
publicly and display publicly. With the approval of DOE, this
period may be renewed for two additional five year periods.
Following the expiration of this period or periods, the Government
is granted for itself and others acting on its behalf, a paid-up,
nonexclusive, irrevocable worldwide license in this computer
software to reproduce, prepare derivative works, distribute copies
to the public, perform publicly and display publicly, and to permit
others to do so.
*****************************************************************
DISCLAIMER
*****************************************************************
NEITHER THE UNITED STATES GOVERNMENT NOR ANY AGENCY THEREOF, NOR
THE UNIVERSITY OF CHICAGO, NOR ANY OF THEIR EMPLOYEES OR OFFICERS,
MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL
LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS
DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY
OWNED RIGHTS.
*****************************************************************
LICENSING INQUIRIES MAY BE DIRECTED TO THE INDUSTRIAL TECHNOLOGY
DEVELOPMENT CENTER AT ARGONNE NATIONAL LABORATORY (708-252-2000).
*
* Modification Log:
* -----------------
* .01 09-27-93 mrk Initial Implementation
*/
#ifndef INCasLibh
#define INCasLibh
#include <stddef.h>
#include <stdlib.h>
#include <errMdef.h>
#include <ellLib.h>
typedef struct asgMember *ASMEMBERPVT;
typedef struct asgClient *ASCLIENTPVT;
typedef int (*ASINPUTFUNCPTR)(char *buf,int max_size);
typedef enum{
asClientCOAR /*Change of access rights*/
/*For now this is all*/
} asClientStatus;
typedef void (*ASCLIENTCALLBACK) (ASCLIENTPVT,asClientStatus);
/* The following routines are macros with the following syntax
long asCheckGet(ASCLIENTPVT asClientPvt);
long asCheckPut(ASCLIENTPVT asClientPvt);
end of macros
*/
int asInit(void);
long asInitialize(ASINPUTFUNCPTR inputfunction);
/*caller must provide permanent storage for asgName*/
long asAddMember(ASMEMBERPVT *asMemberPvt,char *asgName);
long asRemoveMember(ASMEMBERPVT *asMemberPvt);
/*caller must provide permanent storage for newAsgName*/
long asChangeGroup(ASMEMBERPVT *asMemberPvt,char *newAsgName);
void *asGetMemberPvt(ASMEMBERPVT asMemberPvt);
void asPutMemberPvt(ASMEMBERPVT asMemberPvt,void *userPvt);
/*client must provide permanent storage for user and host*/
long asAddClient(ASCLIENTPVT *asClientPvt,ASMEMBERPVT asMemberPvt,
int asl,char *user,char *host);
/*client must provide permanent storage for user and host*/
long asChangeClient(ASCLIENTPVT asClientPvt,int asl,char *user,char *host);
long asRemoveClient(ASCLIENTPVT *asClientPvt);
void *asGetClientPvt(ASCLIENTPVT asClientPvt);
void asPutClientPvt(ASCLIENTPVT asClientPvt,void *userPvt);
long asRegisterClientCallback(ASCLIENTPVT asClientPvt,
ASCLIENTCALLBACK pcallback);
long asComputeAllAsg(void);
/*asComputeAsg is defined after ASG is defined*/
long asCompute(ASCLIENTPVT asClientPvt);
int asDump(void (*memcallback)(ASMEMBERPVT),void (*clientcallback)(ASCLIENTPVT),int verbose);
int asDumpUag(char *uagname);
int asDumpHag(char *hagname);
int asDumpRules(char *asgname);
int asDumpMem(char *asgname,void (*memcallback)(ASMEMBERPVT),int clients);
int asDumpHash(void);
#define S_asLib_clientsExist (M_asLib| 1) /*Client Exists*/
#define S_asLib_noUag (M_asLib| 2) /*User Access Group does not exist*/
#define S_asLib_noHag (M_asLib| 3) /*Host Access Group does not exist*/
#define S_asLib_noAccess (M_asLib| 4) /*access security: no access allowed*/
#define S_asLib_noModify (M_asLib| 5) /*access security: no modification allowed*/
#define S_asLib_badConfig (M_asLib| 6) /*access security: bad configuration file*/
#define S_asLib_badCalc (M_asLib| 7) /*access security: bad calculation espression*/
#define S_asLib_dupAsg (M_asLib| 8) /*Duplicate Access Security Group */
#define S_asLib_InitFailed (M_asLib| 9) /*access security: Init failed*/
#define S_asLib_asNotActive (M_asLib|10) /*access security is not active*/
#define S_asLib_badMember (M_asLib|11) /*access security: bad ASMEMBERPVT*/
#define S_asLib_badClient (M_asLib|12) /*access security: bad ASCLIENTPVT*/
#define S_asLib_badAsg (M_asLib|13) /*access security: bad ASG*/
#define S_asLib_noMemory (M_asLib|14) /*access security: no Memory */
/*Private declarations */
#define ASMAXINP 12
#ifdef vxWorks
#include <fast_lock.h>
extern FAST_LOCK asLock;
extern int asLockInit;
#endif
extern int asActive;
/* definition of access rights*/
typedef enum{asNOACCESS,asREAD,asWRITE} asAccessRights;
/*Base pointers for access security*/
typedef struct asBase{
ELLLIST uagList;
ELLLIST hagList;
ELLLIST asgList;
void *phash;
} ASBASE;
/*Defs for User Access Groups*/
typedef struct{
ELLNODE node;
char *user;
} UAGNAME;
typedef struct uag{
ELLNODE node;
char *name;
ELLLIST list; /*list of UAGNAME*/
} UAG;
/*Defs for Host Access Groups*/
typedef struct{
ELLNODE node;
char *host;
} HAGNAME;
typedef struct hag{
ELLNODE node;
char *name;
ELLLIST list; /*list of HAGNAME*/
} HAG;
/*Defs for Access SecurityGroups*/
typedef struct {
ELLNODE node;
UAG *puag;
}ASGUAG;
typedef struct {
ELLNODE node;
HAG *phag;
}ASGHAG;
typedef struct{
ELLNODE node;
asAccessRights access;
int level;
int inpUsed; /*mask for which inputs are used*/
int result; /*Result of calc converted to TRUE/FALSE*/
char *calc;
void *rpcl;
ELLLIST uagList; /*List of ASGUAG*/
ELLLIST hagList; /*List of ASGHAG*/
} ASGRULE;
typedef struct{
ELLNODE node;
char *inp;
void *capvt;
struct asg *pasg;
int inpIndex;
}ASGINP;
typedef struct asg{
ELLNODE node;
char *name;
ELLLIST inpList;
ELLLIST ruleList;
ELLLIST memberList;
double *pavalue; /*pointer to array of input values*/
int inpBad; /*mask for which inputs are bad*/
int inpChanged; /*mask showing inputs that have changed*/
} ASG;
typedef struct asgMember {
ELLNODE node;
ASG *pasg;
ELLLIST clientList;
char *asgName;
void *userPvt;
} ASGMEMBER;
typedef struct asgClient {
ELLNODE node;
ASGMEMBER *pasgMember;
char *user;
char *host;
void *userPvt;
ASCLIENTCALLBACK pcallback;
int level;
asAccessRights access;
} ASGCLIENT;
/* function prototypes*/
void *asCalloc(size_t nobj,size_t size);
long asComputeAsg(ASG *pasg);
/*macros*/
#define asCheckGet(asClientPvt)\
(asActive ?\
((asClientPvt)->access>=asREAD ? TRUE : FALSE)\
: TRUE)
#define asCheckPut(asClientPvt)\
(asActive ?\
((asClientPvt)->access>=asWRITE ? TRUE : FALSE)\
: TRUE)
#endif /*INCasLibh*/

View File

@@ -4,15 +4,10 @@
# Base Lowest Level Directroy Makefile
# by Janet Anderson
#
# $Log$
# Revision 1.1 1994/09/07 19:26:22 jba
# New file
#
#
EPICS=../../..
TOP=../..
include $(EPICS)/config/CONFIG_BASE
include $(TOP)/config/CONFIG_BASE
include $(EPICS)/config/RULES_ARCHS
include $(TOP)/config/RULES_ARCHS

View File

@@ -1,10 +1,10 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
INC += bdt.h
LIBOBJS += bdt.o
LIBNAME = libBdt.a
include $(EPICS)/config/RULES.Unix
include $(TOP)/config/RULES.Unix

View File

@@ -1,6 +1,5 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
SRCS.c += ../bdt.c
SRCS.c += ../bdtServ.c
@@ -14,7 +13,7 @@ OBJS += bdtServPv.o
PROD = bdt
include $(EPICS)/config/RULES.Vx
include $(TOP)/config/RULES.Vx
$(PROD): $(OBJS)
$(RM) $@

304
src/bdt/bdt.h Normal file
View File

@@ -0,0 +1,304 @@
#ifndef __BDT_H
#define __BDT_H
/*
* $Log$
* Revision 1.4 1995/07/27 14:21:58 winans
* General mods for first release.
*
* Revision 1.3 1995/05/30 14:47:17 winans
* Added BDT_Ping and a port parm to BdtIpOpen.
*
* Revision 1.2 1995/05/16 15:38:00 winans
* Added BdtEof to BdtState enum list.
* Added WriteLock and DeltaFlagLock to vxWorks-side BDTs.
* Added port number args to BdtOpenListenerTCP() and BdtOpenListenerUDP().
*
* Revision 1.1 1995/05/11 02:08:44 jbk
* new file for the bulk data transfer stuff
*
*/
/*
Author: Jim Kowalkowski
Date: 5/1/95
*/
/* got from protocols(5) (cheated) or /etc/protocols */
#define BDT_UDP 17
#define BDT_TCP 6
/* server ports - in the user reserved area */
#define BDT_UDP_PORT 50296
#define BDT_TCP_PORT 50297
/* Well known service names */
#define BDT_SERVICE_PV "pv"
#define BDT_SERVICE_NAME "name"
#define BDT_SERVICE_DRV "drv"
#define PV_TRANSFER_SIZE 512
/* How often some type of message is expected to arrive at each end-point */
#define BDT_PING_INTERVAL 10 /* Specified in seconds */
#define BDT_CONENCTION_TIMEOUT 25 /* Specified in seconds */
/* message types */
#define BDT_Ok 0
#define BDT_Connect 1
#define BDT_Error 2
#define BDT_Get 3
#define BDT_Put 4
#define BDT_Close 5
#define BDT_Monitor 6
#define BDT_Value 7
#define BDT_Delta 8
#define BDT_Add 9
#define BDT_Delete 10
#define BDT_Ping 11
#define BDT_LAST_VERB 11
/* protocol states */
typedef enum
{ BdtIdle,BdtUnbound,BdtSData,BdtRData,BdtBad,BdtEof } BdtState;
/******************************************************************************
*
* The format of a BDT_Connect message is:
*
* BdtMsgHead.verb (unsigned 16 binary = BDT_Connect)
* BdtMsgHead.size (unsigned 32 bit binary)
* service name length (unsigned 8 bit binary)
* service name string (service name length characters)
* arg1 string length (unsigned 8 bit binary)
* arg1 string (arg1 string length characters)
* ...
*
******************************************************************************/
/******************************************************************************
*
* NOTICE!!!!!!!! MONITORS ARE NOT CURRENTLY SUPPORTED!!!!!!!
*
* The BdtMonitor structure is created on the server-side when ever a client
* registers a monitor. It contains a tag string that is given by the client
* when the monitor is established. This tag string is an arbitrary binary
* string of bytes... presumably used by the client as a pointer or index
* to a status structure that represents the resource being monitored.
*
* The Message portion of the BdtMonitor represents the body of the message
* that is to be sent to the client to indicate the status of the event that
* happened. (It may not be present in the message.)
*
* The BdtMonitor structures are only hooked into the bdt.pMonitor list if they
* are waiting to be sent to the client.
*
* The format of a BDT_Monitor message is:
*
* BdtMsgHead.verb (unsigned 16 binary = BDT_Monitor)
* BdtMsgHead.size (unsigned 32 bit binary)
* TagLength (unsigned 32 bit binary)
* Tag (TagLength characters)
* service name string (BdtMsgHead.size-TagLength-4 characters)
*
* The <service name string> for a monitor message should include the object
* name(s) that are to be monitored.
*
*
* The format of a BDT_Delta message is:
*
* BdtMsgHead.verb (unsigned 16 binary = BDT_Delta)
* BdtMsgHead.size (unsigned 32 bit binary)
* BdtMonitor.TagLength (unsigned 32 bit binary)
* BdtMonitor.Tag (BdtMonitor.TagLength characters)
* BdtMonitor.MessageLength (unsigned 32 bit binary)
* BdtMonitor.Message (BdtMonitor.MessageLength characters)
*
******************************************************************************/
struct bdt;
typedef struct BdtMonitor
{
struct bdt *pBdt; /* Connection to send notices back to */
char *Tag; /* Client-generated tag */
int TagLength; /* Length of tag */
char *Message; /* Server-gen'd status change message */
int MessageLength; /* Length of Message */
struct BdtMonitor *pNext; /* Allow queue of N outbound on BDT */
} BdtMonitor;
typedef int (*BdthandlerFunc)(struct bdt *Bdt);
typedef struct BdtHandlers
{
BdthandlerFunc Ok;
BdthandlerFunc Connect;
BdthandlerFunc Error;
BdthandlerFunc Get;
BdthandlerFunc Put;
BdthandlerFunc Close;
BdthandlerFunc Monitor;
BdthandlerFunc Value;
BdthandlerFunc Delta;
BdthandlerFunc Add;
BdthandlerFunc Delete;
BdthandlerFunc Ping;
} BdtHandlers;
struct bdt
{
int soc;
int remaining_send;
int remaining_recv;
BdtState state;
#ifdef vxWorks
char *Name; /* Service name (used for messages) */
SEM_ID WriteLock;
SEM_ID MonitorLock;
BdtMonitor *pMonitor; /* List of pending monitor events */
BdthandlerFunc *pHandlers; /* Support routines for messages */
void *pService; /* Provate pointer for service */
#endif
};
typedef struct bdt BDT;
struct BdtMsgHead
{
unsigned short verb;
unsigned long size;
};
typedef struct BdtMsgHead BdtMsgHead;
#define BdtGetSocket(BDT) (BDT->soc)
#define BdtGetResidualWrite(BDT) (BDT->remaining_send)
#define BdtGetResidualRead(BDT) (BDT->remaining_recv)
#define BdtGetProtoState(BDT) (BDT->state)
#ifdef vxWorks
#define BdtGetServiceName(BDT) (BDT->Name)
#endif
/* ------------------------------------------------------------------------
Server functions:
BdtOpenListenerTCP:
Open a socket locally bound to the bulk data transfer TCP server port.
Set the socket up as a listener. Return the open socket.
BdtOpenListenerUDP:
Open a socket locally bound to the bulk data transfer UDP server port.
Return the open socket.
------------------------------------------------------------------------ */
int BdtOpenListenerTCP(int Port);
int BdtOpenListenerUDP(int Port);
/* ------------------------------------------------------------------------
Utilities functions:
BdtMakeServer:
Available under unix only. Put process in the background, disassociate
process from controlling terminal and parent process, and prepare
signals for reaping children spawned by the process.
BdtServerClearSignals:
Clear the signal handlers for a process, set them to default.
BdtMakeBDT:
Allocate and initialize a BDT from a socket.
BdtFreeBDT:
Close the open socket and free the memory for the BDT.
------------------------------------------------------------------------ */
#ifndef vxWorks
int BdtMakeServer(char** argv);
int BdtServerClearSignals();
#endif
BDT* BdtMakeBDT(int socket); /* make a BDT from a socket */
int BdtFreeBDT(BDT* bdt); /* free a BDT */
/* ------------------------------------------------------------------------
Client functions:
BdtIpOpen:
Open a connection to an bulk data transfer given the IP address of the
machine where the server exists. The returned BDT is returned unbound,
a connect must be issued before data transactions can take place.
BdtPvOpen:
Open and connect (bind) to a process variable. Data transfers can
take place after this call.
BdtServiceConnect:
Used in conjunction with BdtIpOpen(). Bind an unbound BDT to a
generic service provided by the server at the other end of the open
connection.
BdtPvConnect:
Used in conjunction with BdtIpOpen(). Bind an unbound BDT to a
process variable on the server at the other end of the open
connection.
BdtClose:
Completely close a connection to a server and free the BDT.
BdtDeltaPending:
Check if a delta message arrived at an unexpected time. This function
clears the pending condition.
------------------------------------------------------------------------ */
BDT* BdtIpOpen(char* address, int port);
BDT* BdtPvOpen(char *IocName, char* PvName);
int BdtServiceConnect(BDT* bdt, char* service_name, char *args);
int BdtPvConnect(BDT* bdt, char* pv_name);
int BdtClose(BDT* bdt);
int BdtPvDeltaPending(BDT* bdt);
/* ------------------------------------------------------------------------
Client and Server shared functions:
BdtSendHeader:
Send a message header out to a connect BDT with command and message body
size information.
BdtSendData:
Send a portion or all the message body out a connected BDT. A header
must have previously been sent with length information. The interface
will only allow the amount of data specified in the header to be sent.
BdtWrite:
This call will block until all the data specified in the size parameter
are sent down the socket.
BdtRead:
This call will block until all the data specified in the size parameter
is read from the socket.
BdtReceiveHeader:
Wait until a message header appears at the BDT, return the action and
remaining message body size.
BdtReceiveData:
Wait for a chunk or the entire body of a message to appear at the BDT.
Put the data into the buffer for a maximum size. Return the amount of
data actually received, or zero if there is no data remaining for the
current message.
------------------------------------------------------------------------ */
int BdtSendHeader(BDT* bdt, unsigned short verb, int size);
int BdtSendData(BDT* bdt, void* buffer, int size);
int BdtReceiveHeader(BDT* bdt, int* verb, int* size);
int BdtReceiveData(BDT* bdt, void* buffer, int size);
int BdtRead(int socket, void* buffer, int size);
int BdtWrite(int socket, void* buffer, int size);
int BdtFlushOutput(BDT* bdt);
int BdtPvPutArray(BDT *bdt, short DbrType, void *Buf, unsigned long NumElements, unsigned long ElementSize);
#endif

View File

@@ -1,18 +1,7 @@
#
# $Id$
#
# Lowest Level Directroy Makefile
# by Janet Anderson
#
# $Log$
# Revision 1.1 1994/09/07 19:25:39 jba
# New file
#
#
EPICS=../../..
TOP=../..
include $(EPICS)/config/CONFIG_BASE
include $(TOP)/config/CONFIG_BASE
include $(EPICS)/config/RULES_ARCHS
include $(TOP)/config/RULES_ARCHS

View File

@@ -1,11 +1,15 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
INC += cvtTable.h
SRCS.c = ../makeBpt
OBJS = makeBpt
SRCS.c = ../makeBpt.c
OBJS = makeBpt.o
PROD = makeBpt
include $(EPICS)/config/RULES.Unix
include $(TOP)/config/RULES.Unix
$(PROD): $(OBJS) $(DEPLIBS)
$(RM) $@
$(LINK.c) -o $@ ${OBJS} $(LDLIBS)

View File

@@ -1,16 +1,15 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
USR_CFLAGS = -ansi
VX_WARN_YES = -Wall -pedantic
MENUS += menuConvert.h
BPTS += bptTypeJdegC.ascii
BPTS += bptTypeJdegF.ascii
BPTS += bptTypeKdegC.ascii
BPTS += bptTypeKdegF.ascii
BPTS += bptTypeJdegC.dbd
BPTS += bptTypeJdegF.dbd
BPTS += bptTypeKdegC.dbd
BPTS += bptTypeKdegF.dbd
SRCS.c = \
@@ -21,5 +20,5 @@ LIBOBJS = \
LIBNAME = pbtLib
include $(EPICS)/config/RULES.Vx
include $(TOP)/config/RULES.Vx

45
src/bpt/cvtTable.h Normal file
View File

@@ -0,0 +1,45 @@
/* $Id$
* Breakpoint Tables
*
* Author: Marty Kraimer
* Date: 11-7-90
*
* Experimental Physics and Industrial Control System (EPICS)
*
* Copyright 1991, the Regents of the University of California,
* and the University of Chicago Board of Governors.
*
* This software was produced under U.S. Government contracts:
* (W-7405-ENG-36) at the Los Alamos National Laboratory,
* and (W-31-109-ENG-38) at Argonne National Laboratory.
*
* Initial development by:
* The Controls and Automation Group (AT-8)
* Ground Test Accelerator
* Accelerator Technology Division
* Los Alamos National Laboratory
*
* Co-developed with
* The Controls and Computing Group
* Accelerator Systems Division
* Advanced Photon Source
* Argonne National Laboratory
*
* Modification Log:
* -----------------
* .01 05-18-92 rcz removed extern
* .02 05-18-92 rcz new database access
* .03 08-19-92 jba add prototypes for cvtRawToEngBpt,cvtEngToRawBpt
*/
#ifndef INCcvtTableh
#define INCcvtTableh 1
/* Global Routines*/
long cvtEngToRawBpt(double *pval,short linr,short init,
void **ppbrk,short *plbrk);
long cvtRawToEngBpt(double *pval,short linr,short init,
void **ppbrk, short *plbrk);
#endif

View File

@@ -118,7 +118,7 @@ int main(argc, argv)
fprintf(stderr,"Input file MUST have .data extension\n");
exit(-1);
}
strcpy(pext,".ascii");
strcpy(pext,".dbd");
inFile = fopen(argv[1],"r");
if(!inFile) {
fprintf(stderr,"Error opening %s\n",argv[1]);

View File

@@ -1,15 +1,7 @@
#
# $Id$
#
# Lowest Level Directroy Makefile
# by Janet Anderson
#
# $Log$
#
EPICS=../../..
TOP=../..
include $(EPICS)/config/CONFIG_BASE
include $(TOP)/config/CONFIG_BASE
include $(EPICS)/config/RULES_ARCHS
include $(TOP)/config/RULES_ARCHS

View File

@@ -1,14 +1,16 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
USR_LDLIBS = -lca -lCom -lm
USR_LDLIBS = -lca -lCom
USR_LDFLAGS = -L.
DEPLIBS_BASE = $(EPICS_BASE_LIB)
DEPLIBS = ./libca.a\
$(DEPLIBS_BASE)/libCom.a
DEPLIBS_BASE = $(INSTALL_LIB)
DEPLIBS = ./libca.a $(DEPLIBS_BASE)/libCom.a
INC += cadef.h
INC += caerr.h
INC += caeventmask.h
INC += caProto.h
SRCS.c = \
../iocinf.c ../access.c ../test_event.c ../service.c \
@@ -28,13 +30,7 @@ LIBNAME = libca.a
PROD = caRepeater
TARGETS = acctst catime
include $(EPICS)/config/RULES.Unix
acctst: acctst.o $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
$(LINK.c) -o $@ $< $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
catime: catime.o $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
$(LINK.c) -o $@ $< $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
include $(TOP)/config/RULES.Unix

View File

@@ -1,6 +1,5 @@
EPICS = ../../../..
include Target.include
include $(EPICS)/config/CONFIG_BASE
TOP = ../../..
include $(TOP)/config/CONFIG_BASE
SRCS.c = \
../iocinf.c ../access.c ../test_event.c ../service.c \
@@ -14,5 +13,5 @@ LIBOBJS = \
LIBNAME = caLib
include $(EPICS)/config/RULES.Vx
include $(TOP)/config/RULES.Vx

View File

@@ -99,6 +99,18 @@
/************************************************************************/
/*
* $Log$
* Revision 1.83 1996/07/09 22:43:29 jhill
* silence gcc warnings and default CLOCKS_PER_SEC if it isnt defined (for sunos4 and gcc)
*
* Revision 1.82 1996/06/19 17:58:59 jhill
* many 3.13 beta changes
*
* Revision 1.81 1995/12/19 19:28:11 jhill
* Dont check the array element count when they add the event (just clip it)
*
* Revision 1.80 1995/10/18 16:49:23 jhill
* recv task is now running at a lower priority than the send task under vxWorks
*
* Revision 1.79 1995/10/12 01:30:10 jhill
* new ca_flush_io() mechanism prevents deadlock when they call
* ca_flush_io() from within an event routine. Also forces early
@@ -180,7 +192,7 @@ static char *sccsId = "@(#) $Id$";
/* Macros for syncing message insertion into send buffer */
/****************************************************************/
#define EXTMSGPTR(PIIU)\
((struct extmsg *) &(PIIU)->send.buf[(PIIU)->send.wtix])
((caHdr *) &(PIIU)->send.buf[(PIIU)->send.wtix])
@@ -211,7 +223,7 @@ static char *sccsId = "@(#) $Id$";
} \
}
static struct extmsg nullmsg;
static caHdr nullmsg;
/*
* local functions
@@ -220,25 +232,28 @@ static struct extmsg nullmsg;
LOCAL int cac_alloc_msg(
struct ioc_in_use *piiu,
unsigned extsize,
struct extmsg **ppMsg
caHdr **ppMsg
);
#endif
LOCAL int cac_alloc_msg_no_flush(
struct ioc_in_use *piiu,
unsigned extsize,
struct extmsg **ppMsg
caHdr **ppMsg
);
LOCAL int issue_get_callback(
evid monix,
unsigned cmmd
);
#ifdef vxWorks
LOCAL void ca_event_handler(
evid monix,
struct db_addr *paddr,
int hold,
void *pfl
);
LOCAL void ca_put_notify_action(PUTNOTIFY *ppn);
#endif
LOCAL void ca_pend_io_cleanup();
LOCAL void create_udp_fd();
static int issue_ca_array_put
@@ -250,12 +265,11 @@ unsigned long count,
chid chix,
void *pvalue
);
LOCAL void ca_put_notify_action(PUTNOTIFY *ppn);
LOCAL void ca_default_exception_handler(struct exception_handler_args args);
LOCAL int cac_push_msg(
struct ioc_in_use *piiu,
struct extmsg *pmsg,
caHdr *pmsg,
void *pext
);
@@ -279,11 +293,11 @@ LOCAL evid caIOBlockCreate(void);
*/
LOCAL int cac_push_msg(
struct ioc_in_use *piiu,
struct extmsg *pmsg,
caHdr *pmsg,
void *pext
)
{
struct extmsg msg;
caHdr msg;
unsigned bytesAvailable;
unsigned actualextsize;
unsigned extsize;
@@ -428,14 +442,14 @@ void *pext
LOCAL int cac_alloc_msg_no_flush(
struct ioc_in_use *piiu,
unsigned extsize,
struct extmsg **ppMsg
caHdr **ppMsg
)
{
unsigned msgsize;
unsigned long bytesAvailable;
struct extmsg *pmsg;
caHdr *pmsg;
msgsize = sizeof(struct extmsg)+extsize;
msgsize = sizeof(caHdr)+extsize;
/*
* fail if max message size exceeded
@@ -449,7 +463,7 @@ struct extmsg **ppMsg
return ECA_TOLARGE;
}
pmsg = (struct extmsg *) &piiu->send.buf[piiu->send.wtix];
pmsg = (caHdr *) &piiu->send.buf[piiu->send.wtix];
pmsg->m_postsize = extsize;
*ppMsg = pmsg;
@@ -463,7 +477,7 @@ struct extmsg **ppMsg
LOCAL void cac_add_msg (IIU *piiu)
{
unsigned long size;
struct extmsg *mp = EXTMSGPTR(piiu);
caHdr *mp = EXTMSGPTR(piiu);
/*
* Performs worst case message alignment
@@ -474,7 +488,7 @@ LOCAL void cac_add_msg (IIU *piiu)
mp->m_postsize = htons(mp->m_postsize);
CAC_RING_BUFFER_WRITE_ADVANCE(
&piiu->send,
sizeof(struct extmsg) + size);
sizeof(caHdr) + size);
}
@@ -1074,6 +1088,8 @@ int epicsShareAPI ca_search_and_connect
chix->type = TYPENOTCONN; /* invalid initial type */
chix->count = 0; /* invalid initial count */
chix->id.sid = ~0U; /* invalid initial server id */
chix->ar.read_access = FALSE;
chix->ar.write_access = FALSE;
chix->state = cs_never_conn;
ellInit(&chix->eventq);
@@ -1125,13 +1141,13 @@ int reply_type
int status;
int size;
int cmd;
struct extmsg *mptr;
caHdr *mptr;
struct ioc_in_use *piiu;
piiu = chix->piiu;
size = strlen((char *)(chix+1))+1;
cmd = IOC_SEARCH;
cmd = CA_PROTO_SEARCH;
LOCK;
status = cac_alloc_msg_no_flush (piiu, size, &mptr);
@@ -1239,7 +1255,7 @@ void *pvalue
UNLOCK;
if (monix) {
status = issue_get_callback(monix, IOC_READ);
status = issue_get_callback(monix, CA_PROTO_READ);
if (status == ECA_NORMAL) {
SETPENDRECV;
}
@@ -1322,7 +1338,7 @@ void *arg
UNLOCK;
if (monix) {
status = issue_get_callback (monix, IOC_READ_NOTIFY);
status = issue_get_callback (monix, CA_PROTO_READ_NOTIFY);
if (status != ECA_NORMAL) {
LOCK;
if (ca_state(chix)==cs_conn) {
@@ -1447,7 +1463,7 @@ LOCAL int issue_get_callback(evid monix, unsigned cmmd)
int status;
chid chix = monix->chan;
unsigned count;
struct extmsg hdr;
caHdr hdr;
struct ioc_in_use *piiu;
piiu = chix->piiu;
@@ -1626,7 +1642,7 @@ void *usrarg
monix->count = count;
status = issue_ca_array_put(
IOC_WRITE_NOTIFY,
CA_PROTO_WRITE_NOTIFY,
monix->id,
type,
count,
@@ -1749,7 +1765,7 @@ void *pvalue
}
#endif /*vxWorks*/
return issue_ca_array_put(IOC_WRITE, ~0U, type, count, chix, pvalue);
return issue_ca_array_put(CA_PROTO_WRITE, ~0U, type, count, chix, pvalue);
}
@@ -1768,7 +1784,7 @@ void *pvalue
{
int status;
struct ioc_in_use *piiu;
struct extmsg hdr;
caHdr hdr;
int postcnt;
unsigned size_of_one;
unsigned i;
@@ -2034,6 +2050,7 @@ void *arg
* Undocumented entry for the VAX OPI which may vanish in the future.
*
*/
#if 0
int epicsShareAPI ca_add_io_event
(
void (*ast)(),
@@ -2060,7 +2077,7 @@ void *astarg
return ECA_NORMAL;
}
#endif
@@ -2094,14 +2111,18 @@ long mask
/*
* Check for huge waveform
*
* (the count is not checked here against the native count
* when connected because this introduces a race condition
* for the client tool - the requested count is clipped to
* the actual count when the monitor request is sent so
* verifying that the requested count is valid here isnt
* required)
*/
if(dbr_size_n(type,count)>MAX_MSG_SIZE-sizeof(caHdr)){
return ECA_TOLARGE;
}
if(count > chix->count && chix->type != TYPENOTCONN)
return ECA_BADCOUNT;
if(!mask)
return ECA_BADMASK;
@@ -2125,7 +2146,7 @@ long mask
monix = (evid)malloc(size);
}
# else
assert (0);
return ECA_INTERNAL;
# endif
}
else {
@@ -2249,7 +2270,7 @@ int ca_request_event(evid monix)
}
/* msg header */
msg.m_header.m_cmmd = htons(IOC_EVENT_ADD);
msg.m_header.m_cmmd = htons(CA_PROTO_EVENT_ADD);
msg.m_header.m_available = monix->id;
msg.m_header.m_type = htons(monix->type);
msg.m_header.m_count = htons(count);
@@ -2438,7 +2459,7 @@ int epicsShareAPI ca_clear_event (evid monix)
{
int status;
chid chix = monix->chan;
struct extmsg hdr;
caHdr hdr;
evid lkup;
/*
@@ -2492,7 +2513,7 @@ int epicsShareAPI ca_clear_event (evid monix)
piiu = chix->piiu;
/* msg header */
hdr.m_cmmd = htons(IOC_EVENT_CANCEL);
hdr.m_cmmd = htons(CA_PROTO_EVENT_CANCEL);
hdr.m_available = monix->id;
hdr.m_type = htons(chix->type);
hdr.m_count = htons(chix->count);
@@ -2538,7 +2559,7 @@ int epicsShareAPI ca_clear_channel (chid chix)
int status;
evid monix;
struct ioc_in_use *piiu = chix->piiu;
struct extmsg hdr;
caHdr hdr;
enum channel_state old_chan_state;
LOOSECHIXCHK(chix);
@@ -2624,7 +2645,7 @@ int epicsShareAPI ca_clear_channel (chid chix)
*/
/* msg header */
hdr.m_cmmd = htons(IOC_CLEAR_CHANNEL);
hdr.m_cmmd = htons(CA_PROTO_CLEAR_CHANNEL);
hdr.m_available = chix->cid;
hdr.m_cid = chix->id.sid;
hdr.m_type = htons(0);
@@ -2764,18 +2785,21 @@ int epicsShareAPI ca_pend (ca_real timeout, int early)
/*
* If we are no longer waiting any significant
* delay then return
* (dont wait forever for an itsy bitsy
* delay which will no be updated if
* select is called with no delay)
*
* current time is only updated by
* cac_select_io() if we specify
* at least 1 usec to wait
*
* If we are not waiting for any significant delay
* then force the delay to zero so that we avoid
* scheduling delays (which can be substantial
* on some os)
*/
if (remaining <= (1.0/USEC_PER_SEC)) {
# ifdef CLOCKS_PER_SEC
# define CAC_SIGNIF_INTERVAL (1.0/CLOCKS_PER_SEC)
# else
/*
* we guess (because gcc does not provide
* CLOCKS_PER_SEC under sunos4)
*/
# define CAC_SIGNIF_INTERVAL (1.0/1000000)
# endif
if (remaining <= CAC_SIGNIF_INTERVAL) {
if(early){
ca_pend_io_cleanup();
ca_static->ca_flush_pending = TRUE;
@@ -2874,7 +2898,7 @@ LOCAL void ca_pend_io_cleanup()
piiu;
piiu = (IIU *) piiu->node.next){
struct extmsg hdr;
caHdr hdr;
if(piiu == piiuCast || !piiu->conn_up){
continue;
@@ -2883,7 +2907,7 @@ LOCAL void ca_pend_io_cleanup()
piiu->cur_read_seq++;
hdr = nullmsg;
hdr.m_cmmd = htons(IOC_READ_SYNC);
hdr.m_cmmd = htons(CA_PROTO_READ_SYNC);
cac_push_msg(piiu, &hdr, NULL);
}
UNLOCK;
@@ -2946,6 +2970,31 @@ void epicsShareAPI ca_signal(long ca_status,char *message)
ca_signal_with_file_and_lineno(ca_status, message, NULL, 0);
}
/*
* ca_message (long ca_status)
*
* - if it is an unknown error code then it possible
* that the error string generated below
* will be overwritten before (or while) the caller
* of this routine is calling this routine
* (if they call this routine again).
*/
const char *ca_message(long ca_status)
{
unsigned msgNo = CA_EXTRACT_MSG_NO(ca_status);
if( msgNo < NELEMENTS(ca_message_text) ){
return ca_message_text[msgNo];
}
else {
sprintf(ca_static->ca_new_err_code_msg_buf,
"new CA message number %u known only by server - see caerr.h",
msgNo);
return ca_static->ca_new_err_code_msg_buf;
}
}
/*
* ca_signal_with_file_and_lineno()
@@ -2968,16 +3017,11 @@ int lineno)
"Fatal"
};
if( CA_EXTRACT_MSG_NO(ca_status) >= NELEMENTS(ca_message_text) ){
message = "corrupt status";
ca_status = ECA_INTERNAL;
}
ca_printf(
"CA.Client.Diagnostic..............................................\n");
ca_printf(
" Message: \"%s\"\n", ca_message_text[CA_EXTRACT_MSG_NO(ca_status)]);
" Message: \"%s\"\n", ca_message(ca_status));
if(message)
ca_printf(
@@ -3023,7 +3067,7 @@ int lineno)
*/
void ca_busy_message(struct ioc_in_use *piiu)
{
struct extmsg hdr;
caHdr hdr;
if(!piiu){
return;
@@ -3036,7 +3080,7 @@ void ca_busy_message(struct ioc_in_use *piiu)
return;
hdr = nullmsg;
hdr.m_cmmd = htons(IOC_EVENTS_OFF);
hdr.m_cmmd = htons(CA_PROTO_EVENTS_OFF);
cac_push_msg(piiu, &hdr, NULL);
@@ -3050,7 +3094,7 @@ void ca_busy_message(struct ioc_in_use *piiu)
*/
void ca_ready_message(struct ioc_in_use *piiu)
{
struct extmsg hdr;
caHdr hdr;
if(!piiu){
return;
@@ -3064,7 +3108,7 @@ void ca_ready_message(struct ioc_in_use *piiu)
}
hdr = nullmsg;
hdr.m_cmmd = htons(IOC_EVENTS_ON);
hdr.m_cmmd = htons(CA_PROTO_EVENTS_ON);
cac_push_msg(piiu, &hdr, NULL);
@@ -3080,14 +3124,14 @@ void ca_ready_message(struct ioc_in_use *piiu)
int echo_request(struct ioc_in_use *piiu, ca_time *pCurrentTime)
{
int status;
struct extmsg *phdr;
caHdr *phdr;
status = cac_alloc_msg_no_flush (piiu, sizeof(*phdr), &phdr);
if (status != ECA_NORMAL) {
return status;
}
phdr->m_cmmd = htons(IOC_ECHO);
phdr->m_cmmd = htons(CA_PROTO_ECHO);
phdr->m_type = htons(0);
phdr->m_count = htons(0);
phdr->m_cid = htons(0);
@@ -3111,9 +3155,9 @@ int echo_request(struct ioc_in_use *piiu, ca_time *pCurrentTime)
*/
void noop_msg(struct ioc_in_use *piiu)
{
struct extmsg hdr;
caHdr hdr;
hdr.m_cmmd = htons(IOC_NOOP);
hdr.m_cmmd = htons(CA_PROTO_NOOP);
hdr.m_type = htons(0);
hdr.m_count = htons(0);
hdr.m_cid = htons(0);
@@ -3134,7 +3178,7 @@ void noop_msg(struct ioc_in_use *piiu)
void issue_client_host_name(struct ioc_in_use *piiu)
{
unsigned size;
struct extmsg hdr;
caHdr hdr;
char *pName;
if(!piiu){
@@ -3163,7 +3207,7 @@ void issue_client_host_name(struct ioc_in_use *piiu)
pName = ca_static->ca_pHostName,
size = strlen(pName)+1;
hdr = nullmsg;
hdr.m_cmmd = htons(IOC_HOST_NAME);
hdr.m_cmmd = htons(CA_PROTO_HOST_NAME);
hdr.m_postsize = size;
cac_push_msg(piiu, &hdr, pName);
@@ -3181,7 +3225,7 @@ void issue_client_host_name(struct ioc_in_use *piiu)
void issue_identify_client(struct ioc_in_use *piiu)
{
unsigned size;
struct extmsg hdr;
caHdr hdr;
char *pName;
if(!piiu){
@@ -3210,7 +3254,7 @@ void issue_identify_client(struct ioc_in_use *piiu)
pName = ca_static->ca_pUserName,
size = strlen(pName)+1;
hdr = nullmsg;
hdr.m_cmmd = htons(IOC_CLIENT_NAME);
hdr.m_cmmd = htons(CA_PROTO_CLIENT_NAME);
hdr.m_postsize = size;
cac_push_msg(piiu, &hdr, pName);
@@ -3227,7 +3271,7 @@ void issue_identify_client(struct ioc_in_use *piiu)
*/
void issue_claim_channel(struct ioc_in_use *piiu, chid pchan)
{
struct extmsg hdr;
caHdr hdr;
unsigned size;
char *pName;
@@ -3242,7 +3286,7 @@ void issue_claim_channel(struct ioc_in_use *piiu, chid pchan)
return;
hdr = nullmsg;
hdr.m_cmmd = htons(IOC_CLAIM_CIU);
hdr.m_cmmd = htons(CA_PROTO_CLAIM_CIU);
if(CA_V44(CA_PROTOCOL_VERSION, piiu->minor_version_number)){
hdr.m_cid = pchan->cid;
@@ -3293,7 +3337,7 @@ LOCAL void ca_default_exception_handler(struct exception_handler_args args)
*/
LOCK;
sprintf(sprintf_buf,
"%s - with request chan=%s op=%d data type=%s count=%d",
"%s - with request chan=%s op=%ld data type=%s count=%ld",
args.ctx,
pName,
args.op,

View File

@@ -7,6 +7,18 @@ static char *sccsId = "@(#) $Id$";
/*
* $Log$
* Revision 1.35 1996/07/01 19:49:15 jhill
* turned on analog value wrap-around test
*
* Revision 1.34 1996/06/19 17:59:02 jhill
* many 3.13 beta changes
*
* Revision 1.33 1995/12/19 19:29:04 jhill
* changed put test
*
* Revision 1.32 1995/11/29 19:17:25 jhill
* more tests
*
* Revision 1.31 1995/10/12 01:30:28 jhill
* improved the test
*
@@ -91,7 +103,7 @@ int acctst(char *pname)
NULL);
}
#else /* not vxWorks */
main(int argc, char **argv)
int main(int argc, char **argv)
{
if(argc == 2){
doacctst(argv[1]);
@@ -152,6 +164,8 @@ int doacctst(char *pname)
size = dbr_size_n(DBR_GR_FLOAT, NUM);
ptr = (struct dbr_gr_float *) malloc(size);
printf("Connect/disconnect test");
fflush(stdout);
for (i = 0; i < 10; i++) {
status = ca_search(
@@ -194,6 +208,9 @@ int doacctst(char *pname)
status = ca_pend_io(1000.0);
SEVCHK(status, NULL);
printf(".");
fflush(stdout);
assert(ca_test_io() == ECA_IODONE);
assert(ca_state(chix1) == cs_conn);
@@ -206,6 +223,7 @@ int doacctst(char *pname)
SEVCHK(ca_clear_channel(chix2), NULL);
SEVCHK(ca_clear_channel(chix1), NULL);
}
printf("\n");
status = ca_search(pname,& chix3);
SEVCHK(status, NULL);
@@ -263,13 +281,12 @@ int doacctst(char *pname)
ca_read_access(chix1),
ca_write_access(chix1));
#if 0
/*
* Verify that we can write and then read back
* the same analog value
* the same analog value (DBR_FLOAT)
*/
if( (ca_field_type(chix1)==DBR_FLOAT ||
ca_field_type(chix1)==DBR_DOUBLE) &&
if( (ca_field_type(chix1)==DBR_DOUBLE ||
ca_field_type(chix1)==DBR_FLOAT) &&
ca_read_access(chix1) &&
ca_write_access(chix1)){
@@ -282,47 +299,61 @@ int doacctst(char *pname)
fflush(stdout);
epsil = FLT_EPSILON*4;
base = FLT_MIN;
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i++) {
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i+=FLT_MAX_EXP/10) {
incr = ldexp (0.5,i);
iter = FLT_MAX/fabs(incr);
iter = min (iter,10);
floatTest(chix1, base, incr, epsil, iter);
}
base = FLT_MAX;
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i++) {
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i+=FLT_MAX_EXP/10) {
incr = - ldexp (0.5,i);
iter = FLT_MAX/fabs(incr);
iter = min (iter,10);
floatTest(chix1, base, incr, epsil, iter);
}
base = - FLT_MAX;
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i++) {
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i+=FLT_MAX_EXP/10) {
incr = ldexp (0.5,i);
iter = FLT_MAX/fabs(incr);
iter = min (iter,10);
floatTest(chix1, base, incr, epsil, iter);
}
printf ("done\n");
}
/*
* Verify that we can write and then read back
* the same analog value (DBR_DOUBLE)
*/
if( ca_field_type(chix1)==DBR_DOUBLE &&
ca_read_access(chix1) &&
ca_write_access(chix1)){
dbr_double_t incr;
dbr_double_t epsil;
dbr_double_t base;
unsigned long iter;
printf ("double test ...");
fflush(stdout);
epsil = DBL_EPSILON*4;
base = DBL_MIN;
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i++) {
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i+=DBL_MAX_EXP/10) {
incr = ldexp (0.5,i);
iter = DBL_MAX/fabs(incr);
iter = min (iter,10);
doubleTest(chix1, base, incr, epsil, iter);
}
base = DBL_MAX;
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i++) {
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i+=DBL_MAX_EXP/10) {
incr = - ldexp (0.5,i);
iter = DBL_MAX/fabs(incr);
iter = min (iter,10);
doubleTest(chix1, base, incr, epsil, iter);
}
base = - DBL_MAX;
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i++) {
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i+=DBL_MAX_EXP/10) {
incr = ldexp (0.5,i);
iter = DBL_MAX/fabs(incr);
iter = min (iter,10);
@@ -330,7 +361,33 @@ int doacctst(char *pname)
}
printf ("done\n");
}
#endif
/*
* ca_pend_io() must block
*/
if(ca_read_access(chix4)){
dbr_float_t req = 3.3;
dbr_float_t resp = 0.0;
printf ("get TMO test ...");
fflush(stdout);
SEVCHK(ca_put(DBR_FLOAT, chix4, &req),NULL);
SEVCHK(ca_get(DBR_FLOAT, chix4, &resp),NULL);
status = ca_pend_io(1.0e-12);
if (status==ECA_NORMAL) {
assert (resp == req);
}
else {
assert (resp == 0.0);
}
resp = 0.0;
SEVCHK (ca_put(DBR_FLOAT, chix4, &req),NULL);
SEVCHK (ca_get(DBR_FLOAT, chix4, &resp),NULL);
SEVCHK (ca_pend_io(2000.0),NULL);
assert (resp == req);
printf ("done\n");
}
/*
* verify we dont jam up on many uninterrupted
@@ -374,6 +431,7 @@ int doacctst(char *pname)
* solicitations
*/
if(ca_read_access(chix1)){
unsigned count=0u;
printf("Performing multiple get callback test...");
fflush(stdout);
for(i=0; i<10000; i++){
@@ -382,26 +440,28 @@ int doacctst(char *pname)
1,
chix1,
null_event,
NULL);
&count);
SEVCHK(status, NULL);
}
SEVCHK(ca_flush_io(), NULL);
while (count<10000u) {
ca_pend_event(1.0);
printf("waiting...");
fflush(stdout);
}
printf("done.\n");
}
else{
printf("Skipped multiple get cb test - no read access\n");
}
if(ca_v42_ok(chix1)){
test_sync_groups(chix1);
}
/*
* verify we dont jam up on many uninterrupted
* solicitations
*/
if(ca_write_access(chix1) && ca_v42_ok(chix1)){
unsigned count=0u;
printf("Performing multiple put callback test...");
fflush(stdout);
for(i=0; i<10000; i++){
@@ -412,17 +472,26 @@ int doacctst(char *pname)
chix1,
&fval,
null_event,
NULL);
&count);
SEVCHK(status, NULL);
}
SEVCHK(ca_flush_io(), NULL);
while (count<10000u) {
ca_pend_event(1.0);
printf("waiting...");
fflush(stdout);
}
printf("done.\n");
}
else{
printf("Skipped multiple put cb test - no write access\n");
}
if(ca_v42_ok(chix1)){
test_sync_groups(chix1);
}
/*
* verify we can add many monitors at once
*/
@@ -434,7 +503,7 @@ int doacctst(char *pname)
for(i=0; i<NELEMENTS(mid); i++){
SEVCHK(ca_add_event(DBR_GR_FLOAT, chix4, null_event,
(void *)0x55555555, &mid[i]),NULL);
NULL, &mid[i]),NULL);
}
/*
* force all of the monitors requests to
@@ -447,7 +516,7 @@ int doacctst(char *pname)
status = ca_clear_event(mid[i]);
if(status != ECA_NORMAL){
printf(
"Clear of event %d %x failed because \"%s\"\n",
"Clear of event %ld %x failed because \"%s\"\n",
i,
mid[i]->id,
ca_message(status));
@@ -469,7 +538,7 @@ int doacctst(char *pname)
DBR_FLOAT,
chix4,
EVENT_ROUTINE,
(void *)0xaaaaaaaa,
NULL,
&monix);
SEVCHK(status, NULL);
SEVCHK(ca_clear_event(monix), NULL);
@@ -477,7 +546,7 @@ int doacctst(char *pname)
DBR_FLOAT,
chix4,
EVENT_ROUTINE,
(void *)0xaaaaaaaa,
NULL,
&monix);
SEVCHK(status, NULL);
}
@@ -486,7 +555,7 @@ int doacctst(char *pname)
DBR_FLOAT,
chix4,
EVENT_ROUTINE,
(void *)0xaaaaaaaa,
NULL,
&monix);
SEVCHK(status, NULL);
SEVCHK(ca_clear_event(monix), NULL);
@@ -496,14 +565,14 @@ int doacctst(char *pname)
DBR_FLOAT,
chix3,
EVENT_ROUTINE,
(void *)0xaaaaaaaa,
NULL,
&monix);
SEVCHK(status, NULL);
status = ca_add_event(
DBR_FLOAT,
chix3,
write_event,
(void *)0xaaaaaaaa,
NULL,
&monix);
SEVCHK(status, NULL);
}
@@ -516,7 +585,7 @@ int doacctst(char *pname)
if (pfloat)
for (i = 0; i < NUM; i++) {
for (j = 0; j < NUM; j++)
sprintf(&pstring[j][0], "%d", j + 100);
sprintf(&pstring[j][0], "%ld", j + 100l);
SEVCHK(ca_array_put(
DBR_STRING,
NUM,
@@ -642,7 +711,11 @@ unsigned iterations)
SEVCHK (status, NULL);
status = ca_pend_io (100.0);
SEVCHK (status, NULL);
assert (fabs(fval-fretval) < epsilon);
if (fabs(fval-fretval) > epsilon) {
printf ("float test failed val written %f\n", fval);
printf ("float test failed val read %f\n", fretval);
assert(0);
}
fval += increment;
}
@@ -669,7 +742,11 @@ unsigned iterations)
SEVCHK (status, NULL);
status = ca_pend_io (100.0);
SEVCHK (status, NULL);
assert (fabs(fval-fretval) < epsilon);
if (fabs(fval-fretval) > epsilon) {
printf ("float test failed val written %f\n", fval);
printf ("float test failed val read %f\n", fretval);
assert(0);
}
fval += increment;
}
@@ -678,12 +755,20 @@ unsigned iterations)
void null_event(struct event_handler_args args)
{
static int i;
dbr_double_t fval = 3.8;
int status;
unsigned *pInc = (unsigned *) args.usr;
if (pInc) {
(*pInc)++;
}
#if 0
status = ca_put (DBR_DOUBLE, args.chid, &fval);
SEVCHK (status, NULL);
if (ca_state(args.chid)==cs_conn) {
status = ca_put(DBR_FLOAT, args.chid, &fval);
SEVCHK(status, "put failed in null_event()");
}
else {
printf("null_event() called for disconnected %s\n",
ca_name(args.chid));
}
#endif
if (i++ > 1000) {
@@ -728,10 +813,11 @@ void conn(struct connection_handler_args args)
ca_get_callback(DBR_GR_FLOAT, args.chid, get_cb, NULL);
}
void get_cb(struct event_handler_args args)
void get_cb (struct event_handler_args args)
{
if(!(args.status & CA_M_SUCCESS)){
printf("Get cb failed because \"%s\"\n", ca_message(args.status));
printf("Get cb failed because \"%s\"\n",
ca_message(args.status));
}
conn_cb_count++;
}
@@ -764,9 +850,9 @@ void test_sync_groups(chid chix)
SEVCHK(status, "SYNC GRP2");
status = ca_sg_test(gid1);
SEVCHK(status, "SYNC GRP1");
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(gid2);
SEVCHK(status, NULL);

View File

@@ -1,11 +1,16 @@
#ifdef __cplusplus
extern "C" {
#endif
#include <envDefs.h>
void caSetupAddrList(
ELLLIST *pList,
SOCKET socket);
void caPrintAddrList();
void caPrintAddrList(ELLLIST *pList);
void caDiscoverInterfaces(
ELLLIST *pList,
@@ -21,15 +26,18 @@ void caAddConfiguredAddr(
int local_addr(SOCKET socket, struct sockaddr_in *plcladdr);
unsigned short caFetchPortConfig(ENV_PARAM *pEnv, unsigned short defaultPort);
union caAddr{
struct sockaddr_in inetAddr;
struct sockaddr sockAddr;
};
typedef union ca_addr {
struct sockaddr_in in;
struct sockaddr sa;
}caAddr;
typedef struct {
ELLNODE node;
union caAddr srcAddr;
union caAddr destAddr;
ELLNODE node;
caAddr srcAddr;
caAddr destAddr;
}caAddrNode;
#ifdef __cplusplus
}
#endif

View File

@@ -78,6 +78,32 @@ int cac_select_io(struct timeval *ptimeout, int flags)
continue;
}
#ifdef WIN32
/* Under WIN32, FD_SETSIZE is the number of sockets,
* not the max. file descriptor value that you may select() !
*
* Of course it's not allowed to look into fd_count,
* but what shall we do? -kuk-
*/
if (pfdi->readMask.fd_count >= FD_SETSIZE)
{
ca_printf(
"%s.%d: no room for fd %d in fd_set (FD_SETSIZE=%d)\n",
__FILE__, __LINE__, piiu->sock_chan, FD_SETSIZE);
continue;
}
#else
if (piiu->sock_chan>=FD_SETSIZE)
{
ca_printf(
"%s.%d: file number %d > FD_SETSIZE=%d ignored\n",
__FILE__, __LINE__, piiu->sock_chan, FD_SETSIZE);
continue;
}
#endif
/*
* Dont bother receiving if we have insufficient
* space for the maximum UDP message

232
src/ca/caProto.h Normal file
View File

@@ -0,0 +1,232 @@
/*
* $Id$
*
* Author Jeffrey O. Hill
* johill@lanl.gov
* 505 665 1831
*
* Experimental Physics and Industrial Control System (EPICS)
*
* Copyright 1991, the Regents of the University of California,
* and the University of Chicago Board of Governors.
*
* This software was produced under U.S. Government contracts:
* (W-7405-ENG-36) at the Los Alamos National Laboratory,
* and (W-31-109-ENG-38) at Argonne National Laboratory.
*
* Initial development by:
* The Controls and Automation Group (AT-8)
* Ground Test Accelerator
* Accelerator Technology Division
* Los Alamos National Laboratory
*
* Co-developed with
* The Controls and Computing Group
* Accelerator Systems Division
* Advanced Photon Source
* Argonne National Laboratory
*
*
* History
* $Log$
* Revision 1.1.1.1 1996/06/20 00:28:15 jhill
* ca server installation
*
*
*/
#ifndef __CAPROTO__
/* $Id$ */
/*
* History
* .01 01xx90 joh removed status field in favor of a independent m_cmmd-
* saves space on every successful operation
*
* .02 041390 joh moved server ports to above IPPORT_USERRESERVED
* see in.h
*
* .03 060391 joh Bumped protocol version to 4 to support changes for
* SPARC alignment in db_access.h
*
* .04 071291 joh New command added - claim channel in use block
*
* .05 011294 joh New command added - write notify
*
* .06 020194 joh New command added for CA V4.1 - client name
*
* .07 041194 joh New command added for CA V4.2 - access rights
*
* .08 050594 joh New command added for CA V4.3 - echo request
*
* .09 050594 joh New command added for CA V4.3 - repeater fanout regis
*
* .10 050594 joh New command added for CA V4.3 - wakeup the server
* $Log$
* Revision 1.1.1.1 1996/06/20 00:28:15 jhill
* ca server installation
*
*
*/
#define __CAPROTO__
/* TCP/UDP port number (bumped each protocol change) */
#define CA_PROTOCOL_VERSION 4u
#define CA_MINOR_VERSION 7u
#define CA_UKN_MINOR_VERSION 0u /* unknown minor version */
#if CA_PROTOCOL_VERSION == 4u
#define CA_V41(MAJOR,MINOR) ((MINOR)>=1u)
#define CA_V42(MAJOR,MINOR) ((MINOR)>=2u)
#define CA_V43(MAJOR,MINOR) ((MINOR)>=3u)
#define CA_V44(MAJOR,MINOR) ((MINOR)>=4u)
#define CA_V45(MAJOR,MINOR) ((MINOR)>=5u)
#define CA_V46(MAJOR,MINOR) ((MINOR)>=6u)
#define CA_V47(MAJOR,MINOR) ((MINOR)>=7u)
#elif CA_PROTOCOL_VERSION > 4u
#define CA_V41(MAJOR,MINOR) ( 1u )
#define CA_V42(MAJOR,MINOR) ( 1u )
#define CA_V43(MAJOR,MINOR) ( 1u )
#define CA_V44(MAJOR,MINOR) ( 1u )
#define CA_V45(MAJOR,MINOR) ( 1u )
#define CA_V46(MAJOR,MINOR) ( 1u )
#define CA_V47(MAJOR,MINOR) ( 1u )
#else
#define CA_V41(MAJOR,MINOR) ( 0u )
#define CA_V42(MAJOR,MINOR) ( 0u )
#define CA_V43(MAJOR,MINOR) ( 0u )
#define CA_V44(MAJOR,MINOR) ( 0u )
#define CA_V45(MAJOR,MINOR) ( 0u )
#define CA_V46(MAJOR,MINOR) ( 0u )
#define CA_V47(MAJOR,MINOR) ( 0u )
#endif
/*
* NOTE: These port numbers are only used if the CA repeater and
* CA server port numbers cant be obtained from the EPICS
* environment variables "EPICS_CA_REPEATER_PORT" and
* "EPICS_CA_SERVER_PORT"
*/
#define CA_PORT_BASE IPPORT_USERRESERVED + 56U
#define CA_SERVER_PORT (CA_PORT_BASE+CA_PROTOCOL_VERSION*2u)
#define CA_REPEATER_PORT (CA_PORT_BASE+CA_PROTOCOL_VERSION*2u+1u)
#define MAX_UDP 1024u
#define MAX_TCP (MAX_UDP*16u) /* so waveforms fit */
#define MAX_MSG_SIZE (MAX_TCP) /* the larger of tcp and udp max */
/*
* architecture independent types
*
* (so far this works on all archs we have ported to)
*/
typedef unsigned short ca_uint16_t;
typedef unsigned int ca_uint32_t;
typedef float ca_float32_t;
typedef ca_uint32_t caResId;
/* values for m_cmmd */
#define CA_PROTO_NOOP 0u /* do nothing, but verify TCP */
#define CA_PROTO_EVENT_ADD 1u /* add an event */
#define CA_PROTO_EVENT_CANCEL 2u /* cancel an event */
#define CA_PROTO_READ 3u /* read and return a channel value*/
#define CA_PROTO_WRITE 4u /* write a channel value */
#define CA_PROTO_SNAPSHOT 5u /* snapshot of the system */
#define CA_PROTO_SEARCH 6u /* IOC channel search */
#define CA_PROTO_BUILD 7u /* build - obsolete */
#define CA_PROTO_EVENTS_OFF 8u /* flow control */
#define CA_PROTO_EVENTS_ON 9u /* flow control */
#define CA_PROTO_READ_SYNC 10u /* purge old reads */
#define CA_PROTO_ERROR 11u /* an operation failed */
#define CA_PROTO_CLEAR_CHANNEL 12u /* free chan resources */
#define CA_PROTO_RSRV_IS_UP 13u /* CA server has joined the net */
#define CA_PROTO_NOT_FOUND 14u /* channel not found */
#define CA_PROTO_READ_NOTIFY 15u /* add a one shot event */
#define CA_PROTO_READ_BUILD 16u /* read and build - obsolete */
#define REPEATER_CONFIRM 17u /* registration confirmation */
#define CA_PROTO_CLAIM_CIU 18u /* client claims resource in server */
#define CA_PROTO_WRITE_NOTIFY 19u /* notify after write chan value */
#define CA_PROTO_CLIENT_NAME 20u /* CA V4.1 identify client */
#define CA_PROTO_HOST_NAME 21u /* CA V4.1 identify client */
#define CA_PROTO_ACCESS_RIGHTS 22u /* CA V4.2 asynch access rights chg */
#define CA_PROTO_ECHO 23u /* CA V4.3 connection verify */
#define REPEATER_REGISTER 24u /* registr for repeater fan out */
#define CA_PROTO_SIGNAL 25u /* knock the server out of select */
#define CA_PROTO_CLAIM_CIU_FAILED 26u /* unable to create chan resource in server */
#define CA_PROTO_SERVER_DISCONN 27u /* server deletes PV (or channel) */
#define CA_PROTO_LAST_CMMD CA_PROTO_CLAIM_CIU_FAILED
/*
* for use with search and not_found (if search fails and
* its not a broadcast tell the client to look elesewhere)
*/
#define DOREPLY 10u
#define DONTREPLY 5u
/* size of object in bytes rounded up to nearest oct word */
#define OCT_ROUND(A) ((((unsigned long)(A))+7u)>>3u)
#define OCT_SIZEOF(A) (OCT_ROUND(sizeof(A)))
/* size of object in bytes rounded up to nearest long word */
#define QUAD_ROUND(A) (((unsigned long)(A))+3u)>>2u)
#define QUAD_SIZEOF(A) (QUAD_ROUND(sizeof(A)))
/* size of object in bytes rounded up to nearest short word */
#define BI_ROUND(A) ((((unsigned long)(A))+1u)>>1u)
#define BI_SIZEOF(A) (BI_ROUND(sizeof(A)))
/*
* For communicating access rights to the clients
*
* (placed in m_available hdr field of CA_PROTO_ACCESS_RIGHTS cmmd
*/
#define CA_PROTO_ACCESS_RIGHT_READ (1u<<0u)
#define CA_PROTO_ACCESS_RIGHT_WRITE (1u<<1u)
/*
* All structures passed in the protocol must have individual
* fields aligned on natural boundaries.
*
* NOTE: all structures declared in this file must have a
* byte count which is evenly divisible by 8 matching
* the largest atomic data type in db_access.h.
*/
#define CA_MESSAGE_ALIGN(A) (OCT_ROUND(A)<<3u)
/*
* the common part of each message sent/recv by the
* CA server.
*/
typedef struct ca_hdr {
ca_uint16_t m_cmmd; /* operation to be performed */
ca_uint16_t m_postsize; /* size of message extension */
ca_uint16_t m_type; /* operation data type */
ca_uint16_t m_count; /* operation data count */
ca_uint32_t m_cid; /* channel identifier */
ca_uint32_t m_available; /* undefined message location for use
* by client processes */
}caHdr;
/*
* for monitor (event) message extension
*/
struct mon_info{
ca_float32_t m_lval; /* low delta */
ca_float32_t m_hval; /* high delta */
ca_float32_t m_toval; /* period btween samples */
ca_uint16_t m_mask; /* event select mask */
ca_uint16_t m_pad; /* extend to 32 bits */
};
struct monops { /* monitor req opi to ioc */
caHdr m_header;
struct mon_info m_info;
};
/*
* PV names greater than this length assumed to be invalid
*/
#define unreasonablePVNameSize 500u
#endif /* __CAPROTO__ */

1008
src/ca/cadef.h Normal file

File diff suppressed because it is too large Load Diff

222
src/ca/caerr.h Normal file
View File

@@ -0,0 +1,222 @@
/************************************************************************/
/* */
/* L O S A L A M O S */
/* Los Alamos National Laboratory */
/* Los Alamos, New Mexico 87545 */
/* */
/* Copyright, 1986, The Regents of the University of California. */
/* */
/* Author: Jeffrey O. Hill */
/* */
/* History */
/* ------- */
/* */
/* Date Programmer Comments */
/* ---- ---------- -------- */
/* 08--87 joh Init Release */
/* 031290 joh Changed __CAERR__ to INCLcaerrh */
/* 102990 joh added readonly for VAXC share image */
/* 032092 joh added ECA_BADMASK */
/* 072792 joh added ECA_IODONE & ECA_IOINPROGESS */
/* 102992 joh changed wording on the no vx fp message */
/* 011494 joh Added ECA_BADSYNCGRP */
/* 021194 joh Added ECA_PUTCBINPROG */
/* */
/*_begin */
/************************************************************************/
/* */
/* Name: */
/* Title: */
/* File: */
/* Environment: VMS, UNIX, VRTX */
/* Equipment: VAX, SUN, VME */
/* */
/* */
/* Purpose */
/* ------- */
/* */
/* CA error message declaration include file */
/* */
/* */
/* Special comments */
/* ------- -------- */
/* */
/************************************************************************/
/*_end */
#ifndef INCLcaerrh
#define INCLcaerrh
#include <shareLib.h>
#include <epicsTypes.h>
#ifndef HDRVERSIONID
# define HDRVERSIONID(NAME,VERS)
#endif /*HDRVERSIONID*/
HDRVERSIONID(caerrh, "@(#) $Id$")
/* CA Status Code Definitions */
#define CA_K_INFO 3 /* successful */
#define CA_K_ERROR 2 /* failed- continue */
#define CA_K_SUCCESS 1 /* successful */
#define CA_K_WARNING 0 /* unsuccessful */
#define CA_K_SEVERE 4 /* failed- quit */
#define CA_K_FATAL CA_K_ERROR | CA_K_SEVERE
#define CA_M_MSG_NO 0x0000FFF8
#define CA_M_SEVERITY 0x00000007
#define CA_M_LEVEL 0x00000003
#define CA_M_SUCCESS 0x00000001
#define CA_M_ERROR 0x00000002
#define CA_M_SEVERE 0x00000004
#define CA_S_MSG_NO 0x0D
#define CA_S_SEVERITY 0x03
#define CA_V_MSG_NO 0x03
#define CA_V_SEVERITY 0x00
#define CA_V_SUCCESS 0x00
/* Define MACROS to extract/insert individual fields from a status value */
#define CA_EXTRACT_MSG_NO(code)\
( ( (code) & CA_M_MSG_NO ) >> CA_V_MSG_NO )
#define CA_EXTRACT_SEVERITY(code)\
( ( (code) & CA_M_SEVERITY ) >> CA_V_SEVERITY )
#define CA_EXTRACT_SUCCESS(code)\
( ( (code) & CA_M_SUCCESS ) >> CA_V_SUCCESS )
#define CA_INSERT_MSG_NO(code)\
( ((code)<< CA_V_MSG_NO) & CA_M_MSG_NO )
#define CA_INSERT_SEVERITY(code)\
( ((code)<< CA_V_SEVERITY)& CA_M_SEVERITY )
#define CA_INSERT_SUCCESS(code)\
( ((code)<< CA_V_SUCCESS) & CA_M_SUCCESS )
#define DEFMSG(SEVERITY,NUMBER)\
(CA_INSERT_MSG_NO(NUMBER) | CA_INSERT_SEVERITY(SEVERITY))
#define ECA_NORMAL DEFMSG(CA_K_SUCCESS, 0)
#define ECA_MAXIOC DEFMSG(CA_K_ERROR, 1)
#define ECA_UKNHOST DEFMSG(CA_K_ERROR, 2)
#define ECA_UKNSERV DEFMSG(CA_K_ERROR, 3)
#define ECA_SOCK DEFMSG(CA_K_ERROR, 4)
#define ECA_CONN DEFMSG(CA_K_WARNING, 5)
#define ECA_ALLOCMEM DEFMSG(CA_K_WARNING, 6)
#define ECA_UKNCHAN DEFMSG(CA_K_WARNING, 7)
#define ECA_UKNFIELD DEFMSG(CA_K_WARNING, 8)
#define ECA_TOLARGE DEFMSG(CA_K_ERROR, 9)
#define ECA_TIMEOUT DEFMSG(CA_K_WARNING, 10)
#define ECA_NOSUPPORT DEFMSG(CA_K_WARNING, 11)
#define ECA_STRTOBIG DEFMSG(CA_K_WARNING, 12)
#define ECA_BADCHID DEFMSG(CA_K_ERROR, 13)
#define ECA_BADTYPE DEFMSG(CA_K_ERROR, 14)
#define ECA_CHIDNOTFND DEFMSG(CA_K_INFO, 15)
#define ECA_CHIDRETRY DEFMSG(CA_K_INFO, 16)
#define ECA_INTERNAL DEFMSG(CA_K_FATAL, 17)
#define ECA_DBLCLFAIL DEFMSG(CA_K_WARNING, 18)
#define ECA_GETFAIL DEFMSG(CA_K_WARNING, 19)
#define ECA_PUTFAIL DEFMSG(CA_K_WARNING, 20)
#define ECA_ADDFAIL DEFMSG(CA_K_WARNING, 21)
#define ECA_BADCOUNT DEFMSG(CA_K_WARNING, 22)
#define ECA_BADSTR DEFMSG(CA_K_ERROR, 23)
#define ECA_DISCONN DEFMSG(CA_K_WARNING, 24)
#define ECA_DBLCHNL DEFMSG(CA_K_WARNING, 25)
#define ECA_EVDISALLOW DEFMSG(CA_K_ERROR, 26)
#define ECA_BUILDGET DEFMSG(CA_K_WARNING, 27)
#define ECA_NEEDSFP DEFMSG(CA_K_WARNING, 28)
#define ECA_OVEVFAIL DEFMSG(CA_K_WARNING, 29)
#define ECA_BADMONID DEFMSG(CA_K_ERROR, 30)
#define ECA_NEWADDR DEFMSG(CA_K_WARNING, 31)
#define ECA_NEWCONN DEFMSG(CA_K_INFO, 32)
#define ECA_NOCACTX DEFMSG(CA_K_WARNING, 33)
#define ECA_DEFUNCT DEFMSG(CA_K_FATAL, 34)
#define ECA_EMPTYSTR DEFMSG(CA_K_WARNING, 35)
#define ECA_NOREPEATER DEFMSG(CA_K_WARNING, 36)
#define ECA_NOCHANMSG DEFMSG(CA_K_WARNNING, 37)
#define ECA_DLCKREST DEFMSG(CA_K_WARNING, 38)
#define ECA_SERVBEHIND DEFMSG(CA_K_WARNING, 39)
#define ECA_NOCAST DEFMSG(CA_K_WARNING, 40)
#define ECA_BADMASK DEFMSG(CA_K_ERROR, 41)
#define ECA_IODONE DEFMSG(CA_K_INFO, 42)
#define ECA_IOINPROGRESS DEFMSG(CA_K_INFO, 43)
#define ECA_BADSYNCGRP DEFMSG(CA_K_ERROR, 44)
#define ECA_PUTCBINPROG DEFMSG(CA_K_ERROR, 45)
#define ECA_NORDACCESS DEFMSG(CA_K_WARNING, 46)
#define ECA_NOWTACCESS DEFMSG(CA_K_WARNING, 47)
#define ECA_ANACHRONISM DEFMSG(CA_K_ERROR, 48)
#define ECA_NOSEARCHADDR DEFMSG(CA_K_WARNING, 49)
#define ECA_NOCONVERT DEFMSG(CA_K_WARNING, 50)
#ifndef CA_ERROR_GLBLSOURCE
epicsShareExtern READONLY char *ca_message_text[];
#else
READONLY 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 array or data structure specified will not fit in CA message buffer",
"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 type you have requested from this channel is unknown",
"Remote Channel not found",
"Unable to locate all user specified channels",
"Channel Access Internal Failure",
"The requested local DB operation failed",
"Could not perform a database value get for that channel",
"Could not perform a database value put for that channel",
"Could not perform a database event add for that channel",
"Count requested inappropriate for that channel",
"The supplied string has improper format",
"Network connection lost",
"Ambiguous channel host (multiple IOC's have a channel by that name)",
"The CA routine called is inappropriate for use within an event handler",
"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",
"A monitor by that id cant be found",
"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",
"The event selection mask supplied is empty or inappropriate",
"IO operations have completed",
"IO operations are in progress",
"Invalid synchronous group identifier",
"Put call back operation collision with put call back operation in progress",
"Read access denied",
"Write access denied",
"Sorry, that anachronistic feature of CA is no longer supported",
"The search request/beacon address list was empty after initialization",
"Data conversion between client's type and the server's type failed"
};
#endif
#ifdef __STDC__
READONLY char *ca_message(long ca_status);
#else /* __STDC__ */
READONLY char *ca_message();
#endif
#endif

36
src/ca/caeventmask.h Normal file
View File

@@ -0,0 +1,36 @@
/*
$Id$
caeventmask.h
Modification History
joh 04-16-90 Created
*/
#ifndef INCLcaeventmaskh
#define INCLcaeventmaskh
/*
event selections
(If any more than 8 of these are needed then update the
select field in the event_block struct in db_event.c from
unsigned char to unsigned short)
DBE_VALUE
Trigger an event when a significant change in the channel's value
occurs. Relies on the monitor deadband field under DCT.
DBE_LOG
Trigger an event when an archive significant change in the channel's
valuue occurs. Relies on the archiver monitor deadband field under DCT.
DBE_ALARM
Trigger an event when the alarm state changes
*/
#define DBE_VALUE (1<<0)
#define DBE_LOG (1<<1)
#define DBE_ALARM (1<<2)
#endif

View File

@@ -141,7 +141,7 @@ int catime (char *channelName)
itemList[i].val.intval = 0;
itemList[i].type = DBR_INT;
}
printf ("interger test\n");
printf ("integer test\n");
test (itemList, NELEMENTS(itemList));
printf ("free test\n");

View File

@@ -29,7 +29,10 @@
/* .12 110194 joh improved search scheduling */
/* (dont send all chans in a block) */
/* */
/* $Log$ */
/* $Log$
* Revision 1.34 1995/08/22 00:19:21 jhill
* use current time var to init time stamp in a beacon hash entry
* */
/*_begin */
/************************************************************************/
/* */
@@ -208,7 +211,7 @@ void manage_conn(int silent)
/*
* set the retry interval
*/
assert(ca_static->ca_search_retry < NBBY*sizeof(idelay));
assert(ca_static->ca_search_retry < CHAR_BIT*sizeof(idelay));
idelay = 1;
idelay = idelay << ca_static->ca_search_retry;
delay = idelay * CA_RECAST_DELAY; /* sec */

View File

@@ -51,7 +51,6 @@ void flow_control(struct ioc_in_use *piiu)
{
unsigned nbytes;
int status;
int busy = piiu->client_busy;
LOCK;
@@ -74,19 +73,19 @@ void flow_control(struct ioc_in_use *piiu)
*/
if (nbytes) {
piiu->contiguous_msg_count++;
if (!busy)
if (!piiu->client_busy)
if (piiu->contiguous_msg_count >
MAX_CONTIGUOUS_MSG_COUNT) {
piiu->client_busy = TRUE;
ca_busy_message(piiu);
# ifdef DEBUG
# if defined(DEBUG)
printf("fc on\n");
# endif
}
} else {
piiu->contiguous_msg_count = 0;
if (busy) {
# ifdef DEBUG
if (piiu->client_busy) {
# if defined(DEBUG)
printf("fc off\n");
# endif
ca_ready_message(piiu);

View File

@@ -45,8 +45,6 @@ static char *sccsId = "@(#) $Id$";
* also called by the server. All locks required are applied at
* a higher level.
*/
#undef LOCK
#undef UNLOCK
/*
@@ -295,9 +293,9 @@ void caDiscoverInterfaces(ELLLIST *pList, int socket, int port)
continue;
}
pNode->destAddr.inetAddr = *pInetAddr;
pNode->destAddr.inetAddr.sin_port = htons(port);
pNode->srcAddr.inetAddr = localAddr;
pNode->destAddr.in = *pInetAddr;
pNode->destAddr.in.sin_port = htons(port);
pNode->srcAddr.in = localAddr;
/*
* LOCK applied externally

View File

@@ -46,7 +46,19 @@
/* 021794 joh turn on SO_REUSEADDR only after the test for */
/* address in use so that test works on UNIX */
/* kernels that support multicast */
/* $Log$ */
/* $Log$
* Revision 1.63 1996/07/09 22:41:28 jhill
* silence gcc warning
*
* Revision 1.62 1996/06/19 17:59:06 jhill
* many 3.13 beta changes
*
* Revision 1.61 1995/12/19 19:33:02 jhill
* function prototype changes
*
* Revision 1.60 1995/11/29 19:26:01 jhill
* cleaned up interface to recv() and send()
* */
/* */
/*_begin */
/************************************************************************/
@@ -84,6 +96,7 @@ LOCAL void ca_process_tcp(struct ioc_in_use *piiu);
LOCAL void ca_process_udp(struct ioc_in_use *piiu);
LOCAL void cacRingBufferInit(struct ca_buffer *pBuf, unsigned long size);
LOCAL char *getToken(char **ppString);
LOCAL void close_ioc (IIU *piiu);
@@ -158,7 +171,9 @@ int net_proto
int status;
SOCKET sock;
int true = TRUE;
#if 0
struct sockaddr_in saddr;
#endif
caAddrNode *pNode;
LOCK;
@@ -193,9 +208,9 @@ int net_proto
return ECA_ALLOCMEM;
}
memset((char *)&pNode->destAddr,0,sizeof(pNode->destAddr));
pNode->destAddr.inetAddr.sin_family = AF_INET;
pNode->destAddr.inetAddr.sin_addr = *pnet_addr;
pNode->destAddr.inetAddr.sin_port = htons (port);
pNode->destAddr.in.sin_family = AF_INET;
pNode->destAddr.in.sin_addr = *pnet_addr;
pNode->destAddr.in.sin_port = htons (port);
ellAdd(&piiu->destAddr, &pNode->node);
piiu->recvBytes = tcp_recv_msg;
piiu->sendBytes = cac_tcp_send_msg_piiu;
@@ -326,8 +341,8 @@ int net_proto
/* connect */
status = connect(
sock,
&pNode->destAddr.sockAddr,
sizeof(pNode->destAddr.sockAddr));
&pNode->destAddr.sa,
sizeof(pNode->destAddr.sa));
if(status < 0){
ca_printf("CAC: no conn err=\"%s\"\n", strerror(MYERRNO));
status = socket_close(sock);
@@ -396,6 +411,7 @@ int net_proto
return ECA_CONN;
}
#if 0
memset((char *)&saddr,0,sizeof(saddr));
saddr.sin_family = AF_INET;
/*
@@ -411,6 +427,7 @@ int net_proto
ca_printf("CAC: bind (err=%s)\n",strerror(MYERRNO));
ca_signal(ECA_INTERNAL,"bind failed");
}
#endif
/*
* load user and auto configured
@@ -540,7 +557,7 @@ void caSetupBCastAddrList (ELLLIST *pList, SOCKET sock, unsigned port)
*/
void notify_ca_repeater()
{
struct extmsg msg;
caHdr msg;
struct sockaddr_in saddr;
int status;
static int once = FALSE;
@@ -672,8 +689,8 @@ LOCAL void cac_udp_send_msg_piiu(struct ioc_in_use *piiu)
&piiu->send.buf[piiu->send.rdix],
(int) sendCnt,
0,
&pNode->destAddr.sockAddr,
sizeof(pNode->destAddr.sockAddr));
&pNode->destAddr.sa,
sizeof(pNode->destAddr.sa));
if(status>=0){
actualSendCnt = (unsigned long) status;
assert (actualSendCnt == sendCnt);
@@ -985,7 +1002,7 @@ LOCAL void ca_process_tcp(struct ioc_in_use *piiu)
/* post message to the user */
status = post_msg(
piiu,
&pNode->destAddr.inetAddr.sin_addr,
&pNode->destAddr.in.sin_addr,
&piiu->recv.buf[piiu->recv.rdix],
bytesToProcess);
if(status != OK){
@@ -1184,7 +1201,7 @@ LOCAL void ca_process_udp(struct ioc_in_use *piiu)
*
*
*/
void close_ioc (struct ioc_in_use *piiu)
LOCAL void close_ioc (IIU *piiu)
{
caAddrNode *pNode;
chid chix;
@@ -1216,7 +1233,7 @@ void close_ioc (struct ioc_in_use *piiu)
*/
pNode = (caAddrNode *) piiu->destAddr.node.next;
assert (pNode);
removeBeaconInetAddr (&pNode->destAddr.inetAddr.sin_addr);
removeBeaconInetAddr (&pNode->destAddr.in.sin_addr);
/*
* Mark all of their channels disconnected
@@ -1233,7 +1250,7 @@ void close_ioc (struct ioc_in_use *piiu)
chix = (chid) ellFirst(&piiu->chidlist);
while (chix) {
pNext = (chid) ellNext(&chix->node);
cacDisconnectChannel(chix, TRUE);
cacDisconnectChannel(chix, cs_conn);
chix = pNext;
}
}
@@ -1270,8 +1287,9 @@ void close_ioc (struct ioc_in_use *piiu)
/*
* cacDisconnectChannel()
* (LOCK must be applied when calling this routine)
*/
void cacDisconnectChannel(chid chix, int fullDisconnect)
void cacDisconnectChannel(chid chix, enum channel_state state)
{
struct ioc_in_use *piiu;
@@ -1289,7 +1307,7 @@ void cacDisconnectChannel(chid chix, int fullDisconnect)
/*
* call their connection handler as required
*/
if (fullDisconnect) {
if (state==cs_conn) {
chix->state = cs_prev_conn;
/*
@@ -1618,13 +1636,13 @@ char *localHostName()
void caAddConfiguredAddr(ELLLIST *pList, ENV_PARAM *pEnv,
SOCKET socket, int port)
{
caAddrNode *pNode;
ENV_PARAM list;
char *pStr;
char *pToken;
union caAddr addr;
union caAddr localAddr;
int status;
caAddrNode *pNode;
ENV_PARAM list;
char *pStr;
char *pToken;
caAddr addr;
caAddr localAddr;
int status;
pStr = envGetConfigParam(
pEnv,
@@ -1637,17 +1655,17 @@ void caAddConfiguredAddr(ELLLIST *pList, ENV_PARAM *pEnv,
/*
* obtain a local address
*/
status = local_addr(socket, &localAddr.inetAddr);
status = local_addr(socket, &localAddr.in);
if(status){
return;
}
while(pToken = getToken(&pStr)){
while( (pToken = getToken(&pStr)) ){
memset((char *)&addr,0,sizeof(addr));
addr.inetAddr.sin_family = AF_INET;
addr.inetAddr.sin_port = htons(port);
addr.inetAddr.sin_addr.s_addr = inet_addr(pToken);
if(addr.inetAddr.sin_addr.s_addr == -1){
addr.in.sin_family = AF_INET;
addr.in.sin_port = htons(port);
addr.in.sin_addr.s_addr = inet_addr(pToken);
if (addr.in.sin_addr.s_addr == ~0ul) {
ca_printf(
"%s: Parsing '%s'\n",
__FILE__,
@@ -1660,11 +1678,9 @@ void caAddConfiguredAddr(ELLLIST *pList, ENV_PARAM *pEnv,
pNode = (caAddrNode *) calloc(1,sizeof(*pNode));
if(pNode){
pNode->destAddr.inetAddr = addr.inetAddr;
pNode->srcAddr.inetAddr = localAddr.inetAddr;
LOCK;
pNode->destAddr.in = addr.in;
pNode->srcAddr.in = localAddr.in;
ellAdd(pList, &pNode->node);
UNLOCK;
}
}
@@ -1719,12 +1735,12 @@ void caPrintAddrList(ELLLIST *pList)
printf("Channel Access Address List\n");
pNode = (caAddrNode *) ellFirst(pList);
while(pNode){
if(pNode->destAddr.sockAddr.sa_family != AF_INET){
if(pNode->destAddr.sa.sa_family != AF_INET){
printf("<addr entry not in internet format>");
continue;
}
printf( "%s\n",
inet_ntoa(pNode->destAddr.inetAddr.sin_addr));
inet_ntoa(pNode->destAddr.in.sin_addr));
pNode = (caAddrNode *) ellNext(&pNode->node);
}

View File

@@ -32,6 +32,24 @@
/************************************************************************/
/* $Log$
* Revision 1.55 1996/08/05 19:21:26 jhill
* removed unused proto
*
* Revision 1.54 1996/06/20 21:43:15 jhill
* restored io_done_sem (removed by cleanup)
*
* Revision 1.53 1996/06/20 21:19:35 jhill
* fixed posix signal problem with "cc -Xc"
*
* Revision 1.52 1996/06/19 17:59:07 jhill
* many 3.13 beta changes
*
* Revision 1.51 1995/12/19 19:33:07 jhill
* function prototype changes
*
* Revision 1.50 1995/10/18 16:45:40 jhill
* Use recast delay greater than one vxWorks tick
*
* Revision 1.49 1995/10/12 01:33:12 jhill
* Initial delay between search frames went from .1 to .01 sec,
* Added flush pending flag, Make all usage of port be unsigned short.
@@ -95,10 +113,10 @@ HDRVERSIONID(iocinfh, "$Id$")
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <stdlib.h>
#include <limits.h>
#include <stdarg.h>
#include <time.h>
#include <shareLib.h>
@@ -121,7 +139,7 @@ HDRVERSIONID(iocinfh, "$Id$")
* CA private includes
*/
#include "addrList.h"
#include "iocmsg.h"
#include "caProto.h"
#ifndef min
#define min(A,B) ((A)>(B)?(B):(A))
@@ -131,10 +149,6 @@ HDRVERSIONID(iocinfh, "$Id$")
#define max(A,B) ((A)<(B)?(B):(A))
#endif
#ifndef NBBY
# define NBBY 8 /* number of bits per byte */
#endif
#define MSEC_PER_SEC 1000L
#define USEC_PER_SEC 1000000L
@@ -156,7 +170,7 @@ if(!ca_static){ \
#define VALID_MSG(PIIU) (piiu->read_seq == piiu->cur_read_seq)
#define SETPENDRECV {pndrecvcnt++;}
#define CLRPENDRECV(LOCK) {if(--pndrecvcnt<1){cac_io_done(LOCK); POST_IO_EV;}}
#define CLRPENDRECV(LOCK) {if(--pndrecvcnt<1){POST_IO_EV;}}
struct udpmsglog{
long nbytes;
@@ -176,12 +190,6 @@ struct putCvrtBuf{
#define CA_DO_SENDS (1<<0)
#define CA_DO_RECVS (1<<1)
struct pending_io_event{
ELLNODE node;
void (*io_done_sub)();
void *io_done_arg;
};
typedef struct timeval ca_time;
#define LD_CA_TIME(FLOAT_TIME,PCATIME) \
@@ -284,7 +292,7 @@ typedef struct caclient_put_notify{
#define nextFastBucketId (ca_static->ca_nextFastBucketId)
#if defined(vxWorks)
# define io_done_sem (ca_static->ca_io_done_sem)
# define io_done_sem (ca_static->ca_io_done_sem)
# define evuser (ca_static->ca_evuser)
# define client_lock (ca_static->ca_client_lock)
# define event_lock (ca_static->ca_event_lock)
@@ -355,7 +363,7 @@ typedef struct ioc_in_use{
unsigned long curDataBytes;
struct ca_buffer send;
struct ca_buffer recv;
struct extmsg curMsg;
caHdr curMsg;
struct ca_static *pcas;
void *pCurData;
void (*sendBytes)(struct ioc_in_use *);
@@ -448,6 +456,7 @@ struct ca_static{
unsigned short ca_server_port;
unsigned short ca_repeater_port;
char ca_sprintf_buf[256];
char ca_new_err_code_msg_buf[128u];
unsigned ca_post_msg_active:1;
unsigned ca_manage_conn_active:1;
unsigned ca_repeater_contacted:1;
@@ -467,7 +476,6 @@ struct ca_static{
int ca_event_tid;
int ca_tid;
int recv_tid;
unsigned ca_local_ticks;
#endif
};
@@ -538,7 +546,6 @@ void flow_control(struct ioc_in_use *piiu);
int broadcast_addr(struct in_addr *pcastaddr);
void ca_repeater(void);
void cac_recv_task(int tid);
void cac_io_done(int lock);
void ca_sg_init(void);
void ca_sg_shutdown(struct ca_static *ca_temp);
int cac_select_io(struct timeval *ptimeout, int flags);
@@ -593,8 +600,6 @@ unsigned short port,
int net_proto
);
int ca_check_for_fp(void);
void caSetupBCastAddrList (ELLLIST *pList, SOCKET sock, unsigned port);
int ca_os_independent_init (void);
@@ -603,7 +608,6 @@ void freeBeaconHash(struct ca_static *ca_temp);
void removeBeaconInetAddr(const struct in_addr *pnet_addr);
bhe *lookupBeaconInetAddr(const struct in_addr *pnet_addr);
bhe *createBeaconHashEntry(const struct in_addr *pnet_addr);
void close_ioc(IIU *piiu);
void notify_ca_repeater(void);
void cac_clean_iiu_list(void);
@@ -627,7 +631,7 @@ ca_time cac_time_sum(ca_time *pTVA, ca_time *pTVB);
void caIOBlockFree(evid pIOBlock);
void clearChannelResources(unsigned id);
void caSetDefaultPrintfHandler (void);
void cacDisconnectChannel(chid chix, int fullDisconnect);
void cacDisconnectChannel(chid chix, enum channel_state state);
int caSendMsgPending(void);
/*

View File

@@ -44,6 +44,7 @@ static char *os_depenhSccsId = "$Id$";
#ifdef UNIX
# include <unistd.h>
# include <errno.h>
# include <time.h>
# include <sys/types.h>
# include <sys/time.h>
# include <sys/ioctl.h>
@@ -218,11 +219,6 @@ static char *os_depenhSccsId = "$Id$";
#define LOCAL static
#endif
/* delay for when a poll is used */
/* NOTE: DELAYTICKS must be less than TICKSPERSEC */
#define DELAYTICKS 50L /* (adjust units below) */
#define TICKSPERSEC 1000L /* mili sec per sec */
/*
* BSD prototypes missing from SUNOS4, MULTINET and
* perhaps other environments
@@ -230,14 +226,6 @@ static char *os_depenhSccsId = "$Id$";
#include <epicsTypes.h>
#include <bsdProto.h>
/*
* order of ops is important here
*
* NOTE: large OS dependent SYFREQ might cause an overflow
*/
#define LOCALTICKS ((SYSFREQ*DELAYTICKS)/TICKSPERSEC)
#if defined(vxWorks)
# define VXTASKIDNONE 0
# define LOCK semTake(client_lock, WAIT_FOREVER);
@@ -255,8 +243,6 @@ static char *os_depenhSccsId = "$Id$";
# define socket_ioctl(A,B,C) ioctl(A,B,(int)C)
# define MYERRNO (errnoGet()&0xffff)
# define POST_IO_EV semGive(io_done_sem)
# define SYSFREQ ((long) sysClkRateGet()) /* usually 60 Hz */
# define time(A) (tickGet()/SYSFREQ)
typedef int SOCKET;
# define INVALID_SOCKET (-1)
#endif
@@ -271,7 +257,6 @@ static char *os_depenhSccsId = "$Id$";
# define socket_ioctl(A,B,C) ioctl(A,B,C)
# define MYERRNO errno
# define POST_IO_EV
# define SYSFREQ 1000000L /* 1 MHz */
typedef int SOCKET;
# define INVALID_SOCKET (-1)
#endif
@@ -297,7 +282,6 @@ static char *os_depenhSccsId = "$Id$";
# endif
# endif
# define POST_IO_EV
# define SYSFREQ 10000000L /* 10 MHz */
# define LOCK
# define UNLOCK
# define LOCKEVENTS
@@ -325,7 +309,6 @@ static char *os_depenhSccsId = "$Id$";
# define socket_ioctl(A,B,C) ioctlsocket(A,B,C)
# define MYERRNO WSAGetLastError()
# define POST_IO_EV
# define SYSFREQ 1000000L /* 1 MHz */
#endif /*WIN32*/

View File

@@ -29,6 +29,15 @@
* Modification Log:
* -----------------
* $Log$
* Revision 1.18 1996/06/20 21:19:29 jhill
* fixed posix signal problem with "cc -Xc"
*
* Revision 1.17 1995/12/19 19:33:42 jhill
* added missing arg to execlp()
*
* Revision 1.16 1995/10/12 01:35:28 jhill
* Moved cac_mux_io() to iocinf.c
*
* Revision 1.15 1995/08/22 00:22:07 jhill
* Dont recompute connection timers if the time stamp hasnt changed
*
@@ -41,19 +50,21 @@
#include "iocinf.h"
#define _POSIX_C_SOURCE 3 /* for solaris and "cc -Xc" */
#include <signal.h>
/*
* cac_gettimeval
*/
void cac_gettimeval(struct timeval *pt)
{
struct timezone tz;
int status;
/*
* Not POSIX but available on most of the systems that we use
*/
status = gettimeofday(pt, &tz);
status = gettimeofday(pt, NULL);
assert(status == 0);
}
@@ -223,11 +234,11 @@ void ca_spawn_repeater()
* if here
*/
pImageName = "caRepeater";
status = execlp(pImageName, NULL);
status = execlp(pImageName, pImageName, NULL);
if(status<0){
ca_printf("!!WARNING!!\n");
ca_printf("The executable \"%s\" couldnt be located\n", pImageName);
ca_printf("because - %s\n", strerror(MYERRNO));
ca_printf("because of errno = \"%s\"\n", strerror(MYERRNO));
ca_printf("You may need to modify your PATH environment variable.\n");
ca_printf("Creating CA repeater with fork() system call.\n");
ca_printf("Repeater will inherit parents process name and resources.\n");

View File

@@ -63,6 +63,18 @@
* datagram socket (and watching for ECONNREFUSED)
*
* $Log$
* Revision 1.32.6.1 1996/07/12 00:39:59 jhill
* fixed client disconnect problem under solaris
*
* Revision 1.35 1996/07/10 23:30:11 jhill
* fixed GNU warnings
*
* Revision 1.34 1996/06/19 17:59:24 jhill
* many 3.13 beta changes
*
* Revision 1.33 1995/11/29 19:19:05 jhill
* Added $log$
*
*/
static char *sccsId = "@(#)$Id$";
@@ -89,8 +101,9 @@ static char buf[MAX_UDP];
LOCAL void register_new_client(struct sockaddr_in *pLocal,
struct sockaddr_in *pFrom);
LOCAL void verifyClients();
#define PORT_ANY 0U
LOCAL SOCKET makeSocket(unsigned short port);
LOCAL SOCKET makeSocket(unsigned short port, int reuseAddr);
LOCAL void fanOut(struct sockaddr_in *pFrom, const char *pMsg, unsigned msgSize);
@@ -116,7 +129,7 @@ void ca_repeater()
ellInit(&client_list);
sock = makeSocket(port);
sock = makeSocket(port, TRUE);
if (sock==INVALID_SOCKET) {
/*
* test for server was already started
@@ -142,7 +155,7 @@ void ca_repeater()
#endif
while(TRUE){
struct extmsg *pMsg;
caHdr *pMsg;
size = recvfrom(
sock,
@@ -167,7 +180,7 @@ void ca_repeater()
continue;
}
pMsg = (struct extmsg *) buf;
pMsg = (caHdr *) buf;
/*
* both zero length message and a registration message
@@ -207,7 +220,7 @@ LOCAL void fanOut(struct sockaddr_in *pFrom, const char *pMsg, unsigned msgSize)
int status;
ellInit(&theClients);
while (pclient=(struct one_client *)ellGet(&client_list)) {
while ( (pclient=(struct one_client *)ellGet(&client_list)) ) {
ellAdd(&theClients, &pclient->node);
/*
@@ -250,11 +263,47 @@ LOCAL void fanOut(struct sockaddr_in *pFrom, const char *pMsg, unsigned msgSize)
ellConcat(&client_list, &theClients);
}
/*
* verifyClients()
* (this is required because solaris has a half baked version of sockets)
*/
LOCAL void verifyClients()
{
ELLLIST theClients;
SOCKET sock;
struct one_client *pclient;
ellInit(&theClients);
while ( (pclient=(struct one_client *)ellGet(&client_list)) ) {
ellAdd(&theClients, &pclient->node);
sock = makeSocket(ntohs(pclient->from.sin_port), FALSE);
if (sock>=0) {
#ifdef DEBUG
ca_printf("Deleted client %d\n",
pclient->from.sin_port);
#endif
ellDelete(&theClients, &pclient->node);
socket_close(sock);
socket_close(pclient->sock);
free(pclient);
}
else {
if (MYERRNO!=EADDRINUSE) {
ca_printf(
"CA Repeater: bind test err was \"%s\"\n", strerror(MYERRNO));
}
}
}
ellConcat(&client_list, &theClients);
}
/*
* makeSocket()
*/
LOCAL SOCKET makeSocket(unsigned short port)
LOCAL SOCKET makeSocket(unsigned short port, int reuseAddr)
{
int status;
struct sockaddr_in bd;
@@ -268,24 +317,32 @@ LOCAL SOCKET makeSocket(unsigned short port)
return sock;
}
status = setsockopt( sock,
SOL_SOCKET,
SO_REUSEADDR,
(char *)&true,
sizeof(true));
if(status<0){
ca_printf( "%s: set socket option failed\n",
__FILE__);
}
/*
* no need to bind if unconstrained
*/
if (port != PORT_ANY) {
if (reuseAddr) {
status = setsockopt( sock,
SOL_SOCKET,
SO_REUSEADDR,
(char *)&true,
sizeof(true));
if (status<0) {
ca_printf(
"%s: set socket option failed because \"%s\"\n",
__FILE__, strerror(MYERRNO));
}
}
memset((char *)&bd, 0, sizeof(bd));
bd.sin_family = AF_INET;
bd.sin_addr.s_addr = INADDR_ANY;
bd.sin_port = htons(port);
status = bind(sock, (struct sockaddr *)&bd, sizeof(bd));
if(status<0){
socket_close(sock);
return INVALID_SOCKET;
memset((char *)&bd, 0, sizeof(bd));
bd.sin_family = AF_INET;
bd.sin_addr.s_addr = INADDR_ANY;
bd.sin_port = htons(port);
status = bind(sock, (struct sockaddr *)&bd, (int)sizeof(bd));
if(status<0){
socket_close(sock);
return INVALID_SOCKET;
}
}
return sock;
@@ -301,28 +358,40 @@ struct sockaddr_in *pFrom)
{
int status;
struct one_client *pclient;
struct extmsg confirm;
struct extmsg noop;
caHdr confirm;
caHdr noop;
int newClient = FALSE;
if (pFrom->sin_family != AF_INET) {
return;
}
/*
* the repeater and its clients must be on the same host
*/
if (pLocal->sin_addr.s_addr != pFrom->sin_addr.s_addr) {
return;
}
for( pclient = (struct one_client *) ellFirst(&client_list);
pclient;
pclient = (struct one_client *) ellNext(&pclient->node)){
if( pFrom->sin_port == pclient->from.sin_port &&
pFrom->sin_addr.s_addr == pclient->from.sin_addr.s_addr)
if (pFrom->sin_port == pclient->from.sin_port) {
break;
}
}
if(!pclient){
if (!pclient) {
pclient = (struct one_client *)calloc (1, sizeof(*pclient));
if(!pclient){
if (!pclient) {
ca_printf("%s: no memory for new client\n",
__FILE__);
return;
}
pclient->sock = makeSocket(PORT_ANY);
if (!pclient->sock) {
pclient->sock = makeSocket(PORT_ANY, FALSE);
if (pclient->sock==INVALID_SOCKET) {
free(pclient);
ca_printf("%s: no client sock because \"%s\"\n",
__FILE__,
@@ -336,14 +405,16 @@ struct sockaddr_in *pFrom)
if (status<0) {
socket_close(pclient->sock);
free(pclient);
ca_printf("%s: unable to connect client sock\n",
__FILE__);
ca_printf(
"%s: unable to connect client sock because \"%s\"\n",
__FILE__, strerror(errno));
return;
}
pclient->from = *pFrom;
ellAdd (&client_list, &pclient->node);
newClient = TRUE;
#ifdef DEBUG
ca_printf (
"Added %d\n",
@@ -359,7 +430,7 @@ struct sockaddr_in *pFrom)
(char *)&confirm,
sizeof(confirm),
0);
if(status >= 0){
if (status >= 0) {
assert(status == sizeof(confirm));
}
else if (MYERRNO == ECONNREFUSED){
@@ -381,7 +452,22 @@ struct sockaddr_in *pFrom)
* accumulate sockets when there are no beacons
*/
memset((char *)&noop, '\0', sizeof(noop));
confirm.m_cmmd = htons(IOC_NOOP);
confirm.m_cmmd = htons(CA_PROTO_NOOP);
fanOut(pFrom, (char *)&noop, sizeof(noop));
if (newClient) {
/*
* on solaris we need to verify that the clients
* have not gone away (because ICMP does not
* get through to send()
*
* this is done each time that a new client is
* created
*
* this is done here in order to avoid deleting
* a client prior to sending its confirm message
*/
verifyClients();
}
}

View File

@@ -89,6 +89,8 @@ IIU *piiu,
const struct in_addr *pnet_addr
);
LOCAL void verifyChanAndDisconnect(IIU *piiu, enum channel_state state);
#ifdef CONVERSION_REQUIRED
extern CACVRTFUNC *cac_dbr_cvrt[];
#endif /*CONVERSION_REQUIRED*/
@@ -243,14 +245,14 @@ const struct in_addr *pnet_addr
switch (piiu->curMsg.m_cmmd) {
case IOC_NOOP:
case CA_PROTO_NOOP:
break;
case IOC_ECHO:
case CA_PROTO_ECHO:
piiu->echoPending = FALSE;
break;
case IOC_WRITE_NOTIFY:
case CA_PROTO_WRITE_NOTIFY:
{
struct event_handler_args args;
@@ -297,7 +299,7 @@ const struct in_addr *pnet_addr
break;
}
case IOC_READ_NOTIFY:
case CA_PROTO_READ_NOTIFY:
{
struct event_handler_args args;
@@ -366,7 +368,7 @@ const struct in_addr *pnet_addr
break;
}
case IOC_EVENT_ADD:
case CA_PROTO_EVENT_ADD:
{
int v41;
struct event_handler_args args;
@@ -446,7 +448,7 @@ const struct in_addr *pnet_addr
break;
}
case IOC_READ:
case CA_PROTO_READ:
{
evid pIOBlock;
@@ -505,15 +507,15 @@ const struct in_addr *pnet_addr
UNLOCK;
break;
}
case IOC_SEARCH:
case CA_PROTO_SEARCH:
perform_claim_channel(piiu, pnet_addr);
break;
case IOC_READ_SYNC:
case CA_PROTO_READ_SYNC:
piiu->read_seq++;
break;
case IOC_RSRV_IS_UP:
case CA_PROTO_RSRV_IS_UP:
LOCK;
{
struct in_addr ina;
@@ -531,20 +533,20 @@ const struct in_addr *pnet_addr
#endif
break;
case IOC_NOT_FOUND:
case CA_PROTO_NOT_FOUND:
break;
case IOC_CLEAR_CHANNEL:
case CA_PROTO_CLEAR_CHANNEL:
clearChannelResources (piiu->curMsg.m_available);
break;
case IOC_ERROR:
case CA_PROTO_ERROR:
{
ELLLIST *pList = NULL;
evid monix;
char nameBuf[64];
char context[255];
struct extmsg *req = piiu->pCurData;
caHdr *req = piiu->pCurData;
int op;
struct exception_handler_args args;
@@ -559,7 +561,7 @@ const struct in_addr *pnet_addr
caHostFromInetAddr(pnet_addr, nameBuf, sizeof(nameBuf));
if (piiu->curMsg.m_postsize > sizeof(struct extmsg)){
if (piiu->curMsg.m_postsize > sizeof(caHdr)){
sprintf(context,
"detected by: %s for: %s",
nameBuf,
@@ -579,14 +581,14 @@ const struct in_addr *pnet_addr
args.addr = NULL;
LOCK;
switch (ntohs(req->m_cmmd)) {
case IOC_READ_NOTIFY:
case CA_PROTO_READ_NOTIFY:
monix = (evid) bucketLookupItemUnsignedId(
pFastBucket,
&req->m_available);
pList = &pend_read_list;
op = CA_OP_GET;
break;
case IOC_READ:
case CA_PROTO_READ:
monix = (evid) bucketLookupItemUnsignedId(
pFastBucket,
&req->m_available);
@@ -596,20 +598,20 @@ const struct in_addr *pnet_addr
pList = &pend_read_list;
op = CA_OP_GET;
break;
case IOC_WRITE_NOTIFY:
case CA_PROTO_WRITE_NOTIFY:
monix = (evid) bucketLookupItemUnsignedId(
pFastBucket,
&req->m_available);
pList = &pend_write_list;
op = CA_OP_PUT;
break;
case IOC_WRITE:
case CA_PROTO_WRITE:
op = CA_OP_PUT;
break;
case IOC_SEARCH:
case CA_PROTO_SEARCH:
op = CA_OP_SEARCH;
break;
case IOC_EVENT_ADD:
case CA_PROTO_EVENT_ADD:
monix = (evid) bucketLookupItemUnsignedId(
pFastBucket,
&req->m_available);
@@ -618,7 +620,7 @@ const struct in_addr *pnet_addr
pList = &monix->chan->eventq;
}
break;
case IOC_EVENT_CANCEL:
case CA_PROTO_EVENT_CANCEL:
monix = (evid) bucketLookupItemUnsignedId(
pFastBucket,
&req->m_available);
@@ -651,7 +653,7 @@ const struct in_addr *pnet_addr
UNLOCKEVENTS;
break;
}
case IOC_ACCESS_RIGHTS:
case CA_PROTO_ACCESS_RIGHTS:
{
int ar;
chid chan;
@@ -668,8 +670,8 @@ const struct in_addr *pnet_addr
}
ar = ntohl (piiu->curMsg.m_available);
chan->ar.read_access = (ar&CA_ACCESS_RIGHT_READ)?1:0;
chan->ar.write_access = (ar&CA_ACCESS_RIGHT_WRITE)?1:0;
chan->ar.read_access = (ar&CA_PROTO_ACCESS_RIGHT_READ)?1:0;
chan->ar.write_access = (ar&CA_PROTO_ACCESS_RIGHT_WRITE)?1:0;
if (chan->pAccessRightsFunc) {
struct access_rights_handler_args args;
@@ -680,7 +682,7 @@ const struct in_addr *pnet_addr
}
break;
}
case IOC_CLAIM_CIU:
case CA_PROTO_CLAIM_CIU:
{
chid chan;
@@ -702,31 +704,10 @@ const struct in_addr *pnet_addr
reconnect_channel(piiu, chan);
break;
}
case IOC_CLAIM_CIU_FAILED:
{
chid chan;
LOCK;
chan = bucketLookupItemUnsignedId(
pSlowBucket, &piiu->curMsg.m_cid);
UNLOCK;
if(!chan){
/*
* end up here if they delete the channel
* prior to this response
*/
break;
}
/*
* need to move the channel back to the cast IIU
* (so we will be able to reconnect)
*/
LOCK;
cacDisconnectChannel(chan, FALSE);
UNLOCK;
case CA_PROTO_CLAIM_CIU_FAILED:
case CA_PROTO_SERVER_DISCONN:
verifyChanAndDisconnect(piiu, cs_conn);
break;
}
default:
ca_printf("CAC: post_msg(): Corrupt cmd in msg %x\n",
piiu->curMsg.m_cmmd);
@@ -737,6 +718,33 @@ const struct in_addr *pnet_addr
return OK;
}
/*
* verifyChanAndDisconnect()
*/
LOCAL void verifyChanAndDisconnect(IIU *piiu, enum channel_state state)
{
chid chan;
LOCK;
chan = bucketLookupItemUnsignedId(
pSlowBucket, &piiu->curMsg.m_cid);
if (!chan) {
/*
* end up here if they delete the channel
* prior to this response
*/
UNLOCK;
return;
}
/*
* need to move the channel back to the cast IIU
* (so we will be able to reconnect)
*/
cacDisconnectChannel(chan, chan->state);
UNLOCK;
}
/*
*
@@ -795,7 +803,7 @@ const struct in_addr *pnet_addr
pNode = (caAddrNode *) chpiiu->destAddr.node.next;
assert(pNode);
if (pNode->destAddr.inetAddr.sin_addr.s_addr !=
if (pNode->destAddr.in.sin_addr.s_addr !=
pnet_addr->s_addr) {
caHostFromInetAddr(pnet_addr,rej,sizeof(rej));
@@ -903,7 +911,7 @@ const struct in_addr *pnet_addr
v42 = CA_V42(
CA_PROTOCOL_VERSION,
allocpiiu->minor_version_number);
if(!v42){
if (!v42) {
reconnect_channel(piiu, chan);
}
}
@@ -921,13 +929,19 @@ chid chan
enum channel_state prev_cs;
int v41;
prev_cs = chan->state;
if (prev_cs == cs_conn) {
ca_printf("Ignored connect response to connected channel\n");
return;
}
LOCK;
v41 = CA_V41(
CA_PROTOCOL_VERSION,
((IIU *)chan->piiu)->minor_version_number);
/* Update rmt chid fields from extmsg fields */
/* Update rmt chid fields from caHdr fields */
chan->type = piiu->curMsg.m_type;
chan->count = piiu->curMsg.m_count;
@@ -937,7 +951,6 @@ chid chan
* ca_request_event() so their channel
* connect tests wont fail
*/
prev_cs = chan->state;
chan->state = cs_conn;
/*
@@ -996,30 +1009,3 @@ chid chan
}
}
/*
*
* cas_io_done()
*
*
*/
void cac_io_done(int lock)
{
struct pending_io_event *pioe;
if(ioeventlist.count==0)
return;
if(lock){
LOCK;
}
while(pioe = (struct pending_io_event *) ellGet(&ioeventlist)){
(*pioe->io_done_sub)(pioe->io_done_arg);
free(pioe);
}
if(lock){
UNLOCK;
}
}

View File

@@ -29,6 +29,12 @@
* Modification Log:
* -----------------
* $Log$
* Revision 1.19 1996/06/19 17:59:29 jhill
* many 3.13 beta changes
*
* Revision 1.18 1995/10/12 01:36:39 jhill
* New ca_flush_io() mechanism
*
* Revision 1.17 1995/09/29 22:13:59 jhill
* check for nill dbr pointer
*
@@ -330,6 +336,42 @@ int epicsShareAPI ca_sg_reset(CA_SYNC_GID gid)
return ECA_NORMAL;
}
/*
* ca_sg_stat
*/
int epicsShareAPI ca_sg_stat(CA_SYNC_GID gid)
{
CASG *pcasg;
CASGOP *pcasgop;
LOCK;
pcasg = bucketLookupItemUnsignedId(pSlowBucket, &gid);
if(!pcasg || pcasg->magic != CASG_MAGIC){
UNLOCK;
printf("Bad Sync Group Id\n");
return ECA_BADSYNCGRP;
}
UNLOCK;
printf("Sync Group: id=%u, magic=%lu, opPend=%lu, seqNo=%lu\n",
pcasg->id, pcasg->magic, pcasg->opPendCount,
pcasg->seqNo);
LOCK;
pcasgop = (CASGOP *) ellFirst(&ca_static->activeCASGOP);
while (pcasgop) {
if (pcasg->id == pcasgop->id) {
printf(
"pending op: id=%u pVal=%x, magic=%lu seqNo=%lu\n",
pcasgop->id, (unsigned)pcasgop->pValue, pcasgop->magic,
pcasgop->seqNo);
}
pcasgop = (CASGOP *) ellNext(&pcasgop->node);
}
return ECA_NORMAL;
}
/*
* ca_sg_test
@@ -354,8 +396,6 @@ int epicsShareAPI ca_sg_test(CA_SYNC_GID gid)
}
}
/*
* ca_sg_array_put()
@@ -410,6 +450,7 @@ void *pvalue)
if(status != ECA_NORMAL){
LOCK;
assert(pcasg->opPendCount>=1u);
pcasg->opPendCount--;
ellDelete(&ca_static->activeCASGOP, &pcasgop->node);
ellAdd(&ca_static->freeCASGOP, &pcasgop->node);
@@ -475,6 +516,7 @@ void *pvalue)
if(status != ECA_NORMAL){
LOCK;
assert(pcasg->opPendCount>=1u);
pcasg->opPendCount--;
ellDelete(&ca_static->activeCASGOP, &pcasgop->node);
ellAdd(&ca_static->freeCASGOP, &pcasgop->node);
@@ -511,7 +553,7 @@ LOCAL void io_complete(struct event_handler_args args)
}
assert(pcasg->magic == CASG_MAGIC);
assert(pcasg->id == pcasgop->id);
if(!(args.status&CA_M_SUCCESS)){
ca_printf(
@@ -534,9 +576,8 @@ LOCAL void io_complete(struct event_handler_args args)
/*
* decrement the outstanding IO ops count
*/
if(pcasg->opPendCount!=0){
pcasg->opPendCount--;
}
assert(pcasg->opPendCount>=1u);
pcasg->opPendCount--;
UNLOCK;

View File

@@ -8,6 +8,9 @@
* CJM 13-Jul-1994 add fd_set etc for R3.12
* CJM 09-Dec-1994 define fd_set etc. so it will compile for
* both DEC C and Vax C
* CJM 19-Nov-1995 use memset instead of bzero following advice
* from Jeff Hill and add a definition of struct
* timezone to support gettimeofday
*
*/
#ifndef _UCX_H_
@@ -85,7 +88,14 @@ typedef int fd_set ;
#include <iodef.h>
#define IO$_RECEIVE (IO$_WRITEVBLK)
struct timezone {
int tz_minuteswest ; /* minutes west of Greenwich */
int tz_dsttime ; /* type of dst correction */
};
#define TWOPOWER32 4294967296.0
#define TWOPOWER31 2147483648.0
#define UNIX_EPOCH_AS_MJD 40587.0
#endif
#endif

View File

@@ -26,9 +26,18 @@
* Advanced Photon Source
* Argonne National Laboratory
*
*
* Modification Log:
* -----------------
* cjm 20-Nov-95 Add code for gettimeofday
*
* $Log$
* Revision 1.19 1995/12/19 19:35:24 jhill
* -cjm 20-Nov-95 Add code for gettimeofday
*
* Revision 1.18 1995/10/12 01:35:30 jhill
* Moved cac_mux_io() to iocinf.c
*
* Revision 1.17 1995/08/22 00:27:56 jhill
* added cvs style mod log
*
@@ -44,7 +53,13 @@
#include "iocinf.h"
#ifdef UCX
#include "ucx.h"
#endif
#if 0
#define CONNECTION_TIMER_ID 56
#endif
/*
@@ -52,13 +67,57 @@
*/
void cac_gettimeval(struct timeval *pt)
{
struct timezone tz;
int status;
status = gettimeofday(pt, &tz);
status = gettimeofday(pt, (struct timezone *) NULL);
assert(status==0);
}
/*
* gettimeofday
*/
#ifndef MULTINET
int gettimeofday(struct timeval *tp, struct timezone *tzp)
{
unsigned int quadtime[2] ;
int status ;
int nanosecs ;
double secs ;
int bit31 ;
double dtime ; /* vax 64 bit integer as a double */
if (tp != (struct timeval *)NULL)
{
status = sys$gettim(&quadtime) ;
if (status != SS$_NORMAL)
return -1 ;
else
{
bit31 = quadtime[0] & 0x80000000 ;
dtime = quadtime[1]*TWOPOWER32 + (quadtime[0] & 0x7fffffff) ;
if (bit31 != 0)
dtime = (dtime + TWOPOWER31)/ 10000000.0 ;
else
dtime = dtime / 10000000.0 ;
secs = dtime - UNIX_EPOCH_AS_MJD * 86400. ;
tp->tv_sec = (int)secs ;
tp->tv_usec = (int)((secs - tp->tv_sec)*1000000.0) ;
}
}
if (tzp != (struct timezone *)NULL)
{
tzp->tz_minuteswest = 0 ;
tzp->tz_dsttime = 0 ;
}
return 0 ;
}
#endif
/*
* cac_block_for_io_completion()

View File

@@ -29,6 +29,15 @@
* Modification Log:
* -----------------
* $Log$
* Revision 1.23 1996/08/05 19:18:56 jhill
* better msg for lack of fp
*
* Revision 1.22 1996/06/19 17:59:31 jhill
* many 3.13 beta changes
*
* Revision 1.21 1995/10/18 16:44:36 jhill
* select time out must be greater than a vxWorks tick
*
* Revision 1.20 1995/10/12 01:35:31 jhill
* Moved cac_mux_io() to iocinf.c
*
@@ -48,6 +57,17 @@ LOCAL void ca_extra_event_labor(void *pArg);
LOCAL int cac_os_depen_exit_tid (struct ca_static *pcas, int tid);
LOCAL int cac_add_task_variable (struct ca_static *ca_temp);
LOCAL void deleteCallBack(CALLBACK *pcb);
LOCAL void ca_check_for_fp();
/*
* order of ops is important here
*
* NOTE: large OS dependent SYFREQ might cause an overflow
* NOTE: POLLDELAY must be less than TICKSPERSEC
*/
#define POLLDELAY 50 /* milli sec */
#define TICKSPERSEC 1000 /* milli sec per sec */
#define LOCALTICKS ((sysClkRateGet()*POLLDELAY)/TICKSPERSEC)
@@ -100,8 +120,8 @@ void cac_gettimeval(struct timeval *pt)
void cac_block_for_io_completion(struct timeval *pTV)
{
struct timeval itimeout;
unsigned long ticks;
unsigned long rate = sysClkRateGet();
int ticks;
int rate = sysClkRateGet();
#ifdef NOASYNCRECV
cac_mux_io(pTV);
@@ -114,7 +134,7 @@ void cac_block_for_io_completion(struct timeval *pTV)
itimeout.tv_sec = 0;
cac_mux_io(&itimeout);
ticks = pTV->tv_sec*rate + (pTV->tv_usec*rate)/USEC_PER_SEC;
ticks = (int) (pTV->tv_sec*rate + (pTV->tv_usec*rate)/USEC_PER_SEC);
ticks = min(LOCALTICKS, ticks);
semTake(io_done_sem, ticks);
@@ -168,8 +188,8 @@ void os_specific_sg_io_complete(CASG *pcasg)
void cac_block_for_sg_completion(CASG *pcasg, struct timeval *pTV)
{
struct timeval itimeout;
unsigned long ticks;
unsigned long rate = sysClkRateGet();
int ticks;
int rate = sysClkRateGet();
#ifdef NOASYNCRECV
cac_mux_io(pTV);
@@ -182,7 +202,7 @@ void cac_block_for_sg_completion(CASG *pcasg, struct timeval *pTV)
itimeout.tv_sec = 0;
cac_mux_io(&itimeout);
ticks = pTV->tv_sec*rate + (pTV->tv_usec*rate)/USEC_PER_SEC;
ticks = (int) (pTV->tv_sec*rate + (pTV->tv_usec*rate)/USEC_PER_SEC);
ticks = min(LOCALTICKS, ticks);
semTake (pcasg->sem, ticks);
@@ -206,10 +226,7 @@ LOCAL int cac_add_task_variable (struct ca_static *ca_temp)
TVIU *ptviu;
int status;
status = ca_check_for_fp();
if(status != ECA_NORMAL){
return status;
}
ca_check_for_fp();
# ifdef DEBUG
ca_printf("CAC: adding task variable\n");
@@ -339,7 +356,6 @@ int cac_os_depen_init(struct ca_static *pcas)
ellInit(&pcas->ca_putNotifyQue);
pcas->ca_tid = taskIdSelf();
pcas->ca_local_ticks = LOCALTICKS;
pcas->ca_client_lock = semMCreate(SEM_DELETE_SAFE);
assert(pcas->ca_client_lock);
pcas->ca_event_lock = semMCreate(SEM_DELETE_SAFE);
@@ -617,10 +633,7 @@ int ca_import(int tid)
struct ca_static *pcas;
TVIU *ptviu;
status = ca_check_for_fp();
if(status != ECA_NORMAL){
return status;
}
ca_check_for_fp();
/*
* just return success if they have already done
@@ -668,27 +681,51 @@ int ca_import(int tid)
*/
int ca_import_cancel(int tid)
{
int status;
TVIU *ptviu;
int status;
TVIU *ptviu;
struct ca_static *pcas;
if (tid == taskIdSelf()) {
pcas = NULL;
}
else {
pcas = ca_static;
}
/*
* Attempt to attach to the specified context
*/
ca_static = (struct ca_static *)
taskVarGet(tid, (int *)&ca_static);
if (ca_static == (struct ca_static *) ERROR){
ca_static = pcas;
return ECA_NOCACTX;
}
LOCK;
ptviu = (TVIU *) ca_static->ca_taskVarList.node.next;
while(ptviu){
ptviu = (TVIU *) ellFirst(&ca_static->ca_taskVarList);
while (ptviu) {
if(ptviu->tid == tid){
break;
}
ptviu = (TVIU *) ellNext(&ptviu->node);
}
if(!ptviu){
ca_static = pcas;
UNLOCK;
return ECA_NOCACTX;
}
ellDelete(&ca_static->ca_taskVarList, &ptviu->node);
free(ptviu);
UNLOCK;
status = taskVarDelete(tid, (void *)&ca_static);
assert (status == OK);
ca_static = pcas;
return ECA_NORMAL;
}
@@ -696,15 +733,14 @@ int ca_import_cancel(int tid)
/*
* ca_check_for_fp()
*/
int ca_check_for_fp()
LOCAL void ca_check_for_fp()
{
int options;
assert(taskOptionsGet(taskIdSelf(), &options) == OK);
if (!(options & VX_FP_TASK)) {
return ECA_NEEDSFP;
ca_signal(ECA_NEEDSFP, taskName(taskIdSelf()));
}
return ECA_NORMAL;
}

View File

@@ -32,6 +32,15 @@
* Modification Log:
* -----------------
* $Log$
* Revision 1.20 1995/12/19 19:36:20 jhill
* function prototype changes
*
* Revision 1.19 1995/11/29 19:15:42 jhill
* added $Log$
* Revision 1.20 1995/12/19 19:36:20 jhill
* function prototype changes
* to the header
*
*/
/*
@@ -279,10 +288,10 @@ void caDiscoverInterfaces(ELLLIST *pList, SOCKET socket, int port)
return;
}
broadcast_addr(&bcast_addr);
pNode->destAddr.inetAddr.sin_addr.s_addr = bcast_addr.s_addr; //broadcast addr
pNode->destAddr.inetAddr.sin_port = htons(port);
pNode->destAddr.inetAddr.sin_family = AF_INET;
//pNode->srcAddr.inetAddr = 0 ;//localAddr;
pNode->destAddr.in.sin_addr.s_addr = bcast_addr.s_addr; //broadcast addr
pNode->destAddr.in.sin_port = htons(port);
pNode->destAddr.in.sin_family = AF_INET;
//pNode->srcAddr.in = 0 ;//localAddr;
/*
* LOCK applied externally
@@ -463,7 +472,7 @@ BOOL epicsShareAPI DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
SetConsoleTitle("Channel Access Status");
freopen( "CONOUT$", "a", stderr );
}
fprintf(stderr, "Process attached to ca.dll R3.12.1\n");
fprintf(stderr, "Process attached to ca.dll\n");
#endif /* init. winsock */
if ((status = WSAStartup(MAKEWORD(1,1), &WsaData)) != 0) {
fprintf(stderr,"Cant init winsock \n");
@@ -494,13 +503,13 @@ BOOL epicsShareAPI DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
case DLL_THREAD_ATTACH:
#if _DEBUG
fprintf(stderr, "Thread attached to ca.dll R3.12.1\n");
fprintf(stderr, "Thread attached to ca.dll\n");
#endif
break;
case DLL_THREAD_DETACH:
#if _DEBUG
fprintf(stderr, "Thread detached from ca.dll R3.12.1\n");
fprintf(stderr, "Thread detached from ca.dll\n");
#endif
break;

26
src/cas/.ftp Normal file
View File

@@ -0,0 +1,26 @@
open aota1
user jeffhill
prompt
macdef archcd
lcd O.sun4
mkdir [.cas]
cd [.cas]
lcd ~/epics/base/src/cas
mput *.c
mput *.h
lcd os/vms
mput *.c
mput *.h
put BUILD_VMS.COM
lcd ../../../libCom
mput *.c
mput *.h
$archcd
mput *.c
lcd ../../ca
mput *.h
mput *.c
lcd ../../include
mput *.h

11
src/cas/.ftp2 Normal file
View File

@@ -0,0 +1,11 @@
open aota1
user jeffhill
mkdir [.cas]
cd [.cas]
prompt
lcd ~/epics/base/src/cas
lcd os/vms
put BUILD_VMS.COM
lcd ../../../libCom
lcd ../ca
lcd ../../include

10
src/cas/Makefile Normal file
View File

@@ -0,0 +1,10 @@
TOP=../..
include $(TOP)/config/CONFIG_BASE
DIRS = generic build example
include $(TOP)/config/RULES_DIRS

29
src/cas/README Normal file
View File

@@ -0,0 +1,29 @@
$Id$
README file for the EPICS Channel Access Server
Author Jeff Hill johill@lanl.gov
$Log$
Directory Structure
-------------------
o example - example server tool
o generic - generic server lib source code
o os - os dependnet server lib source code
o io - io dependnet server lib source code
o build - server lib object code
Internal Source Code Naming Conventions
---------------------------------------
o API class X will almost always have associated internal (usually
private base) class named XI
o for class X there will be
o X.h - the class declaration (and simple inlines)
o XIL.h - complex inline functions (that will not
compile with until the compiler has seen
the declarations of other classes)
o X.cc - all other source code for the class

10
src/cas/build/Makefile Normal file
View File

@@ -0,0 +1,10 @@
TOP=../../..
include $(TOP)/config/CONFIG_BASE
DIRS = singleThread
include $(TOP)/config/RULES_DIRS

View File

@@ -0,0 +1,78 @@
TOP = ../../..
CAS = ../../..
SRC = $(CAS)/generic
IOSRC = $(CAS)/io/bsdSocket
OSSRC = $(CAS)/os/posix
VPATH = $(SRC) $(IOSRC) $(OSSRC)
include Target.include
include $(TOP)/config/CONFIG_BASE
USR_INCLUDES = -I$(CAS)/../ca -I$(OSSRC) -I$(IOSRC) -I$(CAS)/gdd
USR_LDLIBS = -lcas -lm
USR_LDFLAGS = -L.
DEPLIBS_BASE = $(EPICS_BASE_LIB)
#CPLUSPLUS = G++
SRCS.cc += $(SRC)/caServer.cc
SRCS.cc += $(SRC)/casClient.cc
SRCS.cc += $(SRC)/casDGClient.cc
SRCS.cc += $(SRC)/casStreamClient.cc
SRCS.cc += $(SRC)/casPV.cc
SRCS.cc += $(SRC)/casPVI.cc
SRCS.cc += $(SRC)/casChannel.cc
SRCS.cc += $(SRC)/casChannelI.cc
SRCS.cc += $(SRC)/casClientMon.cc
SRCS.cc += $(SRC)/casMsgIO.cc
SRCS.cc += $(SRC)/casAsyncIO.cc
SRCS.cc += $(SRC)/casAsyncIOI.cc
SRCS.cc += $(SRC)/casEventSys.cc
SRCS.cc += $(SRC)/outBuf.cc
SRCS.cc += $(SRC)/inBuf.cc
SRCS.cc += $(SRC)/casMapDBR.cc
SRCS.cc += $(OSSRC)/casDGOS.cc
SRCS.cc += $(OSSRC)/casServerOS.cc
SRCS.cc += $(OSSRC)/casStreamOS.cc
SRCS.cc += $(IOSRC)/casDGIO.cc
SRCS.cc += $(IOSRC)/casStreamIO.cc
SRCS.cc += $(IOSRC)/caServerIO.cc
LIBOBJS += caServer.o
LIBOBJS += casClient.o
LIBOBJS += casDGClient.o
LIBOBJS += casStreamClient.o
LIBOBJS += casPV.o
LIBOBJS += casPVI.o
LIBOBJS += casChannel.o
LIBOBJS += casChannelI.o
LIBOBJS += casClientMon.o
LIBOBJS += casMsgIO.o
LIBOBJS += casAsyncIO.o
LIBOBJS += casAsyncIOI.o
LIBOBJS += casEventSys.o
LIBOBJS += outBuf.o
LIBOBJS += inBuf.o
LIBOBJS += casMapDBR.o
LIBOBJS += casDGOS.o
LIBOBJS += casServerOS.o
LIBOBJS += casStreamOS.o
LIBOBJS += casDGIO.o
LIBOBJS += casStreamIO.o
LIBOBJS += caServerIO.o
LIBNAME = libcas.a
include $(TOP)/config/RULES.Unix
obj: $(LIBOBJS)
clean::
@$(RM) -rf Templates.DB

View File

@@ -0,0 +1,8 @@
TOP= ../../../..
include $(TOP)/config/CONFIG_BASE
include $(TOP)/config/RULES_ARCHS

View File

@@ -0,0 +1,88 @@
CAS = ../../..
TOP = $(CAS)/../..
SRC = $(CAS)/generic
CA = $(CAS)/../ca
IOSRC = $(CAS)/io/bsdSocket
OSSRC = $(CAS)/os/posix
VPATH = $(SRC) $(IOSRC) $(OSSRC)
include $(TOP)/config/CONFIG_BASE
CXXCMPLR = STRICT
USR_INCLUDES = -I$(SRC) -I$(OSSRC) -I$(IOSRC) -I$(CA)
DEPLIBS_BASE = $(EPICS_BASE_LIB)
SRCS.cc += $(SRC)/caServer.cc
SRCS.cc += $(SRC)/caServerI.cc
SRCS.cc += $(SRC)/casCoreClient.cc
SRCS.cc += $(SRC)/casClient.cc
SRCS.cc += $(SRC)/casDGClient.cc
SRCS.cc += $(SRC)/casStrmClient.cc
SRCS.cc += $(SRC)/casPV.cc
SRCS.cc += $(SRC)/casPVI.cc
SRCS.cc += $(SRC)/casChannel.cc
SRCS.cc += $(SRC)/casChannelI.cc
SRCS.cc += $(SRC)/casClientMon.cc
SRCS.cc += $(SRC)/casChanDelEv.cc
SRCS.cc += $(SRC)/casMsgIO.cc
SRCS.cc += $(SRC)/casAsyncIO.cc
SRCS.cc += $(SRC)/casAsyncIOI.cc
SRCS.cc += $(SRC)/casEventSys.cc
SRCS.cc += $(SRC)/casMonitor.cc
SRCS.cc += $(SRC)/casMonEvent.cc
SRCS.cc += $(SRC)/outBuf.cc
SRCS.cc += $(SRC)/inBuf.cc
SRCS.cc += $(SRC)/casEventMask.cc
SRCS.cc += $(OSSRC)/caServerOS.cc
SRCS.cc += $(OSSRC)/casDGOS.cc
SRCS.cc += $(OSSRC)/casStreamOS.cc
SRCS.cc += $(IOSRC)/caServerIO.cc
SRCS.cc += $(IOSRC)/casDGIO.cc
SRCS.cc += $(IOSRC)/casStreamIO.cc
SRCS.c += $(IOSRC)/sigPipeIgnore.c
LIBOBJS += caServer.o
LIBOBJS += caServerI.o
LIBOBJS += casCoreClient.o
LIBOBJS += casClient.o
LIBOBJS += casDGClient.o
LIBOBJS += casStrmClient.o
LIBOBJS += casPV.o
LIBOBJS += casPVI.o
LIBOBJS += casChannel.o
LIBOBJS += casChannelI.o
LIBOBJS += casClientMon.o
LIBOBJS += casChanDelEv.o
LIBOBJS += casMsgIO.o
LIBOBJS += casAsyncIO.o
LIBOBJS += casAsyncIOI.o
LIBOBJS += casEventSys.o
LIBOBJS += casMonitor.o
LIBOBJS += casMonEvent.o
LIBOBJS += outBuf.o
LIBOBJS += inBuf.o
LIBOBJS += casEventMask.o
LIBOBJS += caServerOS.o
LIBOBJS += casDGOS.o
LIBOBJS += casStreamOS.o
LIBOBJS += caServerIO.o
LIBOBJS += casDGIO.o
LIBOBJS += casStreamIO.o
LIBOBJS += sigPipeIgnore.o
LIBNAME = libcas.a
include $(TOP)/config/RULES.Unix
obj: $(LIBOBJS)
clean::
@$(RM) -rf Templates.DB

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