From 6ee6d1903c4255cbea809129c8262d5863a94093 Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Wed, 23 May 2018 11:35:31 +0200 Subject: Add erl_init module --- erts/preloaded/src/Makefile | 1 + erts/preloaded/src/erl_init.erl | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 erts/preloaded/src/erl_init.erl (limited to 'erts/preloaded') diff --git a/erts/preloaded/src/Makefile b/erts/preloaded/src/Makefile index 4333f6643a..17b9fa796b 100644 --- a/erts/preloaded/src/Makefile +++ b/erts/preloaded/src/Makefile @@ -42,6 +42,7 @@ PRE_LOADED_ERL_MODULES = \ zlib \ prim_zip \ otp_ring0 \ + erl_init \ erts_code_purger \ erlang \ erts_internal \ diff --git a/erts/preloaded/src/erl_init.erl b/erts/preloaded/src/erl_init.erl new file mode 100644 index 0000000000..186a04a8e8 --- /dev/null +++ b/erts/preloaded/src/erl_init.erl @@ -0,0 +1,39 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(erl_init). + +%% Initial process of an Erlang system. + +-export([start/2]). + +%% This gets the boot arguments as expected by init:boot/1 + +-spec start(_, term()) -> term(). +start(_Env, Argv) -> + run(init, boot, Argv). + +run(M, F, A) -> + case erlang:function_exported(M, F, 1) of + false -> + erlang:display({fatal,error,module,M,"does not export",F,"/1"}), + halt(1); + true -> + M:F(A) + end. -- cgit v1.2.3 From 65e004deb529e71af6e1eec69ebcd6d81fcc884b Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Wed, 23 May 2018 11:37:21 +0200 Subject: Update preloaded modules --- erts/preloaded/ebin/erl_init.beam | Bin 0 -> 1456 bytes erts/preloaded/ebin/erl_prim_loader.beam | Bin 54432 -> 54492 bytes erts/preloaded/ebin/erl_tracer.beam | Bin 2168 -> 2216 bytes erts/preloaded/ebin/erlang.beam | Bin 103344 -> 103380 bytes erts/preloaded/ebin/erts_code_purger.beam | Bin 11348 -> 11404 bytes .../ebin/erts_dirty_process_signal_handler.beam | Bin 2760 -> 2796 bytes erts/preloaded/ebin/erts_internal.beam | Bin 16672 -> 16712 bytes .../ebin/erts_literal_area_collector.beam | Bin 3268 -> 3316 bytes erts/preloaded/ebin/init.beam | Bin 51408 -> 51476 bytes erts/preloaded/ebin/otp_ring0.beam | Bin 1404 -> 1456 bytes erts/preloaded/ebin/prim_buffer.beam | Bin 3568 -> 3620 bytes erts/preloaded/ebin/prim_eval.beam | Bin 1472 -> 1540 bytes erts/preloaded/ebin/prim_file.beam | Bin 27724 -> 27784 bytes erts/preloaded/ebin/prim_inet.beam | Bin 77884 -> 77952 bytes erts/preloaded/ebin/prim_zip.beam | Bin 22864 -> 22936 bytes erts/preloaded/ebin/zlib.beam | Bin 19704 -> 19760 bytes 16 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 erts/preloaded/ebin/erl_init.beam (limited to 'erts/preloaded') diff --git a/erts/preloaded/ebin/erl_init.beam b/erts/preloaded/ebin/erl_init.beam new file mode 100644 index 0000000000..661c509296 Binary files /dev/null and b/erts/preloaded/ebin/erl_init.beam differ diff --git a/erts/preloaded/ebin/erl_prim_loader.beam b/erts/preloaded/ebin/erl_prim_loader.beam index 495d306a23..ce45a84f34 100644 Binary files a/erts/preloaded/ebin/erl_prim_loader.beam and b/erts/preloaded/ebin/erl_prim_loader.beam differ diff --git a/erts/preloaded/ebin/erl_tracer.beam b/erts/preloaded/ebin/erl_tracer.beam index cd2c0ac69d..5f2883d904 100644 Binary files a/erts/preloaded/ebin/erl_tracer.beam and b/erts/preloaded/ebin/erl_tracer.beam differ diff --git a/erts/preloaded/ebin/erlang.beam b/erts/preloaded/ebin/erlang.beam index 52f4c686a9..0746e0e4b8 100644 Binary files a/erts/preloaded/ebin/erlang.beam and b/erts/preloaded/ebin/erlang.beam differ diff --git a/erts/preloaded/ebin/erts_code_purger.beam b/erts/preloaded/ebin/erts_code_purger.beam index b6c69e3e67..cdc96e3d45 100644 Binary files a/erts/preloaded/ebin/erts_code_purger.beam and b/erts/preloaded/ebin/erts_code_purger.beam differ diff --git a/erts/preloaded/ebin/erts_dirty_process_signal_handler.beam b/erts/preloaded/ebin/erts_dirty_process_signal_handler.beam index 1013b8de0c..74b63fdf79 100644 Binary files a/erts/preloaded/ebin/erts_dirty_process_signal_handler.beam and b/erts/preloaded/ebin/erts_dirty_process_signal_handler.beam differ diff --git a/erts/preloaded/ebin/erts_internal.beam b/erts/preloaded/ebin/erts_internal.beam index 73bd730eaa..4d2bd771b1 100644 Binary files a/erts/preloaded/ebin/erts_internal.beam and b/erts/preloaded/ebin/erts_internal.beam differ diff --git a/erts/preloaded/ebin/erts_literal_area_collector.beam b/erts/preloaded/ebin/erts_literal_area_collector.beam index 18f1f76055..afa1bc8aea 100644 Binary files a/erts/preloaded/ebin/erts_literal_area_collector.beam and b/erts/preloaded/ebin/erts_literal_area_collector.beam differ diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam index 1b458fc5da..dad3aaff36 100644 Binary files a/erts/preloaded/ebin/init.beam and b/erts/preloaded/ebin/init.beam differ diff --git a/erts/preloaded/ebin/otp_ring0.beam b/erts/preloaded/ebin/otp_ring0.beam index 69d809e325..d2f7f26bf3 100644 Binary files a/erts/preloaded/ebin/otp_ring0.beam and b/erts/preloaded/ebin/otp_ring0.beam differ diff --git a/erts/preloaded/ebin/prim_buffer.beam b/erts/preloaded/ebin/prim_buffer.beam index e2f0d3f44d..139830a275 100644 Binary files a/erts/preloaded/ebin/prim_buffer.beam and b/erts/preloaded/ebin/prim_buffer.beam differ diff --git a/erts/preloaded/ebin/prim_eval.beam b/erts/preloaded/ebin/prim_eval.beam index e962fcfa17..8f3cb4a2e5 100644 Binary files a/erts/preloaded/ebin/prim_eval.beam and b/erts/preloaded/ebin/prim_eval.beam differ diff --git a/erts/preloaded/ebin/prim_file.beam b/erts/preloaded/ebin/prim_file.beam index b11e428229..63697d6d57 100644 Binary files a/erts/preloaded/ebin/prim_file.beam and b/erts/preloaded/ebin/prim_file.beam differ diff --git a/erts/preloaded/ebin/prim_inet.beam b/erts/preloaded/ebin/prim_inet.beam index 350cc343d5..2ce267bd14 100644 Binary files a/erts/preloaded/ebin/prim_inet.beam and b/erts/preloaded/ebin/prim_inet.beam differ diff --git a/erts/preloaded/ebin/prim_zip.beam b/erts/preloaded/ebin/prim_zip.beam index 1d50d32efe..7e3e8e9629 100644 Binary files a/erts/preloaded/ebin/prim_zip.beam and b/erts/preloaded/ebin/prim_zip.beam differ diff --git a/erts/preloaded/ebin/zlib.beam b/erts/preloaded/ebin/zlib.beam index a328711702..680c1dd0f1 100644 Binary files a/erts/preloaded/ebin/zlib.beam and b/erts/preloaded/ebin/zlib.beam differ -- cgit v1.2.3 From 8ee40e75ed85eb1207e6183e80f2b57f27d3894d Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Wed, 23 May 2018 11:56:20 +0200 Subject: Drop otp_ring0, using erl_init instead --- erts/preloaded/src/Makefile | 1 - erts/preloaded/src/erts.app.src | 2 +- erts/preloaded/src/otp_ring0.erl | 37 ------------------------------------- 3 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 erts/preloaded/src/otp_ring0.erl (limited to 'erts/preloaded') diff --git a/erts/preloaded/src/Makefile b/erts/preloaded/src/Makefile index 17b9fa796b..3c8d75b205 100644 --- a/erts/preloaded/src/Makefile +++ b/erts/preloaded/src/Makefile @@ -41,7 +41,6 @@ PRE_LOADED_ERL_MODULES = \ prim_inet \ zlib \ prim_zip \ - otp_ring0 \ erl_init \ erts_code_purger \ erlang \ diff --git a/erts/preloaded/src/erts.app.src b/erts/preloaded/src/erts.app.src index 338f168158..0a97efd0ab 100644 --- a/erts/preloaded/src/erts.app.src +++ b/erts/preloaded/src/erts.app.src @@ -26,7 +26,7 @@ erl_prim_loader, erts_internal, init, - otp_ring0, + erl_init, erts_code_purger, prim_buffer, prim_eval, diff --git a/erts/preloaded/src/otp_ring0.erl b/erts/preloaded/src/otp_ring0.erl deleted file mode 100644 index 62a60fffe2..0000000000 --- a/erts/preloaded/src/otp_ring0.erl +++ /dev/null @@ -1,37 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2000-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(otp_ring0). - -%% Purpose : Start up of erlang system. - --export([start/2]). - --spec start(_, term()) -> term(). -start(_Env, Argv) -> - run(init, boot, Argv). - -run(M, F, A) -> - case erlang:function_exported(M, F, 1) of - false -> - erlang:display({fatal,error,module,M,"does not export",F,"/1"}), - halt(1); - true -> - M:F(A) - end. -- cgit v1.2.3 From f18549cf0ab10e553da0f4f839c72370a304c10f Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Wed, 23 May 2018 14:15:23 +0200 Subject: Make erl_init.c pass the boot module to erl_init.beam --- erts/preloaded/src/erl_init.erl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'erts/preloaded') diff --git a/erts/preloaded/src/erl_init.erl b/erts/preloaded/src/erl_init.erl index 186a04a8e8..f43e060438 100644 --- a/erts/preloaded/src/erl_init.erl +++ b/erts/preloaded/src/erl_init.erl @@ -23,11 +23,14 @@ -export([start/2]). -%% This gets the boot arguments as expected by init:boot/1 +%% This gets the module name given by the +i option (default 'init') +%% and the list of command line arguments --spec start(_, term()) -> term(). -start(_Env, Argv) -> - run(init, boot, Argv). +-spec start(Mod, BootArgs) -> no_return() when + Mod :: module(), + BootArgs :: [binary()]. +start(Mod, BootArgs) -> + run(Mod, boot, BootArgs). run(M, F, A) -> case erlang:function_exported(M, F, 1) of -- cgit v1.2.3 From 218646bd9c446cd6b2f1ebfd7d75ec682d8168f1 Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Thu, 24 May 2018 14:31:40 +0200 Subject: Move calling on_load for preloaded modules to erl_init --- erts/preloaded/src/erl_init.erl | 6 ++++++ erts/preloaded/src/init.erl | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'erts/preloaded') diff --git a/erts/preloaded/src/erl_init.erl b/erts/preloaded/src/erl_init.erl index f43e060438..d681f05398 100644 --- a/erts/preloaded/src/erl_init.erl +++ b/erts/preloaded/src/erl_init.erl @@ -30,6 +30,12 @@ Mod :: module(), BootArgs :: [binary()]. start(Mod, BootArgs) -> + %% Load the static nifs + zlib:on_load(), + erl_tracer:on_load(), + prim_buffer:on_load(), + prim_file:on_load(), + %% Proceed to the specified boot module run(Mod, boot, BootArgs). run(M, F, A) -> diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl index 9e3de87e08..69637d1295 100644 --- a/erts/preloaded/src/init.erl +++ b/erts/preloaded/src/init.erl @@ -200,12 +200,6 @@ boot(BootArgs) -> register(init, self()), process_flag(trap_exit, true), - %% Load the static nifs - zlib:on_load(), - erl_tracer:on_load(), - prim_buffer:on_load(), - prim_file:on_load(), - {Start0,Flags,Args} = parse_boot_args(BootArgs), %% We don't get to profile parsing of BootArgs case b2a(get_flag(profile_boot, Flags, false)) of -- cgit v1.2.3 From 3648e616f2121cec024be1b537263adf1622a614 Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Thu, 24 May 2018 14:32:20 +0200 Subject: Update preloaded modules --- erts/preloaded/ebin/erl_init.beam | Bin 1456 -> 1740 bytes erts/preloaded/ebin/init.beam | Bin 51476 -> 51288 bytes 2 files changed, 0 insertions(+), 0 deletions(-) (limited to 'erts/preloaded') diff --git a/erts/preloaded/ebin/erl_init.beam b/erts/preloaded/ebin/erl_init.beam index 661c509296..4f67223d38 100644 Binary files a/erts/preloaded/ebin/erl_init.beam and b/erts/preloaded/ebin/erl_init.beam differ diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam index dad3aaff36..211e099f38 100644 Binary files a/erts/preloaded/ebin/init.beam and b/erts/preloaded/ebin/init.beam differ -- cgit v1.2.3