Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
erl_prim_loader(3)	   Erlang Module Definition	    erl_prim_loader(3)

NAME
       erl_prim_loader - Low Level Erlang Loader

DESCRIPTION
       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 could, for example, fetch files using the file system (with
       absolute	file names as input), or a database (where the	binary	format
       of a module is stored).

       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.	If another loader is required,
       then it has to be implemented by	the user. The Loader provided  by  the
       user  must  fulfill  the	protocol defined below,	and it is started with
       the erl_prim_loader by evaluating open_port({spawn,Loader},[binary]).

   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

DATA TYPES
       host() =	atom()

EXPORTS
       start(Id, Loader, Hosts)	-> {ok,	Pid} | {error, What}

	      Types:

		 Id = term()
		 Loader	= atom() | string()
		 Hosts = Host |	[Host]
		 Host =	host()
		 Pid = pid()
		 What =	term()

	      Starts the Erlang	low level loader. This function	is  called  by
	      the  init	 process (and module). The init	process	reads the com-
	      mand line	flags -id Id, -loader Loader, and -hosts Hosts.	 These
	      are the arguments	supplied to the	start/3	function.

	      If -loader is not	given, the default loader is efile which tells
	      the system to read from the file system.

	      If -loader is inet, the -id Id,  -hosts  Hosts,  and  -setcookie
	      Cookie flags must	also be	supplied. Hosts	identifies hosts which
	      this node	can contact in order to	load modules. One Erlang  run-
	      time  system  with  a erl_boot_server process must be started on
	      each of hosts given in Hosts in order to	answer	the  requests.
	      See erl_boot_server(3).

	      If -loader is something else, the	given port program is started.
	      The port program is supposed to follow  the  protocol  specified
	      below.

       get_file(Filename) -> {ok, Bin, FullName} | error

	      Types:

		 Filename = atom() | string()
		 Bin = binary()
		 FullName = string()

	      This  function  fetches a	file using the low level loader. File-
	      name 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. If a  user  sup-
	      plied  loader is used, the path can be stripped off if it	is ob-
	      solete, and the loader does not use a path. FullName is the com-
	      plete  name of the fetched file. Bin is the contents of the file
	      as a binary.

	      The Filename can also be a file in an archive. For example $OTP-
	      ROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia.beam.	   See
	      code(3) about archive files.

       get_path() -> {ok, Path}

	      Types:

		 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

	      Types:

		 Dir = string()
		 Filenames = [Filename :: string()]

	      Lists all	the files in a directory. Returns {ok,	Filenames}  if
	      successful.  Otherwise, it returns error.	Filenames is a list of
	      the names	of all the files in the	directory. The names  are  not
	      sorted.

	      The Dir can also be a directory in an archive. For example $OTP-
	      ROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin.  See	code(3)	 about
	      archive files.

       read_file_info(Filename)	-> {ok,	FileInfo} | error

	      Types:

		 Filename = string()
		 FileInfo = file:file_info()

	      Retrieves	 information  about  a file. Returns {ok, FileInfo} if
	      successful, otherwise error. FileInfo is a record	file_info, de-
	      fined 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 Filename can also be a file in an archive. For example $OTP-
	      ROOT/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

	      Types:

		 Filename = string()
		 FileInfo = file:file_info()

	      This function works like read_file_info/1	except that  if	 File-
	      name  is a symbolic link,	information about the link will	be re-
	      turned in	the file_info record and the type field	of the	record
	      will be set to symlink.

	      If  Filename  is	not a symbolic link, this function returns ex-
	      actly 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

	      Types:

		 Path =	[Dir ::	string()]

	      This function sets the path of the loader	if init	 interprets  a
	      path command in the start	script.

PROTOCOL
       The  following protocol must be followed	if a user provided loader port
       program is used.	The Loader port	program	is started  with  the  command
       open_port({spawn,Loader},[binary]). The protocol	is as follows:

       Function		 Send		    Receive
       -------------------------------------------------------------
       get_file		 [102 |	FileName]   [121 | BinaryFile] (on success)
					    [122]	       (failure)

       stop		 eof		    terminate

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 Loader is user defined, the
	   defined Loader port program is started.

	   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 which
	   handles the load requests. Hosts is a list of IP  addresses	(host-
	   names are not acceptable).

	 -id Id:
	   Specifies  the identity of the Erlang runtime system. If the	system
	   runs	as a distributed node, Id must be identical to the  name  sup-
	   plied with the -sname or -name distribution flags.

	 -setcookie Cookie:
	   Specifies  the  cookie  of  the Erlang runtime system. This flag is
	   mandatory if	the -loader inet flag is present.

SEE ALSO
       init(3),	erl_boot_server(3)

Ericsson AB			   erts	6.4		    erl_prim_loader(3)

NAME | DESCRIPTION | DATA TYPES | EXPORTS | PROTOCOL | COMMAND LINE FLAGS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=erl_prim_loader&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help