aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2014-02-28hipe: Break apart hipe_bif:make_fe/3 into two BIFsBjörn Gustavsson
This commit is a preparation for eliminating a race condition loading the native code for modules whose BEAM code has already been loaded. Here we introduce two new BIFs so that looking up a fun entry is separate from setting the native address in the fun entry.
2014-02-25Merge branch 'sverk/hipe-disable-gc-bug'Sverker Eriksson
* sverk/hipe-disable-gc-bug: erts: Fix heap overwrite by hipe "trap frames" when GC is disabled ASSERT that GC is not tried with "need" when GC is disabled
2014-02-25erts: Fix heap overwrite by hipe "trap frames" when GC is disabledSverker Eriksson
by trapping BIFs like term_to_binary and binary_to_term.
2014-02-24Merge branch 'lukas/erts/float_encoding/OTP-11738'Lukas Larsson
* lukas/erts/float_encoding/OTP-11738: erts: Set default external enc to use new float scheme
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-24erts: Fix unix efile assertLukas Larsson
If writev return an error (eg ENOSPC) we do not want to abort here but instead propagate upwards into erlang.
2014-02-24ose: Add dummy ttsl driverLukas Larsson
2014-02-24ose: Updating fd_driver and spawn_driver for OSEJonas Karlsson
2014-02-24ose: Updating event and signal API for OSEJonas Karlsson
2014-02-24erts: Fix sys_msg_dispatcher assertLukas Larsson
Schedulers is too restrictive. Managed threads should be able to clean this up.
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: Cleanup POLL_SCHED_1 codeLukas Larsson
Now schedulers 2..N make sure to wake sched 1 if they find that all io has been consumed and sched 1 is sleeping. Before sched 1 was spinning in sys_schedule waiting for sched 2..N to finish consuming io jobs
2014-02-24ose: Added Enea copyright header to lcf files.Robert Paal
Also removed softkernel lcf files.
2014-02-24ose: Eliminating delays when trying to open filesRobert Paal
When opening filers on not mounted volumes the default timeout on OSE is quite big and since at startup we load something like 20 beam files this slows down startup by as much as 50 seconds.
2014-02-24ose: Update ddll interface after rebase to 17.0-rc1Lukas Larsson
Also deleted all the copy-paste stuff
2014-02-24ose: Add fair scheduling yieldsLukas Larsson
This is needed on OSs that do not do round robin scheduling of threads.
2014-02-24ose: Port run_erl and to_erlLukas Larsson
2014-02-24ose: Rewrite resolve_signal API for ose driversLukas Larsson
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.
2014-02-24ose: Fix starting with pm_createLukas Larsson
For some reason starting with pm_create offsets the input argument list by one, so we have to adjust them before calling erl_start.
2014-02-24ose: Update erl_assert_error after R16B03 api changeLukas Larsson
2014-02-24ose: OSE port related cleanup and fixesJonas Karlsson
Some OSE cross-chains have problems with system includes being used, so for atleast OSE specific parts we use "" instead of <>.
2014-02-24ose: efile driver updates.Jonas Karlsson
2014-02-24ose: Fix printout to stdout to not duplicate long buffersLukas Larsson
2014-02-24ose: Bugfixes to filesystem related issues.Jonas Karlsson
2014-02-24ose: Use spinlock as default heap lock mechanismJonas Karlsson
2014-02-24ose: Handle lseek() with offset beyond EOF in the file driver.Lukas Larsson
2014-02-24ose: Fix clearmake compat issueLukas Larsson
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: Style updates onlyLukas Larsson
2014-02-24ose: Fix various build environment issuesLukas Larsson
2014-02-24erts: configure number of write_concurrency locksLukas Larsson
Make it possible to change the number of write_concurrency locks to use. This is usefull to change when you for some reason want to use more/less locks per write_concurrency ets table. eg. OSs with a limit on how many mutexes can exist at once.
2014-02-24ose: Change signal base to registered rangeLukas Larsson
2014-02-24ose: Add eh_frame_hdr section to linker fileLukas Larsson
2014-02-24ose: Add link conf for gcc 4.4.3Lukas Larsson
2014-02-24ose: Copied driver_int.h from unixLukas Larsson
2014-02-24ose: Add module that allows interaction with any OSE processLukas Larsson
The interface of this module is made to be as generic as possible in order for other IPC mechanisms to mimic it and allow porting of code between different os:es.
2014-02-24ose: Change start way to use arguments to beam.smp directlyLukas Larsson
The old way registered a shell command that needed to be executed. This way is more flexible as you can also use the lmconf file to set arguments there.
2014-02-24ose: lseek() to use SEEK_CURJonas Karlsson
This is needed because OSE does not use 1 for SEEK_CUR
2014-02-24ose: Extract signal numbers to common fileLukas Larsson
2014-02-24ose: Convert EFILE_SEEK to unistd seek for gzioLukas Larsson
This is needed because OSE does not have the same integers as unix/win32 for SEEK_ST and friends.
2014-02-24ose: Force atleast one async thread for oseLukas Larsson
This is needed because a file has to be opened and operated on in the same process at all times. Using async threads guarantee this.
2014-02-24erts: Make source file info available in lcLukas Larsson
2014-02-24ose: Add signal debugging macrosLukas Larsson
To enable just uncomment and all signals going in or out will be printed to stdout.
2014-02-24ose: Add unsetenv and update to use get_envLukas Larsson
Before get_envp was used and this caused the environment variables to not be accessible in the correct way by use debug tools.
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-24Merge branch 'egil/maps/fix-cerl-inlining'Björn-Egil Dahlberg
* egil/maps/fix-cerl-inlining: compiler: Update map_SUITE to handle inlining erts: Maps src instructions can't be literals compiler: Fix map inlining compiler: Add variable coverage of map in cerl
2014-02-24Merge branch 'rickard/assumed-cacheline-size/OTP-11742'Rickard Green
* rickard/assumed-cacheline-size/OTP-11742: Introduce configure option --with-assumed-cache-line-size=SIZE
2014-02-24Merge branch 'vinoski/ds2'Rickard Green
* vinoski/ds2: further enhancements for dirty schedulers allow optional whitespace in dirty scheduler erl options
2014-02-24further enhancements for dirty schedulersSteve Vinoski
Add support for setting the number of dirty CPU schedulers online via erlang:system_flag/2. Assuming the emulator is built with dirty schedulers enabled, the number of dirty CPU schedulers online may not be less than 1, nor greater than the number of dirty CPU schedulers available, nor greater than the number of normal schedulers online. Dirty CPU scheduler threads that are taken offline via system_flag/2 are suspended. The number of dirty CPU schedulers online may be adjusted independently of the number of normal schedulers online, but if system_flag/2 is used to set the number of normal schedulers online to a value less than the current number of normal schedulers online, the number of dirty CPU schedulers online is decreased proportionally. Likewise, if the number of normal schedulers online is increased, the number of dirty CPU schedulers online is increased proportionally. For example, if 8 normal schedulers and 4 dirty CPU schedulers are online, and system_flag/2 is called to set the number of normal schedulers online to 4, the number of dirty CPU schedulers online is also decreased by half, to 2. Subsequently setting the number of normal schedulers online back to 8 also sets the number of dirty CPU schedulers online back to 4. Augment the system_flag/2 documentation in the erlang man page to explain this relationship between schedulers_online and dirty_cpu_schedulers_online. Also ensure that all dirty CPU and I/O schedulers are suspended when multi-scheduling is blocked via system_flag/2, and brought back online when multi-scheduling is unblocked. Add Rickard Green's rewritten check_enqueue_in_prio_queue() function that inspects process state more thoroughly to determine if to enqueue it and if so on what queue, including dirty queues when appropriate. Make sure dirty NIF jobs do not trigger erlang:system_monitor long_schedule messages. Add more dirty scheduler testing to the scheduler test suite. Remove the erts_no_dirty_cpu_schedulers_online global variable, since it's no longer needed. Execute dirty NIFs on a normal scheduler thread while multi-scheduling blocking is in effect. Evacuate any dirty jobs residing in the dirty run queues over to a normal run queue when multi-scheduling is blocked. Allow dirty schedulers to execute aux work. Set the dirty run queues halt_in_progress flag when halting the normal schedulers. Change dirty scheduler numbers to a structure including both scheduler number and type, either dirty CPU or dirty I/O. Add some assertions to ensure that dirty CPU schedulers operate only on dirty CPU scheduler process flags, and the same for dirty I/O schedulers.
2014-02-24erts: Set default external enc to use new float schemeLukas Larsson
This change was triggered by the OSE float printing function not working exactly the same way as linux/win32. But it is also a good one in general as it cuts size in more than half for floats.