Replace external thread "once" with an internal implementation
authorDerrell Lipman <derrell@dworkin.(none)>
Mon, 11 May 2009 01:55:23 +0000 (21:55 -0400)
committerDerrell Lipman <derrell@dworkin.(none)>
Mon, 11 May 2009 02:45:12 +0000 (22:45 -0400)
commitd3434477e6d42432a0acf426fcfbe39eb11b1fd0
tree9108912416b0d73081a5af2204c0c74422162ba2
parent831b73ec82717c3c73ea1250f9c94228d251c1ec
Replace external thread "once" with an internal implementation

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
lib/util/smb_threads.c
lib/util/smb_threads.h
lib/util/smb_threads_internal.h