Skip to content

Commit f130d63

Browse files
stdlib: support wasi platform for Clock APIs
1 parent d1004d9 commit f130d63

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

stdlib/public/Concurrency/Clock.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void swift_get_time(
3737
clock_gettime(CLOCK_BOOTTIME, &continuous);
3838
*seconds = continuous.tv_sec;
3939
*nanoseconds = continuous.tv_nsec;
40-
#elif defined(__APPLE__) && HAS_TIME
40+
#elif (defined(__APPLE__) || defined(__wasi__)) && HAS_TIME
4141
struct timespec continuous;
4242
clock_gettime(CLOCK_MONOTONIC, &continuous);
4343
*seconds = continuous.tv_sec;
@@ -71,6 +71,11 @@ void swift_get_time(
7171
clock_gettime(CLOCK_UPTIME_RAW, &suspending);
7272
*seconds = suspending.tv_sec;
7373
*nanoseconds = suspending.tv_nsec;
74+
#elif defined(__wasi__) && HAS_TIME
75+
struct timespec suspending;
76+
clock_gettime(CLOCK_MONOTONIC, &suspending);
77+
*seconds = suspending.tv_sec;
78+
*nanoseconds = suspending.tv_nsec;
7479
#elif defined(_WIN32)
7580
LARGE_INTEGER freq;
7681
QueryPerformanceFrequency(&freq);
@@ -105,7 +110,7 @@ switch (clock_id) {
105110
clock_getres(CLOCK_BOOTTIME, &continuous);
106111
*seconds = continuous.tv_sec;
107112
*nanoseconds = continuous.tv_nsec;
108-
#elif defined(__APPLE__) && HAS_TIME
113+
#elif (defined(__APPLE__) || defined(__wasi__)) && HAS_TIME
109114
struct timespec continuous;
110115
clock_getres(CLOCK_MONOTONIC, &continuous);
111116
*seconds = continuous.tv_sec;
@@ -128,6 +133,10 @@ switch (clock_id) {
128133
clock_gettime(CLOCK_UPTIME_RAW, &suspending);
129134
*seconds = suspending.tv_sec;
130135
*nanoseconds = suspending.tv_nsec;
136+
#elif defined(__wasi__) && HAS_TIME
137+
clock_getres(CLOCK_MONOTONIC, &suspending);
138+
*seconds = suspending.tv_sec;
139+
*nanoseconds = suspending.tv_nsec;
131140
#elif defined(_WIN32)
132141
*seconds = 0;
133142
*nanoseconds = 1000;

0 commit comments

Comments
 (0)