diff --git a/libs/apr/.update b/libs/apr/.update index d5bc43d9d4..4452df8ef3 100644 --- a/libs/apr/.update +++ b/libs/apr/.update @@ -1 +1 @@ -Mon Sep 27 13:15:54 CDT 2010 +Thu Sep 27 13:36:14 CDT 2012 diff --git a/libs/apr/include/arch/unix/apr_arch_threadproc.h b/libs/apr/include/arch/unix/apr_arch_threadproc.h index 6b0180234d..bd9359a49f 100644 --- a/libs/apr/include/arch/unix/apr_arch_threadproc.h +++ b/libs/apr/include/arch/unix/apr_arch_threadproc.h @@ -60,6 +60,7 @@ struct apr_thread_t { struct apr_threadattr_t { apr_pool_t *pool; pthread_attr_t attr; + int priority; }; struct apr_threadkey_t { diff --git a/libs/apr/threadproc/unix/thread.c b/libs/apr/threadproc/unix/thread.c index 28fcef0aef..9a56e55405 100644 --- a/libs/apr/threadproc/unix/thread.c +++ b/libs/apr/threadproc/unix/thread.c @@ -174,6 +174,11 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, } if ((stat = pthread_create((*new)->td, temp, dummy_worker, (*new))) == 0) { + if (attr->priority) { + pthread_t *thread = (*new)->td; + pthread_setschedprio(*thread, attr->priority); + } + return APR_SUCCESS; } else { diff --git a/src/switch_apr.c b/src/switch_apr.c index c854c97617..dfb56d5390 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -633,25 +633,16 @@ SWITCH_DECLARE(switch_status_t) switch_threadattr_stacksize_set(switch_threadatt struct apr_threadattr_t { apr_pool_t *pool; pthread_attr_t attr; + int priority; }; #endif SWITCH_DECLARE(switch_status_t) switch_threadattr_priority_increase(switch_threadattr_t *attr) { - int stat = 0; #ifndef WIN32 - struct sched_param param; - struct apr_threadattr_t *myattr = attr; - - pthread_attr_getschedparam(&myattr->attr, ¶m); - param.sched_priority = 1; - stat = pthread_attr_setschedparam(&myattr->attr, ¶m); - - if (stat == 0) { - return SWITCH_STATUS_SUCCESS; - } + attr->priority = 10; #endif - return stat; + return SWITCH_STATUS_SUCCESS; } static char TT_KEY[] = "1";