diff options
author | Rickard Green <[email protected]> | 2012-11-11 21:13:44 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2012-12-07 00:24:26 +0100 |
commit | 43ebafb5fb40aee326b951d18c1880e6e5fdef6b (patch) | |
tree | 531f9ec4975bdaad1813c798db42f87b9fdf7082 /erts/emulator/beam/erl_port_task.c | |
parent | 6e01408aba71e26884c5db81b8e4fa89bd803576 (diff) | |
download | otp-43ebafb5fb40aee326b951d18c1880e6e5fdef6b.tar.gz otp-43ebafb5fb40aee326b951d18c1880e6e5fdef6b.tar.bz2 otp-43ebafb5fb40aee326b951d18c1880e6e5fdef6b.zip |
Add driver callback epilogue
Diffstat (limited to 'erts/emulator/beam/erl_port_task.c')
-rw-r--r-- | erts/emulator/beam/erl_port_task.c | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/erts/emulator/beam/erl_port_task.c b/erts/emulator/beam/erl_port_task.c index e8ed00daee..b6b113b753 100644 --- a/erts/emulator/beam/erl_port_task.c +++ b/erts/emulator/beam/erl_port_task.c @@ -49,18 +49,6 @@ static void chk_task_queues(Port *pp, ErtsPortTask *execq, int processing_busy_q #define ERTS_PT_DBG_CHK_TASK_QS(PP, EQ, PBQ) #endif - -/* - * Costs in reductions for some port operations. - */ -#define ERTS_PORT_REDS_EXECUTE 10 -#define ERTS_PORT_REDS_FREE 100 -#define ERTS_PORT_REDS_TIMEOUT 400 -#define ERTS_PORT_REDS_INPUT 400 -#define ERTS_PORT_REDS_OUTPUT 400 -#define ERTS_PORT_REDS_EVENT 400 -#define ERTS_PORT_REDS_TERMINATE 200 - #ifdef USE_VM_PROBES #define DTRACE_DRIVER(PROBE_NAME, PP) \ if (DTRACE_ENABLED(PROBE_NAME)) { \ @@ -1473,22 +1461,7 @@ erts_port_task_execute(ErtsRunQueue *runq, Port **curr_port_pp) break; } - state = erts_atomic32_read_nob(&pp->state); - if ((state & ERTS_PORT_SFLG_CLOSING) && erts_is_port_ioq_empty(pp)) { - reds += ERTS_PORT_REDS_TERMINATE; - erts_terminate_port(pp); - state = erts_atomic32_read_nob(&pp->state); - } - - ERTS_SMP_LC_ASSERT(erts_lc_is_port_locked(pp)); - -#ifdef ERTS_SMP - if (pp->xports) - erts_smp_xports_unlock(pp); - ASSERT(!pp->xports); -#endif - - ERTS_SMP_LC_ASSERT(erts_lc_is_port_locked(pp)); + reds += erts_port_driver_callback_epilogue(pp, &state); aborted_port_task: schedule_port_task_free(ptp); |