aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_port_task.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2013-03-27 18:44:08 +0100
committerRickard Green <[email protected]>2013-04-03 17:09:36 +0200
commit8d70fd874ae4da853ac79f4349fbf4a985950656 (patch)
treebf7c2a0ec719e681c85c299fa759621b61e677fe /erts/emulator/beam/erl_port_task.c
parent05f11890bdfec4bfc3a78e191a87e70a937ffc54 (diff)
downloadotp-8d70fd874ae4da853ac79f4349fbf4a985950656.tar.gz
otp-8d70fd874ae4da853ac79f4349fbf4a985950656.tar.bz2
otp-8d70fd874ae4da853ac79f4349fbf4a985950656.zip
Be less eager requesting wakeup for cleanup jobs
Diffstat (limited to 'erts/emulator/beam/erl_port_task.c')
-rw-r--r--erts/emulator/beam/erl_port_task.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/erts/emulator/beam/erl_port_task.c b/erts/emulator/beam/erl_port_task.c
index ce045ec94e..23000391ec 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,9 +2001,10 @@ begin_port_cleanup(Port *pp, ErtsPortTask **execqp, int *processing_busy_q_p)
* Schedule cleanup of port structure...
*/
#ifdef ERTS_SMP
- erts_schedule_thr_prgr_later_op(release_port,
- (void *) pp,
- &pp->common.u.release);
+ erts_schedule_thr_prgr_later_cleanup_op(release_port,
+ (void *) pp,
+ &pp->common.u.release,
+ sizeof(Port));
#else
pp->cleanup = 1;
#endif