diff options
author | Sverker Eriksson <[email protected]> | 2018-03-12 11:50:42 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2018-05-08 14:38:41 +0200 |
commit | 3ab4ac0371b8646246c8b029dd89f39c3a6981b4 (patch) | |
tree | 2a1f87590829ec2a82d16f6afe2d604f0e8fa300 /erts/emulator/beam/erl_bif_info.c | |
parent | c26bfdd48c8deabe9cc0f67badb0d8a95a641845 (diff) | |
download | otp-3ab4ac0371b8646246c8b029dd89f39c3a6981b4.tar.gz otp-3ab4ac0371b8646246c8b029dd89f39c3a6981b4.tar.bz2 otp-3ab4ac0371b8646246c8b029dd89f39c3a6981b4.zip |
erts: Make atomic ets:delete_all_objects yield
by using a cooperative strategy that will make
any process accessing the table execute delelete_all_objects_continue
until the table is empty.
This is not an optimal solution as concurrent threads will still
block on the table lock, but at least thread progress is made.
Diffstat (limited to 'erts/emulator/beam/erl_bif_info.c')
-rw-r--r-- | erts/emulator/beam/erl_bif_info.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c index 89e3d3f43e..3c13991fb6 100644 --- a/erts/emulator/beam/erl_bif_info.c +++ b/erts/emulator/beam/erl_bif_info.c @@ -4731,7 +4731,14 @@ BIF_RETTYPE erts_debug_set_internal_state_2(BIF_ALIST_2) refbin)); } } - + else if (ERTS_IS_ATOM_STR("ets_force_trap", BIF_ARG_1)) { +#ifdef ETS_DBG_FORCE_TRAP + erts_ets_dbg_force_trap = (BIF_ARG_2 == am_true) ? 1 : 0; + BIF_RET(am_ok); +#else + BIF_RET(am_notsup); +#endif + } } BIF_ERROR(BIF_P, BADARG); |