diff options
author | Eric Wild <ewild@sysmocom.de> | 2019-06-17 13:02:44 +0200 |
---|---|---|
committer | Eric Wild <ewild@sysmocom.de> | 2019-06-17 14:41:34 +0200 |
commit | ac0487eb66c07934cb13791ad625e86d580e8ab0 (patch) | |
tree | c46bdbad011d71b3b7bf31e05290d9d81c995011 /CommonLibs | |
parent | 6a305feb0f7bdcae9d0552e5d2bca9c48ec2e63f (diff) |
Add option to set stack size in config file, default == 0 == OS default
Change-Id: Id752f6b5ce9a96a67cd1ff835687ce0e03d3a50d
Diffstat (limited to 'CommonLibs')
-rw-r--r-- | CommonLibs/Threads.cpp | 6 | ||||
-rw-r--r-- | CommonLibs/Threads.h | 2 | ||||
-rw-r--r-- | CommonLibs/trx_vty.c | 16 | ||||
-rw-r--r-- | CommonLibs/trx_vty.h | 1 |
4 files changed, 22 insertions, 3 deletions
diff --git a/CommonLibs/Threads.cpp b/CommonLibs/Threads.cpp index c056d69..ccea1e7 100644 --- a/CommonLibs/Threads.cpp +++ b/CommonLibs/Threads.cpp @@ -135,8 +135,10 @@ void Thread::start(void *(*task)(void*), void *arg) // (pat) Moved initialization to constructor to avoid crash in destructor. //res = pthread_attr_init(&mAttrib); //assert(!res); - res = pthread_attr_setstacksize(&mAttrib, mStackSize); - assert(!res); + if (mStackSize != 0) { + res = pthread_attr_setstacksize(&mAttrib, mStackSize); + assert(!res); + } res = pthread_create(&mThread, &mAttrib, task, arg); assert(!res); } diff --git a/CommonLibs/Threads.h b/CommonLibs/Threads.h index 4c5b9ee..8a6ba47 100644 --- a/CommonLibs/Threads.h +++ b/CommonLibs/Threads.h @@ -158,7 +158,7 @@ class Thread { public: /** Create a thread in a non-running state. */ - Thread(size_t wStackSize = (65536*4)):mThread((pthread_t)0) { + Thread(size_t wStackSize = 0):mThread((pthread_t)0) { pthread_attr_init(&mAttrib); // (pat) moved this here. mStackSize=wStackSize; } diff --git a/CommonLibs/trx_vty.c b/CommonLibs/trx_vty.c index 4cc827b..795ec7b 100644 --- a/CommonLibs/trx_vty.c +++ b/CommonLibs/trx_vty.c @@ -336,6 +336,18 @@ DEFUN(cfg_rt_prio, cfg_rt_prio_cmd, return CMD_SUCCESS; } +DEFUN(cfg_stack_size, cfg_stack_size_cmd, + "stack-size <0-2147483647>", + "Set the stack size per thread in BYTE, 0 = OS default\n" + "Stack size per thread in BYTE\n") +{ + struct trx_ctx *trx = trx_from_vty(vty); + + trx->cfg.stack_size = atoi(argv[0]); + + return CMD_SUCCESS; +} + DEFUN(cfg_filler, cfg_filler_cmd, "filler dummy", "Enable C0 filler table\n" @@ -546,6 +558,8 @@ static int config_write_trx(struct vty *vty) vty_out(vty, " ext-rach %s%s", trx->cfg.ext_rach ? "enable" : "disable", VTY_NEWLINE); if (trx->cfg.sched_rr != 0) vty_out(vty, " rt-prio %u%s", trx->cfg.sched_rr, VTY_NEWLINE); + if (trx->cfg.stack_size != 0) + vty_out(vty, " stack-size %u%s", trx->cfg.stack_size, VTY_NEWLINE); trx_rate_ctr_threshold_write_config(vty, " "); for (i = 0; i < trx->cfg.num_chans; i++) { @@ -585,6 +599,7 @@ static void trx_dump_vty(struct vty *vty, struct trx_ctx *trx) vty_out(vty, " Extended RACH support: %s%s", trx->cfg.ext_rach ? "Enabled" : "Disabled", VTY_NEWLINE); vty_out(vty, " Real Time Priority: %u (%s)%s", trx->cfg.sched_rr, trx->cfg.sched_rr ? "Enabled" : "Disabled", VTY_NEWLINE); + vty_out(vty, " Stack size per Thread in BYTE (0 = OS default): %u%s", trx->cfg.stack_size, VTY_NEWLINE); vty_out(vty, " Channels: %u%s", trx->cfg.num_chans, VTY_NEWLINE); for (i = 0; i < trx->cfg.num_chans; i++) { chan = &trx->cfg.chans[i]; @@ -698,6 +713,7 @@ int trx_vty_init(struct trx_ctx* trx) install_element(TRX_NODE, &cfg_filler_cmd); install_element(TRX_NODE, &cfg_ctr_error_threshold_cmd); install_element(TRX_NODE, &cfg_no_ctr_error_threshold_cmd); + install_element(TRX_NODE, &cfg_stack_size_cmd); install_element(TRX_NODE, &cfg_chan_cmd); install_node(&chan_node, dummy_config_write); diff --git a/CommonLibs/trx_vty.h b/CommonLibs/trx_vty.h index 8e91113..d939051 100644 --- a/CommonLibs/trx_vty.h +++ b/CommonLibs/trx_vty.h @@ -63,6 +63,7 @@ struct trx_ctx { bool ext_rach; bool egprs; unsigned int sched_rr; + unsigned int stack_size; unsigned int num_chans; struct trx_chan chans[TRX_CHAN_MAX]; } cfg; |