aboutsummaryrefslogtreecommitdiffstats
path: root/erts/aclocal.m4
AgeCommit message (Collapse)Author
2015-03-20Merge branch 'rickard/gcc-atomics/OTP-12383'Rickard Green
* rickard/gcc-atomics/OTP-12383: Improve ethread atomics based on GCC builtins Conflicts: erts/aclocal.m4
2015-03-20Merge branch 'rickard/time_api/OTP-11997'Rickard Green
* rickard/time_api/OTP-11997: (22 commits) Update primary bootstrap inets: Suppress deprecated warning on erlang:now/0 inets: Cleanup of multiple copies of functions Add inets_lib with common functions used by multiple modules inets: Update comments Suppress deprecated warning on erlang:now/0 Use new time API and be back-compatible in inets Remove unused functions and removed redundant test asn1 test SUITE: Eliminate use of now/0 Disable deprecated warning on erlang:now/0 in diameter_lib Use new time API and be back-compatible in ssh Replace all calls to now/0 in CT with new time API functions test_server: Replace usage of erlang:now() with usage of new API Replace usage of erlang:now() with usage of new API Replace usage of erlang:now() with usage of new API Replace usage of erlang:now() with usage of new API Replace usage of erlang:now() with usage of new API otp_SUITE: Warn for calls to erlang:now/0 Replace usage of erlang:now() with usage of new API Multiple timer wheels Erlang based BIF timer implementation for scalability Implement ethread events with timeout ... Conflicts: bootstrap/bin/start.boot bootstrap/bin/start_clean.boot bootstrap/lib/compiler/ebin/beam_asm.beam bootstrap/lib/compiler/ebin/compile.beam bootstrap/lib/kernel/ebin/auth.beam bootstrap/lib/kernel/ebin/dist_util.beam bootstrap/lib/kernel/ebin/global.beam bootstrap/lib/kernel/ebin/hipe_unified_loader.beam bootstrap/lib/kernel/ebin/inet_db.beam bootstrap/lib/kernel/ebin/inet_dns.beam bootstrap/lib/kernel/ebin/inet_res.beam bootstrap/lib/kernel/ebin/os.beam bootstrap/lib/kernel/ebin/pg2.beam bootstrap/lib/stdlib/ebin/dets.beam bootstrap/lib/stdlib/ebin/dets_utils.beam bootstrap/lib/stdlib/ebin/erl_tar.beam bootstrap/lib/stdlib/ebin/escript.beam bootstrap/lib/stdlib/ebin/file_sorter.beam bootstrap/lib/stdlib/ebin/otp_internal.beam bootstrap/lib/stdlib/ebin/qlc.beam bootstrap/lib/stdlib/ebin/random.beam bootstrap/lib/stdlib/ebin/supervisor.beam bootstrap/lib/stdlib/ebin/timer.beam erts/aclocal.m4 erts/emulator/beam/bif.c erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_db_hash.c erts/emulator/beam/erl_init.c erts/emulator/beam/erl_process.h erts/emulator/beam/erl_thr_progress.c erts/emulator/beam/utils.c erts/emulator/sys/unix/sys.c erts/preloaded/ebin/erlang.beam erts/preloaded/ebin/erts_internal.beam erts/preloaded/ebin/init.beam erts/preloaded/src/erts_internal.erl lib/common_test/test/ct_hooks_SUITE_data/cth/tests/empty_cth.erl lib/diameter/src/base/diameter_lib.erl lib/kernel/src/os.erl lib/ssh/test/ssh_basic_SUITE.erl system/doc/efficiency_guide/advanced.xml
2015-03-20Implement ethread events with timeoutRickard Green
2015-03-20Introduce a new time APIRickard Green
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.
2015-03-17Merge branch 'maint'Rickard Green
* maint: Fix missing quotation in LM_FIND_EMU_CC
2015-01-14Improve ethread atomics based on GCC builtinsRickard Green
* Use of __atomic builtins when available. * Improved configure test that checks for missing memory barrier in __sync_synchronize(). The old approach was to verify known working gcc versions and check gcc version at compile time. Besides not being very safe, the old approach often unnecessarily caused usage of the very expensive workaround. * Introduced (no overhead) workaround for missing clobber in __sync_synchronize() when using buggy LLVM implementation of __sync_synchronize(). * Implement native memory barriers for ARM processors supporting the DMB instruction. * Use of volatile store on Alpha as atomic set operation if no __atomic_store_n() is available (already used on x86/x86_64 Sparc V9, PowerPC, and MIPS). Fallback used when not using volatile store is typically very expensive. * Use volatile load on Alpha and ARM as atomic read operation if no __atomic_load_n() is available (already used on x86/x86_64 Sparc V9, PowerPC, and MIPS). Fallback when not using volatile load is typically very expensive.
2015-01-05Fix missing quotation in LM_FIND_EMU_CCRickard Green
2014-12-19Merge branch 'lukas/erts/crashdump_improvements/OTP-12377'Lukas Larsson
* lukas/erts/crashdump_improvements/OTP-12377: erts: Make main thread safe from pipe closed event erts: Improve crash dumps erts: Rename sys_sigset to sys_signal erts: Introduce thread suspend functions erts: Remove usage of QUANTIFY signal erts: Add support for thread names ets: Increase data available in crash dumps and ets:info erts: Start compilation of beam_emu earlier
2014-12-19erts: Add support for thread namesLukas Larsson
2014-12-09erts: Allow cpu_timestamp tracing for LinuxLukas Larsson
2014-11-10Improve usage of libatomic_ops for word size atomicsRickard Green
Use AO_fetch_compare_and_swap*() when present
2014-05-09erts: Fix various autoconf issuesLukas Larsson
* Check of atomics on bsd * Add --enable-systemd for epmd * Remove unused --enable-tsp option
2014-03-26ose: Break lmconf into one per load moduleLukas Larsson
2014-02-24ose: Fix check for HAVE_OSE_SPI_HLukas Larsson
2014-02-24ose: Fix various build environment issuesLukas Larsson
2014-02-24Added support for ENEA OSELukas Larsson
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.
2013-07-12Fix configure detection of ethread native atomics on powerpcRickard Green
2013-07-09Refuse to build SMP runtime by default without native atomicsRickard Green
Build with fallback can be enabled by passing the `configure` command line argument `--disable-smp-require-native-atomics`
2013-01-25Update copyright yearsBjörn-Egil Dahlberg
2013-01-15Fix LM_TRY_ENABLE_CFLAG to use correct environmentBjörn-Egil Dahlberg
LM_TRY_ENABLE_CFLAG takes which environment variable should be updated but only CFLAGS was updated. Though CFLAGS is the normally the intended variable, others may be used. For instance CXXFLAGS.
2013-01-11If GCC is used, treat -Wreturn-type as errorTuncer Ayaz
2012-11-14Teach erl_interface configure more pthread supportPer Hedeland
- Teach lib/erl_interface/configure.in to look for pthreads support in libc (where it can be found on QNX) - A minor tweak such that this configure *fails* if you pass --enable-threads and no pthreads support can be found.
2012-08-31Update copyright yearsBjörn-Egil Dahlberg
2012-07-20Revise the autoconf tests for double middle endianness.Mike Sperber
The previous iteration didn't work for big-endian systems. Now use code very close to what Erts does internally. Also, only warn when the double endianness is unknown - i.e. when we're cross-compiling.
2012-03-23Unbreak floating point on middle-endian machines.Mike Sperber
On some ARMs (and maybe other platforms), doubles are stored with the the two 32-bit words reversed with respect to more common architectures. The symptom is this: > io_lib:write(1.0). "0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005299808824" Detect that and account for it when decoding floats.
2011-12-02Make Win64 build work both under MSYS and CygwinPatrik Nyblom
2011-12-02Get cerl and distribution working in Win64Patrik Nyblom
Can still not setup -a, but cerl works.
2011-12-02Build Win64 Erlang emulator using MSYSunknown
Still does not run, just compiles.
2011-11-25configure: Define NO_JUMP_TABLE if all we have is llvm-gccBjörn Gustavsson
Commit dd24ca1cb76d attempts to fix the problem that LLVM-based compilers (such as llvm-gcc-4.2 and clang) miscompiles beam_emu.c. The idea was to force the use of gcc-4.2 if the default compiler was LLVM-based. Since that fix, Apple released Xcode 4.2 that does not include any version of gcc, only llvm-gcc-4.2 and clang. We could require gcc in order to be the system, but it would be nice if Erlang/OTP could be built out-of-box on MacOS X, albeit with reduced performance. Therefore, make sure that we set NO_JUMP_TABLE (use a switch statement instead of computed gotos in beam_emu.c) if no compiler that correctly handles computed gotos can be found. We know that clang based on the upcoming LLVM 3.0 will work, but older LLVM-based compilers will not, so we can test the version of clang. llvm-gcc has been discontinued in LLVM 3.0, so if the compiler is LLVM-based but not clang, we can assume that it does not handles computed gotos correctly.
2011-10-19Fix erroneous merge resolutionRickard Green
Previously removed code erroneously reappeared in a merge to the master branch (ec36499d7e329b4dc69a1a3be3422eac7907c260).
2011-09-21Merge branch 'dev' into majorBjörn Gustavsson
* dev: erl_bif_types: Fix types for lists:key{search,find,member}/3 Fix build problems on MacOS 10.7 (Lion)
2011-09-21Merge branch 'bjorn/erts/support-macosx-lion/OTP-9547' into devBjörn Gustavsson
* bjorn/erts/support-macosx-lion/OTP-9547: Fix build problems on MacOS 10.7 (Lion)
2011-09-20Fix build problems on MacOS 10.7 (Lion)Björn Gustavsson
On MacOS 10.7 (Lion) with Xcode 4.1 installed, the default C compiler is llvm-gcc-4.2. That compiler compiles beam_emu.c incorrectly, resulting in an emulator that will not start. The problem can be worked around by turning off all optimizations, but that will significantly degrade the performance of the run-time system. The problem can also be worked around manually like this: CC=gcc-4.2 ./configure To allow a working system to be built "out of the box", have the configure script set up the emulator Makefile so that gcc-4.2 will be used to compile beam_emu.c if the default compiler is llvm-based. All other C files will still be compiled with the default compiler.
2011-09-20Merge branch 'dev' into majorHenrik Nord
Conflicts: erts/aclocal.m4 erts/include/internal/ethread_header_config.h.in
2011-09-15Fix misspelling of compatibilityTuncer Ayaz
2011-06-14Improve ethread atomicsRickard Green
The ethread atomics API now also provide double word size atomics. Double word size atomics are implemented using native atomic instructions on x86 (when the cmpxchg8b instruction is available) and on x86_64 (when the cmpxchg16b instruction is available). On other hardware where 32-bit atomics or word size atomics are available, an optimized fallback is used; otherwise, a spinlock, or a mutex based fallback is used. The ethread library now performs runtime tests for presence of hardware features, such as for example SSE2 instructions, instead of requiring this to be determined at compile time. There are now functions implementing each atomic operation with the following implied memory barrier semantics: none, read, write, acquire, release, and full. Some of the operation-barrier combinations aren't especially useful. But instead of filtering useful ones out, and potentially miss a useful one, we implement them all. A much smaller set of functionality for native atomics are required to be implemented than before. More or less only cmpxchg and a membar macro are required to be implemented for each atomic size. Other functions will automatically be constructed from these. It is, of course, often wise to implement more that this if possible from a performance perspective.
2011-05-20Update copyright yearsBjörn-Egil Dahlberg
2011-05-11Homogenize memory barriers on atomicsRickard Green
Atomic operations with specified barriers have specified barrier semantics. Set and read operations have undefined barrier semantics. All other atomic operations implied full memory barriers, except when using the libatomic_ops library and the tilera atomics api. Some code in the runtime system assumed that all operations used (except for set, read and specified) implied full memory barriers. The use of the libatomic_ops library and the tilera atomics api have therefore been modified to behave as the other implementations. Some atomic operations with specified barrier semantics on sparc32 have also been been relaxed in this commit.
2010-12-15Add support for 32-bit atomicsRickard Green
2010-12-14Add support for 64-bit atomics on WindowsRickard Green
2010-12-11Introduce ethr_sint_t and use it for atomicsRickard Green
The atomic memory operations interface used the 'long' type and assumed that it was of the same size as 'void *'. This is true on most platforms, however, not on Windows 64.
2010-11-18Merge branch 'rickard/configure-help/OTP-8859' into devRickard Green
* rickard/configure-help/OTP-8859: Cleanup configure help texts Conflicts: erts/aclocal.m4
2010-11-18Merge branch 'rickard/pre-pentium4-compat/OTP-8847' into devRickard Green
* rickard/pre-pentium4-compat/OTP-8847: Allow usage of libatomic_ops when other compilers than gcc are used Add pre pentium 4 compatibilty configure test Fix --enable-ethread-pre-pentium4-compatibility
2010-11-09Implement inet:getifaddrs/0 on WindowsRaimo Niskanen
2010-10-29Add pre pentium 4 compatibilty configure testRickard Green
2010-09-22Cleanup configure help textsRickard Green
2010-09-17Fix --enable-ethread-pre-pentium4-compatibilityRickard Green
The `configure' command line argument `--enable-ethread-pre-pentium4-compatibility' had no effect.
2010-08-19Fix propagation of nptl infoRickard Green
2010-08-10Rewrite ethread libraryRickard Green
Large parts of the ethread library have been rewritten. The ethread library is an Erlang runtime system internal, portable thread library used by the runtime system itself. Most notable improvement is a reader optimized rwlock implementation which dramatically improve the performance of read-lock/read-unlock operations on multi processor systems by avoiding ping-ponging of the rwlock cache lines. The reader optimized rwlock implementation is used by miscellaneous rwlocks in the runtime system that are known to be read-locked frequently, and can be enabled on ETS tables by passing the `{read_concurrency, true}' option upon table creation. See the documentation of `ets:new/2' for more information. The ethread library can now also use the libatomic_ops library for atomic memory accesses. This makes it possible for the Erlang runtime system to utilize optimized atomic operations on more platforms than before. Use the `--with-libatomic_ops=PATH' configure command line argument when specifying where the libatomic_ops installation is located. The libatomic_ops library can be downloaded from: http://www.hpl.hp.com/research/linux/atomic_ops/ The changed API of the ethread library has also caused modifications in the Erlang runtime system. Preparations for the to come "delayed deallocation" feature has also been done since it depends on the ethread library. Note: When building for x86, the ethread library will now use instructions that first appeared on the pentium 4 processor. If you want the runtime system to be compatible with older processors (back to 486) you need to pass the `--enable-ethread-pre-pentium4-compatibility' configure command line argument when configuring the system.
2010-06-01OTP-8661 Enable writer preferred pthread read/write locks on LinuxRickard Green
Writer preferred pthread read/write locks has been enabled on Linux.