diff options
author | Derrell Lipman <derrell@dworkin.(none)> | 2009-05-10 22:58:12 -0400 |
---|---|---|
committer | Derrell Lipman <derrell@dworkin.(none)> | 2009-05-10 22:58:12 -0400 |
commit | 9a93dc092c6951cdfa6e05c3885a006e5e56d7d3 (patch) | |
tree | fcfdc46c7387a5ca016eb58a94647f5833dd14fa /lib/util | |
parent | 404327ad41c5f24f9ace5cad31509149d87197fd (diff) | |
download | samba-9a93dc092c6951cdfa6e05c3885a006e5e56d7d3.tar.gz samba-9a93dc092c6951cdfa6e05c3885a006e5e56d7d3.tar.bz2 samba-9a93dc092c6951cdfa6e05c3885a006e5e56d7d3.zip |
Optimize smb_thread_once usage by not calling it if known already called
- The macro SMB_THREAD_ONCE now tests whether the "once" variable is already
set, and if so avoids calling smb_thread_once().
Derrell
Diffstat (limited to 'lib/util')
-rw-r--r-- | lib/util/smb_threads_internal.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/util/smb_threads_internal.h b/lib/util/smb_threads_internal.h index 0260934e15..29a581b013 100644 --- a/lib/util/smb_threads_internal.h +++ b/lib/util/smb_threads_internal.h @@ -33,8 +33,12 @@ #define SMB_THREAD_LOCK(plock, type) \ (global_tfp ? global_tfp->lock_mutex((plock), (type), __location__) : 0) -#define SMB_THREAD_ONCE(ponce, init_fn) \ - (global_tfp ? smb_thread_once((ponce), (init_fn)) : ((init_fn()), 0)) +#define SMB_THREAD_ONCE(ponce, init_fn) \ + (global_tfp \ + ? (! *(ponce) \ + ? smb_thread_once((ponce), (init_fn)) \ + : 0) \ + : ((init_fn()), 0)) #define SMB_THREAD_CREATE_TLS(keyname, key) \ (global_tfp ? global_tfp->create_tls((keyname), &(key), __location__) : 0) |