Skip to content

Commit b6baa3f

Browse files
Merge pull request #58514 from kateinoigakukun/katei/upstream-clock-cpp
[stdlib] Port SE-0329 Clock APIs to WASI
2 parents b0c4947 + 50e5997 commit b6baa3f

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
@@ -42,7 +42,7 @@ void swift_get_time(
4242
clock_gettime(CLOCK_MONOTONIC_RAW, &continuous);
4343
*seconds = continuous.tv_sec;
4444
*nanoseconds = continuous.tv_nsec;
45-
#elif defined(__OpenBSD__) && HAS_TIME
45+
#elif (defined(__OpenBSD__) || defined(__wasi__)) && HAS_TIME
4646
struct timespec continuous;
4747
clock_gettime(CLOCK_MONOTONIC, &continuous);
4848
*seconds = continuous.tv_sec;
@@ -76,6 +76,11 @@ void swift_get_time(
7676
clock_gettime(CLOCK_UPTIME_RAW, &suspending);
7777
*seconds = suspending.tv_sec;
7878
*nanoseconds = suspending.tv_nsec;
79+
#elif defined(__wasi__) && HAS_TIME
80+
struct timespec suspending;
81+
clock_gettime(CLOCK_MONOTONIC, &suspending);
82+
*seconds = suspending.tv_sec;
83+
*nanoseconds = suspending.tv_nsec;
7984
#elif defined(__OpenBSD__) && HAS_TIME
8085
struct timespec suspending;
8186
clock_gettime(CLOCK_UPTIME, &suspending);
@@ -121,7 +126,7 @@ switch (clock_id) {
121126
clock_getres(CLOCK_MONOTONIC_RAW, &continuous);
122127
*seconds = continuous.tv_sec;
123128
*nanoseconds = continuous.tv_nsec;
124-
#elif defined(__OpenBSD__) && HAS_TIME
129+
#elif (defined(__OpenBSD__) || defined(__wasi__)) && HAS_TIME
125130
struct timespec continuous;
126131
clock_getres(CLOCK_MONOTONIC, &continuous);
127132
*seconds = continuous.tv_sec;
@@ -144,6 +149,10 @@ switch (clock_id) {
144149
clock_getres(CLOCK_UPTIME_RAW, &suspending);
145150
*seconds = suspending.tv_sec;
146151
*nanoseconds = suspending.tv_nsec;
152+
#elif defined(__wasi__) && HAS_TIME
153+
clock_getres(CLOCK_MONOTONIC, &suspending);
154+
*seconds = suspending.tv_sec;
155+
*nanoseconds = suspending.tv_nsec;
147156
#elif defined(__OpenBSD__) && HAS_TIME
148157
clock_getres(CLOCK_UPTIME, &suspending);
149158
*seconds = suspending.tv_sec;

0 commit comments

Comments
 (0)