summaryrefslogtreecommitdiff
path: root/erts/emulator/sys/common
Commit message (Collapse)AuthorAgeFilesLines
* erts: Add lttng tracepoints for driversBjörn-Egil Dahlberg2016-04-061-0/+3
| | | | | | | | | | | | | | | | | * driver_event * driver_flush * driver_finish * driver_init * driver_output * driver_outputv * driver_process_exit * driver_ready_async * driver_ready_input * driver_ready_output * driver_start * driver_stop * driver_stop_select * driver_timeout
* Merge branch 'sverk/literal-alloc-polish'Sverker Eriksson2016-03-082-1/+6
|\ | | | | | | | | | | | | * sverk/literal-alloc-polish: erts: Add emulator flag +MIscs for literal super carrier size erts: Refactor init of erts_literal_mmapper erts: Make literal_alloc documented and configurable
| * erts: Refactor init of erts_literal_mmapperSverker Eriksson2016-02-231-0/+3
| |
| * erts: Make literal_alloc documented and configurableSverker Eriksson2016-02-231-1/+3
| | | | | | | | | | | | | | | | Except it cannot be disabled and cannot be multi-threaded. The bit-vector 'erts_literal_vspace_map' on 32-bit is currently only protected by the literal allocator mutex. We could allow multiple instances on 64-bit (I think), but what would be the point?
* | Merge branch 'master' into sverk/master/halt-INT_MINSverker Eriksson2016-02-247-609/+493
|\ \ | |/
| * erts: Add microstate accountingLukas Larsson2016-02-021-8/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Microstate accounting is a way to track which state the different threads within ERTS are in. The main usage area is to pin point performance bottlenecks by checking which states the threads are in and then from there figuring out why and where to optimize. Since checking whether microstate accounting is on or off is relatively expensive if done in a short loop only a few of the states are enabled by default and more states can be enabled through configure. I've done some benchmarking and the overhead with it turned off is not noticible and with it on it is a fraction of a percent. If you enable the extra states, depending on the benchmark, the ovehead when turned off is about 1% and when turned on somewhere inbetween 5-15%. OTP-12345
| * Merge branch 'maint'Henrik Nord2015-11-161-1/+1
| |\
| * | erts: Add support for fast erts_is_literal()Sverker Eriksson2015-11-124-5/+32
| | |
| * | erts: Refactor erl_mmap to allow several mapper instancesSverker Eriksson2015-11-123-285/+295
| | |
| * | erts: Fix strangeness in treatment of MSEG_ALIGN_BITSSverker Eriksson2015-09-111-10/+0
| | | | | | | | | | | | And remove old case of using only page alignment (12 bits).
| * | erts: Remove unused erts_have_erts_mmapSverker Eriksson2015-09-112-9/+0
| | |
| * | ose: Remove all code related to the OSE portLukas Larsson2015-07-102-44/+2
| | | | | | | | | | | | | | | | | | 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.
| * | Merge branch 'egil/remove-halfword/OTP-12883'Björn-Egil Dahlberg2015-07-013-248/+136
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 ...
| | * | erts: Remove halfword MemKind msegBjörn-Egil Dahlberg2015-06-241-197/+135
| | | |
| | * | erts: Remove HALFWORD_HEAP definitionBjörn-Egil Dahlberg2015-06-243-51/+1
| | | |
* | | | erts: Change erl_exit into erts_exitSverker Eriksson2016-02-243-10/+10
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mostly a pure refactoring. Except for the buggy cases when calling erlang:halt() with a positive integer in the range -(INT_MIN+2) to -INT_MIN that got confused with ERTS_ABORT_EXIT, ERTS_DUMP_EXIT and ERTS_INTR_EXIT. Outcome OLD erl_exit(n, ) NEW erts_exit(n, ) ------- ------------------- ------------------------------------------- exit(Status) n = -Status <= 0 n = Status >= 0 crashdump+abort n > 0, ignore n n = ERTS_ERROR_EXIT < 0 The outcome of the old ERTS_ABORT_EXIT, ERTS_INTR_EXIT and ERTS_DUMP_EXIT are the same as before (even though their values have changed).
* | | Fix erroneous use of __uint32_tIan Denhardt2015-10-151-1/+1
|/ / | | | | | | | | The presence of this symbol is libc-specific. In particular, it is absent from musl. The correct solution is to use uint32_t.
* | Merge branch 'maint-17' into maintSverker Eriksson2015-06-291-10/+5
|\ \ | |/ |/| | | | | | | | | | | Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk otp_versions.table
| * Merge branch 'sverk/poll-lost-wakeup/OTP-12859' into maint-17Erlang/OTP2015-06-251-10/+5
| |\ | | | | | | | | | | | | * sverk/poll-lost-wakeup/OTP-12859: erts: Fix race in poller thread wake up
| | * erts: Fix race in poller thread wake upSverker Eriksson2015-06-221-10/+5
| | |
* | | Merge branch 'bruce/change-license'Bruce Yinhe2015-06-2213-124/+137
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | OTP-12845 * bruce/change-license: fix errors caused by changed line numbers Change license text to APLv2
| * | | Change license text to APLv2Bruce Yinhe2015-06-1813-124/+137
| | | |
* | | | erts: Fix erl_poll on darwinBjörn-Egil Dahlberg2015-06-201-1/+1
|/ / /
* | | erts: Refactor growth of fd tablesSverker Eriksson2015-06-173-32/+36
| | | | | | | | | | | | to have one common implementation for both _kp and _nkp.
* | | Merge branch 'egil/erts/high_accuracy_sleep/OTP-12236'Björn-Egil Dahlberg2015-05-112-8/+162
|\ \ \ | | | | | | | | | | | | | | | | * egil/erts/high_accuracy_sleep/OTP-12236: erts: Add high accuracy poll timeouts
| * | | erts: Add high accuracy poll timeoutsLukas Larsson2015-04-132-8/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Different poll/select implementations have different ways to handle timeouts of < ms accuracy. Most have extended API like pselect or such, while others rely on using timerfds (epoll_wait). If no high accuracy timeout is available, we simply round up to nearest ms. If we do not roundup we will spin the last ms when waiting for a timeout which is not desirable.
* | | | Optimized timer implementationRickard Green2015-05-082-3/+4
|/ / /
* | | Better support for poor os monotonic sourcesRickard Green2015-03-232-0/+153
| | |
* | | Multiple timer wheelsRickard Green2015-03-201-1/+5
| | |
* | | Introduce a new time APIRickard Green2015-03-204-67/+185
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old time API is based on erlang:now/0. The major issue with erlang:now/0 is that it was intended to be used for so many unrelated things. This tied these unrelated operations together and unnecessarily caused performance, scalability as well as accuracy, and precision issues for operations that do not need to have such issues. The new API spreads different functionality over multiple functions in order to improve on this. The new API consists of a number of new BIFs: - erlang:convert_time_unit/3 - erlang:monotonic_time/0 - erlang:monotonic_time/1 - erlang:system_time/0 - erlang:system_time/1 - erlang:time_offset/0 - erlang:time_offset/1 - erlang:timestamp/0 - erlang:unique_integer/0 - erlang:unique_integer/1 - os:system_time/0 - os:system_time/1 and a number of extensions of existing BIFs: - erlang:monitor(time_offset, clock_service) - erlang:system_flag(time_offset, finalize) - erlang:system_info(os_monotonic_time_source) - erlang:system_info(time_offset) - erlang:system_info(time_warp_mode) - erlang:system_info(time_correction) - erlang:system_info(start_time) See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information.
* | Fix function "defined but not used" warningRickard Green2014-12-031-0/+4
| |
* | Merge branch 'rickard/eager-check-io/OTP-12117' into ↵Rickard Green2014-09-253-96/+651
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rickard/maint-17/eager-check-io/OTP-12117 * rickard/eager-check-io/OTP-12117: Introduce support for eager check I/O scheduling Conflicts: erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_init.c erts/emulator/beam/erl_process.c erts/preloaded/ebin/erlang.beam
| * | Introduce support for eager check I/O schedulingRickard Green2014-09-253-96/+651
| |/
* | Fix ERTS_POLL_DEBUG_PRINT usageMichael Truog2014-08-221-1/+1
| |
* | Merge branch 'paulgray/dtrace_snprintf_fix/OTP-11816'Lukas Larsson2014-03-251-1/+2
|\ \ | | | | | | | | | | | | * paulgray/dtrace_snprintf_fix/OTP-11816: Fix DTrace/SystemTap-related formatting
| * | Fix DTrace/SystemTap-related formattingScott Lystig Fritchie2014-03-251-1/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to Michał Ptaszek for bringing this embarrassing formatting error to my attention. Many DTrace/SystemTap trace strings are incorrectly truncated at 4/8 bytes, depending on the CPU word size. This patch expands the work from commit d032e097 by zheng siyao. Michał's report to the erlang-bugs list can be found at: http://erlang.org/pipermail/erlang-bugs/2014-March/004250.html Conflicts: erts/emulator/beam/beam_emu.c erts/emulator/beam/copy.c erts/emulator/beam/dist.c erts/emulator/beam/erl_async.c erts/emulator/beam/erl_bif_port.c erts/emulator/beam/erl_port_task.c erts/emulator/beam/erl_process.c erts/emulator/beam/io.c
* | ose: Updating event and signal API for OSEJonas Karlsson2014-02-241-0/+1
| |
* | ose: Rewrite resolve_signal API for ose driversLukas Larsson2014-02-242-88/+31
| | | | | | | | | | | | | | | | | | | | This new API has less impact on the check_io code and also removes the callback from ErlDrvEntry. The downside is that you have to give the resolve function when creating each event. Also the mode if the resolve was removed as this mimics the win32 code and decreases complexity.
* | Added support for ENEA OSELukas Larsson2014-02-242-10/+115
| | | | | | | | | | | | | | | | This port has support for both non-smp and smp. It contains a new way to do io checking in which erts_poll_wait receives the payload of the polled entity. This has implications for all linked-in drivers.
* | Change the default file name encoding mode to +fnawBjörn Gustavsson2014-01-281-1/+1
|/
* Silence a warning in erl_poll about an empty loop bodyAnthony Ramine2013-12-021-1/+2
| | | | | | | The warning is: sys/common/erl_poll.c:2513:72: warning: for loop has empty body [-Wempty-body] for (prev_ps = pollsets; ps != prev_ps->next; prev_ps = prev_ps->next);
* Replace the +MMscmgc switch with +MMscrfsdRickard Green2013-11-052-8/+8
| | | | | Replaced the +MMscmgc switch with the +MMscrfsd switch. The old switch didn't reflect what it controlled.
* erts: Add mutex to init_atoms in erts_mmap.cSverker Eriksson2013-10-021-50/+59
|
* erts: Fix lock violation for init_atoms in erl_mmap.cSverker Eriksson2013-10-021-13/+4
| | | | | by not holding the mseg lock while reading version and option info which is unnecessary anyway.
* erts: Fix misc minor bugs in supercarrier initializationSverker Eriksson2013-10-021-13/+16
|
* erts: Add erts_mmap statsSverker Eriksson2013-09-303-4/+206
| | | | | As part of erlang:system_info({allocator,mseg_alloc}) and erl_crash.dump
* erts: Rename erts_bld_atom_uint_2tup_list to *_uword_*Sverker Eriksson2013-09-301-1/+1
| | | | and change from Uint to UWord values
* erts: Fix bug in lookup_free_segSverker Eriksson2013-09-301-19/+14
| | | | that could return segments that are too small after being super aligned.
* erts: Fix race bug in erts_munmapSverker Eriksson2013-09-301-2/+2
| | | | Must keep mutex to serialize (un)reserve ops.
* erts: Add HARD_DBG_MSEGSverker Eriksson2013-09-303-2/+157
|