aboutsummaryrefslogtreecommitdiffstats
path: root/erts/include/internal
AgeCommit message (Collapse)Author
2014-02-24Merge branch 'lukas/ose/master/OTP-11334'Lukas Larsson
* lukas/ose/master/OTP-11334: (71 commits) erts: Fix unix efile assert ose: Use -O2 when building ose: Expand OSE docs ose: Add dummy ttsl driver ose: Cleanup cleanup of mutex selection defines ose: Polish mmap configure checks ose: Add ose specific x-compile flags ose: Updating fd_driver and spawn_driver for OSE ose: Updating event and signal API for OSE ose: Cleanup of mutex selection defines win32: Compile erl_log.exe ose: Remove uneccesary define ose: Fix ssl configure test for osx erts: Fix sys_msg_dispatcher assert ose: Fix broken doc links ose: Thread priorities configurable from lmconf ose: Yielding the cpu is done "the OSE" way ose: Start using ppdata for tse key ose: Do not use spinlocks on OSE ose: Fix support for crypto ... Conflicts: lib/crypto/c_src/crypto.c
2014-02-24ose: Cleanup of mutex selection definesLukas Larsson
2014-02-24ose: Remove uneccesary defineLukas Larsson
2014-02-24ose: Thread priorities configurable from lmconfLukas Larsson
The pattern used for getting the priority from the lmconf is based on the name of the process created. The pattern is: ERTS_%%PROCESS_NAME%%_PRIO with the %%PROCESS_NAME%% replaced by the prefix of the process the priority applies to. eg: ERTS_SCHEDULER_PRIO=24 applies to processes with name SCHEDULER_1, SCHEDULER_2 etc.
2014-02-24ose: Yielding the cpu is done "the OSE" wayLukas Larsson
2014-02-24ose: Start using ppdata for tse keyLukas Larsson
2014-02-24ose: Do not use spinlocks on OSELukas Larsson
This is because it is very easy to deadlock/livelock inbetween processes on OSE.
2014-02-24ose,erts: Specify name for tsd keysLukas Larsson
This simplified debugging on OSE and also limits the number of ppdata keys that are created when beam is restarted.
2014-02-24ose: Change get_envp to ose_get_ppdata for tsdLukas Larsson
There is a system limit on the number of ppdata that is available but that should not be reached, and ppdata is faster than using get_envp.
2014-02-24ose: Debug wait__ does receive_fsem instead of wait_fsemLukas Larsson
This is done in order to catch rogue signals
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.
2014-02-23Introduce configure option --with-assumed-cache-line-size=SIZERickard Green
2013-08-08Merge branch 'lukas/erts/ethr_smp_req_native_compiletime/OTP-11196' into maintLukas Larsson
* lukas/erts/ethr_smp_req_native_compiletime/OTP-11196: Bailout if no native implementations are found
2013-07-29Bailout if no native implementations are foundLukas Larsson
Some basic tests are already done in configure. This makes sure we cover all cases by bailing out when compiling as well.
2013-07-18Fix compile error on ARM and GCC < 4.1.0Johannes Weißl
Since b29ecbd (OTP-10418, R15B03) Erlang does not compile anymore with old versions of GCC that do not have atomic ops builtins on platforms where there is no native ethread implementation (e.g. ARM): In file included from ../include/internal/gcc/ethread.h:29, from ../include/internal/ethread.h:354, from beam/erl_threads.h:264, from beam/erl_smp.h:27, from beam/sys.h:413, from hipe/hipe_mkliterals.c:29: ../include/internal/gcc/ethr_membar.h:49:4: error: #error "No __sync_val_compare_and_swap" This patch adds a header guard in "gcc/ethread.h", as is present in "libatomic_ops/ethread.h".
2013-07-11Fix ‘ethr_native_rwlock_destroy’ defined but not used warningRickard Green
2013-02-22Update copyright yearsBjörn-Egil Dahlberg
2013-02-22Merge branch 'sverk/win-64-pointer-fix'Sverker Eriksson
* sverk/win-64-pointer-fix: erts: Correct term type for printf %T erts: Correct internal printf integer type for win64 erts: Correct some printf type formatting erts: Fix type bug in get_proc_affinity for windows OTP-10887 Forgot this ticket for sverk/erlang_pid-revert: OTP-10885
2013-02-21erts: Correct term type for printf %TR. Blaine Whittle
2013-02-21erts: Correct internal printf integer type for win64R. Blaine Whittle
2013-02-12erts: Use native atomics and fallback spinlock to mutex for VALGRINDSverker Eriksson
An attempt to speedup valgrind
2012-11-23Update copyright yearsBjörn-Egil Dahlberg
2012-09-04erts: Fix gcc atomic bug in ethread.hSverker Eriksson
A faulty #if 0 caused healthy gcc builtin atomic to be ignored.
2012-02-19Misc memory barrier fixesRickard Green
- Document barrier semantics - Introduce ddrb suffix on atomic ops - Barrier macros for both non-SMP and SMP case - Make the thread progress API a bit more intuitive
2011-11-13Use critical sections as mutex implementation on WindowsRickard Green
Windows native critical sections are now used internally in the runtime system as mutex implementation. This since they perform better under extreme contention than our own implementation.
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-13Merge branch 'rickard/barriers/OTP-9281' into devRickard Green
* rickard/barriers/OTP-9281: Silence warnings Fix build with hipe on amd64 Reduce number of atomic ops Use 32-bit atomic for port snapshot Remove pointless erts_ports_alive variable Ensure quick break Ensure that all rehashing information are seen when done Ensure that stack updates are seen when stack is released Add needed barriers for write_concurrency tables Homogenize memory barriers on atomics
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.
2011-05-06erts_printf %R for relative ets-terms in halfword-vmSverker Eriksson
Conflicts: erts/emulator/beam/erl_printf_term.c
2011-03-11Update copyright yearsBjörn-Egil Dahlberg
2011-03-08The emulator could get into a state where it didn't check for I/O.Rickard Green
2010-12-16Use 32-bit atomic for uaflgs in thread specific eventsRickard Green
2010-12-15Use 32-bit atomics for mutex and rwmutex flagsRickard Green
2010-12-15Use 32-bit atomics for eventsRickard Green
2010-12-15Add support for 32-bit atomicsRickard Green
2010-12-14Move atomic API into own filesRickard Green
2010-12-14Add support for 64-bit atomics on WindowsRickard Green
2010-12-14Remove unused ethread time functionalityRickard 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-12-03Merge branch 'rickard/rwmutex-bug/OTP-8925' into devRickard Green
* rickard/rwmutex-bug/OTP-8925: Use correct argument types on rwlock_wake_set_flags()
2010-12-02Use correct argument types on rwlock_wake_set_flags()Rickard Green
2010-12-01Merge branch 'rickard/rwmutex-bug/OTP-8925' into devRickard Green
* rickard/rwmutex-bug/OTP-8925: Miscellaneous rwmutex bug fixes and improvements Don't use more reader groups than schedulers New test suite containing stress tests of the rwmutex implementation Conflicts: erts/emulator/beam/erl_init.c
2010-12-01Miscellaneous rwmutex bug fixes and improvementsRickard Green
The ERTS internal rwlock implementation could get into an inconsistent state. This bug was very seldom triggered, but could be during heavy contention. The bug was introduced in R14B (erts-5.8.1). The bug was most likely to be triggered when using the read_concurrency option on an ETS table that was frequently accessed from multiple processes doing lots of writes and reads. That is, in a situation where you typically don't want to use the read_concurrency option in the first place.
2010-11-22Merge branch 'ta/fix-ethread-void-return' into devRickard Green
* ta/fix-ethread-void-return: ethread: do not return from void ethr_atomic_set_relb OTP-8944
2010-10-29Allow usage of libatomic_ops when other compilers than gcc are usedRickard Green
2010-10-29ethread: do not return from void ethr_atomic_set_relbTuncer Ayaz
Reported-by: Patrick Baggett <[email protected]>
2010-09-10Merge branch 'sv/ethread-atomic-mips' into devRickard Green
* sv/ethread-atomic-mips: add MIPS architecture to GCC ethread atomics support
2010-09-08Increase spincount with many schedulersRickard Green
2010-09-07add MIPS architecture to GCC ethread atomics supportSteve Vinoski
Gcc for MIPS supports immediate atomic gets and sets, and also supports a working __sync_synchronize() for gcc 4.2 and greater.