diff options
Diffstat (limited to 'winsup/cygwin/sync.h')
-rw-r--r-- | winsup/cygwin/sync.h | 35 |
1 files changed, 5 insertions, 30 deletions
diff --git a/winsup/cygwin/sync.h b/winsup/cygwin/sync.h index c729454c3..441892a08 100644 --- a/winsup/cygwin/sync.h +++ b/winsup/cygwin/sync.h @@ -16,6 +16,9 @@ details. */ there are issues with malloc and fork. */ class muto { +public: + const char *name; +private: static DWORD exiting_thread; LONG sync; /* Used to serialize access to this class. */ LONG waiters; /* Number of threads waiting for lock. */ @@ -24,10 +27,9 @@ public: LONG visits; /* Count of number of times a thread has called acquire. */ void *tls; /* Tls of lock owner. */ // class muto *next; - const char *name; /* The real constructor. */ - muto *init(const char *name) __attribute__ ((regparm (3))); + muto *init (const char *) __attribute__ ((regparm (2))); #if 0 /* FIXME: See comment in sync.cc */ ~muto () @@ -38,35 +40,8 @@ public: bool acquired () __attribute__ ((regparm (1))); void upforgrabs () {tls = this;} // just set to an invalid address void grab () __attribute__ ((regparm (1))); + operator int () const {return !!name;} static void set_exiting_thread () {exiting_thread = GetCurrentThreadId ();} }; -class locker -{ - muto *room; -public: - locker (muto *m) {room = m; room->acquire ();} - ~locker () {room->release ();} -}; - -/* Use a statically allocated buffer as the storage for a muto */ -#define new_muto(__name) \ -({ \ - static muto __name##_storage __attribute__((nocommon)) __attribute__((section(".data_cygwin_nocopy1"))); \ - __name = __name##_storage.init (#__name); \ -}) - -/* Use a statically allocated buffer as the storage for a muto */ -#define new_muto1(__name, __storage) \ -({ \ - static muto __storage __attribute__((nocommon)) __attribute__((section(".data_cygwin_nocopy1"))); \ - __name = __storage.init (#__name); \ -}) - -/* Use a statically allocated buffer as the storage for a muto */ -#define new_muto_name(__var, __name) \ -({ \ - static muto __var##_storage __attribute__((nocommon)) __attribute__((section(".data_cygwin_nocopy1"))); \ - __var = __var##_storage.init (__name); \ -}) #endif /*_SYNC_H*/ |