summaryrefslogtreecommitdiff
path: root/innobase/include/os0sync.h
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/include/os0sync.h')
-rw-r--r--innobase/include/os0sync.h36
1 files changed, 27 insertions, 9 deletions
diff --git a/innobase/include/os0sync.h b/innobase/include/os0sync.h
index d52444d02ec..3096c9256ed 100644
--- a/innobase/include/os0sync.h
+++ b/innobase/include/os0sync.h
@@ -10,15 +10,16 @@ Created 9/6/1995 Heikki Tuuri
#define os0sync_h
#include "univ.i"
+#include "ut0lst.h"
#ifdef __WIN__
-
#define os_fast_mutex_t CRITICAL_SECTION
-typedef void* os_event_t;
-
+typedef HANDLE os_event_t;
#else
-
typedef pthread_mutex_t os_fast_mutex_t;
+
+typedef struct os_event_struct os_event_struct_t;
+typedef os_event_struct_t* os_event_t;
struct os_event_struct {
os_fast_mutex_t os_mutex; /* this mutex protects the next
fields */
@@ -26,9 +27,9 @@ struct os_event_struct {
not reserved */
pthread_cond_t cond_var; /* condition variable is used in
waiting for the event */
+ UT_LIST_NODE_T(os_event_struct_t) os_event_list;
+ /* list of all created events */
};
-typedef struct os_event_struct os_event_struct_t;
-typedef os_event_struct_t* os_event_t;
#endif
typedef struct os_mutex_struct os_mutex_str_t;
@@ -38,13 +39,30 @@ typedef os_mutex_str_t* os_mutex_t;
#define OS_SYNC_TIME_EXCEEDED 1
-/* Mutex protecting the thread count */
-extern os_mutex_t os_thread_count_mutex;
+/* Mutex protecting the thread count and event and OS 'slow' mutex lists */
+extern os_mutex_t os_sync_mutex;
/* This is incremented by 1 in os_thread_create and decremented by 1 in
os_thread_exit */
-extern ulint os_thread_count;
+extern ulint os_thread_count;
+/* The following are approximate counters for debugging in Unix */
+extern ulint os_event_count;
+extern ulint os_mutex_count;
+
+/*************************************************************
+Initializes global event and OS 'slow' mutex lists. */
+
+void
+os_sync_init(void);
+/*==============*/
+/*************************************************************
+Frees created events (not in Windows) and OS 'slow' mutexes. OS 'fast'
+mutexes must be freed with sync_free() before this. */
+
+void
+os_sync_free(void);
+/*==============*/
/*************************************************************
Creates an event semaphore, i.e., a semaphore which may
just have two states: signaled and nonsignaled.