diff options
author | Sverker Eriksson <[email protected]> | 2011-11-28 18:18:46 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2011-11-29 11:28:50 +0100 |
commit | 81f4a89125ba32955af21fef6cc631e050973a47 (patch) | |
tree | 4a62abb98daac6a9c473f08053b822fd63cb1896 /erts/emulator | |
parent | bc09f6a6eda75c4e1df708cb523ffc76340c066d (diff) | |
download | otp-81f4a89125ba32955af21fef6cc631e050973a47.tar.gz otp-81f4a89125ba32955af21fef6cc631e050973a47.tar.bz2 otp-81f4a89125ba32955af21fef6cc631e050973a47.zip |
erts: Deprecate the NIF reload mechanism
The reload mechanism is an odd feature that does not harmonize
with how module upgrade is otherwise done. We do not want its presence
to hinder future development of code loading and upgrade.
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/erl_nif.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c index 62798bb2c1..1072e25033 100644 --- a/erts/emulator/beam/erl_nif.c +++ b/erts/emulator/beam/erl_nif.c @@ -1484,6 +1484,7 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) Eterm ret = am_ok; int veto; struct erl_module_nif* lib = NULL; + int reload_warning = 0; len = list_length(BIF_ARG_1); if (len < 0) { @@ -1623,6 +1624,7 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) else { mod->nif->entry = NULL; /* to prevent 'unload' callback */ erts_unload_nif(mod->nif); + reload_warning = 1; } } else { @@ -1691,6 +1693,15 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) erts_smp_thr_progress_unblock(); erts_smp_proc_lock(BIF_P, ERTS_PROC_LOCK_MAIN); erts_free(ERTS_ALC_T_TMP, lib_name); + + if (reload_warning) { + erts_dsprintf_buf_t* dsbufp = erts_create_logger_dsbuf(); + erts_dsprintf(dsbufp, + "Repeated calls to erlang:load_nif from module '%T'.\n\n" + "The NIF reload mechanism is deprecated and must not " + "be used in production systems.\n", mod_atom); + erts_send_warning_to_logger(BIF_P->group_leader, dsbufp); + } BIF_RET(ret); } |