aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Larsson <lukas@erlang-solutions.com>2013-10-15 18:10:47 +0200
committerLukas Larsson <lukas@erlang-solutions.com>2014-02-24 15:15:57 +0100
commit8ed59e4a9dddf083d2046e1bd58f397221928c0e (patch)
tree46c65c4edd5fdcb813ab3ca468c9cbc2eb53ad1d
parentf8cfcf356cf2f8c573713fc89883bb99003f242c (diff)
downloadotp-8ed59e4a9dddf083d2046e1bd58f397221928c0e.tar.gz
otp-8ed59e4a9dddf083d2046e1bd58f397221928c0e.tar.bz2
otp-8ed59e4a9dddf083d2046e1bd58f397221928c0e.zip
ose: Change start way to use arguments to beam.smp directly
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.
-rw-r--r--erts/emulator/sys/ose/default.lmconf7
-rw-r--r--erts/emulator/sys/ose/erl_main.c44
-rw-r--r--erts/lib_src/ose/ethread.c14
3 files changed, 15 insertions, 50 deletions
diff --git a/erts/emulator/sys/ose/default.lmconf b/erts/emulator/sys/ose/default.lmconf
index f897872fa2..150111b1f6 100644
--- a/erts/emulator/sys/ose/default.lmconf
+++ b/erts/emulator/sys/ose/default.lmconf
@@ -2,9 +2,12 @@ OSE_LM_STACK_SIZES=256,512,1024,2048,4096,8192,16384,65536
OSE_LM_SIGNAL_SIZES=31,63,127,255,1023,4095,16383,65535
OSE_LM_POOL_SIZE=0x200000
OSE_LM_MAIN_NAME=main
-OSE_LM_MAIN_STACK_SIZE=0x400
+OSE_LM_MAIN_STACK_SIZE=0xF000
OSE_LM_MAIN_PRIORITY=20
-OSE_LM_PROGRAM_TYPE=SYS_RAM
+OSE_LM_PROGRAM_TYPE=APP_RAM
OSE_LM_DATA_INIT=YES
OSE_LM_BSS_INIT=YES
OSE_LM_EXEC_MODEL=SHARED
+HEAP_MAX_SIZE=1000000000
+HEAP_SMALL_BUF_INIT_SIZE=64000000
+HEAP_LARGE_BUF_THRESHOLD=16000000 \ No newline at end of file
diff --git a/erts/emulator/sys/ose/erl_main.c b/erts/emulator/sys/ose/erl_main.c
index 21cfce9463..322058c87b 100644
--- a/erts/emulator/sys/ose/erl_main.c
+++ b/erts/emulator/sys/ose/erl_main.c
@@ -16,53 +16,11 @@
*
* %CopyrightEnd%
*/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include "sys.h"
-#include "erl_vm.h"
-#include "global.h"
-
-#include "shell.h"
-#include "ramlog.h"
-#include "ose_err/ose_err.h"
-
-static PROCESS mainPid;
-
-#ifdef DEBUG
-static OSADDRESS err_handler(OSBOOLEAN user_called, OSERRCODE ecode, OSERRCODE extra) {
- fprintf(stderr,"err_handler: %p %p\n",ecode,extra);
- return 1;
-}
-#endif
-
-static int
-cmd_ek(int argc, char **argv) {
- kill_proc(mainPid);
- return 0;
-}
-
-static int
-cmd_erl_start(int argc, char **argv) {
- ramlog_printf("\n");
- ramlog_printf("================================================================\n");
- ramlog_printf("\n");
-#ifdef DEBUG
- create_error_handler(get_bid(current_process()),err_handler,0x100);
-#endif
- erl_start(argc, argv);
- return 0;
-}
int
main(int argc, char **argv) {
- mainPid = current_process();
-
- shell_add_cmd_attrs("start_beam", "start_beam [params]", "Start the Erlang VM",
- cmd_erl_start, OS_PRI_PROC, 20, 0xF000);
- shell_add_cmd_attrs("ek", "ek", "Kills the Erlang VM",
- cmd_ek, OS_PRI_PROC, 20, 0x100);
+ erl_start(argc,argv);
stop(current_process());
diff --git a/erts/lib_src/ose/ethread.c b/erts/lib_src/ose/ethread.c
index 7d5101d115..db20eab99f 100644
--- a/erts/lib_src/ose/ethread.c
+++ b/erts/lib_src/ose/ethread.c
@@ -96,11 +96,12 @@ union SIGNAL {
static PROCESS blockId(void) {
static PROCESS bid = (PROCESS)0;
- if (bid == 0) {
+ /* For now we only use the same block. */
+ /* if (bid == 0) {
bid = create_block("Erlang-VM", 0, 0, 0, 0);
}
-
- return bid;
+ return bid; */
+ return 0;
}
static void thr_exit_cleanup(ethr_tid *tid, void *res)
@@ -141,8 +142,10 @@ static OS_PROCESS(thr_wrapper)
* the function return current domain. */
OSADDRESS domain = get_pid_info(current_process(), 16);
+#ifdef DEBUG
fprintf(stderr,"[0x%x] New process. Bid:0x%x, domain:%d, exec mode:%s\n",
current_process(), bid, domain, execMode);
+#endif
}
{
@@ -392,10 +395,11 @@ ethr_thr_create(ethr_tid *tid, void * (*func)(void *), void *arg,
use_stack_size, /*opts->prio+5*/31, 0,
blockId(), NULL, 0, 0);
- if (ose_bind_process(tid->id, opts->coreNo)) {
+ /* For now we do not attempt to bind schedulers to different cores.
+ if (ose_bind_process(tid->id, opts->coreNo)) {
printf("[0x%x] Binding pid 0x%x (%s) to core no %u.\n",
current_process(), tid->id, opts->name, opts->coreNo);
- }
+ }*/
/*FIXME!!! Normally this shouldn't be used in shared mode. Still there is
* a problem with stdin fd in fd_ processes which should be further