diff options
author | Sverker Eriksson <[email protected]> | 2013-02-05 18:50:00 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2013-02-13 19:04:43 +0100 |
commit | ef3566f48e08481821eee1c7260cdd4ca05fdefc (patch) | |
tree | 44d71c2e89c712511cf3acbc38c0f14284ea8b97 /erts/emulator/test/nif_SUITE_data | |
parent | 68b804f34d4ec420d86953e3f519179a40fbee8f (diff) | |
download | otp-ef3566f48e08481821eee1c7260cdd4ca05fdefc.tar.gz otp-ef3566f48e08481821eee1c7260cdd4ca05fdefc.tar.bz2 otp-ef3566f48e08481821eee1c7260cdd4ca05fdefc.zip |
erts: Add enif_consume_timeslice
Diffstat (limited to 'erts/emulator/test/nif_SUITE_data')
-rw-r--r-- | erts/emulator/test/nif_SUITE_data/nif_SUITE.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/erts/emulator/test/nif_SUITE_data/nif_SUITE.c b/erts/emulator/test/nif_SUITE_data/nif_SUITE.c index 03092fef5e..2504d24b51 100644 --- a/erts/emulator/test/nif_SUITE_data/nif_SUITE.c +++ b/erts/emulator/test/nif_SUITE_data/nif_SUITE.c @@ -1456,6 +1456,27 @@ static ERL_NIF_TERM otp_9668_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar return atom_ok; } +static ERL_NIF_TERM consume_timeslice_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + int percent; + char atom[10]; + int do_repeat; + + if (!enif_get_int(env, argv[0], &percent) || + !enif_get_atom(env, argv[1], atom, sizeof(atom), ERL_NIF_LATIN1)) { + return enif_make_badarg(env); + } + if (strcmp(atom , "true") == 0) { + int cnt = 1; + while (enif_consume_timeslice(env, percent) == 0 && cnt < 200) + cnt++; + return enif_make_int(env, cnt); + } + else { + return enif_make_int(env, enif_consume_timeslice(env, percent)); + } +} + static ErlNifFunc nif_funcs[] = { {"lib_version", 0, lib_version}, @@ -1504,7 +1525,8 @@ static ErlNifFunc nif_funcs[] = {"reverse_list",1, reverse_list}, {"echo_int", 1, echo_int}, {"type_sizes", 0, type_sizes}, - {"otp_9668_nif", 1, otp_9668_nif} + {"otp_9668_nif", 1, otp_9668_nif}, + {"consume_timeslice_nif", 2, consume_timeslice_nif} }; ERL_NIF_INIT(nif_SUITE,nif_funcs,load,reload,upgrade,unload) |