blob: da7044038c316f7c2a77d97496a53a20ca10da7e [file] [log] [blame]
brians343bc112013-02-10 01:53:46 +00001see ../README.txt for overall information
2
3[FILES]
4config/ has some configuration files
5 aos.conf has directions for setting up resource limits so you can run the code on any linux machine (the directions are there to keep them with the file)
6 setup_rc_caps.sh is a shell script (you have to run as root) that lets you run the realtime code without installing aos.conf for an individual file
7 starter is an init.d file
8 install it by putting it in /etc/init.d an running "update-rc.d starter defaults"
9 restart it by running "invoke-rc.d starter restart" (doesn't always work very well...)
10 the .config files are for building linux kernels
11
Brian Silverman14fd0fb2014-01-14 21:42:01 -080012linux/ has code that only runs on linux systems
brians343bc112013-02-10 01:53:46 +000013crio/ has code that only runs on the crio
14
Brian Silverman14fd0fb2014-01-14 21:42:01 -080015common/ is where stuff that runs on both the crio and linux is
brians343bc112013-02-10 01:53:46 +000016common/input/ is where the framework code for reading stuff into the queues system is
17common/output/ is where the framework for writing things out of the queues system is
18common/messages is where the c++ wrappers for "queues" are
19
20[NOTES]
brians343bc112013-02-10 01:53:46 +000021Some functions need to be in separate translation units in order for them to be guaranteed to work. As the C standard says,
22 Alternatively, an implementation might perform various optimizations within each translation unit, such
23 that the actual semantics would agree with the abstract semantics only when making function calls across
24 translation unit boundaries. In such an implementation, at the time of each function entry and function
25 return where the calling function and the called function are in different translation units, the values of all
26 externally linked objects and of all objects accessible via pointers therein would agree with the abstract
27 semantics. Furthermore, at the time of each such function entry the values of the parameters of the called
28 function and of all objects accessible via pointers therein would agree with the abstract semantics. In this
29 type of implementation, objects referred to by interrupt service routines activated by the signal function
Brian Silverman14fd0fb2014-01-14 21:42:01 -080030 would require explicit specification of volatile storage, as well as other implementation-defined
brians343bc112013-02-10 01:53:46 +000031 restrictions.
Brian Silverman14fd0fb2014-01-14 21:42:01 -080032Everything that has to do different things when compiled for the crio or linux uses #ifdef __VXWORKS__ etc.
brians343bc112013-02-10 01:53:46 +000033The crio "queue" implementation uses 1 global instance and no synchronization, so it should only be used in code that gets called by the crio-side control loop infrastructure.
Brian Silverman14fd0fb2014-01-14 21:42:01 -080034The C++ namespace aos is used for all of the aos code. The crio and linux_code namespaces are for APIs that only make sense on one platform or the other.