diff --git a/src/core/ngx_log.h b/src/core/ngx_log.h
index 46fbf12..375acae 100644
--- a/src/core/ngx_log.h
+++ b/src/core/ngx_log.h
@@ -126,131 +126,86 @@
 
 /*********************************/
 
+#if (NGX_DEBUG)
+
 #if (HAVE_VARIADIC_MACROS)
 
-#if (NGX_DEBUG)
 #define ngx_log_debug0(level, log, err, fmt) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt)
-#else
-#define ngx_log_debug0(level, log, err, fmt)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug1(level, log, err, fmt, arg1) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, arg1)
-#else
-#define ngx_log_debug1(level, log, err, fmt, arg1)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, arg1, arg2)
-#else
-#define ngx_log_debug2(level, log, err, fmt, arg1, arg2)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, arg1, arg2, arg3)
-#else
-#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, arg1, arg2, arg3, arg4)
-#else
-#define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, \
                            arg1, arg2, arg3, arg4, arg5)
-#else
-#define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug6(level, log, err, fmt, \
                        arg1, arg2, arg3, arg4, arg5, arg6) \
     if (log->log_level & level) \
         ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, \
                            arg1, arg2, arg3, arg4, arg5, arg6)
-#else
-#define ngx_log_debug6(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6)
-#endif
-
-/*********************************/
 
 #else /* NO VARIADIC MACROS */
 
-#if (NGX_DEBUG)
 #define ngx_log_debug0(level, log, err, fmt) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt)
-#else
-#define ngx_log_debug0(level, log, err, fmt)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug1(level, log, err, fmt, arg1) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt, arg1)
-#else
-#define ngx_log_debug1(level, log, err, fmt, arg1)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug2(level, log, err, fmt, arg1, arg2) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt, arg1, arg2)
-#else
-#define ngx_log_debug2(level, log, err, fmt, arg1, arg2)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3)
-#else
-#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4)
-#else
-#define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4, arg5)
-#else
-#define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5)
-#endif
 
-#if (NGX_DEBUG)
 #define ngx_log_debug6(level, log, err, fmt, \
                        arg1, arg2, arg3, arg4, arg5, arg6) \
     if (log->log_level & level) \
         ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6)
-#else
+
+#endif
+
+#else /* NO NGX_DEBUG */
+
+#define ngx_log_debug0(level, log, err, fmt)
+#define ngx_log_debug1(level, log, err, fmt, arg1)
+#define ngx_log_debug2(level, log, err, fmt, arg1, arg2)
+#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3)
+#define ngx_log_debug4(level, log, err, fmt, arg1, arg2, arg3, arg4)
+#define ngx_log_debug5(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5)
 #define ngx_log_debug6(level, log, err, fmt, arg1, arg2, arg3, arg4, arg5, arg6)
-#endif
 
 #endif
 
-
 /*********************************/
 
 #define ngx_log_alloc_log(pool, log)  ngx_palloc(pool, log, sizeof(ngx_log_t))
diff --git a/src/event/ngx_event_busy_lock.c b/src/event/ngx_event_busy_lock.c
index e040ad2..f224426 100644
--- a/src/event/ngx_event_busy_lock.c
+++ b/src/event/ngx_event_busy_lock.c
@@ -3,12 +3,6 @@
 #include <ngx_core.h>
 #include <ngx_event.h>
 
-/*
- * TODO: eliminate mutex and use atomic_xchg():
- *       ev->next = ev; ngx_atomic_xchg(ngx_posted_events, ev->next);
- *       in ngx_event_busy_unlock() and ngx_event_busy_lock_handler()
- */
-
 
 static int ngx_event_busy_lock_look_cachable(ngx_event_busy_lock_t *bl,
                                              ngx_event_busy_lock_ctx_t *ctx);
@@ -28,11 +22,9 @@
 {
     ngx_int_t  rc;
 
-#if (NGX_THREADS)
     if (ngx_mutex_lock(bl->mutex) == NGX_ERROR) {
         return NGX_ERROR;
     }
-#endif
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ctx->event->log, 0,
                    "event busy lock: b:%d mb:%d",
@@ -60,9 +52,7 @@
         rc = NGX_BUSY;
     }
 
-#if (NGX_THREADS)
     ngx_mutex_unlock(bl->mutex);
-#endif
 
     return rc;
 }
@@ -73,11 +63,9 @@
 {
     ngx_int_t  rc;
 
-#if (NGX_THREADS)
     if (ngx_mutex_lock(bl->mutex) == NGX_ERROR) {
         return NGX_ERROR;
     }
-#endif
 
     rc = ngx_event_busy_lock_look_cachable(bl, ctx);
 
@@ -110,9 +98,7 @@
         }
     }
 
-#if (NGX_THREADS)
     ngx_mutex_unlock(bl->mutex);
-#endif
 
     return rc;
 }
@@ -124,11 +110,9 @@
     ngx_event_t                *ev;
     ngx_event_busy_lock_ctx_t  *wakeup;
 
-#if (NGX_THREADS)
     if (ngx_mutex_lock(bl->mutex) == NGX_ERROR) {
         return NGX_ERROR;
     }
