diff options
author | Rickard Green <[email protected]> | 2016-02-15 10:01:00 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-02-15 10:01:00 +0100 |
commit | 28c9fe4028281029f5028758fbd0a0fc02a78d4d (patch) | |
tree | 3c7502ac1eac57a305344fe3b9086b331353bb01 /erts/emulator/test/scheduler_SUITE_data/scheduler_SUITE.c | |
parent | cf99bf2de73be06e0f0d597dc72e3d7df1ed5f90 (diff) | |
parent | 5d8a987285cf13e8d87731a6284c7df7ed3dac70 (diff) | |
download | otp-28c9fe4028281029f5028758fbd0a0fc02a78d4d.tar.gz otp-28c9fe4028281029f5028758fbd0a0fc02a78d4d.tar.bz2 otp-28c9fe4028281029f5028758fbd0a0fc02a78d4d.zip |
Merge branch 'rickard/ds-fixes' into rickard/ds-fixes-master
* rickard/ds-fixes:
Fix unique_SUITE for dirty schedulers
Add dirty scheduler process termination test
Ensure that work is done on the correct type of schedulers
Conflicts:
erts/emulator/beam/erl_process.c
erts/emulator/beam/erl_process.h
erts/emulator/beam/erl_process_dump.c
Diffstat (limited to 'erts/emulator/test/scheduler_SUITE_data/scheduler_SUITE.c')
-rw-r--r-- | erts/emulator/test/scheduler_SUITE_data/scheduler_SUITE.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/erts/emulator/test/scheduler_SUITE_data/scheduler_SUITE.c b/erts/emulator/test/scheduler_SUITE_data/scheduler_SUITE.c new file mode 100644 index 0000000000..022858c114 --- /dev/null +++ b/erts/emulator/test/scheduler_SUITE_data/scheduler_SUITE.c @@ -0,0 +1,31 @@ +#include <unistd.h> +#include "erl_nif.h" + +static int +load(ErlNifEnv* env, void** priv, ERL_NIF_TERM info) +{ + ErlNifSysInfo sys_info; + enif_system_info(&sys_info, sizeof(ErlNifSysInfo)); + if (!sys_info.smp_support || !sys_info.dirty_scheduler_support) + return 1; + return 0; +} + +static ERL_NIF_TERM +dirty_sleeper(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ +#ifdef ERL_NIF_DIRTY_SCHEDULER_SUPPORT + sleep(3); +#endif + return enif_make_atom(env, "ok"); +} + +static ErlNifFunc funcs[] = { +#ifdef ERL_NIF_DIRTY_SCHEDULER_SUPPORT + {"dirty_sleeper", 0, dirty_sleeper, ERL_NIF_DIRTY_JOB_IO_BOUND} +#else + {"dirty_sleeper", 0, dirty_sleeper, 0} +#endif +}; + +ERL_NIF_INIT(scheduler_SUITE, funcs, &load, NULL, NULL, NULL); |