aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/io.c
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2013-04-04 17:53:56 +0200
committerErlang/OTP <[email protected]>2013-04-04 17:53:56 +0200
commit858f7b67cd0ecb60f10054de8049d7e1a250bd25 (patch)
tree3bee0f16cbcfc3ddde16f330b97435e08f64fe84 /erts/emulator/beam/io.c
parente92c2cdb870695412254a75b6400c8723b1b95f1 (diff)
parent1e282b7b0c092f8f4619383741262583ff99b64c (diff)
downloadotp-858f7b67cd0ecb60f10054de8049d7e1a250bd25.tar.gz
otp-858f7b67cd0ecb60f10054de8049d7e1a250bd25.tar.bz2
otp-858f7b67cd0ecb60f10054de8049d7e1a250bd25.zip
Merge branch 'rickard/thr_prgr_later_op/OTP-10994' into maint-r16
* rickard/thr_prgr_later_op/OTP-10994: Make port close not be delayed Be less eager requesting wakeup for cleanup jobs
Diffstat (limited to 'erts/emulator/beam/io.c')
-rw-r--r--erts/emulator/beam/io.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c
index 8c67f731f4..43918a7141 100644
--- a/erts/emulator/beam/io.c
+++ b/erts/emulator/beam/io.c
@@ -2651,11 +2651,17 @@ void erts_init_io(int port_tab_size,
int port_tab_size_ignore_files)
{
ErlDrvEntry** dp;
+ UWord common_element_size;
erts_smp_rwmtx_opt_t drv_list_rwmtx_opts = ERTS_SMP_RWMTX_OPT_DEFAULT_INITER;
drv_list_rwmtx_opts.type = ERTS_SMP_RWMTX_TYPE_EXTREMELY_FREQUENT_READ;
drv_list_rwmtx_opts.lived = ERTS_SMP_RWMTX_LONG_LIVED;
+ common_element_size = ERTS_ALC_DATA_ALIGN_SIZE(sizeof(Port));
+ common_element_size += ERTS_ALC_DATA_ALIGN_SIZE(sizeof(ErtsPortTaskBusyPortQ));
+ common_element_size += 10; /* name */
#ifdef ERTS_SMP
+ common_element_size += sizeof(erts_mtx_t);
+
init_xports_list_alloc();
#endif
@@ -2684,6 +2690,7 @@ void erts_init_io(int port_tab_size,
NULL,
(ErtsPTabElementCommon *) &erts_invalid_port.common,
port_tab_size,
+ common_element_size, /* Doesn't need to be excact */
"port_table");
erts_smp_atomic_init_nob(&erts_bytes_out, 0);