aboutsummaryrefslogtreecommitdiffstats
path: root/erts/etc
AgeCommit message (Collapse)Author
2013-11-18Functionality for disabling garbage collectionRickard Green
Being able to disable garbage collection over context switches vastly simplifies implementation of yielding native code that builds large or complex data structures on the heap. This since the heap can be left in an inconsistent state over the context switch.
2013-11-18Execution of system tasks in context of another processRickard Green
A process requesting a system task to be executed in the context of another process will be notified by a message when the task has executed. This message will be on the form: {RequestType, RequestId, Pid, Result}. A process requesting a system task to be executed can set priority on the system task. The requester typically set the same priority on the task as its own process priority, and by this avoiding priority inversion. A request for execution of a system task is made by calling the statically linked in NIF erts_internal:request_system_task(Pid, Prio, Request). This is an undocumented ERTS internal function that should remain so. It should *only* be called from BIF implementations. Currently defined system tasks are: * garbage_collect * check_process_code Further system tasks can and will be implemented in the future. The erlang:garbage_collect/[1,2] and erlang:check_process_code/[2,3] BIFs are now implemented using system tasks. Both the 'garbage_collect' and the 'check_process_code' operations perform or may perform garbage_collections. By doing these via the system task functionality all garbage collect operations in the system will be performed solely in the context of the process being garbage collected. This makes it possible to later implement functionality for disabling garbage collection of a process over context switches. Newly introduced BIFs: * erlang:garbage_collect/2 - The new second argument is an option list. Introduced option: * {async, RequestId} - making it possible for users to issue asynchronous garbage collect requests. * erlang:check_process_code/3 - The new third argument is an option list. Introduced options: * {async, RequestId} - making it possible for users to issue asynchronous check process code requests. * {allow_gc, boolean()} - making it possible to issue requests that aren't allowed to garbage collect (operation will abort if gc should be needed). These options have been introduced as a preparation for parallelization of check_process_code operations when the code_server is about to purge a module.
2013-09-09Merge branch 'lukas/erts/erl_exec_e' into maintBjörn-Egil Dahlberg
* lukas/erts/erl_exec_e: +e should be passed through erlexec
2013-09-05Merge branch 'sverk/valgrind-single-core' into maintSverker Eriksson
* sverk/valgrind-single-core: erts: Speed up valgrind with asynch threads
2013-09-04+e should be passed through erlexecLukas Larsson
2013-08-29add erl option to set schedulers by percentagesSteve Vinoski
For applications where measurements show enhanced performance from the use of a non-default number of emulator scheduler threads, having to accurately set the right number of scheduler threads across multiple hosts each with different numbers of logical processors is difficult because the erl +S option requires absolute numbers of scheduler threads and scheduler threads online to be specified. To address this issue, add a +SP option to erl, similar to the existing +S option but allowing the number of scheduler threads and scheduler threads online to be set as percentages of logical processors configured and logical processors available, respectively. For example, "+SP 50:25" sets the number of scheduler threads to 50% of the logical processors configured, and the number of scheduler threads online to 25% of the logical processors available. The +SP option also interacts with any settings specified with the +S option, such that the combination of options "+S 4:4 +SP 50:50" (in either order) results in 2 scheduler threads and 2 scheduler threads online. Add documentation for the +SP option. Add tests for the +SP option to scheduler_SUITE. Add tests and documentation for two existing features of the +S option: +S 0:0 resets the scheduler thread count and scheduler threads online count to their defaults, and specifying negative numbers for +S results in those values being subtracted from the default values for the host.
2013-08-23erts: Speed up valgrind with asynch threadsSverker Eriksson
by only letting it run on one core. Valgrind only let one thread at a time execute anyway.
2013-08-08etp: Do not use name as beam.smp is the name on LinuxLukas Larsson
2013-08-05erts: Create gdb pything script for thread listingLukas Larsson
2013-07-29Merge branch 'weisslj/run-erl-redirect-dev-null/OTP-11215' into maintFredrik Gustafsson
* weisslj/run-erl-redirect-dev-null/OTP-11215: run_erl: Redirect standard streams to /dev/null
2013-07-22Merge branch 'sze/to_erl/OTP-11206' into maintBjörn-Egil Dahlberg
* sze/to_erl/OTP-11206: Fix changing terminal parameters in to_erl
2013-07-22Fix changing terminal parameters in to_erlStefan Zegenhagen
One of our devices does not like 'to_erl' to be run over a serial port. When to_erl is started, we see "Attaching to /tm<0xFF>" being printed and the device then refuses to accept any input. Occasionally, we have seen a linux kernel error message "serial8250: too much work for irq16" simultaneously. After some debugging we found out that cause is a call to tcsetattr() by to_erl, immediately preceeded by some printf(). The UART in our device doesn't like hardware parameters to be changed while output is concurrently active. In fact, the GNU libc manual also mentions that it might be dangerous to change UART hardware parameters when a transmission is ongoing. The patch attached to this e-mail changes the behaviour of to_erl to use TCSADRAIN instead of TCSANOW when changing terminal parameters. This makes the serial driver wait for the output queues to be empty before applying the terminal parameter change.
2013-07-11erts: Add cflags, ldflags and config.h into executableLukas Larsson
2013-07-05run_erl: Redirect standard streams to /dev/nullJohannes Weißl
Like in epmd and erlexec. Otherwise "run_erl" fails on some platforms when called with the "-daemon" option, printing this error: "Cannot dup"
2013-06-12Update copyright yearsBjörn-Egil Dahlberg
2013-06-11erts: Add the +sfwi system flagRickard Green
+sfwi Interval Set scheduler forced wakeup interval. All run queues will be scanned each Interval milliseconds. While there are sleeping schedulers in the system, one scheduler will be woken for each non-empty run queue found. An Interval of zero disables this feature, which also is the default. This feature has been introduced as a temporary workaround for lengthy executing native code, and native code that do not bump reductions properly in OTP. When these bugs have be fixed the +sfwi flag will be removed.
2013-06-04Merge branch 'rickard-sverker/carrier-migration/OTP-10279' into maintRickard Green
* rickard-sverker/carrier-migration/OTP-10279: erts: Document the +M<S>acul command line argument erts: Carrier pool information in allocator information erts: Use carrier pool for migration of carriers erts: Implement test case for carrier pool erts: Implement carrier pool erts: Fix type errors in info functions erts: Use Uint64 for call counts erts: Fix failing testcase alloc_SUITE:rbtree erts: Rename allocator aoffcbf to aoffcaobf erts: Remove unnecessary flag arguments in allocators erts: Remove SBMBC allocator erts: Add test for add_mbc and remove_mbc callbacks erts: Fix deallocation in removed carrier erts: Change naive list to rb-tree of carriers in AOFF allocator erts: Prepare aoff allocator for carrier migration erts: Make carrier header sizes customizable erts: Add "bestfit within carrier" for aoff allocator (aoffcbf)
2013-06-04erts: Use carrier pool for migration of carriersRickard Green
2013-06-03Add rcore and rgdb to cerlLukas Larsson
These commands invoke gdb directly instead of going through emacs
2013-06-03erts: Remove SBMBC allocatorSverker Eriksson
2013-05-16Merge branch 'rickard/frmptr' into maintRickard Green
* rickard/frmptr: Add 'frmptr' emulator type Conflicts: erts/preloaded/ebin/erlang.beam
2013-04-21Add 'frmptr' emulator typeRickard Green
2013-04-05Merge branch 'maint-r16' into maintPatrik Nyblom
Conflicts: erts/vsn.mk
2013-04-04Changed handshake from to_erl to run_erl, on behalf of shell searchFredrik Gustafsson
2013-04-03Be less eager requesting wakeup for cleanup jobsRickard Green
2013-04-03Merge branch 'ta/ct_run-unused-fun/OTP-11003' into maintFredrik Gustafsson
* ta/ct_run-unused-fun/OTP-11003: ct_run: delete unused function
2013-03-31ct_run: delete unused functionTuncer Ayaz
2013-03-29Correct typo in erlsrv usage.Bryan Hunter
2013-02-22Update copyright yearsBjörn-Egil Dahlberg
2013-02-22Merge branch 'lukas/common_test/remove_deprecated_run_test/OTP-9052'Lukas Larsson
* lukas/common_test/remove_deprecated_run_test/OTP-9052: Remove the deprecated run_test start program OTP-10881
2013-02-22Remove the deprecated run_test start programLukas Larsson
It was replaced by ct_run in R14B.
2013-02-18Remove newly introduced warning in erlexec.cPatrik Nyblom
2013-02-18Add +pc {latin1|unicode} switch and io:printable_range/0Patrik Nyblom
This is the base for implementing configurable ~tp printouts, so that the user can define which characters to view as actually printable in the shell and by io_lib:format. The functionality is neither documented nor used in this commit
2013-01-28Merge branch 'rickard/async-default/OTP-10736'Rickard Green
* rickard/async-default/OTP-10736: Use no async threads for erlc
2013-01-25Merge branch 'pan/fix-compiler-warnings-clang-and-new-gcc'Patrik Nyblom
* pan/fix-compiler-warnings-clang-and-new-gcc: Fix compiler warnings from GCC 4.7.1 on ARCH Linux Fix clang compiler warnings on FreeBSD in erts
2013-01-25Update copyright yearsBjörn-Egil Dahlberg
2013-01-25Use no async threads for erlcRickard Green
2013-01-23Fix clang compiler warnings on FreeBSD in ertsPatrik Nyblom
The following are deliberately left, as I have only a list of compiler warnings and no system to test on: hipe/hipe_x86_signal.c:264:5: warning: no previous prototype for function '_sigaction' [-Wmissing-prototypes] int __SIGACTION(int signum, const struct sigaction *act, struct sigaction *oldact) ^ hipe/hipe_x86_signal.c:222:21: note: expanded from macro '__SIGACTION' ^ 1 warning generated. sys/unix/sys_float.c:835:16: warning: declaration of 'struct exception' will not be visible outside of this function [-Wvisibility] matherr(struct exception *exc) ^ sys/unix/sys_float.c:835:1: warning: no previous prototype for function 'matherr' [-Wmissing-prototypes] matherr(struct exception *exc) ^ 2 warnings generated. drivers/unix/unix_efile.c:1504:11: warning: implicit declaration of function 'sendfile' [-Wimplicit-function-declaration] retval = sendfile(in_fd, out_fd, *offset, SENDFILE_CHUNK_SIZE, ^ 1 warning generated.
2013-01-23Merge branch 'rickard/+stbt/OTP-10668'Rickard Green
* rickard/+stbt/OTP-10668: Add +stbt erl command line switch
2013-01-18Merge branch 'nox/enable-silent-rules/OTP-10726'Björn-Egil Dahlberg
* nox/enable-silent-rules/OTP-10726: Implement ./otp_build configure --enable-silent-rules
2013-01-15Implement ./otp_build configure --enable-silent-rulesAnthony Ramine
With silent rules, the output of make is less verbose and compilation warnings are easier to spot. Silent rules are disabled by default and can be disabled or enabled at will by make V=0 and make V=1.
2013-01-08Add +stbt erl command line switchRickard Green
2013-01-08escript to accept emulator arguments when script file has no shebangMagnus Henoch
According to the documentation, if the second or third line in a script starts with %%!, then escript will use the rest of the line as emulator options. However, previously this was only the case if the first line started with #!. This change removes that check, and unconditionally uses the %%! line if present.
2012-12-07Merge branch 'rickard/port-optimizations/OTP-10336' into ↵Rickard Green
rickard/r16/port-optimizations/OTP-10336 * rickard/port-optimizations/OTP-10336: Change annotate level for emacs-22 in cerl Update etp-commands Add documentation on communication in Erlang Add support for busy port message queue Add driver callback epilogue Implement true asynchronous signaling between processes and ports Add erl_drv_[send|output]_term Move busy port flag Use rwlock for driver list Optimize management of port tasks Improve configuration of process and port tables Remove R9 compatibility features Use ptab functionality also for ports Prepare for use of ptab functionality also for ports Atomic port state Generalize process table implementation Implement functionality for delaying thread progress from unmanaged threads Conflicts: erts/doc/src/erl_driver.xml erts/doc/src/erlang.xml erts/emulator/beam/beam_bif_load.c erts/emulator/beam/beam_bp.c erts/emulator/beam/beam_emu.c erts/emulator/beam/bif.c erts/emulator/beam/copy.c erts/emulator/beam/erl_alloc.c erts/emulator/beam/erl_alloc.types erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_bif_port.c erts/emulator/beam/erl_bif_trace.c erts/emulator/beam/erl_init.c erts/emulator/beam/erl_message.c erts/emulator/beam/erl_port_task.c erts/emulator/beam/erl_process.c erts/emulator/beam/erl_process.h erts/emulator/beam/erl_process_lock.c erts/emulator/beam/erl_trace.c erts/emulator/beam/export.h erts/emulator/beam/global.h erts/emulator/beam/io.c erts/emulator/sys/unix/sys.c erts/emulator/sys/vxworks/sys.c erts/emulator/test/port_SUITE.erl erts/etc/unix/cerl.src erts/preloaded/ebin/erlang.beam erts/preloaded/ebin/prim_inet.beam erts/preloaded/src/prim_inet.erl lib/hipe/cerl/erl_bif_types.erl lib/kernel/doc/src/inet.xml lib/kernel/src/inet.erl
2012-12-07Change annotate level for emacs-22 in cerlRickard Green
2012-12-07Update etp-commandsRickard Green
2012-12-07Implement true asynchronous signaling between processes and portsRickard Green
2012-12-03Improve configuration of process and port tablesRickard Green
2012-12-03Generalize process table implementationRickard Green
2012-11-28Merge branch 'maint'Patrik Nyblom