aboutsummaryrefslogtreecommitdiffstats
path: root/system/doc/embedded
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /system/doc/embedded
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'system/doc/embedded')
-rw-r--r--system/doc/embedded/Makefile103
-rw-r--r--system/doc/embedded/book.xml43
-rw-r--r--system/doc/embedded/embedded_nt.xml84
-rw-r--r--system/doc/embedded/embedded_solaris.xml734
-rw-r--r--system/doc/embedded/intro.xml95
-rw-r--r--system/doc/embedded/make.dep14
-rw-r--r--system/doc/embedded/note.gifbin0 -> 1539 bytes
-rw-r--r--system/doc/embedded/part.xml50
-rw-r--r--system/doc/embedded/starting.xml249
-rw-r--r--system/doc/embedded/target.xml414
-rw-r--r--system/doc/embedded/vme_problems.xml61
-rw-r--r--system/doc/embedded/vxworks.xml193
-rw-r--r--system/doc/embedded/warning.gifbin0 -> 1498 bytes
-rw-r--r--system/doc/embedded/xmlfiles.mk22
-rw-r--r--system/doc/embedded/xntp.xml75
15 files changed, 2137 insertions, 0 deletions
diff --git a/system/doc/embedded/Makefile b/system/doc/embedded/Makefile
new file mode 100644
index 0000000000..5e68917fc2
--- /dev/null
+++ b/system/doc/embedded/Makefile
@@ -0,0 +1,103 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 1997-2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include $(ERL_TOP)/erts/vsn.mk
+#VSN=$(SYSTEM_VSN)
+
+APPLICATION=otp-system-documentation
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/doc/embedded
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+XML_PART_FILES = part.xml
+
+include xmlfiles.mk
+
+XML_CHAPTER_FILES=$(EMBEDDED_CHAPTER_FILES)
+
+TOPDOCDIR=..
+
+BOOK_FILES = book.xml
+
+GIF_FILES =
+
+PS_FILES =
+
+XML_FILES = \
+ $(BOOK_FILES) $(XML_CHAPTER_FILES) \
+ $(XML_PART_FILES)
+
+# ----------------------------------------------------
+
+HTML_FILES = \
+ $(XML_PART_FILES:%.xml=%.html)
+
+HTMLDIR = ../html/embedded
+
+
+HTML_UG_FILE = $(HTMLDIR)/users_guide.html
+
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+XML_FLAGS +=
+DVIPS_FLAGS +=
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+docs: html
+
+local_docs: PDFDIR=../../pdf
+
+html: $(GIF_FILES) $(HTML_UG_FILE)
+
+debug opt:
+
+clean clean_docs:
+ rm -rf $(HTMLDIR)
+ rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo)
+ rm -f errs core *~
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+release_docs_spec: docs
+# $(INSTALL_DIR) $(RELEASE_PATH)/pdf
+# $(INSTALL_DATA) $(TOP_PDF_FILE) $(RELEASE_PATH)/pdf
+ $(INSTALL_DIR) $(RELSYSDIR)
+ $(INSTALL_DATA) $(GIF_FILES) $(HTMLDIR)/*.html \
+ $(RELSYSDIR)
+
+release_spec:
+
+
diff --git a/system/doc/embedded/book.xml b/system/doc/embedded/book.xml
new file mode 100644
index 0000000000..7dc43e36bf
--- /dev/null
+++ b/system/doc/embedded/book.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE book SYSTEM "book.dtd">
+
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header titlestyle="normal">
+ <copyright>
+ <year>1997</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Embedded Systems</title>
+ <prepared>Kenneth Lundin</prepared>
+ <docno></docno>
+ <date></date>
+ <rev></rev>
+ <file></file>
+ </header>
+ <insidecover>
+ </insidecover>
+ <pagetext>Embedded Systems</pagetext>
+ <preamble>
+ <contents level="2"></contents>
+ </preamble>
+ <parts lift="no">
+ <xi:include href="part.xml"/>
+ </parts>
+ <listofterms></listofterms>
+ <index></index>
+</book>
+
diff --git a/system/doc/embedded/embedded_nt.xml b/system/doc/embedded/embedded_nt.xml
new file mode 100644
index 0000000000..8e594b1951
--- /dev/null
+++ b/system/doc/embedded/embedded_nt.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1997</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Windows NT</title>
+ <prepared>Kenneth Lundin</prepared>
+ <responsible>Kenneth Lundin</responsible>
+ <docno></docno>
+ <approved></approved>
+ <checked></checked>
+ <date>1997-11-25</date>
+ <rev>PA2</rev>
+ <file>embedded_nt.xml</file>
+ </header>
+ <p>This chapter describes the OS specific parts of OTP which relate
+ to Windows NT.
+ </p>
+
+ <section>
+ <title>Introduction</title>
+ <p>A normal installation of NT 4.0, with service pack 4 or later,
+ is required for an embedded Windows NT running OTP.</p>
+ </section>
+
+ <section>
+ <title>Memory Usage</title>
+ <p>RAM memory of 96 MBytes is recommended to run OTP on NT.
+ A system with less than 64 Mbytes of RAM is not recommended.</p>
+ </section>
+
+ <section>
+ <title>Disk Space Usage</title>
+ <p>A minimum NT installation with networking needs 250 MB, and
+ an additional 130 MB for the swap file. </p>
+ </section>
+
+ <section>
+ <title>Installation</title>
+ <p>Normal NT installation is performed. No additional application
+ programs are needed, such as Internet explorer or web server. Networking
+ with TCP/IP is required. <br></br>
+
+ Service pack 4 or later must be installed.</p>
+
+ <section>
+ <title>Hardware Watchdog</title>
+ <p>For Windows NT running on standard PCs with ISA and/or PCI bus
+ there is a possibility to install an extension card with a hardware
+ watchdog.
+ </p>
+ <p>See also the <c>heart(3)</c> reference manual page in
+ <em>Kernel</em>.
+ </p>
+ </section>
+ </section>
+
+ <section>
+ <title>Starting Erlang</title>
+ <p>On an embedded system, the <c>erlsrv</c> module should be used,
+ to install the erlang process as a Windows system service.
+ This service can start
+ after NT has booted. See documentation for <c>erlsrv</c>.</p>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/embedded_solaris.xml b/system/doc/embedded/embedded_solaris.xml
new file mode 100644
index 0000000000..93532da8e6
--- /dev/null
+++ b/system/doc/embedded/embedded_solaris.xml
@@ -0,0 +1,734 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1997</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Embedded Solaris</title>
+ <prepared>Fredrik Tillman</prepared>
+ <responsible></responsible>
+ <docno>ETX/B/SFP/TILLMAN:96-001</docno>
+ <approved></approved>
+ <checked></checked>
+ <date>2000-10-17</date>
+ <rev>B</rev>
+ <file>embedded_solaris.xml</file>
+ </header>
+ <p>This chapter describes the OS specific parts of OTP which relate
+ to Solaris.
+ </p>
+
+ <section>
+ <title>Memory Usage</title>
+ <p>Solaris takes about 17 Mbyte of RAM on a system with 64 Mbyte of
+ total RAM. This leaves about 47 Mbyte for the applications. If
+ the system utilizes swapping, these figures cannot be improved
+ because unnecessary daemon processes are swapped out. However,
+ if swapping is disabled, or if the swap space is of limited
+ resource in the system, it becomes necessary to kill off
+ unnecessary daemon processes.
+ </p>
+ </section>
+
+ <section>
+ <title>Disk Space Usage</title>
+ <p>The disk space required by Solaris can be minimized by using the
+ Core User support installation. It requires about 80 Mbyte of
+ disk space. This installs only the minimum software required to
+ boot and run Solaris. The disk space can be further reduced by
+ deleting unnecessary individual files. However, unless disk
+ space is a critical resource the effort required and the risks
+ involved may not be justified.</p>
+ </section>
+
+ <section>
+ <title>Installation</title>
+ <p>This section is about installing an embedded system.
+ The following topics are considered,
+ </p>
+ <list type="bulleted">
+ <item>
+ <p>Creation of user and installation directory,</p>
+ </item>
+ <item>
+ <p>Installation of embedded system,</p>
+ </item>
+ <item>
+ <p>Configuration for automatic start at reboot,</p>
+ </item>
+ <item>
+ <p>Making a hardware watchdog available,</p>
+ </item>
+ <item>
+ <p>Changing permission for reboot,</p>
+ </item>
+ <item>
+ <p>Patches,</p>
+ </item>
+ <item>
+ <p>Configuration of the OS_Mon application.</p>
+ </item>
+ </list>
+ <p>Several of the procedures described below require expert
+ knowledge of the Solaris 2 operating system. For most of them
+ super user privilege is needed.
+ </p>
+
+ <section>
+ <title>Creation of User and Installation Directory</title>
+ <p>It is recommended that the Embedded Environment is run by an
+ ordinary user, i.e. a user who does not have super user
+ privileges.
+ </p>
+ <p>Throughout this section we assume that the user name is
+ <c>otpuser</c>, and that the home directory of that user is,
+ </p>
+ <pre>
+ /export/home/otpuser</pre>
+ <p>Furthermore, we assume that in the home directory of
+ <c>otpuser</c>, there is a directory named <c>otp</c>, the
+ full path of which is,
+ </p>
+ <pre>
+ /export/home/otpuser/otp</pre>
+ <p>This directory is the <em>installation directory</em> of the
+ Embedded Environment.
+ </p>
+ </section>
+
+ <section>
+ <title>Installation of an Embedded System</title>
+ <p>The procedure for installation of an embedded system does
+ not differ from that of an ordinary system (see the
+ <em>Installation Guide</em>),
+ except for the following:
+ </p>
+ <list type="bulleted">
+ <item>
+ <p>the (compressed) tape archive file should be
+ extracted in the installation directory as defined above,
+ and,</p>
+ </item>
+ <item>
+ <p>there is no need to link the start script to a
+ standard directory like <c>/usr/local/bin</c>.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Configuration for Automatic Start at Boot</title>
+ <p>A true embedded system has to start when the system
+ boots. This section accounts for the necessary configurations
+ needed to achieve that.
+ </p>
+ <p>The embedded system and all the applications will start
+ automatically if the script file shown below is added to the
+ <c>/etc/rc3.d</c> directory. The file must be owned and
+ readable by <c>root</c>, and its name cannot be arbitrarily
+ assigned. The following name is recommended,
+ </p>
+ <pre>
+ S75otp.system</pre>
+ <p>For further details on initialization (and termination)
+ scripts, and naming thereof, see the Solaris documentation.
+ </p>
+ <pre>
+#!/bin/sh
+#
+# File name: S75otp.system
+# Purpose: Automatically starts Erlang and applications when the
+# system starts
+# Resides in: /etc/rc3.d
+#
+
+if [ ! -d /usr/bin ]
+then # /usr not mounted
+ exit
+fi
+
+killproc() { # kill the named process(es)
+ pid=`/usr/bin/ps -e |
+ /usr/bin/grep -w $1 |
+ /usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
+ [ "$pid" != "" ] &amp;&amp; kill $pid
+}
+
+# Start/stop processes required for Erlang
+
+case "$1" in
+'start')
+ # Start the Erlang emulator
+ #
+ su - otpuser -c "/export/home/otpuser/otp/bin/start" &amp;
+ ;;
+'stop')
+ killproc beam
+ ;;
+*)
+ echo "Usage: $0 { start | stop }"
+ ;;
+esac</pre>
+ <p>The file <c>/export/home/otpuser/otp/bin/start</c> referred to
+ in the above script, is precisely the script <c>start</c>
+ described in the section <em>Starting Erlang</em> below. The
+ script variable <c>OTP_ROOT</c> in that <c>start</c> script
+ corresponds to the example path
+ </p>
+ <pre>
+ /export/home/otpuser/otp</pre>
+ <p>used in this section. The <c>start</c> script should be edited
+ accordingly.
+ </p>
+ <p>Use of the <c>killproc</c> procedure in the above script could
+ be combined with a call to <c>erl_call</c>, e.g.
+ </p>
+ <pre>
+ $SOME_PATH/erl_call -n Node init stop</pre>
+ <p>In order to take Erlang down gracefully see the
+ <c>erl_call(1)</c> reference manual page for further details
+ on the use of <c>erl_call</c>. That however requires that
+ Erlang runs as a distributed node which is not always the
+ case.
+ </p>
+ <p>The <c>killproc</c> procedure should not be removed: the
+ purpose is here to move from run level 3 (multi-user mode with
+ networking resources) to run level 2 (multi-user mode without
+ such resources), in which Erlang should not run.
+ </p>
+ </section>
+
+ <section>
+ <title>Hardware Watchdog</title>
+ <p>For Solaris running on VME boards from Force Computers,
+ there is a possibility to activate the onboard hardware
+ watchdog, provided a VME bus driver is added to the operating
+ system (see also <em>Installation Problems</em> below).
+ </p>
+ <p>See also the <c>heart(3)</c> reference manual page in
+ <em>Kernel</em>.
+ </p>
+ </section>
+
+ <section>
+ <title>Changing Permissions for Reboot</title>
+ <p>If the <c>HEART_COMMAND</c> environment variable is to be set
+ in the <c>start</c> script in the section, <em>Starting Erlang</em>, and if the value shall be set to the
+ path of the Solaris <c>reboot</c> command, i.e.
+ </p>
+ <pre>
+ HEART_COMMAND=/usr/sbin/reboot</pre>
+ <p>the ownership and file permissions for <c>/usr/sbin/reboot</c>
+ must be changed as follows,
+ </p>
+ <pre>
+ chown 0 /usr/sbin/reboot
+ chmod 4755 /usr/sbin/reboot</pre>
+ <p>See also the <c>heart(3)</c> reference manual page in
+ <em>Kernel</em>.
+ </p>
+ </section>
+
+ <section>
+ <title>The TERM Environment Variable</title>
+ <p>When the Erlang runtime system is automatically started from the
+ <c>S75otp.system</c> script the <c>TERM</c> environment
+ variable has to be set. The following is a minimal setting,
+ </p>
+ <pre>
+ TERM=sun</pre>
+ <p>which should be added to the <c>start</c> script described in
+ the section.
+ </p>
+ </section>
+
+ <section>
+ <title>Patches</title>
+ <p>For proper functioning of flushing file system data to disk on
+ Solaris 2.5.1, the version specific patch with number
+ 103640-02 must be added to the operating system. There may be
+ other patches needed, see the release README file
+ <c><![CDATA[<ERL_INSTALL_DIR>/README]]></c>.
+ </p>
+ </section>
+
+ <section>
+ <title>Installation of Module os_sup in Application OS_Mon</title>
+ <p>The following four installation procedures require super user
+ privilege.
+ </p>
+
+ <section>
+ <title>Installation</title>
+ <list type="ordered">
+ <item>
+ <p><em>Make a copy the Solaris standard configuration file for syslogd.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>Make a copy the Solaris standard configuration
+ file for syslogd. This file is usually named
+ <c>syslog.conf</c> and found in the <c>/etc</c>
+ directory.</p>
+ </item>
+ <item>
+ <p>The file name of the copy must be
+ <c>syslog.conf.ORIG</c> but the directory location
+ is optional. Usually it is <c>/etc</c>.
+ </p>
+ <p>A simple way to do this is to issue the command</p>
+ <code type="none">
+cp /etc/syslog.conf /etc/syslog.conf.ORIG</code>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p><em>Make an Erlang specific configuration file for syslogd.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>Make an edited copy of the back-up copy previously
+ made.</p>
+ </item>
+ <item>
+ <p>The file name must be <c>syslog.conf.OTP</c> and the
+ path must be the same as the back-up copy.</p>
+ </item>
+ <item>
+ <p>The format of the configuration file is found in the
+ man page for <c>syslog.conf(5)</c>, by issuing the
+ command <c>man syslog.conf</c>.</p>
+ </item>
+ <item>
+ <p>Usually a line is added which should state:</p>
+ <list type="bulleted">
+ <item>
+ <p>which types of information that will be
+ supervised by Erlang,</p>
+ </item>
+ <item>
+ <p>the name of the file (actually a named pipe)
+ that should receive the information.</p>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p>If e.g. only information originating from the
+ unix-kernel should be supervised, the line should
+ begin with <c>kern.LEVEL</c> (for the possible
+ values of <c>LEVEL</c> see <c>syslog.conf(5)</c>).</p>
+ </item>
+ <item>
+ <p>After at least one tab-character, the line added
+ should contain the full name of the named pipe where
+ syslogd writes its information. The path must be the
+ same as for the <c>syslog.conf.ORIG</c> and
+ <c>syslog.conf.OTP</c> files. The file name must be
+ <c>syslog.otp</c>.</p>
+ </item>
+ <item>
+ <p>If the directory for the <c>syslog.conf.ORIG</c> and
+ <c>syslog.conf.OTP</c> files is <c>/etc</c> the line
+ in <c>syslog.conf.OTP</c> will look like:</p>
+ <code type="none">
+kern.LEVEL /etc/syslog.otp</code>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p><em>Check the file privileges of the configuration files.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>The configuration files should have <c>rw-r--r--</c>
+ file privileges and be owned by root.</p>
+ </item>
+ <item>
+ <p>A simple way to do this is to issue the commands</p>
+ <code type="none">
+chmod 644 /etc/syslog.conf
+chmod 644 /etc/syslog.conf.ORIG
+chmod 644 /etc/syslog.conf.OTP</code>
+ </item>
+ <item>
+ <p><em>Note:</em> If the <c>syslog.conf.ORIG</c> and
+ <c>syslog.conf.OTP</c> files are not in the
+ <c>/etc</c> directory, the file path in the second
+ and third command must be modified.</p>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p><em>Modify file privileges and ownership of the mod_syslog utility.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>The file privileges and ownership of the
+ <c>mod_syslog</c> utility must be modified.</p>
+ </item>
+ <item>
+ <p>The full name of the binary executable file is
+ derived from the position of the <c>os_mon</c>
+ application if the file system by adding
+ <c>/priv/bin/mod_syslog</c>. The generic full name
+ of the binary executable file is thus</p>
+ <code type="none"><![CDATA[
+<OTP_ROOT>/lib/os_mon-<REV>/priv/bin/mod_syslog]]></code>
+ <p><em>Example:</em> If the path to the otp-root is
+ <c>/usr/otp</c>, thus the path to the <c>os_mon</c>
+ application is <c>/usr/otp/lib/os_mon-1.0</c>
+ (assuming revision 1.0) and the full name of the
+ binary executable file is
+ <c>/usr/otp/lib/os_mon-1.0/priv/bin/mod_syslog</c>.</p>
+ </item>
+ <item>
+ <p>The binary executable file must be owned by root,
+ have <c>rwsr-xr-x</c> file privileges, in particular
+ the setuid bit of user must be set.
+ </p>
+ </item>
+ <item>
+ <p>A simple way to do this is to issue the commands</p>
+ <code type="none"><![CDATA[
+cd <OTP_ROOT>/lib/os_mon-<REV>/priv/bin/mod_syslog
+chmod 4755 mod_syslog
+chown root mod_syslog]]></code>
+ </item>
+ </list>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Testing the Application Configuration File</title>
+ <p>The following procedure does not require root privilege.
+ </p>
+ <list type="bulleted">
+ <item>
+ <p>Ensure that the configuration parameters for the
+ <c>os_sup</c> module in the <c>os_mon</c> application
+ are correct.</p>
+ </item>
+ <item>
+ <p>Browse the application configuration file (do
+ <em>not</em> edit it). The full name of the application
+ configuration file is derived from the position of the
+ OS_Mon application if the file system by adding
+ <c>/ebin/os_mon.app</c>.
+ </p>
+ <p>The generic full name of the file is thus</p>
+ <code type="none"><![CDATA[
+<OTP_ROOT>/lib/os_mon-<REV>/ebin/os_mon.app.]]></code>
+ <p><em>Example:</em> If the path to the otp-root is
+ <c>/usr/otp</c>, thus the path to the <c>os_mon</c>
+ application is <c>/usr/otp/lib/os_mon-1.0 </c> (assuming
+ revision 1.0) and the full name of the binary executable
+ file is <c>/usr/otp/lib/os_mon-1.0/ebin/os_mon.app</c>.</p>
+ </item>
+ <item>
+ <p>Ensure that the following configuration parameters are
+ bound to the correct values.</p>
+ </item>
+ </list>
+ <table>
+ <row>
+ <cell align="left" valign="top"><em>Parameter</em></cell>
+ <cell align="left" valign="top"><em>Function</em></cell>
+ <cell align="left" valign="top"><em>Standard value</em></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">start_os_sup</cell>
+ <cell align="left" valign="middle">Specifies if os_sup will be started or not.</cell>
+ <cell align="left" valign="middle"><c>true</c>for the first instance on the hardware; <c>false</c>for the other instances.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">os_sup_own</cell>
+ <cell align="left" valign="middle">The directory for (1)the back-up copy, (2) the Erlang specific configuration file for syslogd.</cell>
+ <cell align="left" valign="middle"><c>"/etc"</c></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">os_sup_syslogconf</cell>
+ <cell align="left" valign="middle">The full name for the Solaris standard configuration file for syslogd </cell>
+ <cell align="left" valign="middle"><c>"/etc/syslog.conf"</c></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">error_tag</cell>
+ <cell align="left" valign="middle">The tag for the messages that are sent to the error logger in the Erlang runtime system.</cell>
+ <cell align="left" valign="middle"><c>std_error</c></cell>
+ </row>
+ <tcaption>Configuration Parameters</tcaption>
+ </table>
+ <p>If the values listed in the <c>os_mon.app</c> do not suit
+ your needs, you should <c>not</c> edit that file. Instead
+ you should <em>override</em> values in a <em>system configuration file</em>, the full pathname of which is given
+ on the command line to <c>erl</c>.
+ </p>
+ <p><em>Example:</em> The following is an example of the
+ contents of an application configuration file.</p>
+ <p></p>
+ <pre>
+ [{os_mon, [{start_os_sup, true}, {os_sup_own, "/etc"},
+ {os_sup_syslogconf, "/etc/syslog.conf"}, {os_sup_errortag, std_error}]}].</pre>
+ </section>
+
+ <section>
+ <title>Related Documents</title>
+ <p>See also the <c>os_mon(3)</c>, <c>application(3)</c> and
+ <c>erl(1)</c> reference manual pages.</p>
+ </section>
+ </section>
+
+ <section>
+ <title>Installation Problems</title>
+ <p>The hardware watchdog timer which is controlled by the
+ <c>heart</c> port program requires the <c>FORCEvme</c>
+ package, which contains the VME bus driver, to be
+ installed. This driver, however, may clash with the Sun
+ <c>mcp</c> driver and cause the system to completely refuse to
+ boot. To cure this problem, the following lines should be
+ added to <c>/etc/system</c>:
+ </p>
+ <list type="bulleted">
+ <item><c>exclude: drv/mcp</c></item>
+ <item><c>exclude: drv/mcpzsa</c></item>
+ <item><c>exclude: drv/mcpp</c></item>
+ </list>
+ <warning>
+ <p>It is recommended that these lines be added to avoid the
+ clash described, which may make it completely impossible to
+ boot the system.</p>
+ </warning>
+ </section>
+ </section>
+
+ <section>
+ <title>Starting Erlang</title>
+ <p>This section describes how an embedded system is started. There
+ are four programs involved, and they all normally reside in the
+ directory <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. The only exception is
+ the program <c>start</c>, which may be located anywhere, and
+ also is the only program that must be modified by the user.
+ </p>
+ <p>In an embedded system there usually is no interactive shell.
+ However, it is possible for an operator to attach to the Erlang
+ system by giving the command <c>to_erl</c>. He is then
+ connected to the Erlang shell, and may give ordinary Erlang
+ commands. All interaction with the system through this shell is
+ logged in a special directory.
+ </p>
+ <p>Basically, the procedure is as follows. The program
+ <c>start</c> is called when the machine is started. It calls
+ <c>run_erl</c>, which sets things up so the operator can attach
+ to the system. It calls <c>start_erl</c> which calls the
+ correct version of <c>erlexec</c> (which is located in
+ <c><![CDATA[<ERL_INSTALL_DIR>/erts-EVsn/bin]]></c>) with the correct
+ <c>boot</c> and <c>config</c> files.
+ </p>
+ </section>
+
+ <section>
+ <title>Programs</title>
+
+ <section>
+ <title>start</title>
+ <p>This program is called when the machine is started. It may
+ be modified or re-written to suit a special system. By
+ default, it must be called <c>start</c> and reside in
+ <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. Another start program can be
+ used, by using the configuration parameter <c>start_prg</c> in
+ the application <c>sasl</c>.</p>
+ <p>The start program must call <c>run_erl</c> as shown below.
+ It must also take an optional parameter which defaults to
+ <c><![CDATA[<ERL_INSTALL_DIR>/releases/start_erl.data]]></c>.
+ </p>
+ <p>This program should set static parameters and environment
+ variables such as <c>-sname Name</c> and <c>HEART_COMMAND</c>
+ to reboot the machine.
+ </p>
+ <p>The <c><![CDATA[<RELDIR>]]></c> directory is where new release packets
+ are installed, and where the release handler keeps information
+ about releases. See <c>release_handler(3)</c> in the
+ application <c>sasl</c> for further information.
+ </p>
+ <p>The following script illustrates the default behaviour of the
+ program.
+ </p>
+ <code type="none"><![CDATA[
+#!/bin/sh
+# Usage: start [DataFile]
+#
+ROOTDIR=/usr/local/otp
+
+if [ -z "$RELDIR" ]
+then
+ RELDIR=$ROOTDIR/releases
+fi
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl \\
+ $ROOTDIR $RELDIR $START_ERL_DATA" > /dev/null 2>&1 &]]></code>
+ <p>The following script illustrates a modification where the node
+ is given the name <c>cp1</c>, and the environment variables
+ <c>HEART_COMMAND</c> and <c>TERM</c> have been added to the
+ above script.
+ </p>
+ <code type="none"><![CDATA[
+#!/bin/sh
+# Usage: start [DataFile]
+#
+HEART_COMMAND=/usr/sbin/reboot
+TERM=sun
+export HEART_COMMAND TERM
+
+ROOTDIR=/usr/local/otp
+
+if [ -z "$RELDIR" ]
+then
+ RELDIR=$ROOTDIR/releases
+fi
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl \\
+ $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname cp1" > /dev/null 2>&1 &]]></code>
+ <p>If a diskless and/or read-only client node is about to start the
+ <c>start_erl.data</c> file is located in the client directory at
+ the master node. Thus, the <c>START_ERL_DATA</c> line should look
+ like:
+ </p>
+ <code type="none">
+CLIENTDIR=$ROOTDIR/clients/clientname
+START_ERL_DATA=${1:-$CLIENTDIR/bin/start_erl.data}</code>
+ </section>
+
+ <section>
+ <title>run_erl</title>
+ <p>This program is used to start the emulator, but you will not
+ be connected to the shell. <c>to_erl</c> is used to connect to
+ the Erlang shell.
+ </p>
+ <code type="none">
+Usage: run_erl pipe_dir/ log_dir "exec command [parameters ...]"</code>
+ <p>Where <c>pipe_dir/</c> should be <c>/tmp/</c> (<c>to_erl</c>
+ uses this name by default) and <c>log_dir</c> is where the log
+ files are written. <c>command [parameters]</c> is executed,
+ and everything written to stdin and stdout is logged in the
+ <c>log_dir</c>.
+ </p>
+ <p>In the <c>log_dir</c>, log files are written. Each logfile
+ has a name of the form: <c>erlang.log.N</c> where N is a
+ generation number, ranging from 1 to 5. Each logfile holds up
+ to 100kB text. As time goes by the following logfiles will be
+ found in the logfile directory</p>
+ <code type="none">
+erlang.log.1
+erlang.log.1, erlang.log.2
+erlang.log.1, erlang.log.2, erlang.log.3
+erlang.log.1, erlang.log.2, erlang.log.3, erlang.log.4
+erlang.log.2, erlang.log.3, erlang.log.4, erlang.log.5
+erlang.log.3, erlang.log.4, erlang.log.5, erlang.log.1
+...</code>
+ <p>with the most recent logfile being the right most in each row
+ of the above list. That is, the most recent file is the one
+ with the highest number, or if there are already four files,
+ the one before the skip.
+ </p>
+ <p>When a logfile is opened (for appending or created) a time
+ stamp is written to the file. If nothing has been written to
+ the log files for 15 minutes, a record is inserted that says
+ that we're still alive.
+ </p>
+ </section>
+
+ <section>
+ <title>to_erl</title>
+ <p>This program is used to attach to a running Erlang runtime
+ system, started with <c>run_erl</c>.
+ </p>
+ <code type="none">
+Usage: to_erl [pipe_name | pipe_dir]</code>
+ <p>Where <c>pipe_name</c> defaults to <c>/tmp/erlang.pipe.N</c>.
+ </p>
+ <p>To disconnect from the shell without exiting the Erlang
+ system, type <c>Ctrl-D</c>.
+ </p>
+ </section>
+
+ <section>
+ <title>start_erl</title>
+ <p>This program starts the Erlang emulator with parameters
+ <c>-boot</c> and <c>-config</c> set. It reads data about
+ where these files are located from a file called
+ <c>start_erl.data</c> which is located in the <c><![CDATA[<RELDIR>]]></c>.
+ Each new release introduces a new data file. This file is
+ automatically generated by the release handler in Erlang.
+ </p>
+ <p>The following script illustrates the behaviour of the
+ program.
+ </p>
+ <code type="none">
+#!/bin/sh
+#
+# This program is called by run_erl. It starts
+# the Erlang emulator and sets -boot and -config parameters.
+# It should only be used at an embedded target system.
+#
+# Usage: start_erl RootDir RelDir DataFile [ErlFlags ...]
+#
+ROOTDIR=$1
+shift
+RELDIR=$1
+shift
+DataFile=$1
+shift
+
+ERTS_VSN=`awk '{print $1}' $DataFile`
+VSN=`awk '{print $2}' $DataFile`
+
+BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin
+EMU=beam
+PROGNAME=`echo $0 | sed 's/.*\\///'`
+export EMU
+export ROOTDIR
+export BINDIR
+export PROGNAME
+export RELDIR
+
+exec $BINDIR/erlexec -boot $RELDIR/$VSN/start -config $RELDIR/$VSN/sys $*</code>
+ <p>If a diskless and/or read-only client node with the
+ <c>sasl</c> configuration parameter <c>static_emulator</c> set
+ to <c>true</c> is about to start the <c>-boot</c> and
+ <c>-config</c> flags must be changed. As such a client cannot
+ read a new <c>start_erl.data</c> file (the file is not
+ possible to change dynamically) the boot and config files are
+ always fetched from the same place (but with new contents if
+ a new release has been installed). The <c>release_handler</c>
+ copies this files to the <c>bin</c> directory in the client
+ directory at the master nodes whenever a new release is made
+ permanent.
+ </p>
+ <p>Assuming the same <c>CLIENTDIR</c> as above the last line
+ should look like:
+ </p>
+ <code type="none">
+exec $BINDIR/erlexec -boot $CLIENTDIR/bin/start \\
+ -config $CLIENTDIR/bin/sys $*</code>
+ </section>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/intro.xml b/system/doc/embedded/intro.xml
new file mode 100644
index 0000000000..3eafffd6fa
--- /dev/null
+++ b/system/doc/embedded/intro.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1997</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>Erlang on embedded systems</title>
+ <prepared>Fredrik Tillman</prepared>
+ <responsible></responsible>
+ <docno>ETX/B/SFP/TILLMAN:96-001</docno>
+ <approved></approved>
+ <checked></checked>
+ <date>1997-11-12</date>
+ <rev>PA1</rev>
+ <file>intro.sgml</file>
+ </header>
+ <p>This manual is a complement to the other manuals and describes how
+ to install, run and maintain Erlang on an embedded system.
+ </p>
+ <p>For more informaton about how to install and start Erlang read
+ XXXXXXXX.
+ </p>
+
+ <section>
+ <title>Memory Usage</title>
+ <p>Solaris takes about 17 Mbyte of RAM on a system with 64 Mbyte of
+ total RAM. This leaves about 47 Mbyte for the applications. If
+ the system utilizes swapping, these figures cannot be improved
+ because unnecessary daemon processes are swapped out. However,
+ if swapping is disabled, or if the swap space is a precious
+ resource in the system, it becomes necessary to kill off
+ unnecessary daemon processes.
+ </p>
+ <p>The following start-scripts can be deleted to
+ prevent unnecessary daemons from starting:
+ </p>
+ <list type="bulleted">
+ <item><c>/etc/rc2.d/S72autoinstall</c></item>
+ <item><c>/etc/rc2.d/S74autofs</c></item>
+ <item><c>/etc/rc2.d/S76nscd</c></item>
+ <item><c>/etc/rc2.d/S80PRESERVE</c></item>
+ <item><c>/etc/rc2.d/S80lp</c></item>
+ <item><c>/etc/rc2.d/S88sendmail</c></item>
+ <item><c>/etc/rc2.d/S92volmgt</c></item>
+ <item><c>/etc/rc2.d/S93cacheos.finish</c></item>
+ <item><c>/etc/rc3.d/S15nfs.server</c></item>
+ </list>
+ <p>More information is expected from Sun on how to modify the
+ kernel in order to reduce the memory consumption. This will be
+ performed by modifying the <c>/etc/system</c> file.</p>
+ </section>
+
+ <section>
+ <title>Disk Space Usage</title>
+ <p>The disk space required by Solaris can be minimized by using the
+ Core User support installation. It requires about 80 Mbyte of
+ disk space. This installs only the minimum software required to
+ boot and run Solaris. The disk space can be further reduced by
+ deleting unnecessary individual files. However, unless disk
+ space is a critical resource the effort required and the risks
+ involved may not be justified.</p>
+ </section>
+
+ <section>
+ <title>Other Issues</title>
+ <p>Future releases of OTP will include more information on how
+ Solaris can be configured for use with embedded systems to get
+ maximum performance. Issues which will be investigated include:
+ </p>
+ <list type="bulleted">
+ <item>how disabling swapping affects the system</item>
+ <item>how locking processes in memory may yield performance benefits.</item>
+ </list>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/make.dep b/system/doc/embedded/make.dep
new file mode 100644
index 0000000000..9949a3ac96
--- /dev/null
+++ b/system/doc/embedded/make.dep
@@ -0,0 +1,14 @@
+# ----------------------------------------------------
+# >>>> Do not edit this file <<<<
+# This file was automaticly generated by
+# /home/otp/bin/docdepend
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# TeX files that the DVI file depend on
+# ----------------------------------------------------
+
+book.dvi: book.tex embedded_nt.tex embedded_solaris.tex \
+ part.tex vxworks.tex
+
diff --git a/system/doc/embedded/note.gif b/system/doc/embedded/note.gif
new file mode 100644
index 0000000000..6fffe30419
--- /dev/null
+++ b/system/doc/embedded/note.gif
Binary files differ
diff --git a/system/doc/embedded/part.xml b/system/doc/embedded/part.xml
new file mode 100644
index 0000000000..abedce46d6
--- /dev/null
+++ b/system/doc/embedded/part.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE part SYSTEM "part.dtd">
+
+<part xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header>
+ <copyright>
+ <year>1997</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Embedded Systems User's Guide</title>
+ <prepared>Kenneth Lundin, Fredrik Tillman</prepared>
+ <responsible>UAB/F (Kenneth Lundin)</responsible>
+ <docno></docno>
+ <approved>UAB/F (Kenneth Lundin)</approved>
+ <checked></checked>
+ <date>2000-10-17</date>
+ <rev>C</rev>
+ <file></file>
+ </header>
+ <description>
+ <p>This manual describes the issues that are specific
+ for running Erlang on an embedded system.
+ It describes the differences in installing and starting
+ Erlang compared to how it is done for a non-embedded system.
+ </p>
+ <p>Note that this is a supplementary document. You still need to
+ read the Installation Guide.
+ </p>
+ <p>There is also target architecture specific information in
+ the top level README file of the Erlang distribution.</p>
+ </description>
+ <xi:include href="embedded_solaris.xml"/>
+ <xi:include href="embedded_nt.xml"/>
+ <xi:include href="vxworks.xml"/>
+</part>
+
diff --git a/system/doc/embedded/starting.xml b/system/doc/embedded/starting.xml
new file mode 100644
index 0000000000..ddeaeb8bdf
--- /dev/null
+++ b/system/doc/embedded/starting.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1996</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Starting an Embedded System</title>
+ <prepared>Martin Bj&ouml;rklund</prepared>
+ <responsible>Bjarne D&auml;cker</responsible>
+ <docno></docno>
+ <approved>Bjarne D&auml;cker</approved>
+ <checked></checked>
+ <date>1997-10-17</date>
+ <rev>D</rev>
+ <file>starting.sgml</file>
+ </header>
+
+ <section>
+ <title>Introduction</title>
+ <p>This chapter describes how an embedded system is started.
+ There are four programs involved, and they all normally reside
+ in the directory <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. The only
+ exception is the program <c>start</c>, which may be located
+ anywhere, and also is the only program that must be modified by
+ the user.
+ </p>
+ <p>In an embedded system there usually is no interactive shell.
+ However, it is possible for an operator to attach to the
+ Erlang runtime system by giving the command <c>to_erl</c>. He is
+ then connected to the Erlang shell, and may give ordinary Erlang
+ commands. All interaction with the system through this shell is
+ logged in a special directory.
+ </p>
+ <p>Basically, the procedure is as follows. The program
+ <c>start</c> is called when the machine is started. It calls
+ <c>run_erl</c>, which sets things up so the operator can attach
+ to the system. It calls <c>start_erl</c> which calls the
+ correct version of <c>erlexec</c> (which is located in
+ <c><![CDATA[<ERL_INSTALL_DIR>/erts-EVsn/bin]]></c>) with the correct
+ <c>boot</c> and <c>config</c> files.
+ </p>
+ </section>
+
+ <section>
+ <title>Programs</title>
+
+ <section>
+ <title>start</title>
+ <p>This program is called when the machine is started. It may
+ be modified or re-written to suit a special system. By
+ default, it must be called <c>start</c> and reside in
+ <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. Another start program can be
+ used, by using the configuration parameter <c>start_prg</c> in
+ the application <c>sasl</c>.</p>
+ <p>The start program must call <c>run_erl</c> as shown below.
+ It must also take an optional parameter which defaults to
+ <c><![CDATA[<ERL_INSTALL_DIR>/bin/start_erl.data]]></c>.
+ </p>
+ <p>This program should set static parameters and environment
+ variables such as <c>-sname Name</c> and <c>HEART_COMMAND</c>
+ to reboot the machine.
+ </p>
+ <p>The <c><![CDATA[<RELDIR>]]></c> directory is where new release packets
+ are installed, and where the release handler keeps information
+ about releases. See <c>release_handler(3)</c> in the
+ application <c>sasl</c> for further information.
+ </p>
+ <p>The following script illustrates the default behaviour of the
+ program.
+ </p>
+ <code type="none"><![CDATA[
+#!/bin/sh
+# Usage: start [DataFile]
+#
+ROOTDIR=/usr/local/otp
+
+if [ -z "$RELDIR" ]
+then
+ RELDIR=$ROOTDIR/releases
+fi
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl @@@
+ $ROOTDIR $RELDIR $START_ERL_DATA" > /dev/null 2>&1 &]]></code>
+ <p>The following script illustrates a modification where the
+ node is given the name <c>cp1</c>, and the environment variables
+ <c>HEART_COMMAND</c> and <c>TERM</c> have been added to the
+ above script.
+ </p>
+ <code type="none"><![CDATA[
+#!/bin/sh
+# Usage: start [DataFile]
+#
+HEART_COMMAND=/usr/sbin/reboot
+TERM=sun
+export HEART_COMMAND TERM
+
+ROOTDIR=/usr/local/otp
+
+if [ -z "$RELDIR" ]
+then
+ RELDIR=$ROOTDIR/releases
+fi
+
+START_ERL_DATA=${1:-$RELDIR/start_erl.data}
+
+$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl @@@
+ $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname cp1" > /dev/null 2>&1 &]]></code>
+ <p>If a diskless and/or read-only client node is about to start the
+ <c>start_erl.data</c> file is located in the client directory at
+ the master node. Thus, the <c>START_ERL_DATA</c> line should look
+ like:
+ </p>
+ <code type="none">
+CLIENTDIR=$ROOTDIR/clients/clientname
+START_ERL_DATA=${1:-$CLIENTDIR/bin/start_erl.data}</code>
+ </section>
+
+ <section>
+ <title>run_erl</title>
+ <p>This program is used to start the emulator, but you will not
+ be connected to the shell. <c>to_erl</c> is used to connect to the
+ Erlang shell.
+ </p>
+ <code type="none">
+Usage: run_erl pipe_dir/ log_dir "exec command [parameters ...]"</code>
+ <p>Where <c>pipe_dir/</c> should be <c>/tmp/</c>
+ (<c>to_erl</c> uses this name by default) and <c>log_dir</c> is
+ where the log files are written. <c>command [parameters]</c> is
+ executed, and everything written to stdin and stdout is logged in
+ the <c>log_dir</c>.
+ </p>
+ <p>In the <c>log_dir</c>, log files are written. Each logfile
+ has a name of the form: <c>erlang.log.N</c> where N is a
+ generation number, ranging from 1 to 5. Each logfile holds up to
+ 100kB text. As time goes by the following logfiles will be found
+ in the logfile directory</p>
+ <code type="none">
+erlang.log.1
+erlang.log.1, erlang.log.2
+erlang.log.1, erlang.log.2, erlang.log.3
+erlang.log.1, erlang.log.2, erlang.log.3, erlang.log.4
+erlang.log.2, erlang.log.3, erlang.log.4, erlang.log.5
+erlang.log.3, erlang.log.4, erlang.log.5, erlang.log.1
+... </code>
+ <p>with the most recent logfile being the right most in each row
+ of the above list. That is, the most recent file is the one with
+ the highest number, or if there are already four files, the one
+ before the skip.
+ </p>
+ <p>When a logfile is opened (for appending or created) a time
+ stamp is written to the file. If nothing has been written to
+ the log files for 15 minutes, a record is inserted that says
+ that we're still alive.
+ </p>
+ </section>
+
+ <section>
+ <title>to_erl</title>
+ <p>This program is used to attach to a running Erlang runtime system,
+ started with <c>run_erl</c>.
+ </p>
+ <code type="none">
+Usage: to_erl [pipe_name | pipe_dir]</code>
+ <p>Where <c>pipe_name</c> defaults to <c>/tmp/erlang.pipe.N</c>.
+ </p>
+ <p>To disconnect from the shell without exiting the Erlang
+ runtime system, type <c>Ctrl-D</c>.
+ </p>
+ </section>
+
+ <section>
+ <title>start_erl</title>
+ <p>This program starts the Erlang emulator with parameters
+ <c>-boot</c> and <c>-config</c> set. It reads data about where
+ these files are located from a file called <c>start_erl.data</c>
+ which is located in the <c><![CDATA[<RELDIR>]]></c>. Each new release
+ introduces a new data file. This file is automatically
+ generated by the release handler in Erlang.
+ </p>
+ <p>The following script illustrates the behaviour of the
+ program.</p>
+ <code type="none">
+#!/bin/sh
+#
+# This program is called by run_erl. It starts
+# the Erlang emulator and sets -boot and -config parameters.
+# It should only be used at an embedded target system.
+#
+# Usage: start_erl RootDir RelDir DataFile [ErlFlags ...]
+#
+ROOTDIR=$1
+shift
+RELDIR=$1
+shift
+DataFile=$1
+shift
+
+ERTS_VSN=`awk '{print $1}' $DataFile`
+VSN=`awk '{print $2}' $DataFile`
+
+BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin
+EMU=beam
+PROGNAME=`echo $0 | sed 's/.*\\///'`
+export EMU
+export ROOTDIR
+export BINDIR
+export PROGNAME
+export RELDIR
+
+exec $BINDIR/erlexec -boot $RELDIR/$VSN/start -config $RELDIR/$VSN/sys $* </code>
+ <p>If a diskless and/or read-only client node with the <c>sasl</c>
+ configuration parameter <c>static_emulator</c> set to <c>true</c>
+ is about to start the <c>-boot</c> and <c>-config</c> flags must be
+ changed. As such a client can not read a new <c>start_erl.data</c>
+ file (the file is not possible to change dynamically) the boot and
+ config files is always fetched from the same place (but with a new
+ contents if a new release has been installed). The
+ <c>release_handler</c> copies this files to the <c>bin</c> directory
+ in the client directory at the master nodes whenever a new release
+ is made permanent.
+ </p>
+ <p>Assuming the same <c>CLIENTDIR</c> as above the last line should
+ look like:</p>
+ <code type="none">
+exec $BINDIR/erlexec -boot $CLIENTDIR/bin/start @@@
+ -config $CLIENTDIR/bin/sys $* </code>
+ </section>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/target.xml b/system/doc/embedded/target.xml
new file mode 100644
index 0000000000..4408e6ee48
--- /dev/null
+++ b/system/doc/embedded/target.xml
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1996</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Installation of Embedded Environment</title>
+ <prepared>Peter H&ouml;gfeldt</prepared>
+ <responsible>Peter H&ouml;gfeldt</responsible>
+ <docno></docno>
+ <approved>(Peter H&ouml;gfeldt</approved>
+ <checked></checked>
+ <date>1997-05-26</date>
+ <rev>C</rev>
+ <file>target.sgml</file>
+ </header>
+ <p>This chapter is about installing a Embedded Environment. Solaris
+ 2.5.1 is the only UNIX operating system supported for embedded systems.
+ The following topics are considered,</p>
+ <list type="bulleted">
+ <item>
+ <p>Creation of user and installation directory,</p>
+ </item>
+ <item>
+ <p>Installation of Embedded Environment,</p>
+ </item>
+ <item>
+ <p>Configuration for automatic start at reboot,</p>
+ </item>
+ <item>
+ <p>Making a hardware watchdog available,</p>
+ </item>
+ <item>
+ <p>Changing permission for reboot,</p>
+ </item>
+ <item>
+ <p>Patches for Solaris 2.5.1,</p>
+ </item>
+ <item>
+ <p>Configuration of the os_mon application.</p>
+ </item>
+ </list>
+ <p>Several of the procedures described below require expert knowledge of
+ the Solaris 2 operating system. For most of them super user privilege is
+ needed.</p>
+
+ <section>
+ <title>Creation of user and installation directory</title>
+ <p>It is recommended that the Embedded Environment is run by an ordinary
+ user, i.e. a user which does not have super user privileges. </p>
+ <p>Throughout this chapter we assume that the user name is <c>otpuser</c>,
+ and that the home directory of that user is,</p>
+ <pre>
+/export/home/otpuser </pre>
+ <p>Furthermore, we assume that in the home directory of <c>otpuser</c>,
+ there is a directory named <c>otp</c>, the full path of which is,</p>
+ <pre>
+/export/home/otpuser/otp </pre>
+ <p>This directory is the <em>installation directory</em> of the Embedded
+ Environment.</p>
+ </section>
+
+ <section>
+ <title>Installation of Embedded Environment</title>
+ <p>The procedure for installation of a Embedded Environment does not differ
+ from that of a Development Environment (see the chapter <em>Installation of Development Environment</em>), except for the following,</p>
+ <list type="bulleted">
+ <item>
+ <p>the (compressed) tape archive file should be extracted in
+ the installation directory as defined above, and,</p>
+ </item>
+ <item>
+ <p>there is no need to link the start script to a standard directory
+ like <c>/usr/local/bin</c>.</p>
+ </item>
+ </list>
+ <p>The details for extracting the tape archive file is not repeated here.</p>
+ </section>
+
+ <section>
+ <title>Configuration for Automatic Start at Boot</title>
+ <p>A true Embedded Environment has to start when the system boots. This
+ section accounts for the necessary configurations needed to achieve
+ that.</p>
+ <p>The embedded environment and all the applications will start automatically
+ if the script file shown below is added to the <c>/etc/rc3.d</c> directory.
+ The file must be owned and readable by <c>root</c>, and its name cannot
+ be arbitrarily assigned. The following name is recommended,</p>
+ <pre>
+S75otp.system </pre>
+ <p>For further details on initialization (and termination) scripts, and
+ naming thereof, see the file <c>/etc/init.d/README</c> on a Solaris
+ 2.5.1 system.</p>
+ <pre>
+#!/bin/sh
+#
+# File name: S75otp.system
+# Purpose: Automatically starts Erlang and applications when the
+# system starts
+# Resides in: /etc/rc3.d
+#
+
+if [ ! -d /usr/bin ]
+then # /usr not mounted
+ exit
+fi
+
+killproc() { # kill the named process(es)
+ pid=`/usr/bin/ps -e |
+ /usr/bin/grep -w $1 |
+ /usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
+ [ "$pid" != "" ] &amp;&amp; kill $pid
+}
+
+# Start/stop processes required for Erlang
+
+case "$1" in
+'start')
+ # Start the Erlang emulator
+ #
+ su - otpuser -c "/export/home/otpuser/otp/bin/start" &amp;
+ ;;
+'stop')
+ killproc beam
+ ;;
+*)
+ echo "Usage: $0 { start | stop }"
+ ;;
+esac </pre>
+ <p>The file <c>/export/home/otpuser/otp/bin/start</c> referred to in the
+ above script, is precisely the script <c>start</c> described in the next
+ chapter of this guide, <em>Starting an Embedded System</em>. The script
+ variable <c>OTP_ROOT</c> in that <c>start</c> script corresponds to
+ the example path </p>
+ <pre>
+/export/home/otpuser/otp </pre>
+ <p>used in this section. The <c>start</c> script should be edited
+ accordingly.</p>
+ <p>Use of the <c>killproc</c> procedure in the above script could
+ be combined with a call to <c>erl_call</c>, e.g.</p>
+ <pre>
+ $SOME_PATH/erl_call -n Node init stop </pre>
+ <p>in order to take Erlang down gracefully (see the <c>erl_call(1)</c>
+ reference manual page for further details on the use of <c>erl_call</c>).
+ That however requires that Erlang runs as a distributed node which is
+ not always the case.</p>
+ <p>The <c>killproc</c> procedure should not be removed: the purpose is
+ here to move from run level 3 (multi-user mode with networking resources)
+ to run level 2 (multi-user mode without such resources), in which Erlang
+ should not run.</p>
+ </section>
+
+ <section>
+ <title>Hardware Watchdog</title>
+ <p>For Solaris 2.5.1 running on VME boards from Force Computers, there
+ is a possibility to activate the onboard hardware watchdog, provided a
+ VME bus driver is added to the operating system. For further details
+ see the <em>Embedded Systems</em> documentation.</p>
+ <p>See also the <c>heart(3)</c> reference manual page in <em>Kernel</em>.</p>
+ </section>
+
+ <section>
+ <title>Changing permissions for reboot</title>
+ <p>If the <c>HEART_COMMAND</c> environment variable is to be set in
+ the <c>start</c> script of the next chapter, <em>Starting an Embedded System</em>, and if the value shall be set to the path of the Solaris
+ <c>reboot</c> command, i.e.</p>
+ <pre>
+HEART_COMMAND=/usr/sbin/reboot </pre>
+ <p>the ownership and file permissions for <c>/usr/sbin/reboot</c> must
+ be changed as follows,</p>
+ <pre>
+chown 0 /usr/sbin/reboot
+chmod 4755 /usr/sbin/reboot </pre>
+ <p>See also the <c>heart(3)</c> reference manual page in <em>Kernel</em>.</p>
+ </section>
+
+ <section>
+ <title>The TERM environment variable</title>
+ <p>When the Erlang runtime system is automatically started from the
+ <c>S75otp.system</c> script the <c>TERM</c> environment variable
+ has to be set. The following is a minimal setting,</p>
+ <pre>
+TERM=sun </pre>
+ <p>which should be added to the <c>start</c> script described in the
+ next chapter.</p>
+ </section>
+
+ <section>
+ <title>Patches for Solaris 2.5.1</title>
+ <p>For proper functioning of flushing file system data to disk, the
+ Solaris 2.5.1 specific patch with number 103640-02 must be added
+ to the operating system.</p>
+ </section>
+
+ <section>
+ <title>Installation of module os_sup in application os_mon</title>
+ <p>The following four installation procedures requires superuser privilege.</p>
+
+ <section>
+ <title>Installation</title>
+ <list type="ordered">
+ <item>
+ <p><em>Make a copy the Solaris standard configuration file for syslogd.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>Make a copy the Solaris standard configuration file for syslogd.
+ This file is usually named <c>syslog.conf</c> and found in the <c>/etc</c>
+ directory.</p>
+ </item>
+ <item>
+ <p>The file name of the copy must be <c>syslog.conf.ORIG</c> but the
+ directory location is optional. Usually it is <c>/etc</c>.
+ </p>
+ <p>A simple way to do this is to issue the command</p>
+ <code type="none">
+ cp /etc/syslog.conf /etc/syslog.conf.ORIG</code>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p><em>Make an Erlang specific configuration file for syslogd.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>Make an edited copy of the back-up copy previously made.</p>
+ </item>
+ <item>
+ <p>The file name must be <c>syslog.conf.OTP</c> and the path
+ must be the same as the back-up copy.</p>
+ </item>
+ <item>
+ <p>The format of the configuration file is found in the man page for
+ <c>syslog.conf(5)</c>, by issuing the command <c>man syslog.conf</c>.</p>
+ </item>
+ <item>
+ <p>Usually a line is added which should state:</p>
+ <list type="bulleted">
+ <item>
+ <p>which types of information that will be supervised by Erlang,</p>
+ </item>
+ <item>
+ <p>the name of the file (actually a named pipe) that should receive
+ the information.</p>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p>If e.g. only information originating from the unix-kernel should
+ be supervised, the line should begin with <c>kern.LEVEL</c> (for the
+ possible values of <c>LEVEL</c> see <c>syslog.conf(5)</c>).</p>
+ </item>
+ <item>
+ <p>After at least one tab-character, the line added should contain
+ the full name of the named pipe where syslogd writes its information. The
+ path must be the same as for the <c>syslog.conf.ORIG</c> and
+ <c>syslog.conf.OTP</c> files. The file name must be <c>syslog.otp</c>.</p>
+ </item>
+ <item>
+ <p>If the directory for the <c>syslog.conf.ORIG</c> and
+ <c>syslog.conf.OTP</c> files is <c>/etc</c> the line in
+ <c>syslog.conf.OTP</c> will look like:</p>
+ <code type="none">
+ kern.LEVEL /etc/syslog.otp </code>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p><em>Check the file privileges of the configuration files.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>The configuration files should have <c>rw-r--r--</c> file
+ privileges and be owned by root.</p>
+ </item>
+ <item>
+ <p>A simple way to do this is to issue the commands</p>
+ <code type="none">
+ chmod 644 /etc/syslog.conf
+ chmod 644 /etc/syslog.conf.ORIG
+ chmod 644 /etc/syslog.conf.OTP </code>
+ </item>
+ <item>
+ <p><em>Note:</em> If the <c>syslog.conf.ORIG</c> and
+ <c>syslog.conf.OTP</c> files are not in the <c>/etc</c> directory,
+ the file path in the second and third command must be modified.</p>
+ </item>
+ </list>
+ </item>
+ <item>
+ <p><em>Modify file privileges and ownership of the mod_syslog utility.</em></p>
+ <list type="bulleted">
+ <item>
+ <p>The file privileges and ownership of the <c>mod_syslog</c> utility
+ must be modified.</p>
+ </item>
+ <item>
+ <p>The full name of the binary executable file is derived from the
+ position of the <c>os_mon</c> application if the file system by adding
+ <c>/priv/bin/mod_syslog</c>. The generic full name of the binary executable
+ file is thus</p>
+ <code type="none"><![CDATA[
+ <OTP_ROOT>/lib/os_mon-<rev>/priv/bin/mod_syslog ]]></code>
+ <p><em>Example:</em> If the path to the otp-root is
+ <c>/usr/otp</c>, thus the path to the <c>os_mon</c> application is
+ <c>/usr/otp/lib/os_mon-1.0</c> (assuming revision 1.0) and the full name
+ of the binary executable file is
+ <c>/usr/otp/lib/os_mon-1.0/priv/bin/mod_syslog</c>.</p>
+ </item>
+ <item>
+ <p>The binary executable file must be owned by root, have
+ <c>rwsr-xr-x</c> file privileges, in particular the setuid bit of
+ user must be set.</p>
+ </item>
+ <item>
+ <p>A simple way to do this is to issue the commands</p>
+ <code type="none"><![CDATA[
+ cd <OTP_ROOT>/lib/os_mon-<rev>/priv/bin/mod_syslog
+ chmod 4755 mod_syslog
+ chown root mod_syslog ]]></code>
+ </item>
+ </list>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Testing the application configuration file</title>
+ <p>The following procedure does not require root privilege.</p>
+ <list type="bulleted">
+ <item>
+ <p>Ensure that the configuration parameters for the <c>os_sup</c>
+ module in the <c>os_mon</c> application are correct.</p>
+ </item>
+ <item>
+ <p>Browse the application configuration file (do <em>not</em> edit
+ it). The full name of the application configuration file is derived
+ from the position of the os_mon-application if the file system by adding
+ <c>/ebin/os_mon.app</c>.</p>
+ <p>The generic full name of the file is thus</p>
+ <code type="none"><![CDATA[
+ <OTP_ROOT>/lib/os_mon-<rev>/ebin/os_mon.app. ]]></code>
+ <p><em>Example:</em> If the path to the otp-root is <c>/usr/otp</c>,
+ thus the path to the <c>os_mon</c> application is <c>/usr/otp/lib/os_mon-1.0</c> (assuming revision 1.0) and the full name of the binary executable file
+ is <c>/usr/otp/lib/os_mon-1.0/ebin/os_mon.app</c>.</p>
+ </item>
+ <item>
+ <p>Ensure that the following configuration parameters are bound to
+ the correct values.</p>
+ </item>
+ </list>
+ <table>
+ <row>
+ <cell align="left" valign="top"><em>Parameter</em></cell>
+ <cell align="left" valign="top"><em>Function</em></cell>
+ <cell align="left" valign="top"><em>Standard value</em></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">start_os_sup</cell>
+ <cell align="left" valign="middle">Specifies if os_sup will be started or not.</cell>
+ <cell align="left" valign="middle"><c>true</c>for the first instance on the hardware; <c>false</c>for the other instances.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">os_sup_own</cell>
+ <cell align="left" valign="middle">The directory for (1)the back-up copy, (2) the Erlang specific configuration file for syslogd.</cell>
+ <cell align="left" valign="middle"><c>"/etc"</c></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">os_sup_syslogconf</cell>
+ <cell align="left" valign="middle">The full name for the Solaris standard configuration file for syslogd </cell>
+ <cell align="left" valign="middle"><c>"/etc/syslog.conf"</c></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">error_tag</cell>
+ <cell align="left" valign="middle">The tag for the messages that are sent to the error logger in the Erlang runtime system.</cell>
+ <cell align="left" valign="middle"><c>std_error</c></cell>
+ </row>
+ <tcaption>Configuration Parameters</tcaption>
+ </table>
+ <p>If the values listed in the <c>os_mon.app</c> does not suite your
+ needs, you should <c>not</c> edit that file. Instead you should
+ <em>override</em> values in a <em>system configuration file</em>, the
+ full pathname of which is given on the command line to <c>erl</c>.</p>
+ <p><em>Example:</em> The following is an example of the contents of an
+ application configuration file.</p>
+ <p></p>
+ <pre>
+[{os_mon, [{start_os_sup, true}, {os_sup_own, "/etc"},
+ {os_sup_syslogconf, "/etc/syslog.conf"}, {os_sup_errortag, std_error}]}]. </pre>
+ </section>
+
+ <section>
+ <title>Related documents</title>
+ <p>See also the <c>os_mon(3)</c>, <c>application(3)</c> and <c>erl(1)</c>
+ reference manual pages.</p>
+ </section>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/vme_problems.xml b/system/doc/embedded/vme_problems.xml
new file mode 100644
index 0000000000..7f9b929875
--- /dev/null
+++ b/system/doc/embedded/vme_problems.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1997</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>VME Bus Driver</title>
+ <prepared>Fredrik Tillman</prepared>
+ <responsible></responsible>
+ <docno>ETX/B/SFP/TILLMAN:96-002</docno>
+ <approved></approved>
+ <checked></checked>
+ <date>1996-10-29</date>
+ <rev>PA1</rev>
+ <file>vme_problems.sgml</file>
+ </header>
+ <p>This chapter describes the OS specific parts of OTP which relate to
+ the VME Bus Driver.
+ </p>
+
+ <section>
+ <title>Installation Problems</title>
+ <p>The hardware watchdog timer which is controlled by the
+ <c>heart</c> port program requires the <c>FORCEvme</c> package,
+ which contains the VME bus driver, to be installed. This driver,
+ however, might clash with the Sun <c>mcp</c> driver and cause
+ the system to completely refuse to boot. To cure this problem,
+ the following lines should be added to <c>/etc/system</c>:
+ </p>
+ <list type="bulleted">
+ <item><c>exclude: drv/mcp</c></item>
+ <item><c>exclude: drv/mcpzsa</c></item>
+ <item><c>exclude: drv/mcpp</c></item>
+ </list>
+ <warning>
+ <p>It is recommended that these lines be added to avoid the
+ clash described, which may make it completely impossible to boot
+ the system.</p>
+ </warning>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/vxworks.xml b/system/doc/embedded/vxworks.xml
new file mode 100644
index 0000000000..52143a42e3
--- /dev/null
+++ b/system/doc/embedded/vxworks.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1997</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>VxWorks</title>
+ <prepared>Patrik Winroth</prepared>
+ <responsible></responsible>
+ <docno></docno>
+ <approved></approved>
+ <checked></checked>
+ <date>2000-10-17</date>
+ <rev></rev>
+ <file>vxworks.xml</file>
+ </header>
+ <p>This chapter describes the OS specific parts of OTP which relate
+ to VxWorks.
+ </p>
+
+ <section>
+ <title>Introduction</title>
+ <p>The Erlang/OTP distribution for VxWorks is limited to what
+ Switchboard requires (Switchboard is a general purpose
+ switching hardware developed by Ericsson).
+ </p>
+ <p>Please consult the README file, included at root level in the
+ installation, for latest information on the distribution.
+ </p>
+ </section>
+
+ <section>
+ <title>Memory Usage</title>
+ <p>Memory required is 32 Mbyte.
+ </p>
+ </section>
+
+ <section>
+ <title>Disk Usage</title>
+ <p>The disk space required is 22 Mbyte, the documentation included.
+ </p>
+ </section>
+
+ <section>
+ <title>Installation</title>
+ <p>OTP/VxWorks is supplied in a distribution file named
+ <c><![CDATA[<PREFIX>.tar.gz]]></c>; i.e. a tar archive that is
+ compressed with gzip. <c><![CDATA[<PREFIX>]]></c> represents the
+ name of the release,
+ e.g. <c>otp_LXA12345_vxworks_cpu32_R42A</c>. Assuming you are
+ installing to a Solaris file system, the installation is
+ performed by following these steps: &lt;
+ </p>
+ <p></p>
+ <list type="bulleted">
+ <item>Change to the directory where you want to install
+ OTP/VxWorks (<c><![CDATA[<ROOTDIR>]]></c>): <c><![CDATA[cd <ROOTDIR>]]></c></item>
+ <item>Make a directory to put OTP/VxWorks in: <c>mkdir otp_vxworks_cpu32</c> (or whatever you want to call it)</item>
+ <item>Change directory to the newly created one: <c>cd otp_vxworks_cpu32</c></item>
+ <item>Copy the distribution file there from where it is located
+ (<c><![CDATA[<RELDIR>]]></c>): <c><![CDATA[cp <RELDIR>/<PREFIX>.tar.gz .]]></c></item>
+ <item>Unzip the distribution file: <c><![CDATA[gunzip <PREFIX>.tar.gz]]></c></item>
+ <item>Untar <c><![CDATA[<PREFIX>.tar]]></c>: <c><![CDATA[tar xvf <PREFIX>.tar]]></c></item>
+ <item>Create a bin directory: <c>mkdir bin</c></item>
+ <item>Copy the VxWorks Erlang/OTP start-up script to the bin directory:
+ <c>cp erts-Vsn/bin/erl bin/.</c></item>
+ <item>Copy the example start scripts to the bin directory:
+ <c>cp releases/R42A/*.boot bin/.</c></item>
+ </list>
+ <p>If you use VxWorks nfs mounting facility to mount the Solaris
+ file system, this installation may be directly used. An other
+ possibility is to copy the installation to a local VxWorks DOS
+ file system, from where it is used.
+ </p>
+ </section>
+
+ <section>
+ <title>OS Specific Functionality/Information</title>
+ <p>There are a couple of files that are unique to the VxWorks
+ distribution of Erlang/OTP, these files are described here.
+ </p>
+ <list type="bulleted">
+ <item>README - this files has some information on VxWorks
+ specifics that you are advised to consult. This includes the
+ latest information on what parts of OTP are included in the
+ VxWorks distribution of Erlang/OTP. If you want us to
+ include more parts, please contact us to discuss
+ this.</item>
+ <item>erts-Vsn/bin/resolv.conf - A resolver configuration EXAMPLE file.
+ You have to edit this file.</item>
+ <item>erts-Vsn/bin/erl - This is an EXAMPLE start script for VxWorks.
+ You have to edit this file to suit your needs.</item>
+ <item>erts-Vsn/bin/erl_io - One possible solution to the problem
+ of competing Erlang and VxWorks shell. Contains the function
+ 'start_erl' called by the erl script. Also contains the
+ function 'to_erl' to be used when connecting to the Erlang
+ shell from VxWorks' shell.</item>
+ <item>erts-Vsn/bin/erl_exec - Rearranges command line arguments
+ and starts Erlang.</item>
+ <item>erts-Vsn/bin/vxcall - Allows spawning of standard VxWorks
+ shell functions (which is just about any function in the
+ system...) from open_port/2. E.g. open_port({spawn, 'vxcall
+ func arg1 arg2'}, []) will cause the output that 'func arg1,
+ arg2' would have given in the shell to be received from the
+ port.</item>
+ <item>erts-Vsn/bin/rdate - Set the time from a networked host,
+ like the SunOS command. Nothing Erlang-specific, but nice
+ if you want date/0 and time/0 to give meaningful values (you
+ also need a TIMEZONE environment setting if GMT isn't
+ acceptable). For example: <c>putenv "TIMEZONE=CET::-60:033002:102603"</c> sets central european
+ time.</item>
+ <item>erts-Vsn/src - Contains source for the above files, and
+ additionally config.c, driver.h, preload.c and
+ reclaim.h. Reclaim.h defines the interface to a simple
+ mechanism for "resource reclamation" that is part of the
+ Erlang runtime system - may be useful to "port program" writers (and
+ possibly others). Take careful note of the caveats listed in
+ the file!</item>
+ </list>
+ </section>
+
+ <section>
+ <title>Starting Erlang</title>
+ <p>Start (and restart) of the system depends on what file system
+ is used. To be able to start the system from a nfs mounted
+ file system you can use VxWorks start script facility to run a
+ start script similar to the example below. Note that the
+ Erlang/OTP start-up script is run at the end of this script.
+ </p>
+ <code type="none"><![CDATA[
+# start.script v1.0 1997/09/08 patrik
+#
+# File name: start.script
+# Purpose: Starting the VxWorks/cpu32 erlang/OTP
+# Resides in: ~tornado/wind/target/config/ads360/
+
+#
+# Set shell prompt
+#
+shellPromptSet("sauron-> ")
+
+#
+# Set default gateway
+#
+hostAdd "router-20","150.236.20.251"
+routeAdd "0","router-20"
+
+#
+# Mount /home from gandalf
+#
+hostAdd "gandalf","150.236.20.16"
+usergroup=10
+nfsAuthUnixSet("gandalf", 452, 10, 1, &usergroup)
+nfsMount("gandalf", "/export/home", "/home")
+
+#
+# Load and run rdate.o to set correct date on the target
+#
+ld < /home/gandalf/tornado/wind/target/config/ads360/rdate.o
+rdate("gandalf")
+
+#
+# Setup timezone information (Central European time)
+#
+putenv "TIMEZONE=CET::-60:033002:102603"
+
+#
+# Run the Erlang/OTP start script
+#
+cd "/home/gandalf/tornado/wind/target/erlang_cpu32_R42A/bin"
+<erl
+ ]]></code>
+ </section>
+</chapter>
+
diff --git a/system/doc/embedded/warning.gif b/system/doc/embedded/warning.gif
new file mode 100644
index 0000000000..96af52360e
--- /dev/null
+++ b/system/doc/embedded/warning.gif
Binary files differ
diff --git a/system/doc/embedded/xmlfiles.mk b/system/doc/embedded/xmlfiles.mk
new file mode 100644
index 0000000000..2bdc34ae28
--- /dev/null
+++ b/system/doc/embedded/xmlfiles.mk
@@ -0,0 +1,22 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+EMBEDDED_CHAPTER_FILES = \
+ embedded_solaris.xml \
+ embedded_nt.xml \
+ vxworks.xml
diff --git a/system/doc/embedded/xntp.xml b/system/doc/embedded/xntp.xml
new file mode 100644
index 0000000000..564b63fc7d
--- /dev/null
+++ b/system/doc/embedded/xntp.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>1997</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>XNTP (Network Time Protocol)</title>
+ <prepared>ETX/B/SFP Kenneth Lundin</prepared>
+ <responsible></responsible>
+ <docno>1</docno>
+ <approved>ETX/B/SFP (Kenneth Lundin)</approved>
+ <checked></checked>
+ <date>1996-11-20</date>
+ <rev>A</rev>
+ <file>xntp.sgml</file>
+ </header>
+ <p>This chapter describes the OS specific part of OTP that relates
+ to the Network Time Protocol (XNTP).
+ </p>
+
+ <section>
+ <title>XNTP for Sunos5</title>
+ <p>XNTP maintains a Unix system time-of-day which conforms with
+ the Internet standard time servers. XNTP is a complete
+ implementation of the Network Time Protocol, version 3
+ specification as defined in RFC 1305.
+ </p>
+ <p>XNTP for use in an <em>embedded system running Sunos5</em> is
+ delivered with OTP. The XNTP is delivered as a separate
+ <c>tar</c> file which also includes extensive documentation and
+ installation instructions.
+ </p>
+ <p>The following section of the introductory documentation is
+ included in the distribution:
+ </p>
+ <quote>
+ <p>The Network Time Protocol (NTP) is used to synchronize the
+ time of a computer client or server to another server or
+ reference time source, such as a radio or satellite receiver
+ or modem. It provides client accuracies typically within a
+ millisecond on LANs and up to a few tens of milliseconds on
+ WANs relative to a primary server synchronized to Coordinated
+ Universal Time (UTC) via a Global Positioning Service (GPS)
+ receiver, for example. Typical NTP configurations utilize
+ multiple redundant servers and diverse network paths, in order
+ to achieve high accuracy and reliability. ...</p>
+ </quote>
+ <p>The XNTP software is supplied without charge under the
+ conditions set forth in the Copyright Notice provided within the
+ distribution.
+ </p>
+ <p>(&copy; David L. Mills 1992, 1993, 1994, 1995, 1996)
+ </p>
+ </section>
+</chapter>
+