diff options
author | Dražen Kačar <dave@fly.srk.fer.hr> | 2011-01-10 12:39:23 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2011-01-10 12:39:23 +0100 |
commit | 7742b2182fc017ca4c9fcfe3b26f4c8d68a9bd58 (patch) | |
tree | 5105b0ff2a8ea76a0729d57111545e5858124daf /runtime/rsyslog.c | |
parent | c4026ec0f8d843540d01b07f94d4182d7dddb62e (diff) | |
download | rsyslog-7742b2182fc017ca4c9fcfe3b26f4c8d68a9bd58.tar.gz rsyslog-7742b2182fc017ca4c9fcfe3b26f4c8d68a9bd58.tar.xz rsyslog-7742b2182fc017ca4c9fcfe3b26f4c8d68a9bd58.zip |
improved imudp real-time scheduling support & bugfix
The original code had quite some issues, which are fixed by this
commit. Also we do more error checking now.
Signed-off-by: Rainer Gerhards <rgerhards@adiscon.com>
Diffstat (limited to 'runtime/rsyslog.c')
-rw-r--r-- | runtime/rsyslog.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/runtime/rsyslog.c b/runtime/rsyslog.c index a9794840..2722fd6c 100644 --- a/runtime/rsyslog.c +++ b/runtime/rsyslog.c @@ -84,6 +84,12 @@ #include "strgen.h" #include "atomic.h" +#ifdef HAVE_PTHREAD_SETSCHEDPARAM +struct sched_param default_sched_param; +pthread_attr_t default_thread_attr; +int default_thr_sched_policy; +#endif + /* forward definitions */ static rsRetVal dfltErrLogger(int, uchar *errMsg); @@ -138,6 +144,18 @@ rsrtInit(char **ppErrObj, obj_if_t *pObjIF) if(iRefCount == 0) { /* init runtime only if not yet done */ +#ifdef HAVE_PTHREAD_SETSCHEDPARAM + CHKiRet(pthread_getschedparam(pthread_self(), + &default_thr_sched_policy, + &default_sched_param)); + CHKiRet(pthread_attr_init(&default_thread_attr)); + CHKiRet(pthread_attr_setschedpolicy(&default_thread_attr, + default_thr_sched_policy)); + CHKiRet(pthread_attr_setschedparam(&default_thread_attr, + &default_sched_param)); + CHKiRet(pthread_attr_setinheritsched(&default_thread_attr, + PTHREAD_EXPLICIT_SCHED)); +#endif if(ppErrObj != NULL) *ppErrObj = "obj"; CHKiRet(objClassInit(NULL)); /* *THIS* *MUST* always be the first class initilizer being called! */ CHKiRet(objGetObjInterface(pObjIF)); /* this provides the root pointer for all other queries */ |