aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys
AgeCommit message (Collapse)Author
2015-12-15Merge branch 'lukas/erts/forker'Lukas Larsson
* lukas/erts/forker: (28 commits) erts: Never abort in the forked child erts: Mend ASSERT makro for erl_child_setup erts: Allow enomem failures in port_SUITE erts: iter_port sleep longer on freebsd erts: Allow one dangling fd if there is a gethost port erts: Only use forker StackAck on freebsd erts: It is not possible to exit the forker driver erts: Add forker StartAck for port start flowcontrol erts: Fix large open_port arg segfault for win32 erts: Fix memory leak at async open port kernel: Remove cmd server for unix os:cmd erts: Add testcase for huge port environment erts: Move os_pid to port hash to child setup erts: Handle all EINTR and EAGAIN cases in child setup erts: Make child_setup work with large environments erts: Fix forker driver ifdefs for win32 erts: Fix uds socket handling for os x erts: Fix dereferencing of unaligned integer for sparc erts: Flatten too long io vectors in uds write erts: Add fd count test for spawn_driver ... Conflicts: erts/emulator/beam/erl_node_tables.c erts/preloaded/src/erts_internal.erl
2015-12-15erts: Never abort in the forked childLukas Larsson
We always want the error to propagate up to the application when a child cannot be created.
2015-12-15erts: Mend ASSERT makro for erl_child_setupSverker Eriksson
when called by hash.c for example. We use ASSERT from sys.h but erl_child_setup implements its own erl_assert_error() as it doesn't link with sys.o.
2015-12-15erts: Only use forker StackAck on freebsdLukas Larsson
2015-12-15erts: Add forker StartAck for port start flowcontrolLukas Larsson
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.
2015-12-15erts: Fix large open_port arg segfault for win32Lukas Larsson
os_SUITE:large_output_command send a 10k large argument to open_port({spawn,""}) which was too small for the 2K buffer allocated for win32. The buffer is now dynamic and any size can be used.
2015-12-15erts: Move os_pid to port hash to child setupLukas Larsson
Had to move the hashing because of a race that can otherwise happen where a new os_pid value was inserted into the hash before the previous value had been removed. Also replaced the protocol inbetween erts and child setup to be a binary protocol. This was done in order to deal with the varying size of Eterm.
2015-12-15erts: Handle all EINTR and EAGAIN cases in child setupLukas Larsson
2015-12-15erts: Make child_setup work with large environmentsLukas Larsson
2015-12-15erts: Fix uds socket handling for os xLukas Larsson
OS X is very strict in what it requires of you and also gives strange error codes for some errors. In this commit we remap EMSGSIZE to EMFILE and also precisely tune the amount of data we send on the socket so that we can recv only that data. If we try to recv more, recvmsg fails with EPIPE if the remote end has been closed.
2015-12-15erts: Fix dereferencing of unaligned integer for sparcLukas Larsson
2015-12-15erts: Flatten too long io vectors in uds writeLukas Larsson
2015-12-15erts: Create forker process for spawn driverLukas Larsson
Instead of forking from the beam process, we create a separate process in which all forks are done. This has several advantages: 1) performance: * don't have to close all fd's in the world * fork only has to copy stuff from a small process * work is done in a completely seperate process * a 3x performance increase has been measured, can be made even greater (10x) if we cache the environment in child setup 2) stability * the exec is done in another process than beam, which means that if the file that we exec to is on an nfs that is not available right now we will not block a scheduler until the nfs returns. 3) simplicity * don't have to deal with SIGCHLD in the erts Unfortunately, this solution also implies some badness. 1) There will always be a seperate process running together with beam on unix. This could be confusing and undesirable. 2) We have to transfer the entire environment to child_setup for each command. OTP-13088
2015-12-15erts: Move sys drivers to another fileLukas Larsson
2015-12-15erts: Change name of child_setup to erl_child_setupLukas Larsson
2015-12-15erts: Rename sys driver structsLukas Larsson
2015-11-27Merge branch 'maint'Sverker Eriksson
2015-11-27Merge branch 'sverk/cpool_fetch-dc_list-fix' into maintSverker Eriksson
OTP-13147 * sverk/cpool_fetch-dc_list-fix: erts: Reduce alloc_SUITE:rbtree runtime for valgrind erts: Remove double free in efile_drv erts: Improve alloc_SUITE:migration test erts: Pass free mem and build type to alloc_SUITE tests erts: Fix snprintf in alloc_SUITE for windows erts: Workaround for strange crash on win64 in alloc_SUITE test code erts: Refactor alloc_SUITE to use NIFs instead of drivers erts: Add enif_getenv erts: Make key argument constant for erl_drv_{get|put}env erts: Add alloc_SUITE:migration erts: Add TEST allocator erts: Fix confusion of callbacks destroying_mbc() vs remove_mbc() erts: Fix resurrection of carriers from dc_list
2015-11-26erts: Refactor alloc_SUITE to use NIFs instead of driversSverker Eriksson
2015-11-16Merge branch 'maint'Henrik Nord
2015-11-12erts: Add support for fast erts_is_literal()Sverker Eriksson
2015-11-12erts: Refactor erl_mmap to allow several mapper instancesSverker Eriksson
2015-11-10erts: Make key argument constant for erl_drv_{get|put}envSverker Eriksson
This should be a harmless and compatible API change.
2015-10-15Fix erroneous use of __uint32_tIan Denhardt
The presence of this symbol is libc-specific. In particular, it is absent from musl. The correct solution is to use uint32_t.
2015-09-11erts: Fix strangeness in treatment of MSEG_ALIGN_BITSSverker Eriksson
And remove old case of using only page alignment (12 bits).
2015-09-11erts: Remove unused erts_have_erts_mmapSverker Eriksson
2015-08-20Merge branch 'maint'Henrik Nord
Conflicts: OTP_VERSION erts/vsn.mk
2015-08-18Handle ERRNO_BLOCK in fd_driver async functionsSteve Vinoski
Several users on erlang-questions have reported problems with recent releases where output to standard_error causes standard_error_sup to die from receiving an unexpected eagain error. In the fd_driver, change the fd_async() function to handle EINTR, and change fd_ready_async() to handle ERRNO_BLOCK. Add a new test to standard_error_SUITE to generate output to standard_error and ensure that standard_error_sup does not die. Thanks to Kota Uenishi for contributing the test case.
2015-07-10ose: Remove all code related to the OSE portLukas Larsson
The OSE port is no longer supported and this commit removed it and any changes related to it. The things that were general improvements have been left in the code.
2015-07-01Merge branch 'egil/remove-halfword/OTP-12883'Björn-Egil Dahlberg
* egil/remove-halfword/OTP-12883: (21 commits) erts: Remove halfword etp-commands erts: Remove halfword MemKind mseg erts: Remove halfword bases in ETS erts: Remove halfword CHECK_POINTER_MASK erts: Remove halfword relative printf erts: Remove halfword valgrind suppress file erts: Remove halfword specific tests erts: Remove halfword specific allocator types erts: Remove halfword BINARY RELs erts: Remove halfword is_same bases macro erts: Reinstate copy_object over-allocation optimization erts: Remove halfword copy_object_rel erts: Remove halfword object manipulation erts: Remove halfword heap relative comparisions erts: Remove halfword pointer compression erts: Remove halfword basic relative heap operations erts: Remove halfword from configure erts: Remove halfword in lib_src erts: Remove halfword in erl_nif.h erts: Remove halfword in erl_driver.h ...
2015-06-30Merge branch 'sverk/poll-lost-wakeup/OTP-12859' into maint-18Erlang/OTP
* sverk/poll-lost-wakeup/OTP-12859: erts: Fix race in poller thread wake up
2015-06-29Merge branch 'maint-17' into maintSverker Eriksson
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk otp_versions.table
2015-06-25Merge branch 'sverk/poll-lost-wakeup/OTP-12859' into maint-17Erlang/OTP
* sverk/poll-lost-wakeup/OTP-12859: erts: Fix race in poller thread wake up
2015-06-24erts: Remove halfword MemKind msegBjörn-Egil Dahlberg
2015-06-24erts: Remove HALFWORD_HEAP definitionBjörn-Egil Dahlberg
2015-06-22erts: Fix race in poller thread wake upSverker Eriksson
2015-06-22Merge branch 'bruce/change-license'Bruce Yinhe
OTP-12845 * bruce/change-license: fix errors caused by changed line numbers Change license text to APLv2
2015-06-20erts: Fix erl_poll on darwinBjörn-Egil Dahlberg
2015-06-18Change license text to APLv2Bruce Yinhe
2015-06-17Merge branch 'sverk/poll-grow'Sverker Eriksson
* sverk/poll-grow: erts: Refactor growth of fd tables
2015-06-17erts: Refactor growth of fd tablesSverker Eriksson
to have one common implementation for both _kp and _nkp.
2015-06-17erts: Add brackets to statementBjörn-Egil Dahlberg
2015-05-20Merge branch 'mikpe/erl_child_setup-android-breakage'Henrik Nord
* mikpe/erl_child_setup-android-breakage: erl_child_setup.c: fix Android breakage OTP-12751
2015-05-11Merge branch 'egil/erts/high_accuracy_sleep/OTP-12236'Björn-Egil Dahlberg
* egil/erts/high_accuracy_sleep/OTP-12236: erts: Add high accuracy poll timeouts
2015-05-08Merge branch 'sverk/erts-fp-exception-fixes/OTP-12717'Sverker Eriksson
* sverk/erts-fp-exception-fixes/OTP-12717: erts: Disable float exceptions for clang/llvm erts: Increase buffer in erts_fp_check_init_error
2015-05-08Merge branch 'rickard/timer-optimization/OTP-12650'Rickard Green
* rickard/timer-optimization/OTP-12650: Optimized timer implementation Reusable red-black tree implementation Conflicts: erts/emulator/beam/erl_bif_timer.c
2015-05-08Merge branch 'rickard/time-improvement/OTP-11997'Rickard Green
* rickard/time-improvement/OTP-11997: Allow execution of estone suite on pre OTP-18 systems Add parallel time monotonicity test-case Replace usage of erlang:now() in line-tracing Replace erlang:now() usage in emulator suite Replace erlang:now() usage in system suite Misc time improvements
2015-05-08Optimized timer implementationRickard Green
2015-05-06Misc time improvementsRickard Green
- Possibility to chose different clock sources - Improved mach clock usage - Improved linux clock_gettime() usage - ...
2015-05-06erts: Increase buffer in erts_fp_check_init_errorMikael Pettersson
The current size is too small for 64-bit machines, causing messages to be truncated and making debugging more difficult.