#include <stdbool.h>
#include <stdint.h>
#include <sys/kassert.h>
#include <sys/kdebug.h>
#include <sys/ktime.h>
#include <sys/spinlock.h>
Go to the source code of this file.
◆ Debug_Date()
static void Debug_Date |
( |
| ) |
|
|
static |
Definition at line 213 of file ktime.c.
214{
217
219
220 kprintf(
"%s %s %d %02d:%02d:%02d %04d\n",
223
224 kprintf(
"Epoch: %lu\n", epoch);
225}
int kprintf(const char *fmt,...)
void KTime_FromEpoch(UnixEpoch epoch, KTime *tm)
static const char * months[12]
static const char * dayOfWeek[7]
UnixEpoch KTime_GetEpoch()
◆ Debug_Ticks()
static void Debug_Ticks |
( |
| ) |
|
|
static |
◆ KTime_Fixup()
void KTime_Fixup |
( |
KTime * |
tm | ) |
|
Definition at line 61 of file ktime.c.
62{
64
67 for (m = 0; m <
tm->month; m++) {
69 }
72 }
73}
static int KTimeDaysInMonth(uint64_t year, uint64_t month)
◆ KTime_FromEpoch()
Definition at line 109 of file ktime.c.
110{
114
115
116 secs = epoch % (60 * 60 * 24);
117 days = epoch / (60 * 60 * 24);
118 mins = secs / 60;
119 secs = secs % 60;
120
121
122 hours = mins / 60;
123 mins = mins % 60;
124
125
126 hours = hours % 24;
127
131
132 tm->wday = (days + 3) % 7;
133
134 for (y = 1970; ; y++) {
137 daysOfYear = 366;
138 } else {
139 daysOfYear = 365;
140 }
141
142 if (days < daysOfYear) {
145 break;
146 }
147 days -= daysOfYear;
148 }
149
150 for (m = 0; ; m++) {
152
153 if (days < daysOfMonth) {
156 break;
157 }
158 days -= daysOfMonth;
159 }
160}
static bool KTimeIsLeapYear(uint64_t year)
◆ KTime_GetEpoch()
Definition at line 180 of file ktime.c.
181{
184
189
190 return epoch;
191}
static Spinlock ktimeLock
static uint64_t ktimeLastTSC
static uint64_t ktimeLastEpoch
void Spinlock_Unlock(Spinlock *lock) __UNLOCK_EX(*lock)
void Spinlock_Lock(Spinlock *lock) __LOCK_EX(*lock)
◆ KTime_GetEpochNS()
Definition at line 194 of file ktime.c.
195{
198
201
202
203
204
205
208
209 return epoch;
210}
◆ KTime_GetTime()
void KTime_GetTime |
( |
KTime * |
tm | ) |
|
◆ KTime_Init()
Definition at line 26 of file ktime.c.
27{
32}
#define SPINLOCK_TYPE_NORMAL
void Spinlock_Init(Spinlock *lock, const char *name, uint64_t type)
◆ KTime_SetTime()
◆ KTime_ToEpoch()
Definition at line 76 of file ktime.c.
77{
81
82
83 for (y = 1970; y <
tm->year; y++) {
85 days += 366;
86 else
87 days += 365;
88 }
89
92 for (m = 0; m <
tm->month; m++) {
94 }
96 days += yday;
97 } else {
99 }
100
101 secs = 24 * days +
tm->hour;
102 secs = secs * 60 +
tm->min;
103 secs = secs * 60 +
tm->sec;
104
105 return secs;
106}
◆ KTimeDaysInMonth()
Definition at line 47 of file ktime.c.
48{
49 static const uint64_t days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
50
52 return 29;
53 else
54 return days[month];
55}
◆ KTimeIsLeapYear()
Definition at line 35 of file ktime.c.
36{
37 if ((year % 4) != 0)
38 return false;
39 if ((year % 100) != 0)
40 return true;
41 if ((year % 400) != 0)
42 return false;
43 return true;
44}
◆ REGISTER_DBGCMD() [1/2]
REGISTER_DBGCMD |
( |
date |
, |
|
|
"Print date" |
, |
|
|
Debug_Date |
|
|
) |
| |
◆ REGISTER_DBGCMD() [2/2]
REGISTER_DBGCMD |
( |
ticks |
, |
|
|
"Print ticks per second" |
, |
|
|
Debug_Ticks |
|
|
) |
| |
◆ dayOfWeek
const char* dayOfWeek[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } |
|
static |
◆ ktimeLastEpoch
◆ ktimeLastTSC
◆ ktimeLock
◆ months
Initial value:= {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
}
Definition at line 20 of file ktime.c.
◆ ticksPerSecond