diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/include/includes.h | 1 | ||||
-rw-r--r-- | source4/include/mutex.h | 12 | ||||
-rw-r--r-- | source4/include/structs.h | 2 | ||||
-rw-r--r-- | source4/lib/mutex.c | 92 | ||||
-rw-r--r-- | source4/smbd/process_thread.c | 1 |
5 files changed, 5 insertions, 103 deletions
diff --git a/source4/include/includes.h b/source4/include/includes.h index b31ba4d840..3387102393 100644 --- a/source4/include/includes.h +++ b/source4/include/includes.h @@ -124,7 +124,6 @@ extern int errno; #include "smb.h" #include "byteorder.h" #include "module.h" -#include "mutex.h" #include "librpc/ndr/libndr.h" #include "librpc/gen_ndr/ndr_misc.h" #include "librpc/gen_ndr/ndr_dcerpc.h" diff --git a/source4/include/mutex.h b/source4/include/mutex.h index 21e4f9f8a5..c0b7d26744 100644 --- a/source4/include/mutex.h +++ b/source4/include/mutex.h @@ -21,16 +21,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* To add a new mutex, add it to enum mutex_id - */ -enum mutex_id { MUTEX_SMBD, /* global smbd lock */ - MUTEX_TALLOC, /* global talloc.c lock */ - MUTEX_DEBUG, /* global debug.c lock */ - MUTEX_TANK, /* vfs_tank lock */ - - MUTEX_MAX /* this MUST be kept last */ -}; - /* To add a new read/write lock, add it to enum rwlock_id */ enum rwlock_id { RWLOCK_SMBD, /* global smbd lock */ @@ -55,7 +45,7 @@ enum rwlock_id { RWLOCK_SMBD, /* global smbd lock */ /* this null typedef ensures we get the types right and avoids the pitfalls of void* */ -typedef struct { +typedef struct smb_mutex { void *mutex; } smb_mutex_t; typedef struct { diff --git a/source4/include/structs.h b/source4/include/structs.h index 29d552d3cc..034ad20b64 100644 --- a/source4/include/structs.h +++ b/source4/include/structs.h @@ -172,3 +172,5 @@ struct stream_server_ops; struct nbtd_server; struct nbtd_interface; + +struct mutex_ops; diff --git a/source4/lib/mutex.c b/source4/lib/mutex.c index 25ea3c55ee..480ba92cc0 100644 --- a/source4/lib/mutex.c +++ b/source4/lib/mutex.c @@ -19,99 +19,16 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "includes.h" +#include "mutex.h" -static smb_mutex_t mutex_list[MUTEX_MAX]; - /* the registered mutex handlers */ static struct { const char *name; struct mutex_ops ops; } mutex_handlers; -int smb_mutex_lock_by_id(enum mutex_id id, const char *name) -{ - return smb_mutex_lock(&mutex_list[id], name); -} - -int smb_mutex_unlock_by_id(enum mutex_id id, const char *name) -{ - return smb_mutex_unlock(&mutex_list[id], name); -} - -int smb_mutex_init(smb_mutex_t *mutex, const char *name) -{ - if (mutex_handlers.ops.mutex_init) { - return mutex_handlers.ops.mutex_init(mutex, name); - } - return 0; -} - -int smb_mutex_destroy(smb_mutex_t *mutex, const char *name) -{ - if (mutex_handlers.ops.mutex_destroy) { - return mutex_handlers.ops.mutex_destroy(mutex, name); - } - return 0; -} - -int smb_mutex_lock(smb_mutex_t *mutex, const char *name) -{ - if (mutex_handlers.ops.mutex_lock) { - return mutex_handlers.ops.mutex_lock(mutex, name); - } - return 0; -} - -int smb_mutex_unlock(smb_mutex_t *mutex, const char *name) -{ - if (mutex_handlers.ops.mutex_unlock) { - return mutex_handlers.ops.mutex_unlock(mutex, name); - } - return 0; -} - /* read/write lock routines */ -int smb_rwlock_init(smb_rwlock_t *rwlock, const char *name) -{ - if (mutex_handlers.ops.rwlock_init) { - return mutex_handlers.ops.rwlock_init(rwlock, name); - } - return 0; -} - -int smb_rwlock_destroy(smb_rwlock_t *rwlock, const char *name) -{ - if (mutex_handlers.ops.rwlock_destroy) { - return mutex_handlers.ops.rwlock_destroy(rwlock, name); - } - return 0; -} - -int smb_rwlock_lock_write(smb_rwlock_t *rwlock, const char *name) -{ - if (mutex_handlers.ops.rwlock_lock_write) { - return mutex_handlers.ops.rwlock_lock_write(rwlock, name); - } - return 0; -} - -int smb_rwlock_lock_read(smb_rwlock_t *rwlock, const char *name) -{ - if (mutex_handlers.ops.rwlock_lock_read) { - return mutex_handlers.ops.rwlock_lock_read(rwlock, name); - } - return 0; -} - -int smb_rwlock_unlock(smb_rwlock_t *rwlock, const char *name) -{ - if (mutex_handlers.ops.rwlock_unlock) { - return mutex_handlers.ops.rwlock_unlock(rwlock, name); - } - return 0; -} - /* register a set of mutex/rwlock handlers. @@ -129,13 +46,6 @@ BOOL register_mutex_handlers(const char *name, struct mutex_ops *ops) mutex_handlers.name = name; mutex_handlers.ops = *ops; - if (mutex_handlers.ops.mutex_init) { - enum mutex_id id; - for (id=0; id < MUTEX_MAX; id++) { - mutex_handlers.ops.mutex_init(&mutex_list[id], "mutex_list"); - } - } - DEBUG(2,("mutex handler '%s' registered\n", name)); return True; } diff --git a/source4/smbd/process_thread.c b/source4/smbd/process_thread.c index 46758af19e..692cd06724 100644 --- a/source4/smbd/process_thread.c +++ b/source4/smbd/process_thread.c @@ -33,6 +33,7 @@ #include "lib/events/events.h" #include "dlinklist.h" #include "smb_server/smb_server.h" +#include "mutex.h" struct new_conn_state { struct event_context *ev; |