diff src/os/unix/ngx_time.c @ 1:d220029ac7f3

nginx-0.0.1-2002-08-15-21:20:26 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 15 Aug 2002 17:20:26 +0000
parents 4eff17414a43
children a117a7fdf042
line wrap: on
line diff
--- a/src/os/unix/ngx_time.c
+++ b/src/os/unix/ngx_time.c
@@ -17,3 +17,70 @@ u_int ngx_msec(void)
     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