diff options
author | Patrik Nyblom <[email protected]> | 2013-04-05 18:51:50 +0200 |
---|---|---|
committer | Patrik Nyblom <[email protected]> | 2013-04-05 18:51:50 +0200 |
commit | b9ef8bac23fa0421765afe3073f430a1f0d92260 (patch) | |
tree | 94428e0a154e4c7c835d56b92fb0e42eda19b12c /erts/emulator/beam/erl_port_task.c | |
parent | b269e15eea9232205a371d6b10c50628d836b661 (diff) | |
parent | 7b31cdb80624567568474d79bff07e053457a450 (diff) | |
download | otp-b9ef8bac23fa0421765afe3073f430a1f0d92260.tar.gz otp-b9ef8bac23fa0421765afe3073f430a1f0d92260.tar.bz2 otp-b9ef8bac23fa0421765afe3073f430a1f0d92260.zip |
Merge branch 'maint-r16' into maint
Conflicts:
erts/vsn.mk
Diffstat (limited to 'erts/emulator/beam/erl_port_task.c')
-rw-r--r-- | erts/emulator/beam/erl_port_task.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/erts/emulator/beam/erl_port_task.c b/erts/emulator/beam/erl_port_task.c index ce045ec94e..0ed08bee01 100644 --- a/erts/emulator/beam/erl_port_task.c +++ b/erts/emulator/beam/erl_port_task.c @@ -151,9 +151,10 @@ static ERTS_INLINE void schedule_port_task_free(ErtsPortTask *ptp) { #ifdef ERTS_SMP - erts_schedule_thr_prgr_later_op(call_port_task_free, - (void *) ptp, - &ptp->u.release); + erts_schedule_thr_prgr_later_cleanup_op(call_port_task_free, + (void *) ptp, + &ptp->u.release, + sizeof(ErtsPortTask)); #else port_task_free(ptp); #endif @@ -772,9 +773,10 @@ static void schedule_port_task_handle_list_free(ErtsPortTaskHandleList *pthlp) { #ifdef ERTS_SMP - erts_schedule_thr_prgr_later_op(free_port_task_handle_list, - (void *) pthlp, - &pthlp->u.release); + erts_schedule_thr_prgr_later_cleanup_op(free_port_task_handle_list, + (void *) pthlp, + &pthlp->u.release, + sizeof(ErtsPortTaskHandleList)); #else erts_free(ERTS_ALC_T_PT_HNDL_LIST, pthlp); #endif @@ -1999,6 +2001,7 @@ begin_port_cleanup(Port *pp, ErtsPortTask **execqp, int *processing_busy_q_p) * Schedule cleanup of port structure... */ #ifdef ERTS_SMP + /* Has to be more or less immediate to release any driver */ erts_schedule_thr_prgr_later_op(release_port, (void *) pp, &pp->common.u.release); |