summaryrefslogtreecommitdiff
path: root/lib/util/smb_threads_internal.h
diff options
context:
space:
mode:
authorDerrell Lipman <derrell@dworkin.(none)>2009-05-13 14:31:40 -0400
committerDerrell Lipman <derrell@dworkin.(none)>2009-05-13 14:37:28 -0400
commit088906b0641e48c704c5cd529f620023616f561f (patch)
treeb80f75c5ac50ace8e16032066b2bd0d61f84c107 /lib/util/smb_threads_internal.h
parentb9f3a78169be962c4f1fce625ca3a291d9f93c7c (diff)
downloadsamba-088906b0641e48c704c5cd529f620023616f561f.tar.gz
samba-088906b0641e48c704c5cd529f620023616f561f.tar.bz2
samba-088906b0641e48c704c5cd529f620023616f561f.zip
Make the thread functions a bit easier to use
- Create separate macros for lock and unlock so that it's easier to identify which request is being made. - Initialize *ponce in the SMB_THREAD_ONCE macro in the non-thread-safe case, rather than requiring each init function to determine if it's in the non-thread-safe case and manually initialize. Derrell
Diffstat (limited to 'lib/util/smb_threads_internal.h')
-rw-r--r--lib/util/smb_threads_internal.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/util/smb_threads_internal.h b/lib/util/smb_threads_internal.h
index 038c584b60..afd7559f3b 100644
--- a/lib/util/smb_threads_internal.h
+++ b/lib/util/smb_threads_internal.h
@@ -30,15 +30,21 @@
}; \
} while (0)
-#define SMB_THREAD_LOCK(plock, type) \
- (global_tfp ? global_tfp->lock_mutex((plock), (type), __location__) : 0)
+#define SMB_THREAD_LOCK_INTERNAL(plock, type, location) \
+ (global_tfp ? global_tfp->lock_mutex((plock), (type), location) : 0)
+
+#define SMB_THREAD_LOCK(plock) \
+ SMB_THREAD_LOCK_INTERNAL(plock, SMB_THREAD_LOCK, __location__)
+
+#define SMB_THREAD_UNLOCK(plock) \
+ SMB_THREAD_LOCK_INTERNAL(plock, SMB_THREAD_UNLOCK, __location__)
#define SMB_THREAD_ONCE(ponce, init_fn, pdata) \
(global_tfp \
? (! *(ponce) \
? smb_thread_once((ponce), (init_fn), (pdata)) \
: 0) \
- : ((init_fn(pdata)), 0))
+ : ((init_fn(pdata)), *(ponce) = true, 1))
#define SMB_THREAD_CREATE_TLS(keyname, key) \
(global_tfp ? global_tfp->create_tls((keyname), &(key), __location__) : 0)