From 91b72f5ff09530ceb5843552df610c7444001217 Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Thu, 29 Sep 2005 04:08:18 +0000 Subject: ensure scheduling priority is inherited into new threads (issue #5293) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6692 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- utils.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/utils.c b/utils.c index bb3a3e561..79d733605 100755 --- a/utils.c +++ b/utils.c @@ -475,6 +475,19 @@ int ast_pthread_create_stack(pthread_t *thread, pthread_attr_t *attr, void *(*st pthread_attr_init(&lattr); attr = &lattr; } +#ifdef __linux__ + /* On Linux, pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED, + which is kind of useless. Change this here to + PTHREAD_INHERIT_SCHED; that way the -p option to set realtime + priority will propagate down to new threads by default. + This does mean that callers cannot set a different priority using + PTHREAD_EXPLICIT_SCHED in the attr argument; instead they must set + the priority afterwards with pthread_setschedparam(). */ + errno = pthread_attr_setinheritsched(attr, PTHREAD_INHERIT_SCHED); + if (errno) + ast_log(LOG_WARNING, "pthread_attr_setinheritsched returned non-zero: %s\n", strerror(errno)); +#endif + if (!stacksize) stacksize = AST_STACKSIZE; errno = pthread_attr_setstacksize(attr, stacksize); -- cgit v1.2.3