diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 05d6e0aa48..179361dc96 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -2332,7 +2332,7 @@ SWITCH_DECLARE(int) switch_max_file_desc(void); SWITCH_DECLARE(void) switch_close_extra_files(int *keep, int keep_ttl); SWITCH_DECLARE(switch_status_t) switch_core_thread_set_cpu_affinity(int cpu); SWITCH_DECLARE(void) switch_os_yield(void); - +SWITCH_DECLARE(switch_status_t) switch_core_get_stacksizes(switch_size_t *cur, switch_size_t *max); SWITCH_END_EXTERN_C #endif /* For Emacs: diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 9ba5b9dcca..d0399fcb42 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -1721,14 +1721,6 @@ SWITCH_STANDARD_API(lan_addr_function) return SWITCH_STATUS_SUCCESS; } -#ifndef WIN32 -#include "switch_private.h" -#ifdef HAVE_SETRLIMIT -#include -#endif -#endif - - SWITCH_STANDARD_API(status_function) { uint8_t html = 0; @@ -1736,11 +1728,7 @@ SWITCH_STANDARD_API(status_function) char *http = NULL; int sps = 0, last_sps = 0; const char *var; -#ifdef HAVE_SETRLIMIT - struct rlimit rlp; -#endif - - + switch_size_t cur = 0, max = 0; switch_core_measure_time(switch_core_uptime(), &duration); @@ -1777,13 +1765,10 @@ SWITCH_STANDARD_API(status_function) stream->write_function(stream, "%d session(s) max\n", switch_core_session_limit(0)); stream->write_function(stream, "min idle cpu %0.2f/%0.2f\n", switch_core_min_idle_cpu(-1.0), switch_core_idle_cpu()); -#ifdef HAVE_SETRLIMIT - memset(&rlp, 0, sizeof(rlp)); - getrlimit(RLIMIT_STACK, &rlp); - - stream->write_function(stream, "Current Stack Size/Max %ldK/%ldK\n", rlp.rlim_cur / 1024, rlp.rlim_max / 1024); -#endif + if (switch_core_get_stacksizes(&cur, &max) == SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "Current Stack Size/Max %ldK/%ldK\n", cur / 1024, max / 1024); + } if (html) { stream->write_function(stream, "\n"); diff --git a/src/switch_core.c b/src/switch_core.c index 2a4cae408f..1ad1c1756e 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -2647,6 +2647,30 @@ SWITCH_DECLARE(int) switch_stream_system_fork(const char *cmd, switch_stream_han } +SWITCH_DECLARE(switch_status_t) switch_core_get_stacksizes(switch_size_t *cur, switch_size_t *max) +{ +#ifdef HAVE_SETRLIMIT + struct rlimit rlp; + + memset(&rlp, 0, sizeof(rlp)); + getrlimit(RLIMIT_STACK, &rlp); + + *cur = rlp.rlim_cur; + *max = rlp.rlim_max; + + return SWITCH_STATUS_SUCCESS; + +#else + + return SWITCH_STATUS_FALSE; + +#endif + + + +} + + SWITCH_DECLARE(int) switch_stream_system(const char *cmd, switch_stream_handle_t *stream) { #ifdef WIN32