updates.
[silc.git] / lib / silcutil / silcmutex.h
index 70eed3c3c263338bda5806acdf72e7c7cf88e8c5..ef02621ee07d19bb3346a9466edceb3ab2facfce 100644 (file)
@@ -31,7 +31,7 @@
 #ifndef SILCMUTEX_H
 #define SILCMUTEX_H
 
-/* Prototypes */
+#ifdef SILC_THREADS
 
 /****s* silcutil/SilcMutexAPI/SilcMutex
  *
  ***/
 typedef struct SilcMutexStruct *SilcMutex;
 
+/****d* silcutil/SilcMutexAPI/SILC_MUTEX_DEFINE
+ *
+ * NAME
+ * 
+ *    #define SILC_MUTEX_DEFINE(name) ...
+ *
+ * DESCRIPTION
+ *
+ *    This macro is used to define new mutex.  Use this macro in an
+ *    environment that can be compiled with or without the SILC Mutex
+ *    API. This is equivalent to defining SilcMutex `name'; directly.
+ *
+ * SOURCE
+ */
+#define SILC_MUTEX_DEFINE(name) SilcMutex name
+/***/
+
 /****f* silcutil/SilcMutexAPI/silc_mutex_alloc
  *
  * SYNOPSIS
@@ -116,4 +133,14 @@ void silc_mutex_lock(SilcMutex mutex);
  ***/
 void silc_mutex_unlock(SilcMutex mutex);
 
+#else
+
+#define SILC_MUTEX_DEFINE(name)
+#define silc_mutex_alloc()
+#define silc_mutex_free(mutex)
+#define silc_mutex_lock(mutex)
+#define silc_mutex_unlock(mutex)
+
+#endif         /* SILC_THREADS */
+
 #endif