aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys/unix/erl_child_setup.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2015-10-13 16:55:50 +0200
committerLukas Larsson <[email protected]>2015-12-15 10:05:46 +0100
commit598e7e6a456d882aaa586b5ddb17811ecd43f2e5 (patch)
tree868dc2e18e7be2366c319fd711fa110345ae2881 /erts/emulator/sys/unix/erl_child_setup.c
parent42b6156235421fbda1bc65c725e4ea7d183e4c84 (diff)
downloadotp-598e7e6a456d882aaa586b5ddb17811ecd43f2e5.tar.gz
otp-598e7e6a456d882aaa586b5ddb17811ecd43f2e5.tar.bz2
otp-598e7e6a456d882aaa586b5ddb17811ecd43f2e5.zip
erts: Add forker StartAck for port start flowcontrol
An acknowledgement of the Start command has to be managed as we have to make sure that packages are not dropped and also that the close calls do not happen too early.
Diffstat (limited to 'erts/emulator/sys/unix/erl_child_setup.c')
-rw-r--r--erts/emulator/sys/unix/erl_child_setup.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/erts/emulator/sys/unix/erl_child_setup.c b/erts/emulator/sys/unix/erl_child_setup.c
index f74cb0f356..fdffc7f119 100644
--- a/erts/emulator/sys/unix/erl_child_setup.c
+++ b/erts/emulator/sys/unix/erl_child_setup.c
@@ -426,6 +426,10 @@ main(int argc, char *argv[])
while (write(pipes[1], &proto, sizeof(proto)) < 0 && errno == EINTR)
; /* remove gcc warning */
+ proto.action = ErtsSysForkerProtoAction_StartAck;
+ while (write(uds_fd, &proto, sizeof(proto)) < 0 && errno == EINTR)
+ ; /* remove gcc warning */
+
sys_sigrelease(SIGCHLD);
close(pipes[0]);
close(pipes[1]);