ソースを参照

Kernel: Computing the boot timestamp was a bit broken.

Andreas Kling 6 年 前
コミット
932836e3c7
1 ファイル変更18 行追加13 行削除
  1. 18 13
      Kernel/RTC.cpp

+ 18 - 13
Kernel/RTC.cpp

@@ -33,23 +33,26 @@ inline bool is_leap_year(unsigned year)
 
 static unsigned days_in_months_since_start_of_year(unsigned month, unsigned year)
 {
+    unsigned days = 0;
     switch (month) {
-    case 11: return 30;
-    case 10: return 31;
-    case 9: return 30;
-    case 8: return 31;
-    case 7: return 31;
-    case 6: return 30;
-    case 5: return 31;
-    case 4: return 30;
-    case 3: return 31;
+    case 11: days += 30;
+    case 10: days += 31;
+    case 9: days += 30;
+    case 8: days += 31;
+    case 7: days += 31;
+    case 6: days += 30;
+    case 5: days += 31;
+    case 4: days += 30;
+    case 3: days += 31;
     case 2:
         if (is_leap_year(year))
-            return 29;
-        return 28;
-    case 1: return 31;
-    default: return 0;
+            days += 29;
+        else
+            days += 28;
+    case 1: days += 31;
+    default: break;
     }
+    return days;
 }
 
 static unsigned days_in_years_since_epoch(unsigned year)
@@ -88,6 +91,8 @@ time_t now()
     unsigned year, month, day, hour, minute, second;
     read_registers(year, month, day, hour, minute, second);
 
+    kprintf("year: %d, month: %d, day: %d\n", year, month, day);
+
     ASSERT(year >= 2018);
 
     return days_in_years_since_epoch(year - 1) * 86400