Age | Commit message (Collapse) | Author |
|
|
|
that uses its own super carrier (erts_exec_mmapper)
to guarantee low addressed and executable memory (PROT_EXEC).
Currently only used on x86_64 that needs low memory
for HiPE/AMD64's small code model.
By initializing erts_exec_mapper early we secure
its low memory area before erts_literal_mmapper might
steal it.
|
|
* henrik/update-copyrightyear:
update copyright-year
|
|
* egil/erts/tracing-beam-lttng/OTP-10282:
erts: Don't use ratio in carrier lttng tracepoints
Add lttng testcases
erts: Extend erlang:system_info/1 with lttng
Refactor and fix dtrace define in erl_message
erts: Add lttng tracepoints for async pool queue
erts: Add lttng tracepoints for drivers
erts: Add lttng tracepoints for scheduler events
erts: Add lttng tracepoints for memory carriers
erts: Update lttng-wrapper with mfa conversion
erts: Teach lttng to configure and build system
|
|
Introduce a wrapper API for lttng.
|
|
* bjorn/macosx-configure:
configure: Remove obsolete --enable-darwin-* options
|
|
* lukas/erts/fix-vsyslog-freebsd/OTP-13427:
erts: Fix run_erl syslog prototypes for freebsd
Conflicts:
erts/etc/unix/run_erl.c
|
|
Remove the options:
--enable-darwin-universal
--enable-darwin-64bit
The --enable-darwin-universal option turns on universal binaries
(Intel/PPC). It does not work on modern releases of OS X, and
OTP 19 will most not likely build on an OS X release that still
supports universal builds.
The --enable-darwin-64bit option is not needed, because 64-bit builds
are default on modern OS X releases. There is also the generic
--enable-m64-build option.
|
|
Floating-point exception support on MacOS X has never been especially
reliable, and has therefore been disabled by default for a long time.
The fpe support is now broken.
Therefore, take out the unnecessary test for modern mcontext in
configure (whatever that means) and the associated code in sys_float.c.
Add #error directives to sys_float.c to make it clear that
fpe is not supported.
It seems to risky to mess with the mess of #ifdef's, so we will
not attempt to remove all fpe support code for MacOS X.
|
|
|
|
3121171f56c2 made warnings for missing prototypes into compilation
errors. That broke building on MacOS X, because prototypes for the
pthread_getname_np() and pthread_setname_np() functions included by
ethread.c are missing.
The prototypes for those functions *are* located in pthread.h,
but are not included if _XOPEN_SOURCE is defined. Therefore,
we must undefine _XOPEN_SOURCE.
6e606582a6 is the commit that started to define _XOPEN_SOURCE on
MacOS X in order to mend floating-point exceptions. Since
fp exceptions again are broken and disabled by default, it is
safe to remove the definition of _XOPEN_SOURCE.
|
|
* sverk/Werror-implicit:
otp: Add gcc option -Werror=implicit
|
|
|
|
* msantos/epmd-IPv6-node-reg2/PR-864/OTP-13364:
epmd: support IPv6 node registration
|
|
|
|
to get errors for missing function and variable declarations.
|
|
* maint:
Update preloaded module
typos
Conflicts:
erts/preloaded/ebin/prim_file.beam
|
|
|
|
Allow IPv6 nodes to register with and query epmd. On systems with
IPv6 support:
* epmd listens on both the IPv4 and IPv6 ANY or loopback sockets
* the epmd cli client connects to epmd over the IPv6 loopback
* distributed nodes started with "-proto_dist inet6_tcp" will register
with epmd over IPv6
To work on IPv6 capable systems that have IPv6 support disabled,
epmd ignores errors opening the socket if the protocol is not
supported. Similarly, the epmd client will fall back to IPv4 if the IPv6
socket is not available.
Update the minimum supported version of Windows to Windows Vista to
support IPv6.
|
|
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
|
|
When a AF_LOCAL file descriptor is created externally (e.g. Unix
Domain Socket) and passed to `gen_tcp:listen(0, [{fd, FD}])`, the
implementation incorrectly assigned the address family to be equal
to `inet`, which in the inet_drv driver translated to AF_INET instead
of AF_LOCAL (or AF_UNIX), and an `einval` error code was returned.
This patch fixes this problem such that the file descriptors of the
`local` address family are supported in the inet:fdopen/5,
gen_tcp:connect/3, gen_tcp:listen/2, gen_udp:open/2 calls
|
|
to get a nicer error on FreeBSD and others that does not support
MAP_NORESERVE for mmap.
Q: How to support this?
A: Implement the "literal tag" in hipe
or another way to reserve virtual address space in erl_mmap.c
|
|
* 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
|
|
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
|
|
|
|
* rickard/ohmq/OTP-13047:
Fragmented young heap generation and off_heap_message_queue option
Refactor GC
Introduce literal tag
Conflicts:
erts/doc/src/erlang.xml
erts/emulator/beam/erl_gc.c
|
|
* sverk/literal-memory-range:
erts: Refactor line table in loaded beam code
erts: Refactor header of loaded beam code
fix check_process_code for separate literal area
erts: Add support for fast erts_is_literal()
erts: Refactor erl_mmap to allow several mapper instances
erts: Add new allocator LITERAL
erts: Fix strangeness in treatment of MSEG_ALIGN_BITS
erts: Cleanup main carrier creation
erts: Remove unused erts_have_erts_mmap
erts: Refactor config test for posix_memalign
|
|
|
|
|
|
* maint:
Add configure switch --disable-saved-compile-time
Fix ethread events with timeout
Improve choice of clock sources at build time
|
|
|
|
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.
|
|
|
|
|
|
Authors: Wasif Malik and Johannes Huning
|
|
ppc64le is a new arch/ABI that runs on IBM POWER processor starting at POWER8
processor, and it should be listed as a ppc64, mainly for hipe enablement.
For more information about this new arch/ABI, please check the documents at:
https://www-03.ibm.com/technologyconnect/tgcm/TGCMServlet.wss?alias=OpenPOWER
|
|
* egil/erts/high_accuracy_sleep/OTP-12236:
erts: Add high accuracy poll timeouts
|
|
* aw/native-cpu_sup/OTP-12730:
erts: Fix configure.in
os_mon: rename send() to sendi() in cpu_sup.c
os_mon: cpu_sup should use native sysctl/libkvm calls on BSD
|
|
* sverk/erts-fp-exception-fixes/OTP-12717:
erts: Disable float exceptions for clang/llvm
erts: Increase buffer in erts_fp_check_init_error
|
|
* 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
|
|
* henrik/update-javaversion:
update java version
OTP-12715
|
|
- Possibility to chose different clock sources
- Improved mach clock usage
- Improved linux clock_gettime() usage
- ...
|
|
Change erts/configure.in to force-disable FP exceptions if
the VM is compiled by clang/llvm. clang/llvm generates FP
code which does not work with FP exceptions (whether unmasked
as used in the Erlang VM, or masked followed by tests of
which are signalled). This is a known long-standing problem.
|
|
Don't repeat cpu_sup in os_mon_programs - some OS gets confused, i.e. illumos.
|
|
Using 'AC_EGREP_CPP(yes' without restraining the pattern always return
true if it runs from a path containing the string 'yes'.
|
|
|
|
The configuration code which canonicalizes the operating system
name into OPSYS requires Linux to be spelled 'linux' or 'Linux'.
This is a problem in some build environments, e.g. RPM, which
supply --build and --host using the longer 'linux-gnu' spelling.
The effect is that OPSYS becomes 'noopsys' and some checks in
erts/configure.in do not work as expected, e.g. the auto-enabling
of HiPE may not happen.
Fixed by matching on 'linux*' not just 'linux'.
On ARM there are even longer variants such as 'linux-gnueabi' and
'linux-gnueabihf': these are also correctly mapped to 'linux' now.
|
|
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.
|
|
* rickard/gcc-atomics/OTP-12383:
Improve ethread atomics based on GCC builtins
Conflicts:
erts/aclocal.m4
|
|
Perfctr is a Linux kernel extension that allows programmatic access
to the performance monitoring counters found in most current CPUs.
However, development of perfctr ceased after 2010, and it cannot be
used with Linux kernels newer than 2.6.32.
Therefore the perfctr support code in the Erlang VM is effectively
dead code, so this patch removes it.
|