aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_thr_progress.h
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2012-06-06 21:49:48 +0200
committerRickard Green <rickard@erlang.org>2012-08-02 17:59:01 +0200
commit88126e785de24f5f41068c610bc13840dcab4a7d (patch)
tree8e72b687d4b5f12a678e12fd59977ecf783b6e77 /erts/emulator/beam/erl_thr_progress.h
parentda6ea485c20727fe63bb365f34e40ccb8570d413 (diff)
downloadotp-88126e785de24f5f41068c610bc13840dcab4a7d.tar.gz
otp-88126e785de24f5f41068c610bc13840dcab4a7d.tar.bz2
otp-88126e785de24f5f41068c610bc13840dcab4a7d.zip
Use thread progress instead of scheduling misc aux work were possible
Functionality for scheduling operations at thread progress later has been introduced. Deallocation of ETS table structures were previously done by scheduling misc aux work. Deallocation of process structures (not released yet) was also implemented this way. Instead of using the misc aux work functionality these implementation now use the newly introduced functionality for scheduling operations at thread progress later. By using this new functionaliy we reduce the amount of memory allocation/deallocation operations needed.
Diffstat (limited to 'erts/emulator/beam/erl_thr_progress.h')
-rw-r--r--erts/emulator/beam/erl_thr_progress.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_thr_progress.h b/erts/emulator/beam/erl_thr_progress.h
index 89486b065b..e72321cf48 100644
--- a/erts/emulator/beam/erl_thr_progress.h
+++ b/erts/emulator/beam/erl_thr_progress.h
@@ -78,6 +78,16 @@ void erts_thr_progress_fatal_error_block(SWord timeout,
#endif /* ERTS_SMP */
+typedef struct ErtsThrPrgrLaterOp_ ErtsThrPrgrLaterOp;
+struct ErtsThrPrgrLaterOp_ {
+#ifdef ERTS_SMP
+ ErtsThrPrgrVal later;
+#endif
+ void (*func)(void *);
+ void *data;
+ ErtsThrPrgrLaterOp *next;
+};
+
#endif
#if !defined(ERL_THR_PROGRESS_H__) && !defined(ERL_THR_PROGRESS_TSD_TYPE_ONLY)