aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
authorSteve Vinoski <[email protected]>2015-12-23 21:09:19 -0500
committerRickard Green <[email protected]>2016-05-31 15:13:50 +0200
commit60557173f8a7bd0d4deafdb2b3e066899c586f56 (patch)
tree280984f50391176714f4ed1b9eb19cdabd3369b3 /erts/emulator/beam/erl_process.c
parentf0510a55fdc2591ea71107f77e36d6fc7b001874 (diff)
downloadotp-60557173f8a7bd0d4deafdb2b3e066899c586f56.tar.gz
otp-60557173f8a7bd0d4deafdb2b3e066899c586f56.tar.bz2
otp-60557173f8a7bd0d4deafdb2b3e066899c586f56.zip
Add dirty_process_main function
Dirty schedulers only execute NIFs, so having them execute the full process_main function isn't necessary. Add dirty_process_main for dirty schedulers to execute instead. Add erts_pre_dirty_nif(), called when preparing to execute a dirty nif. Add more dirty NIF tests to verify that activities requiring the process main lock can succeed when the process is executing a dirty NIF.
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index f8cbe60e76..e245c9e6bb 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -8197,7 +8197,7 @@ sched_dirty_cpu_thread_func(void *vesdp)
#endif
erts_thread_init_float();
- process_main();
+ dirty_process_main();
/* No schedulers should *ever* terminate */
erts_exit(ERTS_ABORT_EXIT,
"Dirty CPU scheduler thread number %beu terminated\n",
@@ -8242,7 +8242,7 @@ sched_dirty_io_thread_func(void *vesdp)
#endif
erts_thread_init_float();
- process_main();
+ dirty_process_main();
/* No schedulers should *ever* terminate */
erts_exit(ERTS_ABORT_EXIT,
"Dirty I/O scheduler thread number %beu terminated\n",