Просмотр исходного кода

get_current_time_us() never goes back now

U-DESKTOP-T772REH\wangyu 6 лет назад
Родитель
Сommit
7d481d26b9
1 измененных файлов с 23 добавлено и 5 удалено
  1. 23 5
      common.cpp

+ 23 - 5
common.cpp

@@ -430,13 +430,31 @@ int get_sock_errno()
 #endif
 
 
-u64_t get_current_time()
+u64_t get_current_time_us()
 {
-	timespec tmp_time;
-	clock_gettime(CLOCK_MONOTONIC, &tmp_time);
-	return ((u64_t)tmp_time.tv_sec)*1000llu+((u64_t)tmp_time.tv_nsec)/(1000*1000llu);
+        static u64_t value_fix=0;
+        static u64_t largest_value=0;
+
+        u64_t raw_value=(u64_t)(ev_time()*1000*1000);
+
+        u64_t fixed_value=raw_value+value_fix;
+
+        if(fixed_value< largest_value)
+        {
+                value_fix+= largest_value- fixed_value;
+        }
+        else
+        {
+                largest_value=fixed_value;
+        }
 
-	//return (u64_t)(ev_time()*1000); //todo change to this later
+	//printf("<%lld,%lld,%lld>\n",raw_value,value_fix,raw_value + value_fix);
+        return raw_value + value_fix; //new fixed value
+}
+
+u64_t get_current_time()
+{
+	return get_current_time_us()/1000;
 }
 
 u64_t pack_u64(u32_t a,u32_t b)