diff options
author | Lukas Larsson <[email protected]> | 2013-10-15 18:10:47 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2014-02-24 15:15:57 +0100 |
commit | 8ed59e4a9dddf083d2046e1bd58f397221928c0e (patch) | |
tree | 46c65c4edd5fdcb813ab3ca468c9cbc2eb53ad1d /erts | |
parent | f8cfcf356cf2f8c573713fc89883bb99003f242c (diff) | |
download | otp-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.
Diffstat (limited to 'erts')
-rw-r--r-- | erts/emulator/sys/ose/default.lmconf | 7 | ||||
-rw-r--r-- | erts/emulator/sys/ose/erl_main.c | 44 | ||||
-rw-r--r-- | erts/lib_src/ose/ethread.c | 14 |
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 |