diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2010-04-27 17:31:28 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2010-04-27 17:31:28 +0200 |
commit | cbe2e3d44496ec7c6418e7e74ce917f2086a2947 (patch) | |
tree | c8a38b598ad1ea3bdb375674f27386d5fbc361e8 /runtime/wtp.h | |
parent | d19806431653e6575a002ab48206c16d3041e465 (diff) | |
download | rsyslog-cbe2e3d44496ec7c6418e7e74ce917f2086a2947.tar.gz rsyslog-cbe2e3d44496ec7c6418e7e74ce917f2086a2947.tar.xz rsyslog-cbe2e3d44496ec7c6418e7e74ce917f2086a2947.zip |
bugfix: problems with atomic operations emulation
replaced atomic operation emulation with new code. The previous code
seemed to have some issue and also limited concurrency severely. The
whole atomic operation emulation has been rewritten.
Diffstat (limited to 'runtime/wtp.h')
-rw-r--r-- | runtime/wtp.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/runtime/wtp.h b/runtime/wtp.h index 1ce171cc..640c3320 100644 --- a/runtime/wtp.h +++ b/runtime/wtp.h @@ -26,6 +26,7 @@ #include <pthread.h> #include "obj.h" +#include "atomic.h" /* commands and states for worker threads. */ typedef enum { @@ -79,6 +80,7 @@ typedef struct wtp_s { rsRetVal (*pfOnWorkerShutdown)(void *pUsr); /* end user objects */ uchar *pszDbgHdr; /* header string for debug messages */ + DEF_ATOMIC_HELPER_MUT(mutThrdStateChanged); } wtp_t; /* some symbolic constants for easier reference */ @@ -100,6 +102,7 @@ rsRetVal wtpSetDbgHdr(wtp_t *pThis, uchar *pszMsg, size_t lenMsg); rsRetVal wtpSignalWrkrTermination(wtp_t *pWtp); rsRetVal wtpShutdownAll(wtp_t *pThis, wtpState_t tShutdownCmd, struct timespec *ptTimeout); int wtpGetCurNumWrkr(wtp_t *pThis, int bLockMutex); +void wtpSetThrdStateChanged(wtp_t *pThis, int val); PROTOTYPEObjClassInit(wtp); PROTOTYPEpropSetMethFP(wtp, pfChkStopWrkr, rsRetVal(*pVal)(void*, int)); PROTOTYPEpropSetMethFP(wtp, pfRateLimiter, rsRetVal(*pVal)(void*)); |