summaryrefslogtreecommitdiff
path: root/lib/util/smb_threads.c
AgeCommit message (Collapse)AuthorFilesLines
2009-05-13Make the thread functions a bit easier to useDerrell Lipman1-3/+3
- 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
2009-05-13Allow a parameter to smb_thread_once's initialization functionDerrell Lipman1-6/+17
- This should make life easier for ourselves. We're no longer constrained to the semantics of pthread_once, so let's allow passing a parameter to the initialization function. Some of Samba's init functions return a value. Although I haven't searched, I suspect that some of the init functions require in input parameters. The parameter added here can be used for input, output, or both, as necessary... or ignored, as is now done in talloc_stackframe_init(). Derrell
2009-05-12Fix broken smb_thread_once function (again)Derrell Lipman1-0/+3
- It would help if smb_thread_once did, eventually, set the variable that prevents the init function from being run again. Sigh. It must be getting late. Derrell
2009-05-12Fix broken smb_thread_once functionDerrell Lipman1-19/+3
- We can't set *ponce=true before running the function because although other threads wouldn't re-run the initialization function, they could potentially proceed beyond the initialization point while the first thread was still running the initialization function. If a second thread gets to an SMB_THREAD_ONCE() call while one with the same ponce is running, we need to ensure that it enters smb_thread_once() to await the mutex and then recheck whether *ponce is set or not. My original comment about other "once" functions possibly being called from within this "once" function is irrelevant since those other ones would have their own unique ponce. Derrell
2009-05-11Fix definition of smb_thread_once - must return int not void asJeremy Allison1-1/+4
it's used in a ? : comparison macro. Jeremy.
2009-05-10Use bool instead of int for a boolean variableDerrell Lipman1-1/+1
2009-05-10Panic upon mutex lock or unlock failureDerrell Lipman1-2/+2
- It's a serious error if we can't lock or unlock a mutex in smb_thread_once(). Panic instead of just displaying a DEBUG message. Derrell
2009-05-10Replace external thread "once" with an internal implementationDerrell Lipman1-1/+63
Jeremy, please check... - I'm in the process of providing an interface in libsmbclient to the recently-added threading capabilities. In the process, I discovered that different thread implementations have varying types for the variable passed to the thread_impl_once() function. pthreads, for example, uses type pthread_once_t. Since Samba needs to internally declare these variables, it would need to know the exact type required by each thread implementation's function. After considering multiple methods of obtaining an appropriately sized variable, I decided that for the basic "once" functionality required by Samba, it would be much simpler to just implement our own "once" functionality. We don't require cancellation points et all. This commit adds an smb_thread_once() function that is implemented using an internal mutex. The mutex itself uses the implementation's create_mutex function. This eliminates the need for the user to provide a smb_thread_once function pointer and the entire issue of that function's first parameter. Derrell
2009-04-28Fix a missing prototype warningVolker Lendecke1-0/+1
2009-04-20Fix the pthread_once initialization issue. Make talloc_stackframe useJeremy Allison1-4/+21
this. Jeremy.
2009-04-14Ensure a tls key is only generated once - wrap create & destroy in a mutex.Jeremy Allison1-3/+6
Change the function names to add _once to the tls_create & tls_destroy to make this obvious. Jeremy.
2009-04-14Make talloc_stack threadsafe using TLS. Volker pleaseJeremy Allison1-3/+16
check. Passes make test and basic valgrind testing. Jeremy.
2009-04-08Add the thread functions to top level lib/util.Jeremy Allison1-0/+105
Not yet used, that's the next step. Jeremy.