summaryrefslogtreecommitdiff
path: root/erts/preloaded/src/erts_internal.erl
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2019-12-09 16:29:21 +0100
committerRickard Green <rickard@erlang.org>2019-12-11 16:18:46 +0100
commite80c2426b404143e699dc2be36bdaddcbe2f9565 (patch)
tree48df4470e24e34ea439ffb9db79301160d80489b /erts/preloaded/src/erts_internal.erl
parentd2b34084ceb7c67c7272b4e04a3a2245e60a353c (diff)
downloaderlang-e80c2426b404143e699dc2be36bdaddcbe2f9565.tar.gz
Block multi-scheduling during node/dist check
Diffstat (limited to 'erts/preloaded/src/erts_internal.erl')
-rw-r--r--erts/preloaded/src/erts_internal.erl14
1 files changed, 14 insertions, 0 deletions
diff --git a/erts/preloaded/src/erts_internal.erl b/erts/preloaded/src/erts_internal.erl
index bbe9a9affa..0dd65d3e27 100644
--- a/erts/preloaded/src/erts_internal.erl
+++ b/erts/preloaded/src/erts_internal.erl
@@ -103,6 +103,8 @@
-export([ets_lookup_binary_info/2, ets_super_user/1, ets_info_binary/1,
ets_raw_first/1, ets_raw_next/2]).
+-export([get_internal_state_blocked/1]).
+
%%
%% Await result of send to port
%%
@@ -816,3 +818,15 @@ ets_info_binary_iter(Tab, Key, Acc) ->
[_|_] = BIL -> BIL ++ Acc
end,
ets_info_binary_iter(Tab, erts_internal:ets_raw_next(Tab, Key), NewAcc).
+
+-spec get_internal_state_blocked(Arg :: term()) -> term().
+
+get_internal_state_blocked(Arg) ->
+ erlang:system_flag(multi_scheduling, block),
+ Result = try
+ erts_debug:get_internal_state({Arg,
+ blocked})
+ after
+ erlang:system_flag(multi_scheduling, unblock)
+ end,
+ Result.