From f7f0d395695933bfe4397e1faf70000454f1193c Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Fri, 7 Apr 2023 18:26:50 -0700 Subject: [PATCH] time: add wasip1 support Fixes #58141 Co-authored-by: Richard Musiol Co-authored-by: Achille Roussel Co-authored-by: Julien Fabre Co-authored-by: Evan Phoenix Change-Id: I51dabbf17b8f5540c964f90223d18457f6f9fbef Reviewed-on: https://go-review.googlesource.com/c/go/+/483236 Run-TryBot: Johan Brandhorst-Satzkorn Reviewed-by: Ian Lance Taylor Auto-Submit: Ian Lance Taylor Run-TryBot: Ian Lance Taylor Auto-Submit: Johan Brandhorst-Satzkorn Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot --- src/time/sys_unix.go | 12 ++++++++++-- src/time/zoneinfo_wasip1.go | 12 ++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/time/zoneinfo_wasip1.go diff --git a/src/time/sys_unix.go b/src/time/sys_unix.go index 0f06aa6ccd..63634ace7c 100644 --- a/src/time/sys_unix.go +++ b/src/time/sys_unix.go @@ -2,18 +2,26 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build unix || (js && wasm) +//go:build unix || (js && wasm) || wasip1 package time import ( "errors" + "runtime" "syscall" ) // for testing: whatever interrupts a sleep func interrupt() { - syscall.Kill(syscall.Getpid(), syscall.SIGCHLD) + // There is no mechanism in wasi to interrupt the call to poll_oneoff + // used to implement runtime.usleep so this function does nothing, which + // somewhat defeats the purpose of TestSleep but we are still better off + // validating that time elapses when the process calls time.Sleep than + // skipping the test altogether. + if runtime.GOOS != "wasip1" { + syscall.Kill(syscall.Getpid(), syscall.SIGCHLD) + } } func open(name string) (uintptr, error) { diff --git a/src/time/zoneinfo_wasip1.go b/src/time/zoneinfo_wasip1.go new file mode 100644 index 0000000000..b6c8bbc384 --- /dev/null +++ b/src/time/zoneinfo_wasip1.go @@ -0,0 +1,12 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package time + +// in wasip1 zoneinfo is managed by the runtime. +var platformZoneSources = []string{} + +func initLocal() { + localLoc.name = "Local" +} -- 2.48.1