diff options
author | Lukas Larsson <[email protected]> | 2015-10-13 16:55:50 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2015-12-15 10:05:46 +0100 |
commit | 598e7e6a456d882aaa586b5ddb17811ecd43f2e5 (patch) | |
tree | 868dc2e18e7be2366c319fd711fa110345ae2881 /erts/emulator/sys/unix/erl_child_setup.c | |
parent | 42b6156235421fbda1bc65c725e4ea7d183e4c84 (diff) | |
download | otp-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.c | 4 |
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]); |