From dd3036c1a152c66a33b4d298cbbf428c075153b7 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson Date: Thu, 19 Jan 2012 21:16:29 +0100 Subject: First try at non-blocking code loading! Implemented some code_ix locks and commented calls to erts_smp_thr_progress_block() --- erts/emulator/beam/erl_lock_check.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'erts/emulator/beam/erl_lock_check.c') diff --git a/erts/emulator/beam/erl_lock_check.c b/erts/emulator/beam/erl_lock_check.c index 09e85893c3..062e78b806 100644 --- a/erts/emulator/beam/erl_lock_check.c +++ b/erts/emulator/beam/erl_lock_check.c @@ -84,6 +84,8 @@ static erts_lc_lock_order_t erts_lock_order[] = { { "reg_tab", NULL }, { "migration_info_update", NULL }, { "proc_main", "pid" }, + { "sverk_code_ix_lock", NULL }, /*SVERK FIXME */ + { "old_code", "address" }, #ifdef HIPE { "hipe_mfait_lock", NULL }, #endif -- cgit v1.2.3 From c7b1e15aede41dc2a3d3486dad172c88b7b4bd36 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson Date: Tue, 24 Jan 2012 17:09:38 +0100 Subject: erts: Fix print-bug in lock checker on debug-vm --- erts/emulator/beam/erl_lock_check.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'erts/emulator/beam/erl_lock_check.c') diff --git a/erts/emulator/beam/erl_lock_check.c b/erts/emulator/beam/erl_lock_check.c index 062e78b806..772d3a03b2 100644 --- a/erts/emulator/beam/erl_lock_check.c +++ b/erts/emulator/beam/erl_lock_check.c @@ -445,7 +445,7 @@ print_lock2(char *prefix, Sint16 id, Wterm extra, Uint16 flags, char *suffix) "%s'%s:%p%s'%s%s", prefix, lname, - boxed_val(extra), + _unchecked_boxed_val(extra), lock_type(flags), rw_op_str(flags), suffix); -- cgit v1.2.3 From c4a8cc5914157c70ced742d957ec0e8d9c618164 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson Date: Fri, 10 Feb 2012 18:22:42 +0100 Subject: erts: Suspend processes waiting for code_ix lock This will prevent blocking entrire schedulers in the rare case when several processes are racing to load/upgrade/delete/purge code. --- erts/emulator/beam/erl_lock_check.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'erts/emulator/beam/erl_lock_check.c') diff --git a/erts/emulator/beam/erl_lock_check.c b/erts/emulator/beam/erl_lock_check.c index 772d3a03b2..8c7e1f36ee 100644 --- a/erts/emulator/beam/erl_lock_check.c +++ b/erts/emulator/beam/erl_lock_check.c @@ -84,7 +84,6 @@ static erts_lc_lock_order_t erts_lock_order[] = { { "reg_tab", NULL }, { "migration_info_update", NULL }, { "proc_main", "pid" }, - { "sverk_code_ix_lock", NULL }, /*SVERK FIXME */ { "old_code", "address" }, #ifdef HIPE { "hipe_mfait_lock", NULL }, @@ -95,6 +94,7 @@ static erts_lc_lock_order_t erts_lock_order[] = { { "proc_msgq", "pid" }, { "dist_entry", "address" }, { "dist_entry_links", "address" }, + { "code_ix_queue", NULL }, { "proc_status", "pid" }, { "proc_tab", NULL }, { "ports_snapshot", NULL }, -- cgit v1.2.3