From 13ed57745c639f72be8ae1f25fbd206f6e7307f3 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Fri, 21 Feb 2014 15:19:53 +0100 Subject: ose: Expand OSE docs --- lib/ose/doc/src/ose_intro.xml | 97 ++++++++++++++++++++++++++++++++- lib/ose/doc/src/ose_signals_chapter.xml | 23 ++++++++ 2 files changed, 118 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/ose/doc/src/ose_intro.xml b/lib/ose/doc/src/ose_intro.xml index 8fe723ba83..0dd3ec409e 100644 --- a/lib/ose/doc/src/ose_intro.xml +++ b/lib/ose/doc/src/ose_intro.xml @@ -33,6 +33,62 @@ Features +
+ Starting Erlang/OTP +

+ Starting Erlang/OTP on OSE is not as simple as on Unix/Windows (yet). + First of all you have to explicitly use the beam (or beam.smp) executables + found in erts-X.Y.Z/bin as the load module that you run. This in turn + means that you have to supply the raw beam arguments to the emulator + when starting. Fortunately erl on Unix/Windows has a + undocumented flag called -emu_args_exit that can be used to + figure out what the arguments to beam look like. For example:

+ # erl +Mut false +A 10 +S 4:4 +Muycs256 +P 2096 +Q 2096 -emu_args_exit +-Mut +false +-A +10 +-S +4:4 +-Muycs256 +-P +2096 +-Q +2096 +-- +-root +/usr/local/lib/erlang +-progname +erl +-- +-home +/home/erlang +-- +

+ The arguments are printed on seperate lines to make it possible to know + what has to be quoted with ". Each line is one quotable unit. + So taking the arguments above you can supply them to pm_create or + just execute directly on the command line. For example:

+ rtose@acp3400> pm_install erlang /mst/erlang/erts-6.0/bin/beam.smp +rtose@acp3400> pm_create -c ARGV="-Mut false -A 10 -S 4:4 -Muycs256 -P 2096 -Q 2099 -- -root /mst/erlang -progname erl -- -home /mst/erlang --" erlang +pid: 0x110059 +rtose@acp3400> pm_start 0x110059 +

+ Also note that since we are running erl to figure out the arguments on a + seperate machine the paths have to be updated. In the example above + /usr/local/lib/erlang was replaced by /mst/erlang/. The + goal is to in future releases not have to do the special argument handling + but for now (17.0-rc2) you have to do it. +

+ + Because of a limitation in the way the OSE handles stdio when starting + load modules using pm_install/create the Erlang shell only reads every + other command from stdin. However if you start Erlang using run_erl + you do not have this problem. So it is highly recommended that you + start Erlang using run_erl. + +
+
run_erl and to_erl

@@ -48,13 +104,50 @@ installing and exectuting the first part of the command. If nothing if given the basename of the load module will be used for this value. Example: - pm_install erlang /path/to/erlang/vm -run_erl -daemon -block erlang /pipe/ /mst/erlang_logs/ "erl -A 10" + pm_install erlang /path/to/erlang/vm/beam.smp +run_erl -daemon -block erlang /pipe/ /mst/erlang_logs/ "beam.smp -A 1 -- -root /mst/erlang -- -home /mst --" + The same argument munching as when starting Erlang/OTP without run_erl + has to be done. If -daemon is given then all error printouts + are sent to the ramlog. See also run_erl for more details.

+

+ Below is an example of how to get started with run_erl_lm. + rtose@acp3400> pm_install run_erl_lm /mst/erlang/erts-6.0/bin/run_erl_lm +rtose@acp3400> pm_create run_erl_lm +pid: 0x1c005d +rtose@acp3400> pm_start 0x1c005d +rtose@acp3400> mkdir /mst/erlang_log +rtose@acp3400> run_erl -daemon /pipe/ /mst/erlang_log/ "/mst/erlang/erts-6.0/bin/beam.smp -A 1 -- -root /mst/erlang -- -home /mst --" +rtose@acp3400> to_erl +Attaching to /pipe/erlang.pipe.1 (^C to exit) +os:type(). +{ose,release} +2> +'to_erl' terminated. + Note that Ctrl-C is used instead of Ctrl-D to exit the to_erl shell. +

+
+ +
+ epmd +

+ In OSE epmd will not be started automatically so if you want to use + Erlang distribution you have to manually start epmd. +

+
+ +
+ VM Process Priorities +

+ It is possible to set the priorities you want for the OSE processes that + thr emulator creates in the lmconf. An example of how to do it can be + found in the default lmconf file in + $ERL_TOP/erts/emulator/sys/ose/default.lmconf. +

diff --git a/lib/ose/doc/src/ose_signals_chapter.xml b/lib/ose/doc/src/ose_signals_chapter.xml index c8d98f4099..ff501777cc 100644 --- a/lib/ose/doc/src/ose_signals_chapter.xml +++ b/lib/ose/doc/src/ose_signals_chapter.xml @@ -45,6 +45,29 @@
Signals in Erlang +

Erlang/OTP on OSE provides a erlang module called + ose that can be used to interact + with other OSE processes using message passing. The api in the module + is very similar to the native OSE api, so for details of how the + functions work please refer to the official OSE documenation. Below + is an example usage of the API. +

+ 1> P1 = ose:open("p1"). +#Port>0.344> +2> ose:hunt(P1,"p2"). +{#Port>0.344>,1} +3> P2 = ose:open("p2"). +#Port>0.355> +4> flush(). +Shell got {mailbox_up,#Port>0.344>,{#Port>0.344>,1},852189} +ok +5> ose:listen(P1,[1234]). +ok +6> ose:send(P2,ose:get_id(P1),1234,>>"hello">>). +ok +7> flush(). +Shell got {message,#Port>0.344>,{852189,1245316,1234,>>"hello">>}} +ok
-- cgit v1.2.3