aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2018-10-08Merge branch 'sverker/erts/freeing-ordered_set-nodes/OTP-15323'Sverker Eriksson
* origin/sverker/erts/freeing-ordered_set-nodes/OTP-15323: erts: Refactor out DbRouteKey struct erts: Remove dead code in erl_db_catree erts: Fix bug in erl_db_catree erts: Remove "dynamic" lock order support erts: Add lock order check for route nodes erts: Add lock order check of erl_db_catree base nodes erts: Add Erlang term order to lock checker erts: Add some ERTS_RESTRICT pointers erts: Do some refactoring in erl_db_catree.c erts: Improve deallocation of CATree nodes erts: Refactor rename union in DbTableCATreeNode erts: Fix compiler warning in erl_bif_binary.c
2018-10-08[socket-nif] Add the options for socket, ip and ipv6 for supportsMicael Karlberg
Add the options for level socket (full), ip and ipv6 to the supports function. OTP-14831
2018-10-08Merge pull request #1964 from lemenkov/more_os_getenv_2Hans Bolinder
Use os:getenv/2 where possible
2018-10-05[socket-nif] Add first three socket (socket) options to supportsMicael Karlberg
Added the first three socket (level socket) options to the supports function(s). OTP-14831
2018-10-05[socket-nif] Add *preliminary* new function supports/0,1Micael Karlberg
2018-10-04Merge branch 'bmk/20181004/nififying_inet_freebsd_fixes/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831
2018-10-04[socket-nif] Add owner validation when setopt controlling_processMicael Karlberg
Before allowing setopt(Sock, opt, controlling_process, NewPid), verify that the caller is actually the current controlling_process. OTP-14831
2018-10-04[socket-nif] Fixed decode of send and recv flagsMicael Karlberg
Add explicitly handling the default case, when not flags are provided (value of zero). OTP-14831
2018-10-04[socket-nif] Socket option 'SO_DOMAIN' not avalable on all platformsMicael Karlberg
Internally in the socket module we accessed domain, type and protocol for an open socket. But as it turns out, domain (family) is not actually available as a socket option on all platforms. FreeBSD in this case. So, since we store these values in the socket descriptor anyway, we switch to use these values for our internal use instead. OTP-14831
2018-10-03erts: Refactor out DbRouteKey structSverker Eriksson
to not abuse DbTerm.
2018-10-03erts: Remove dead code in erl_db_catreeSverker Eriksson
'parent' is route node and 'neighbor' is base node, they can never be equal. 'neighbor_parent' has already been set correctly for all cases.
2018-10-03erts: Fix bug in erl_db_catreeSverker Eriksson
Search stack must be cleared before retry.
2018-10-03erts: Remove "dynamic" lock order supportSverker Eriksson
2018-10-03erts: Add lock order check for route nodesSverker Eriksson
Lock order is reverse tree depth, from leafs toward root. This solution may eventually fail if running too long as route nodes do not increase their 'lc_order' in a join operation when they move up in the tree. But who runs a VM with lock-checker for such a long time?
2018-10-03erts: Add lock order check of erl_db_catree base nodesSverker Eriksson
Lock order is key term order, so each base node needs its own key if lock check is enabled.
2018-10-03erts: Add Erlang term order to lock checkerSverker Eriksson
2018-10-03erts: Add some ERTS_RESTRICT pointersSverker Eriksson
2018-10-03erts: Do some refactoring in erl_db_catree.cSverker Eriksson
Fewer variables with shorter names and prefer DbTableCATree over DbTableCommon.
2018-10-03erts: Improve deallocation of CATree nodesSverker Eriksson
Update table memory stats before scheduling free to not be dependent on deallocation order with main table struct.
2018-10-03erts: Refactor rename union in DbTableCATreeNodeSverker Eriksson
u as in union
2018-10-03erts: Fix compiler warning in erl_bif_binary.cSverker Eriksson
2018-10-02Implement {netns,NS} option for inet:getifaddrs/1Raimo Niskanen
Also implement the same option for the legacy undocumented functions inet:getif/1,getiflist/1,ifget/2,ifset/2. The arity 1 functions had before this change got signatures that took a socket port that was used to do the needed syscall, so now the signature was extended to also take an option list with the only supported option {netns,Namespace}. The Socket argument variant remains unsupported. For inet:getifaddrs/1 the documentation file was changed to old style function name definition so be able to hide the Socket argument variant that is visible in the type spec. The arity 2 functions had got an option list as second argument. This list had to be partitioned into one list for the namespace option(s) and the other for the rest. The namespace option list was then fed to the already existing namespace support for socket opening, which places the socket in a namespace and hence made all these functions that in inet_drv.c used getsockopt() work without change. The functions that used getifaddrs() in inet_drv.c had to be changed in inet_drv.c to swap namespaces around the getifaddrs() syscall. This functionality was separated into a new function call_getifaddrs().
2018-10-01Merge branch 'richcarl/erts/erl_init-cleanup/OTP-15336'Lukas Larsson
* richcarl/erts/erl_init-cleanup/OTP-15336: sasl: Order systools_make:preloaded modules alphabetically Update preloaded modules Move calling on_load for preloaded modules to erl_init Make erl_init.c pass the boot module to erl_init.beam Remove obsolete comment text Remove undocumented and unused -# display_items emulator option Remove broken and undocumented boot function emulator option Replace remaining references to otp_ring0 with erl_init Drop otp_ring0, using erl_init instead Update preloaded modules Add erl_init module Conflicts: erts/emulator/beam/erl_init.c erts/preloaded/ebin/erl_prim_loader.beam erts/preloaded/ebin/erl_tracer.beam erts/preloaded/ebin/erlang.beam erts/preloaded/ebin/erts_code_purger.beam erts/preloaded/ebin/erts_dirty_process_signal_handler.beam erts/preloaded/ebin/erts_internal.beam erts/preloaded/ebin/erts_literal_area_collector.beam erts/preloaded/ebin/init.beam erts/preloaded/ebin/otp_ring0.beam erts/preloaded/ebin/prim_buffer.beam erts/preloaded/ebin/prim_eval.beam erts/preloaded/ebin/prim_file.beam erts/preloaded/ebin/prim_inet.beam erts/preloaded/ebin/prim_zip.beam erts/preloaded/ebin/zlib.beam
2018-10-01Fix bug for sockopt pktoptions on BSDRaimo Niskanen
The macros for the BSD style option names had accidentally wound up outside the option parsing loop, causing unclear behaviour and Valgrind errors.
2018-09-29SELinux is another cause of MSG_CTRUNCAlexander Clouter
https://github.com/termux/termux-packages/issues/2882
2018-09-28[socket-nif] Add support for socket (level otp) buffer optionsMicael Karlberg
Add support for otp level socket options rcvbuf, rcvctrlbuf and sndctrlbuf. These options define default sizes for these buffers. The 'rcvbuf' is used when receiving messages when calling the recv, recvfrom and recvmsg functions. The 'rcvctrlbuf' is used for the control message header info when calling the recvmsg function. The 'sndctrlbuf' is used for the control message header info when calling the sendmsg function. OTP-14831
2018-09-28Merge branch 'sverker/erts/cleanup-efile-argc-checks'Sverker Eriksson
* sverker/erts/cleanup-efile-argc-checks: erts: Remove unnecessary NIF argc tests
2018-09-28Rewrite BSM optimizations in the new SSA-based intermediate formatJohn Högberg
This commit improves the bit-syntax match optimization pass, leveraging the new SSA intermediate format to perform much more aggressive optimizations. Some highlights: * Watch contexts can be reused even after being passed to a function or being used in a try block. * Sub-binaries are no longer eagerly extracted, making it far easier to keep "happy paths" free from binary creation. * Trivial wrapper functions no longer disable context reuse.
2018-09-27[socket-nif] Improve socket stopMicael Karlberg
Make sure the current whatever (writer, reader or writer) is not the closer pid before *attempting* to sending the abort message. And if that fails, issue a warning message (not aborting). OTP-14831
2018-09-27[socket-nif] Add proper recv timeout handlingMicael Karlberg
Added proper recv timeout handling. Made use of the enif_select(mode = cancel) feature. Each time a timeout expires, the "active" recv (the surrent reader select) has to be cancelled. Not yet tested...something for the new test suite... Also, added support for getopt(controlling_pprocess) that, for some reason, was not yet implemented. OTP-14831
2018-09-26Use os:getenv/2 where possiblePeter Lemenkov
Signed-off-by: Peter Lemenkov <[email protected]>
2018-09-26erts: Fix memory leak on file read errorsJohn Högberg
2018-09-25erts: Remove unnecessary NIF argc testsSverker Eriksson
It's impossible to call NIF with wrong argc from Erlang and thus pointless to throw badarg.
2018-09-24Support using match contexts from Y registersJohn Högberg
The upcoming beam_ssa_bsm pass allows match contexts to be used across function calls that take said context as an argument, which means it's fairly common for them to end up in Y registers.
2018-09-21Merge branch 'sverker/erts/beautify-ifdef-DEBUG'Sverker Eriksson
* sverker/erts/beautify-ifdef-DEBUG: erts: Beautify away #ifdef DEBUG
2018-09-21Merge PR-1952 from kjellwinblad/ca_tree_pull_requestSverker Eriksson
Add a more scalable ETS ordered_set implementation
2018-09-21Merge branch 'bmk/20180918/nififying_inet_freebsd/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831 Also needed to "revert" two of the chnages, related to assoc id. This is in FreeBSD defined as an uint32 but on linux as a int32.
2018-09-21Merge branch 'maint'Henrik Nord
2018-09-21Update copyright yearHenrik Nord
2018-09-21[socket-nif] Moved include file (FreeBSD)Micael Karlberg
2018-09-21[socket-nif] More constant if-def and header include movingMicael Karlberg
2018-09-20[socket-nif] Various fixes related to FreeBSD environmentMicael Karlberg
2018-09-20[socket-nif] Add proper send timeout handlingMicael Karlberg
Added proper send timeout handling. Made use of the enif_select(mode = cancel) feature. Each time a timeout expires, the "active" send (the surrent write select) has to be cancelled. OTP-14831
2018-09-19[socket-nif] Add proper connect and accept timeout handlingMicael Karlberg
Added proper connect and accept timeout handling. Made use of the enif_select(mode = cancel) feature. Each time a timeout expires, the previous operation (connect or accept) has to be cancelled (actually its the select operation that has to be cancelled). Only partial implementation of cancel for now (connect and accept). More to follow... OTP-14831
2018-09-19Merge branch 'maint'Raimo Niskanen
2018-09-19Merge branch 'raimo/receive-TOS-TCLASS/ERIERL-187/OTP-15145' into maintRaimo Niskanen
* raimo/receive-TOS-TCLASS/ERIERL-187/OTP-15145: Elaborate the disclaimer for 'pktoptions' Improve platform filter Fix endianness bug for CMSG parsing
2018-09-19Fix endianness bug for CMSG parsingRaimo Niskanen
2018-09-18[socket-nif] Encoding of cmsg headers for sendmsgMicael Karlberg
Fixed various issues with regard to encode of CMsgHdrs during sendmsg. OTP-14831
2018-09-18[socket-nif] CMsgHdr and various doc related changesMicael Karlberg
Updated the (send) cmsghdr type and the handling of it (in the nif code). Still not tested! Removed the is_loaded nif function. Tried to get fix the doc build problem (socket.erl *i think*), which causes socket.html generation to fail with: "cannot find module exporting type" To solve this I tried to run dialyzer on preloaded, and ran into problems with enc_setopt_value. Update various specs and types to "solve" this (which did not work). Updated the nif-stub functions to make dialyzer happy.
2018-09-18[socket-nif] Add support for (recvmsg) control message ipv6_pktinfoMicael Karlberg
Added support for (recvmsg) control message ipv6_pktinfo, for level = ipv6 and type = pktinfo. This is enabled by setting the socket option: recvpktinfo for level ipv6. Not yet tested! OTP-14831