diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2010-04-27 17:49:06 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2010-04-27 17:49:06 +0200 |
commit | 4a5a3196fbe4e5a4e9f8dea49f916462adbf3098 (patch) | |
tree | df7750c93603d4a979188f3385c9fe4997072c7f /runtime/msg.c | |
parent | 9cf1756dc6c06682b32ed7a789ceb4254b5792df (diff) | |
parent | cbe2e3d44496ec7c6418e7e74ce917f2086a2947 (diff) | |
download | rsyslog-4a5a3196fbe4e5a4e9f8dea49f916462adbf3098.tar.gz rsyslog-4a5a3196fbe4e5a4e9f8dea49f916462adbf3098.tar.xz rsyslog-4a5a3196fbe4e5a4e9f8dea49f916462adbf3098.zip |
Merge branch 'v4-devel' into master
Conflicts:
runtime/Makefile.am
runtime/atomic.h
runtime/queue.c
runtime/queue.h
runtime/wti.c
runtime/wti.h
runtime/wtp.c
runtime/wtp.h
Diffstat (limited to 'runtime/msg.c')
-rw-r--r-- | runtime/msg.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/runtime/msg.c b/runtime/msg.c index 5885cada..2c8c36a3 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -787,7 +787,7 @@ BEGINobjDestruct(msg) /* be sure to specify the object type also in END and CODE CODESTARTobjDestruct(msg) /* DEV Debugging only ! dbgprintf("msgDestruct\t0x%lx, Ref now: %d\n", (unsigned long)pThis, pThis->iRefCount - 1); */ # ifdef HAVE_ATOMIC_BUILTINS - currRefCount = ATOMIC_DEC_AND_FETCH(pThis->iRefCount); + currRefCount = ATOMIC_DEC_AND_FETCH(&pThis->iRefCount, NULL); # else MsgLock(pThis); currRefCount = --pThis->iRefCount; @@ -843,9 +843,18 @@ CODESTARTobjDestruct(msg) * that we trim too often when the counter wraps. */ static unsigned iTrimCtr = 1; +# ifdef HAVE_ATOMICS if(ATOMIC_INC_AND_FETCH(iTrimCtr) % 100000 == 0) { malloc_trim(128*1024); } +# else +static pthread_mutex_t mutTrimCtr = PTHREAD_MUTEX_INITIALIZER; + d_pthread_mutex_lock(&mutTrimCtr); + if(iTrimCtr++ % 100000 == 0) { + malloc_trim(128*1024); + } + d_pthread_mutex_unlock(&mutTrimCtr); +# endif } # endif } else { @@ -1055,7 +1064,7 @@ msg_t *MsgAddRef(msg_t *pM) { assert(pM != NULL); # ifdef HAVE_ATOMIC_BUILTINS - ATOMIC_INC(pM->iRefCount); + ATOMIC_INC(&pM->iRefCount, NULL); # else MsgLock(pM); pM->iRefCount++; |