erl_prim_loader
Low Level Erlang Loader
erl_prim_loader
is used to load all Erlang modules into
the system. The start script is also fetched with this low level
loader.
erl_prim_loader
knows about the environment and how to
fetch modules.
The -loader Loader
command line flag can be used to
choose the method used by the erl_prim_loader
. Two
Loader
methods are supported by the Erlang runtime system:
efile
and inet
.
Warning!
The support for loading of code from archive files is
experimental. The sole purpose of releasing it before it is ready
is to obtain early feedback. The file format, semantics,
interfaces etc. may be changed in a future release. The functions
list_dir/1
and read_file_info/1
as well as the flag
-loader_debug
are also experimental
Functions
get_file(Filename) -> {ok, Bin, FullName} | error
Filename = atom() | string()
Bin = binary()
FullName = string()
This function fetches a file using the low level loader.
is either an absolute file name or just the name
of the file, for example "lists.beam"
. If an internal
path is set to the loader, this path is used to find the file.
is the complete name of the fetched file.
is the contents of the file as a binary.
The
can also be a file in an archive. For example
$OTPROOT/lib/
mnesia-4.4.7.ez/mnesia-4.4.7/ebin/
mnesia.beam
.
See code(3) about archive files.
get_path() -> {ok, Path}
Path = [Dir :: string()]
This function gets the path set in the loader. The path is
set by the init
process according to information found
in the start script.
list_dir(Dir) -> {ok, Filenames} | error
Dir = string()
Filenames = [Filename :: string()]
Lists all the files in a directory. Returns
{ok,
if successful. Otherwise, it returns
error
.
is a list of
the names of all the files in the directory. The names are
not sorted.
The
can also be a directory in an archive. For example
$OTPROOT/lib/
mnesia-4.4.7.ez/mnesia-4.4.7/ebin
.
See code(3) about archive files.
read_file_info(Filename) -> {ok, FileInfo} | error
Filename = string()
FileInfo = file:file_info()
Retrieves information about a file. Returns
{ok,
if successful, otherwise
error
.
is a record
file_info
, defined in the Kernel include file
file.hrl
. Include the following directive in the module
from which the function is called:
-include_lib("kernel/include/file.hrl").
See file(3) for more info about
the record file_info
.
The
can also be a file in an archive. For example
$OTPROOT/lib/
mnesia-4.4.7.ez/mnesia-4.4.7/ebin/
mnesia
.
See code(3) about archive files.
read_link_info(Filename) -> {ok, FileInfo} | error
Filename = string()
FileInfo = file:file_info()
This function works like
read_file_info/1
except that if
is a symbolic link,
information about the link will be returned in the file_info
record and the type
field of the record will be set to
symlink
.
If
is not a symbolic link, this function
returns exactly the same result as read_file_info/1
.
On platforms that do not support symbolic links, this function
is always equivalent to read_file_info/1
.
set_path(Path) -> ok
Path = [Dir :: string()]
This function sets the path of the loader if init
interprets a path
command in the start script.
Command Line Flags
The erl_prim_loader
module interprets the following
command line flags:
-loader Loader
Specifies the name of the loader used by
erl_prim_loader
. Loader
can be efile
(use the local file system) or inet
(load using
the boot_server
on another Erlang node).
If the -loader
flag is omitted, it defaults to
efile
.
-loader_debug
Makes the efile
loader write some debug information,
such as the reason for failures, while it handles files.
-hosts Hosts
Specifies which other Erlang nodes the inet
loader
can use. This flag is mandatory if the -loader inet
flag is present. On each host, there must be on Erlang node
with the erl_boot_server(3)
which handles the load requests.
Hosts
is a list of IP addresses (hostnames
are not acceptable).
-setcookie Cookie
Specifies the cookie of the Erlang runtime system. This flag
is mandatory if the -loader inet
flag is present.