aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2017-08-15 16:26:34 +0200
committerSverker Eriksson <[email protected]>2017-11-15 20:10:33 +0100
commit5ad822ccfd841400bc44cb53acc6a0889ca3f128 (patch)
tree12ef789656884e00007f8db2a7b209d573e4bfc2
parente8df66a934045a1b0dc1edf0a695b6dbcf4cca4b (diff)
downloadotp-5ad822ccfd841400bc44cb53acc6a0889ca3f128.tar.gz
otp-5ad822ccfd841400bc44cb53acc6a0889ca3f128.tar.bz2
otp-5ad822ccfd841400bc44cb53acc6a0889ca3f128.zip
Remove obsolete erlang:dlink/1, dunlink/1 and dist_exit/3
-rw-r--r--erts/emulator/beam/atom.names2
-rw-r--r--erts/emulator/beam/bif.c9
-rw-r--r--erts/emulator/beam/bif.tab2
-rw-r--r--erts/emulator/beam/dist.c87
-rw-r--r--erts/emulator/beam/dist.h2
-rw-r--r--erts/preloaded/src/erlang.erl26
-rw-r--r--lib/tools/emacs/erlang.el3
7 files changed, 2 insertions, 129 deletions
diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names
index dd3e11dc26..3c06c26ba0 100644
--- a/erts/emulator/beam/atom.names
+++ b/erts/emulator/beam/atom.names
@@ -222,7 +222,6 @@ atom dist_ctrl_put_data
atom dist_data
atom Div='/'
atom div
-atom dlink
atom dmonitor_node
atom dmonitor_p
atom DollarDollar='$$'
@@ -232,7 +231,6 @@ atom dotall
atom driver
atom driver_options
atom dsend_continue_trap
-atom dunlink
atom duplicate_bag
atom duplicated
atom dupnames
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index 2af61e6ebc..8eb4d9e85b 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -1181,16 +1181,7 @@ BIF_RETTYPE unlink_1(BIF_ALIST_1)
switch (code) {
case ERTS_DSIG_PREP_NOT_ALIVE:
case ERTS_DSIG_PREP_NOT_CONNECTED:
-#if 1
BIF_RET(am_true);
-#else
- /*
- * This is how we used to do it, but the link is obviously not
- * active, so I see no point in setting up a connection.
- * /Rickard
- */
- BIF_TRAP1(dunlink_trap, BIF_P, BIF_ARG_1);
-#endif
case ERTS_DSIG_PREP_PENDING:
case ERTS_DSIG_PREP_CONNECTED:
diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab
index 66469a011d..5a591caac9 100644
--- a/erts/emulator/beam/bif.tab
+++ b/erts/emulator/beam/bif.tab
@@ -153,14 +153,12 @@ bif erlang:whereis/1
bif erlang:spawn_opt/1
bif erlang:setnode/2
bif erlang:setnode/3
-bif erlang:dist_exit/3
bif erlang:dist_get_stat/1
bif erlang:dist_ctrl_input_handler/2
bif erlang:dist_ctrl_put_data/2
bif erlang:dist_ctrl_get_data/1
bif erlang:dist_ctrl_get_data_notification/1
-
# Static native functions in erts_internal
bif erts_internal:port_info/1
bif erts_internal:port_info/2
diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c
index 7c44545de3..6e08c72289 100644
--- a/erts/emulator/beam/dist.c
+++ b/erts/emulator/beam/dist.c
@@ -108,8 +108,6 @@ int erts_dist_buf_busy_limit;
/* distribution trap functions */
-Export* dlink_trap = NULL;
-Export* dunlink_trap = NULL;
Export* dmonitor_node_trap = NULL;
Export* dgroup_leader_trap = NULL;
Export* dexit_trap = NULL;
@@ -633,8 +631,6 @@ void init_dist(void)
erts_atomic_init_nob(&no_caches, 0);
/* Lookup/Install all references to trap functions */
- dlink_trap = trap_function(am_dlink,1);
- dunlink_trap = trap_function(am_dunlink,1);
dmonitor_node_trap = trap_function(am_dmonitor_node,3);
dgroup_leader_trap = trap_function(am_dgroup_leader,2);
dexit_trap = trap_function(am_dexit, 2);
@@ -3100,7 +3096,6 @@ int distribution_info(fmtfn_t to, void *arg) /* Called by break handler */
monitor_node -- turn on/off node monitoring
node controller only:
- dist_exit/3 -- send exit signals from remote to local process
dist_link/2 -- link a remote process to a local
dist_unlink/2 -- unlink a remote from a local
****************************************************************************/
@@ -3111,9 +3106,6 @@ int distribution_info(fmtfn_t to, void *arg) /* Called by break handler */
** Set the node name of current node fail if node already is set.
** setnode(name@host, Creation)
** loads functions pointer to trap_functions from module erlang.
- ** erlang:dsend/2
- ** erlang:dlink/1
- ** erlang:dunlink/1
** erlang:dmonitor_node/3
** erlang:dgroup_leader/2
** erlang:dexit/2
@@ -3142,9 +3134,7 @@ BIF_RETTYPE setnode_2(BIF_ALIST_2)
goto error;
/* Check that all trap functions are defined !! */
- if (dlink_trap->addressv[0] == NULL ||
- dunlink_trap->addressv[0] == NULL ||
- dmonitor_node_trap->addressv[0] == NULL ||
+ if (dmonitor_node_trap->addressv[0] == NULL ||
dgroup_leader_trap->addressv[0] == NULL ||
dmonitor_p_trap->addressv[0] == NULL ||
dexit_trap->addressv[0] == NULL) {
@@ -3559,81 +3549,6 @@ BIF_RETTYPE abort_connection_id_2(BIF_ALIST_2)
BIF_RET(am_false);
}
-
-/**********************************************************************/
-/* dist_exit(Local, Term, Remote) -> Bool */
-
-BIF_RETTYPE dist_exit_3(BIF_ALIST_3)
-{
- Eterm local;
- Eterm remote;
- DistEntry *rdep;
-
- local = BIF_ARG_1;
- remote = BIF_ARG_3;
-
- /* Check that remote is a remote process */
- if (is_not_external_pid(remote))
- goto error;
-
- rdep = external_dist_entry(remote);
-
- if(rdep == erts_this_dist_entry)
- goto error;
-
- /* Check that local is local */
- if (is_internal_pid(local)) {
- Process *lp;
- ErtsProcLocks lp_locks;
- if (BIF_P->common.id == local) {
- lp_locks = ERTS_PROC_LOCKS_ALL;
- lp = BIF_P;
- erts_proc_lock(BIF_P, ERTS_PROC_LOCKS_ALL_MINOR);
- }
- else {
- lp_locks = ERTS_PROC_LOCKS_XSIG_SEND;
- lp = erts_pid2proc(BIF_P, ERTS_PROC_LOCK_MAIN,
- local, lp_locks);
- if (!lp) {
- BIF_RET(am_true); /* ignore */
- }
- }
-
- (void) erts_send_exit_signal(BIF_P,
- remote,
- lp,
- &lp_locks,
- BIF_ARG_2,
- NIL,
- NULL,
- 0);
- if (lp == BIF_P)
- lp_locks &= ~ERTS_PROC_LOCK_MAIN;
- erts_proc_unlock(lp, lp_locks);
- if (lp == BIF_P) {
- erts_aint32_t state = erts_atomic32_read_acqb(&BIF_P->state);
- /*
- * We may have exited current process and may have to take action.
- */
- if (state & (ERTS_PSFLG_EXITING|ERTS_PSFLG_PENDING_EXIT)) {
- if (state & ERTS_PSFLG_PENDING_EXIT)
- erts_handle_pending_exit(BIF_P, ERTS_PROC_LOCK_MAIN);
- ERTS_BIF_EXITED(BIF_P);
- }
- }
- }
- else if (is_external_pid(local)
- && external_dist_entry(local) == erts_this_dist_entry) {
- BIF_RET(am_true); /* ignore */
- }
- else
- goto error;
- BIF_RET(am_true);
-
- error:
- BIF_ERROR(BIF_P, BADARG);
-}
-
/**********************************************************************/
/* node(Object) -> Node */
diff --git a/erts/emulator/beam/dist.h b/erts/emulator/beam/dist.h
index 8bb915c76b..50e72ac42c 100644
--- a/erts/emulator/beam/dist.h
+++ b/erts/emulator/beam/dist.h
@@ -86,8 +86,6 @@
#define DOP_SEND_SENDER_TT 23
/* distribution trap functions */
-extern Export* dlink_trap;
-extern Export* dunlink_trap;
extern Export* dmonitor_node_trap;
extern Export* dgroup_leader_trap;
extern Export* dexit_trap;
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl
index 56a7d03473..43ac8a6f26 100644
--- a/erts/preloaded/src/erlang.erl
+++ b/erts/preloaded/src/erlang.erl
@@ -31,7 +31,6 @@
-export([localtime_to_universaltime/1]).
-export([suspend_process/1]).
-export([min/2, max/2]).
--export([dlink/1, dunlink/1]).
-export([dgroup_leader/2,
dexit/2, dmonitor_node/3, dmonitor_p/2]).
-export([delay_trap/2]).
@@ -125,7 +124,7 @@
-export([crc32/2, crc32_combine/3, date/0, decode_packet/3]).
-export([delete_element/2]).
-export([delete_module/1, demonitor/1, demonitor/2, display/1]).
--export([display_nl/0, display_string/1, dist_exit/3, erase/0, erase/1]).
+-export([display_nl/0, display_string/1, erase/0, erase/1]).
-export([error/1, error/2, exit/1, exit/2, external_size/1]).
-export([external_size/2, finish_after_on_load/2, finish_loading/1, float/1]).
-export([float_to_binary/1, float_to_binary/2,
@@ -707,14 +706,6 @@ display_nl() ->
display_string(_P1) ->
erlang:nif_error(undefined).
-%% dist_exit/3
--spec erlang:dist_exit(P1, P2, P3) -> true when
- P1 :: pid(),
- P2 :: kill | noconnection | normal,
- P3 :: pid() | port().
-dist_exit(_P1, _P2, _P3) ->
- erlang:nif_error(undefined).
-
%% dt_append_vm_tag_data/1
-spec erlang:dt_append_vm_tag_data(IoData) -> IoDataRet when
IoData :: iodata(),
@@ -3290,21 +3281,6 @@ dist_get_stat(_DHandle) ->
%% reactivate the command.
%%
--spec erlang:dlink(pid() | port()) -> 'true'.
-dlink(Pid) ->
- case net_kernel:connect(erlang:node(Pid)) of
- true -> erlang:link(Pid);
- false -> erlang:dist_exit(erlang:self(), noconnection, Pid), true
- end.
-
-%% Can this ever happen?
--spec erlang:dunlink(identifier()) -> 'true'.
-dunlink(Pid) ->
- case net_kernel:connect(erlang:node(Pid)) of
- true -> erlang:unlink(Pid);
- false -> true
- end.
-
dmonitor_node(Node, _Flag, []) ->
%% Only called when auto-connect attempt failed early in VM
erlang:self() ! {nodedown, Node},
diff --git a/lib/tools/emacs/erlang.el b/lib/tools/emacs/erlang.el
index 791f0db4fe..68a4bffca0 100644
--- a/lib/tools/emacs/erlang.el
+++ b/lib/tools/emacs/erlang.el
@@ -905,8 +905,6 @@ resulting regexp is surrounded by \\_< and \\_>."
"dist_ctrl_get_data_notification"
"dist_ctrl_input_handler"
"dist_ctrl_put_data"
- "dist_exit"
- "dlink"
"dmonitor_node"
"dmonitor_p"
"dt_append_vm_tag_data"
@@ -916,7 +914,6 @@ resulting regexp is surrounded by \\_< and \\_>."
"dt_put_tag"
"dt_restore_tag"
"dt_spread_tag"
- "dunlink"
"convert_time_unit"
"external_size"
"finish_after_on_load"