aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2018-10-24[socket-nif|test] Updated the basic timeout multi accept test caseMicael Karlberg
Updated the basic api timeout test case(s) api_to_maccept_tcp with the new evaluator interface functions. OTP-14831
2018-10-24[socket-nif|test] Updated the basic timeout connect test caseMicael Karlberg
Updated the basic api timeout test case api_to_connect_tcp with the new evaluator interface functions. OTP-14831
2018-10-24[socket-nif|test] Updated the basic option ctrl proc test caseMicael Karlberg
Updated the basic api option test case api_opt_simple_otp_controlling_process with the new evaluator interface functions. OTP-14831
2018-10-24Extend the sharing-preserving routines to optionally copy literalsBjörn Gustavsson
In the implementation of the zero-copying term storage, we want to preserve sharing, but not copy literals because the modules holding the literals could be unloaded under our feet.
2018-10-24Merge branch 'maint'Björn Gustavsson
* maint: beam_lib: Remove obsolete module() from the beam() type hipe: Don't use beam_lib:info/1 with an atom as filename Honor the max heap size when copying literals after purging
2018-10-24[socket-nif|test] Updated the basic send and recv tcp test casesMicael Karlberg
Updated the basic api test cases api_b_send_and_recv_tcp4 and api_b_sendmsg_and_recvmsg_tcp4 with the new evaluator interface functions. OTP-14831
2018-10-23[socket-nif|test] Evaluator interface functionsMicael Karlberg
Added simple evaluator interface functions, so that it is simple for evaluators to interact (and unified). Only two test cases so far... OTP-14831
2018-10-23[socket-nif|test] Add two "remote close" test casesMicael Karlberg
Added two remote close socket closure test cases (for IPv4 TCP): sc_rc_recv_response_tcp4 and sc_rc_recvmsg_response_tcp4. OTP-14831
2018-10-23erts: Refactor DbUpdateHandle with nicer typesSverker Eriksson
2018-10-23erts: Refactor away function generating macros in erl_db_catree.cSverker Eriksson
Easier to read and debug, and about the same lines of code.
2018-10-23erts: Fix faulty assert in catree_find_nextprev_rootSverker Eriksson
It's possible to first find an empty base node and then retry and find the same base node as invalid. It's a benign race with join which first makes the old invalid 'neighbor' accessible from 'gparent' before replacing it with 'new_neighbor'.
2018-10-23erts: Provoke random catree split/join for DEBUG emulatorSverker Eriksson
2018-10-23erts: Fix slot bug in find_next/prevSverker Eriksson
2018-10-23erts: Fix lc_key in base nodesSverker Eriksson
to actually pass the copy to lock checker.
2018-10-23erts: Do contention adaptions during (updating) iterationsSverker Eriksson
Once an iteration key has been found, never fall back to first/last key in next/prev tree as trees may split or join under our feet. I.e we must always use previous key when searching for the next key.
2018-10-23erts: Optimize find_next/prev_from_pb_keySverker Eriksson
to not have to backtrack up on the stack.
2018-10-23erts: Add erts_debug feature 'ets_force_split'Sverker Eriksson
to easier generate a routing tree for test without having to spend cpu to provoke actual repeated lock conflicts.
2018-10-23erts: Implement ets:info(T, stats) for catreesSverker Eriksson
{RouteNodes, BaseNodes, MaxRouteTreeDepth}
2018-10-23erts: Make thr prgr wakeup current or sched 1Lukas Larsson
Before this change, it was always the aux thread that was woken to handle thread progress events scheduled to happen when all schedulers were going to sleep. This was ok in the pre-OTP-21 implementation when the aux thread just slept on a tse. Now that it sleeps in the fallback pollset this uses too much cpu so instead we wake the thread that is doing the request if it is a managed thread, or else we wake scheduler 1.
2018-10-23erts: Pass thread progress data where possibleLukas Larsson
The poll thread does a lot of waking up and then going back to sleep. A large part of the waking up is managing thread progress and a large part of that was using thread specific data to get the thread progress data pointer. With this refactor the tpd is passed to each of the functions which greatly decreases the number of ethr_get_tsd calls which in turn halves the CPU usage of the poller thread in certain scenarios.
2018-10-22[socket-nif|test] Add test case for accept handling socket closeMicael Karlberg
Add test cases for tcp local socket close for the accept function. OTP-14831
2018-10-22[socket-nif|test] Add test cases for UDP recvfrom and recvmsgMicael Karlberg
Add test cases for udp local socket close for UDP recvfrom and recvmsg. OTP-14831
2018-10-22[socket-nif] Initiation of "current reader" missing for recvfromMicael Karlberg
When calling the recvfrom function when there is no data, we should be made wait (for the specified amount of time). But this did not work because the "current reader" structure was not initiated. OTP-14831
2018-10-19erts: Remove dead tree merging codeSverker Eriksson
2018-10-19erts: Remove tree merging for print and foreach_offheapSverker Eriksson
2018-10-19erts: Remove tree merging for ets:slotSverker Eriksson
Brute force solution will always iterate tree from slot 0 and forward. ToDo1: Yield. ToDo2: Maybe optimize by caching AVL tree size in each base node.
2018-10-19erts: Remove tree merging for ets:first,last,next,prevSverker Eriksson
2018-10-19erts: Remove tree merging for ets:select*Sverker Eriksson
2018-10-19erts: Add table type assertions for static stack accessSverker Eriksson
DbTableCATree has no static stack.
2018-10-19erts: Refactor ets:select* bound key lookupSverker Eriksson
Move lookup from analyze_pattern to callers.
2018-10-19erts: Refactor ets ordered_set match spec key boundnessSverker Eriksson
2018-10-19erts: Fix compiler warning in erl_bif_binary.cSverker Eriksson
2018-10-19erts: Fix debug_realloc for ptr==NULLSverker Eriksson
2018-10-19[socket-nif|test] Local close cases extendedMicael Karlberg
The receive response local close tcp cases was extended wityh two more handler (readers). OTP-14831
2018-10-19[socket-nif|test] Evaluator improvementsMicael Karlberg
Add name to evaluator printouts. Also added timetraps to all test- cases to shorten the time to wait in case a test case fails. OTP-14831
2018-10-19[socket-nif|test] IO fixesMicael Karlberg
2018-10-19[socket-nif|test] Moved socket tests from kernel to erts/emulatorMicael Karlberg
OTP-14831
2018-10-19Honor the max heap size when copying literals after purgingBjörn Gustavsson
When a module has been purged from memory, any literals belonging to that module will be copied to all processes that hold references to them. The max heap size limit would be ignored in the garbage collection initiated when copying literals to a process. If the max heap size was exceeded, the process would typically be terminated in the following garbage collection. Since the process would be killed anyway later, kill the process before copying a literal that would make it exceed its max heap size. While at it, also fix a potential bug in `erlang:garbage_collect/0`. If it was found that the max heap sized had been exceeded while executing `erlang:garbage_collect/0`, the process would enter a kind of zombie state instead of being properly terminated.
2018-10-18[socket-nif] setopt and getopt with level ipv6Micael Karlberg
The level argument for IPv6 can be either SOL_IPV6 or IPPROTO_IPV6, whichever is defined. But it was hard- coded to SOL_IPV6, which is not defined on FreeBSD. OTP-14831
2018-10-18Merge branch 'bmk/20181004/nififying_inet_rework_test_suite/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831
2018-10-18[socket-nif] Initiation of "current reader" missing for recvmsgMicael Karlberg
When calling the recvmsg function when there is no data, we should be wait (for the specified amount of time). But this not not wotk because the "current reader" structure was not initiated. OTP-14831
2018-10-18[socket-nif] Socket closeMicael Karlberg
Fixed a number of issues regarding monitor handling. Monitors are now wrapped in its own type (ESockMonitor). This is hopefully temporary! The reason for this is that there is no way to "initialize" a monitor after a demonitor. This could mean that after a successful demonitor, you could still get a down-callback, and thenh compare with, for instance, ctrlMOn field and get a match, even though it was just (successfully) demonitor'ed. To make debugging easier, the monitor and demonitor calls are now wrapped in their own functions, with debug printouts before and in case of failure, also after the actual calls Also, fixed a number of problems with cancel, where monitors where left still active after cleaning up current and active reader, writer and acceptor. OTP-14831
2018-10-17Merge branch 'maint'Sverker Eriksson
2018-10-17Merge branch 'sverker/erts/debug_free_null' into maintSverker Eriksson
* sverker/erts/debug_free_null: erts: Fix bug in debug_free for NULL pointer
2018-10-17Merge branch 'john/erts/update-zlib/OTP-15351/ERL-749'John Högberg
* john/erts/update-zlib/OTP-15351/ERL-749: Update zlib to 1.2.11 Allow undefined macros when building zlib
2018-10-17Merge branch 'maint'John Högberg
* maint: "cork" tcp socket around file:sendfile Add nopush TCP socket option
2018-10-17Merge branch 'igor/tcp-nopush-ERL-698/OTP-15357' into maintJohn Högberg
* igor/tcp-nopush-ERL-698/OTP-15357: "cork" tcp socket around file:sendfile Add nopush TCP socket option
2018-10-16[socket-nif] Recv handling of closing socketsMicael Karlberg
Fixed more issues regarding closing sockets. Specifically with respect to recv calls. Also, added demonitor for all *current* processes. Also fixed a buffer overflow problem when writing an warning message (the timestamp buffer was not large enough). OTP-14831
2018-10-16Merge branch 'sverker/erts/ets-select_replace-bug/OTP-15346' into maint-20Erlang/OTP
* sverker/erts/ets-select_replace-bug/OTP-15346: erts: Fix bug in ets:select_replace for bound key
2018-10-16Merge branch 'fhunleth/fix-muslc-compiler-error' into ↵John Högberg
john/erts/update-zlib/OTP-15351/ERL-749 * fhunleth/fix-muslc-compiler-error: Allow undefined macros when building zlib