return &_hb_blob_nil;
}
- hb_mutex_init (blob->lock);
+ hb_mutex_init (&blob->lock);
blob->lock_count = 0;
blob->data = data;
pdata = hb_blob_lock (parent);
- hb_mutex_lock (parent->lock);
+ hb_mutex_lock (&parent->lock);
blob = hb_blob_create (pdata + offset,
MIN (length, parent->length - offset),
parent->mode,
hb_blob_reference (parent),
(hb_destroy_func_t) _hb_blob_unlock_and_destroy);
- hb_mutex_unlock (parent->lock);
+ hb_mutex_unlock (&parent->lock);
return blob;
}
if (!hb_object_destroy (blob)) return;
_hb_blob_destroy_user_data (blob);
- hb_mutex_free (blob->lock);
+ hb_mutex_free (&blob->lock);
free (blob);
}
if (hb_object_is_inert (blob))
return NULL;
- hb_mutex_lock (blob->lock);
+ hb_mutex_lock (&blob->lock);
(void) (HB_DEBUG_BLOB &&
fprintf (stderr, "%p %s (%d) -> %p\n", blob, HB_FUNC,
blob->lock_count++;
- hb_mutex_unlock (blob->lock);
+ hb_mutex_unlock (&blob->lock);
return blob->data;
}
if (hb_object_is_inert (blob))
return;
- hb_mutex_lock (blob->lock);
+ hb_mutex_lock (&blob->lock);
(void) (HB_DEBUG_BLOB &&
fprintf (stderr, "%p %s (%d) -> %p\n", blob, HB_FUNC,
assert (blob->lock_count > 0);
blob->lock_count--;
- hb_mutex_unlock (blob->lock);
+ hb_mutex_unlock (&blob->lock);
}
hb_bool_t
if (hb_object_is_inert (blob))
return FALSE;
- hb_mutex_lock (blob->lock);
+ hb_mutex_lock (&blob->lock);
mode = blob->mode;
- hb_mutex_unlock (blob->lock);
+ hb_mutex_unlock (&blob->lock);
return mode == HB_MEMORY_MODE_WRITABLE;
}
if (hb_object_is_inert (blob))
return FALSE;
- hb_mutex_lock (blob->lock);
+ hb_mutex_lock (&blob->lock);
if (blob->mode == HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE)
try_writable_inplace_locked (blob);
mode = blob->mode;
- hb_mutex_unlock (blob->lock);
+ hb_mutex_unlock (&blob->lock);
return mode == HB_MEMORY_MODE_WRITABLE;
}
if (hb_object_is_inert (blob))
return FALSE;
- hb_mutex_lock (blob->lock);
+ hb_mutex_lock (&blob->lock);
if (blob->mode == HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE)
try_writable_inplace_locked (blob);
done:
mode = blob->mode;
- hb_mutex_unlock (blob->lock);
+ hb_mutex_unlock (&blob->lock);
return mode == HB_MEMORY_MODE_WRITABLE;
}
typedef GStaticMutex hb_mutex_t;
#define HB_MUTEX_INIT G_STATIC_MUTEX_INIT
-#define hb_mutex_init(M) g_static_mutex_init (&(M))
-#define hb_mutex_lock(M) g_static_mutex_lock (&(M))
-#define hb_mutex_trylock(M) g_static_mutex_trylock (&(M))
-#define hb_mutex_unlock(M) g_static_mutex_unlock (&(M))
-#define hb_mutex_free(M) g_static_mutex_free (&(M))
+#define hb_mutex_init(M) g_static_mutex_init (M)
+#define hb_mutex_lock(M) g_static_mutex_lock (M)
+#define hb_mutex_trylock(M) g_static_mutex_trylock (M)
+#define hb_mutex_unlock(M) g_static_mutex_unlock (M)
+#define hb_mutex_free(M) g_static_mutex_free (M)
#elif defined(_MSC_VER)
typedef CRITICAL_SECTION hb_mutex_t;
#define HB_MUTEX_INIT { NULL, 0, 0, NULL, NULL, 0 }
-#define hb_mutex_init(M) InitializeCriticalSection (&(M))
-#define hb_mutex_lock(M) EnterCriticalSection (&(M))
-#define hb_mutex_trylock(M) TryEnterCriticalSection (&(M))
-#define hb_mutex_unlock(M) LeaveCriticalSection (&(M))
-#define hb_mutex_free(M) DeleteCriticalSection (&(M))
+#define hb_mutex_init(M) InitializeCriticalSection (M)
+#define hb_mutex_lock(M) EnterCriticalSection (M)
+#define hb_mutex_trylock(M) TryEnterCriticalSection (M)
+#define hb_mutex_unlock(M) LeaveCriticalSection (M)
+#define hb_mutex_free(M) DeleteCriticalSection (M)
#else
typedef volatile int hb_mutex_t;
#define HB_MUTEX_INIT 0
-#define hb_mutex_init(M) ((void) ((M) = 0))
-#define hb_mutex_lock(M) ((void) ((M) = 1))
-#define hb_mutex_trylock(M) ((M) = 1, 1)
-#define hb_mutex_unlock(M) ((void) ((M) = 0))
-#define hb_mutex_free(M) ((void) ((M) = 2))
+#define hb_mutex_init(M) ((void) (*(M) = 0))
+#define hb_mutex_lock(M) ((void) (*(M) = 1))
+#define hb_mutex_trylock(M) (*(M) = 1, 1)
+#define hb_mutex_unlock(M) ((void) (*(M) = 0))
+#define hb_mutex_free(M) ((void) (*(M) = 2))
#endif
struct hb_static_mutex_t : hb_mutex_t
{
hb_static_mutex_t (void) {
- hb_mutex_init (*this);
+ hb_mutex_init (this);
}
};