diff --git a/src/os/unix/ngx_recv.h b/src/os/unix/ngx_recv.h
new file mode 100644
index 0000000..e92832c
--- /dev/null
+++ b/src/os/unix/ngx_recv.h
@@ -0,0 +1,10 @@
+#ifndef _NGX_RECV_H_INCLUDED_
+#define _NGX_RECV_H_INCLUDED_
+
+
+#include <errno.h>
+
+#define ngx_recv(fd, buf, size, flags)  recv(fd, buf, size, flags)
+
+
+#endif /* _NGX_RECV_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_time.c b/src/os/unix/ngx_time.c
index d4be966..5dfcb63 100644
--- a/src/os/unix/ngx_time.c
+++ b/src/os/unix/ngx_time.c
@@ -17,3 +17,70 @@
     return tv.tv_sec * 1000 + tv.tv_usec / 1000;
 }
 
+
+#if 0
+
+typedef struct {
+    int busy;
+    u_int_64 msec;
+    time_t sec;
+    tm;
+    http_time_len;
+    http_time[n];    
+};
+
+volatile *ngx_time_p;
+
+ngx_time()
+{
+    p = ngx_time_p;
+}
+
+ngx_update_time()
+{
+    u_int64   msec;
+    struct timeval  tv;
+
+    gettimeofday(&tv, NULL);
+
+    msec = (unsigned long) tv.tv_sec * 1000 + tv.tv_usec / 1000;
+    p = ngx_time_p;
+
+    /* minimum can be for example 0, 10, 50 or 100 ms */
+    if (tv_sec > p->sec || msec - p->msec >= minimum) {
+        old_p = p;
+        /* max_tries < max_slots - 10,
+           max_slots should be more than max of threads */
+        for (/* void */; i < max_tries; i++) {
+            if (++p >= last_slot)
+                p = first_slot;
+
+            if (!test_and_set(p->busy)
+                break;
+        }
+
+        if (i == max_tries) {
+            ngx_log_error();
+            return;
+        }
+
+        if (tv_sec > p->sec) {
+            p->sec = tv.tv.sec;
+            p->msec = msec;
+            localtime_r(&tv.tv_sec, tm);
+            make http stirng;
+
+        } else {
+            ngx_memcpy(p->sec, old_p->sec, sizeof() - offset_of(, sec));
+            p->msec = msec;
+        }
+
+        /* here can be too seldom and non-critical race condition */
+        if (ngx_time_p == old_p)
+            ngx_time_p = p;
+
+        unlock(p->busy);
+    }
+}
+
+#endif