-#endif
 
     if (bl->events) {
         wakeup = bl->events;
@@ -140,57 +124,42 @@
     }
 
     /*
-     * MP:
-     * nocachable (bl->md5 == NULL): ngx_shared_mutex_unlock(mutex, !wakeup)
-     * cachable (bl->md5): ???
+     * MP: all ctx's and their queue must be in shared memory,
+     *     each ctx has pid to wake up
      */
 
     if (wakeup == NULL) {
-#if (NGX_THREADS)
         ngx_mutex_unlock(bl->mutex);
-#endif
         return NGX_OK;
     }
 
     if (ctx->md5) {
         for (wakeup = bl->events; wakeup; wakeup = wakeup->next) {
-            if (wakeup->md5 == NULL) {
+            if (wakeup->md5 == NULL || wakeup->slot != ctx->slot) {
                 continue;
             }
 
-            if (ngx_memcmp(ctx->md5, wakeup->md5, 16) != 0) {
-                continue;
-            }
-            
             wakeup->handler = ngx_event_busy_lock_posted_handler;
             wakeup->cache_updated = 1;
 
             ev = wakeup->event;
 
-#if (NGX_THREADS)
             if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
                 return NGX_ERROR;
             }
-#endif
 
             ev->next = (ngx_event_t *) ngx_posted_events;
             ngx_posted_events = ev;
 
-#if (NGX_THREADS)
             ngx_mutex_unlock(ngx_posted_events_mutex);
-#endif
         }
 
-#if (NGX_THREADS)
         ngx_mutex_unlock(bl->mutex);
-#endif
 
     } else {
         bl->waiting--;
 
-#if (NGX_THREADS)
         ngx_mutex_unlock(bl->mutex);
-#endif
 
         wakeup->handler = ngx_event_busy_lock_posted_handler;
         wakeup->locked = 1;
@@ -201,18 +170,14 @@
             ngx_del_timer(ev);
         }
 
-#if (NGX_THREADS)
         if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
             return NGX_ERROR;
         }
-#endif
 
         ev->next = (ngx_event_t *) ngx_posted_events;
         ngx_posted_events = ev;
 
-#if (NGX_THREADS)
         ngx_mutex_unlock(ngx_posted_events_mutex);
-#endif
     }
 
     return NGX_OK;
@@ -224,11 +189,9 @@
 {
     ngx_event_busy_lock_ctx_t  *c, *p;
 
-#if (NGX_THREADS)
     if (ngx_mutex_lock(bl->mutex) == NGX_ERROR) {
         return NGX_ERROR;
     }
-#endif
 
     bl->waiting--;
 
@@ -246,9 +209,7 @@
         }
     }
 
-#if (NGX_THREADS)
     ngx_mutex_unlock(bl->mutex);
-#endif
 
     return NGX_OK;
 }
@@ -276,6 +237,8 @@
 
         if (mask & 1) {
             if (ngx_memcmp(&bl->md5[i * 16], ctx->md5, 16) == 0) {
+                ctx->waiting = 1;
+                ctx->slot = i;
                 return NGX_AGAIN;
             }
             cachable++;
@@ -319,20 +282,16 @@
 
 static void ngx_event_busy_lock_handler(ngx_event_t *ev)
 {
-    ev->event_handler = ngx_event_busy_lock_posted_handler;
-
-#if (NGX_THREADS)
     if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
         return;
     }
-#endif
 
     ev->next = (ngx_event_t *) ngx_posted_events;
     ngx_posted_events = ev;
 
-#if (NGX_THREADS)
     ngx_mutex_unlock(ngx_posted_events_mutex);
-#endif
+
+    ev->event_handler = ngx_event_busy_lock_posted_handler;
 }
 
 
diff --git a/src/event/ngx_event_busy_lock.h b/src/event/ngx_event_busy_lock.h
index 061da65..3862c6f 100644
--- a/src/event/ngx_event_busy_lock.h
+++ b/src/event/ngx_event_busy_lock.h
@@ -15,6 +15,7 @@
     ngx_msec_t                  timer;
 
     unsigned                    locked:1;
+    unsigned                    waiting:1;
     unsigned                    cache_updated:1;
 
     char                       *md5;
diff --git a/src/http/ngx_http_cache.c b/src/http/ngx_http_cache.c
index 83d7982..479caea 100644
--- a/src/http/ngx_http_cache.c
+++ b/src/http/ngx_http_cache.c
@@ -40,7 +40,9 @@
 
     c = hash->elts + *crc % hash->hash * hash->nelts;
 
-    ngx_mutex_lock(&hash->mutex);
+    if (ngx_mutex_lock(&hash->mutex) == NGX_ERROR) {
+        return (void *) NGX_ERROR;
+    }
 
     for (i = 0; i < hash->nelts; i++) {
         if (c[i].crc == *crc
@@ -95,7 +97,9 @@
 
     c = hash->elts + crc % hash->hash * hash->nelts;
 
-    ngx_mutex_lock(&hash->mutex);
+    if (ngx_mutex_lock(&hash->mutex) == NGX_ERROR) {
+        return (void *) NGX_ERROR;
+    }
 
     if (cache == NULL) {
 
@@ -227,14 +231,18 @@
 
 void ngx_http_cache_lock(ngx_http_cache_hash_t *hash, ngx_http_cache_t *cache)
 {
-    ngx_mutex_lock(&hash->mutex);
+    if (ngx_mutex_lock(&hash->mutex) == NGX_ERROR) {
+        return;
+    }
 }
 
 
 void ngx_http_cache_unlock(ngx_http_cache_hash_t *hash,
                            ngx_http_cache_t *cache, ngx_log_t *log)
 {
-    ngx_mutex_lock(&hash->mutex);
+    if (ngx_mutex_lock(&hash->mutex) == NGX_ERROR) {
+        return;
+    }
 
     cache->refs--;
 
diff --git a/src/os/unix/ngx_thread.h b/src/os/unix/ngx_thread.h
index 0b065d8..a85750d 100644
--- a/src/os/unix/ngx_thread.h
+++ b/src/os/unix/ngx_thread.h
@@ -103,7 +103,7 @@
 #define ngx_log_tid  0
 #define TID_T_FMT    "%d"
 
-#define ngx_mutex_lock(m)
+#define ngx_mutex_lock(m)     NGX_OK
 #define ngx_mutex_unlock(m)
 
 #endif
