aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys/ose
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2014-03-23 22:21:38 +0100
committerLukas Larsson <[email protected]>2014-03-26 15:18:59 +0100
commit38db84be84daefe80806e6a4c06d3ed8c6c8db31 (patch)
treed0946927122f8bc6de6c8b3f2745721027a984da /erts/emulator/sys/ose
parent68c1740b8b2a23ea8caf46b024fc339e10f375f0 (diff)
downloadotp-38db84be84daefe80806e6a4c06d3ed8c6c8db31.tar.gz
otp-38db84be84daefe80806e6a4c06d3ed8c6c8db31.tar.bz2
otp-38db84be84daefe80806e6a4c06d3ed8c6c8db31.zip
ose: Implement tcp inet driver for OSE
The inet driver for OSE has to handle signals instead of selects and thus the wrappers for ready_input/output are a little bit different. However the majority of the inet code remains the same.
Diffstat (limited to 'erts/emulator/sys/ose')
-rw-r--r--erts/emulator/sys/ose/beam.lmconf2
-rw-r--r--erts/emulator/sys/ose/erl_poll.c7
2 files changed, 7 insertions, 2 deletions
diff --git a/erts/emulator/sys/ose/beam.lmconf b/erts/emulator/sys/ose/beam.lmconf
index 2cee836f9a..4ad46b01d9 100644
--- a/erts/emulator/sys/ose/beam.lmconf
+++ b/erts/emulator/sys/ose/beam.lmconf
@@ -10,7 +10,7 @@ OSE_LM_DATA_INIT=YES
OSE_LM_BSS_INIT=YES
OSE_LM_EXEC_MODEL=SHARED
HEAP_MAX_SIZE=1000000000
-HEAP_SMALL_BUF_INIT_SIZE=64000000
+HEAP_SMALL_BUF_INIT_SIZE=20971520
HEAP_LARGE_BUF_THRESHOLD=16000000
HEAP_LOCK_TYPE=2
diff --git a/erts/emulator/sys/ose/erl_poll.c b/erts/emulator/sys/ose/erl_poll.c
index f0a9097252..7d2a3d1e0b 100644
--- a/erts/emulator/sys/ose/erl_poll.c
+++ b/erts/emulator/sys/ose/erl_poll.c
@@ -551,7 +551,12 @@ int erts_poll_wait(ErtsPollSet ps,
fd.id, fd.signo, current_process());
erts_send_error_to_logger_nogl(dsbufp);
timeout = 0;
- ASSERT(0);
+ /* Under normal circumstances the signal is deallocated by the
+ * driver that issued the select operation. But in this case
+ * there's no driver waiting for such signal so we have to
+ * deallocate it here */
+ if (sig)
+ free_buf(&sig);
} else {
int i;
struct erts_sys_fd_type *fd = NULL;