Make stack size be selectable

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5132 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer
2005-03-04 00:01:41 +00:00
parent 50ef0504c6
commit 686da4b054
2 changed files with 6 additions and 4 deletions

View File

@@ -161,11 +161,11 @@ struct ast_realloca {
#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__ #define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__
#define AST_STACKSIZE 128 * 1024 #define AST_STACKSIZE 128 * 1024
#define ast_pthread_create(a,b,c,d) ast_pthread_create_stack(a,b,c,d,0)
#ifdef __linux__ #ifdef __linux__
#define ast_strcasestr strcasestr #define ast_strcasestr strcasestr
#else #else
extern char *ast_strcasestr(const char *, const char *); extern char *ast_strcasestr(const char *, const char *);
#endif /* __linux__ */ #endif /* __linux__ */
extern int ast_pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *data); extern int ast_pthread_create_stack(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *data, size_t stacksize);
#endif #endif

View File

@@ -389,14 +389,16 @@ int ast_utils_init(void)
} }
int ast_pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *data) int ast_pthread_create_stack(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *data, size_t stacksize)
{ {
pthread_attr_t lattr; pthread_attr_t lattr;
if (!attr) { if (!attr) {
pthread_attr_init(&lattr); pthread_attr_init(&lattr);
attr = &lattr; attr = &lattr;
} }
errno = pthread_attr_setstacksize(attr, AST_STACKSIZE); if (!stacksize)
stacksize = AST_STACKSIZE;
errno = pthread_attr_setstacksize(attr, stacksize);
if (errno) if (errno)
ast_log(LOG_WARNING, "pthread_attr_setstacksize returned non-zero: %s\n", strerror(errno)); ast_log(LOG_WARNING, "pthread_attr_setstacksize returned non-zero: %s\n", strerror(errno));
return pthread_create(thread, attr, start_routine, data); /* We're in ast_pthread_create, so it's okay */ return pthread_create(thread, attr, start_routine, data); /* We're in ast_pthread_create, so it's okay */