aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/go/build/deps_test.go4
-rw-r--r--src/internal/syscall/unix/at_wasip1.go12
-rw-r--r--src/runtime/netpoll_wasip1.go2
-rw-r--r--src/runtime/os_wasip1.go44
-rw-r--r--src/syscall/fs_wasip1.go101
-rw-r--r--src/syscall/net_wasip1.go6
-rw-r--r--src/syscall/syscall_wasip1.go4
7 files changed, 89 insertions, 84 deletions
diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go
index c71d82f178..44f98aafb2 100644
--- a/src/go/build/deps_test.go
+++ b/src/go/build/deps_test.go
@@ -61,6 +61,7 @@ var depsRules = `
internal/trace/traceviewer/format,
log/internal,
math/bits,
+ structs,
unicode,
unicode/utf8,
unicode/utf16;
@@ -78,7 +79,8 @@ var depsRules = `
internal/goexperiment,
internal/goos,
internal/profilerecord,
- math/bits
+ math/bits,
+ structs
< internal/bytealg
< internal/stringslite
< internal/itoa
diff --git a/src/internal/syscall/unix/at_wasip1.go b/src/internal/syscall/unix/at_wasip1.go
index 888b156741..45ae22afcc 100644
--- a/src/internal/syscall/unix/at_wasip1.go
+++ b/src/internal/syscall/unix/at_wasip1.go
@@ -27,11 +27,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (int, error) {
var nwritten size
errno := path_readlink(
int32(dirfd),
- unsafe.Pointer(unsafe.StringData(path)),
+ unsafe.StringData(path),
size(len(path)),
- unsafe.Pointer(&buf[0]),
+ &buf[0],
size(len(buf)),
- unsafe.Pointer(&nwritten))
+ &nwritten)
return int(nwritten), errnoErr(errno)
}
@@ -42,7 +42,7 @@ type (
//go:wasmimport wasi_snapshot_preview1 path_readlink
//go:noescape
-func path_readlink(fd int32, path unsafe.Pointer, pathLen size, buf unsafe.Pointer, bufLen size, nwritten unsafe.Pointer) syscall.Errno
+func path_readlink(fd int32, path *byte, pathLen size, buf *byte, bufLen size, nwritten *size) syscall.Errno
func Mkdirat(dirfd int, path string, mode uint32) error {
if path == "" {
@@ -50,14 +50,14 @@ func Mkdirat(dirfd int, path string, mode uint32) error {
}
return errnoErr(path_create_directory(
int32(dirfd),
- unsafe.Pointer(unsafe.StringData(path)),
+ unsafe.StringData(path),
size(len(path)),
))
}
//go:wasmimport wasi_snapshot_preview1 path_create_directory
//go:noescape
-func path_create_directory(fd int32, path unsafe.Pointer, pathLen size) syscall.Errno
+func path_create_directory(fd int32, path *byte, pathLen size) syscall.Errno
func errnoErr(errno syscall.Errno) error {
if errno == 0 {
diff --git a/src/runtime/netpoll_wasip1.go b/src/runtime/netpoll_wasip1.go
index e6b299a20f..c7e66a64dd 100644
--- a/src/runtime/netpoll_wasip1.go
+++ b/src/runtime/netpoll_wasip1.go
@@ -209,7 +209,7 @@ func netpoll(delay int64) (gList, int32) {
retry:
var nevents size
- errno := poll_oneoff(unsafe.Pointer(&pollsubs[0]), unsafe.Pointer(&evts[0]), uint32(len(pollsubs)), unsafe.Pointer(&nevents))
+ errno := poll_oneoff(&pollsubs[0], &evts[0], uint32(len(pollsubs)), &nevents)
if errno != 0 {
if errno != _EINTR {
println("errno=", errno, " len(pollsubs)=", len(pollsubs))
diff --git a/src/runtime/os_wasip1.go b/src/runtime/os_wasip1.go
index acac2b3f7a..ed4f646a62 100644
--- a/src/runtime/os_wasip1.go
+++ b/src/runtime/os_wasip1.go
@@ -6,7 +6,10 @@
package runtime
-import "unsafe"
+import (
+ "structs"
+ "unsafe"
+)
// GOARCH=wasm currently has 64 bits pointers, but the WebAssembly host expects
// pointers to be 32 bits so we use this type alias to represent pointers in
@@ -48,31 +51,31 @@ func exit(code int32)
//go:wasmimport wasi_snapshot_preview1 args_get
//go:noescape
-func args_get(argv, argvBuf unsafe.Pointer) errno
+func args_get(argv *uintptr32, argvBuf *byte) errno
//go:wasmimport wasi_snapshot_preview1 args_sizes_get
//go:noescape
-func args_sizes_get(argc, argvBufLen unsafe.Pointer) errno
+func args_sizes_get(argc, argvBufLen *size) errno
//go:wasmimport wasi_snapshot_preview1 clock_time_get
//go:noescape
-func clock_time_get(clock_id clockid, precision timestamp, time unsafe.Pointer) errno
+func clock_time_get(clock_id clockid, precision timestamp, time *timestamp) errno
//go:wasmimport wasi_snapshot_preview1 environ_get
//go:noescape
-func environ_get(environ, environBuf unsafe.Pointer) errno
+func environ_get(environ *uintptr32, environBuf *byte) errno
//go:wasmimport wasi_snapshot_preview1 environ_sizes_get
//go:noescape
-func environ_sizes_get(environCount, environBufLen unsafe.Pointer) errno
+func environ_sizes_get(environCount, environBufLen *size) errno
//go:wasmimport wasi_snapshot_preview1 fd_write
//go:noescape
-func fd_write(fd int32, iovs unsafe.Pointer, iovsLen size, nwritten unsafe.Pointer) errno
+func fd_write(fd int32, iovs unsafe.Pointer, iovsLen size, nwritten *size) errno
//go:wasmimport wasi_snapshot_preview1 random_get
//go:noescape
-func random_get(buf unsafe.Pointer, bufLen size) errno
+func random_get(buf *byte, bufLen size) errno
type eventtype = uint8
@@ -99,6 +102,7 @@ type userdata = uint64
// struct size because errno is declared as a 32 bits type, so we declare the
// error field as a plain uint16.
type event struct {
+ _ structs.HostLayout
userdata userdata
error uint16
typ eventtype
@@ -106,6 +110,7 @@ type event struct {
}
type eventFdReadwrite struct {
+ _ structs.HostLayout
nbytes filesize
flags eventrwflags
}
@@ -117,6 +122,7 @@ const (
)
type subscriptionClock struct {
+ _ structs.HostLayout
id clockid
timeout timestamp
precision timestamp
@@ -124,10 +130,12 @@ type subscriptionClock struct {
}
type subscriptionFdReadwrite struct {
+ _ structs.HostLayout
fd int32
}
type subscription struct {
+ _ structs.HostLayout
userdata userdata
u subscriptionUnion
}
@@ -148,7 +156,7 @@ func (u *subscriptionUnion) subscriptionFdReadwrite() *subscriptionFdReadwrite {
//go:wasmimport wasi_snapshot_preview1 poll_oneoff
//go:noescape
-func poll_oneoff(in, out unsafe.Pointer, nsubscriptions size, nevents unsafe.Pointer) errno
+func poll_oneoff(in *subscription, out *event, nsubscriptions size, nevents *size) errno
func write1(fd uintptr, p unsafe.Pointer, n int32) int32 {
iov := iovec{
@@ -156,7 +164,7 @@ func write1(fd uintptr, p unsafe.Pointer, n int32) int32 {
bufLen: size(n),
}
var nwritten size
- if fd_write(int32(fd), unsafe.Pointer(&iov), 1, unsafe.Pointer(&nwritten)) != 0 {
+ if fd_write(int32(fd), unsafe.Pointer(&iov), 1, &nwritten) != 0 {
throw("fd_write failed")
}
return int32(nwritten)
@@ -175,13 +183,13 @@ func usleep(usec uint32) {
subscription.timeout = timestamp(usec) * 1e3
subscription.precision = 1e3
- if poll_oneoff(unsafe.Pointer(&in), unsafe.Pointer(&out), 1, unsafe.Pointer(&nevents)) != 0 {
+ if poll_oneoff(&in, &out, 1, &nevents) != 0 {
throw("wasi_snapshot_preview1.poll_oneoff")
}
}
func readRandom(r []byte) int {
- if random_get(unsafe.Pointer(&r[0]), size(len(r))) != 0 {
+ if random_get(&r[0], size(len(r))) != 0 {
return 0
}
return len(r)
@@ -191,7 +199,7 @@ func goenvs() {
// arguments
var argc size
var argvBufLen size
- if args_sizes_get(unsafe.Pointer(&argc), unsafe.Pointer(&argvBufLen)) != 0 {
+ if args_sizes_get(&argc, &argvBufLen) != 0 {
throw("args_sizes_get failed")
}
@@ -199,7 +207,7 @@ func goenvs() {
if argc > 0 {
argv := make([]uintptr32, argc)
argvBuf := make([]byte, argvBufLen)
- if args_get(unsafe.Pointer(&argv[0]), unsafe.Pointer(&argvBuf[0])) != 0 {
+ if args_get(&argv[0], &argvBuf[0]) != 0 {
throw("args_get failed")
}
@@ -216,7 +224,7 @@ func goenvs() {
// environment
var environCount size
var environBufLen size
- if environ_sizes_get(unsafe.Pointer(&environCount), unsafe.Pointer(&environBufLen)) != 0 {
+ if environ_sizes_get(&environCount, &environBufLen) != 0 {
throw("environ_sizes_get failed")
}
@@ -224,7 +232,7 @@ func goenvs() {
if environCount > 0 {
environ := make([]uintptr32, environCount)
environBuf := make([]byte, environBufLen)
- if environ_get(unsafe.Pointer(&environ[0]), unsafe.Pointer(&environBuf[0])) != 0 {
+ if environ_get(&environ[0], &environBuf[0]) != 0 {
throw("environ_get failed")
}
@@ -245,7 +253,7 @@ func walltime() (sec int64, nsec int32) {
func walltime1() (sec int64, nsec int32) {
var time timestamp
- if clock_time_get(clockRealtime, 0, unsafe.Pointer(&time)) != 0 {
+ if clock_time_get(clockRealtime, 0, &time) != 0 {
throw("clock_time_get failed")
}
return int64(time / 1000000000), int32(time % 1000000000)
@@ -253,7 +261,7 @@ func walltime1() (sec int64, nsec int32) {
func nanotime1() int64 {
var time timestamp
- if clock_time_get(clockMonotonic, 0, unsafe.Pointer(&time)) != 0 {
+ if clock_time_get(clockMonotonic, 0, &time) != 0 {
throw("clock_time_get failed")
}
return int64(time)
diff --git a/src/syscall/fs_wasip1.go b/src/syscall/fs_wasip1.go
index da36d8f5b8..0eff07e95a 100644
--- a/src/syscall/fs_wasip1.go
+++ b/src/syscall/fs_wasip1.go
@@ -9,6 +9,7 @@ package syscall
import (
"internal/stringslite"
"runtime"
+ "structs"
"unsafe"
)
@@ -40,6 +41,7 @@ type filedelta = int64
type fstflags = uint32
type iovec struct {
+ _ structs.HostLayout
buf uintptr32
bufLen size
}
@@ -190,23 +192,23 @@ func fd_filestat_set_size(fd int32, set_size filesize) Errno
//
//go:wasmimport wasi_snapshot_preview1 fd_pread
//go:noescape
-func fd_pread(fd int32, iovs unsafe.Pointer, iovsLen size, offset filesize, nread unsafe.Pointer) Errno
+func fd_pread(fd int32, iovs *iovec, iovsLen size, offset filesize, nread *size) Errno
//go:wasmimport wasi_snapshot_preview1 fd_pwrite
//go:noescape
-func fd_pwrite(fd int32, iovs unsafe.Pointer, iovsLen size, offset filesize, nwritten unsafe.Pointer) Errno
+func fd_pwrite(fd int32, iovs *iovec, iovsLen size, offset filesize, nwritten *size) Errno
//go:wasmimport wasi_snapshot_preview1 fd_read
//go:noescape
-func fd_read(fd int32, iovs unsafe.Pointer, iovsLen size, nread unsafe.Pointer) Errno
+func fd_read(fd int32, iovs *iovec, iovsLen size, nread *size) Errno
//go:wasmimport wasi_snapshot_preview1 fd_readdir
//go:noescape
-func fd_readdir(fd int32, buf unsafe.Pointer, bufLen size, cookie dircookie, nwritten unsafe.Pointer) Errno
+func fd_readdir(fd int32, buf *byte, bufLen size, cookie dircookie, nwritten *size) Errno
//go:wasmimport wasi_snapshot_preview1 fd_seek
//go:noescape
-func fd_seek(fd int32, offset filedelta, whence uint32, newoffset unsafe.Pointer) Errno
+func fd_seek(fd int32, offset filedelta, whence uint32, newoffset *filesize) Errno
// https://github.com/WebAssembly/WASI/blob/a2b96e81c0586125cc4dc79a5be0b78d9a059925/legacy/preview1/docs.md#-fd_fdstat_set_rightsfd-fd-fs_rights_base-rights-fs_rights_inheriting-rights---result-errno
//
@@ -220,7 +222,7 @@ func fd_filestat_get(fd int32, buf unsafe.Pointer) Errno
//go:wasmimport wasi_snapshot_preview1 fd_write
//go:noescape
-func fd_write(fd int32, iovs unsafe.Pointer, iovsLen size, nwritten unsafe.Pointer) Errno
+func fd_write(fd int32, iovs *iovec, iovsLen size, nwritten *size) Errno
//go:wasmimport wasi_snapshot_preview1 fd_sync
//go:noescape
@@ -228,52 +230,53 @@ func fd_sync(fd int32) Errno
//go:wasmimport wasi_snapshot_preview1 path_create_directory
//go:noescape
-func path_create_directory(fd int32, path unsafe.Pointer, pathLen size) Errno
+func path_create_directory(fd int32, path *byte, pathLen size) Errno
//go:wasmimport wasi_snapshot_preview1 path_filestat_get
//go:noescape
-func path_filestat_get(fd int32, flags lookupflags, path unsafe.Pointer, pathLen size, buf unsafe.Pointer) Errno
+func path_filestat_get(fd int32, flags lookupflags, path *byte, pathLen size, buf unsafe.Pointer) Errno
//go:wasmimport wasi_snapshot_preview1 path_filestat_set_times
//go:noescape
-func path_filestat_set_times(fd int32, flags lookupflags, path unsafe.Pointer, pathLen size, atim timestamp, mtim timestamp, fstflags fstflags) Errno
+func path_filestat_set_times(fd int32, flags lookupflags, path *byte, pathLen size, atim timestamp, mtim timestamp, fstflags fstflags) Errno
//go:wasmimport wasi_snapshot_preview1 path_link
//go:noescape
-func path_link(oldFd int32, oldFlags lookupflags, oldPath unsafe.Pointer, oldPathLen size, newFd int32, newPath unsafe.Pointer, newPathLen size) Errno
+func path_link(oldFd int32, oldFlags lookupflags, oldPath *byte, oldPathLen size, newFd int32, newPath *byte, newPathLen size) Errno
//go:wasmimport wasi_snapshot_preview1 path_readlink
//go:noescape
-func path_readlink(fd int32, path unsafe.Pointer, pathLen size, buf unsafe.Pointer, bufLen size, nwritten unsafe.Pointer) Errno
+func path_readlink(fd int32, path *byte, pathLen size, buf *byte, bufLen size, nwritten *size) Errno
//go:wasmimport wasi_snapshot_preview1 path_remove_directory
//go:noescape
-func path_remove_directory(fd int32, path unsafe.Pointer, pathLen size) Errno
+func path_remove_directory(fd int32, path *byte, pathLen size) Errno
//go:wasmimport wasi_snapshot_preview1 path_rename
//go:noescape
-func path_rename(oldFd int32, oldPath unsafe.Pointer, oldPathLen size, newFd int32, newPath unsafe.Pointer, newPathLen size) Errno
+func path_rename(oldFd int32, oldPath *byte, oldPathLen size, newFd int32, newPath *byte, newPathLen size) Errno
//go:wasmimport wasi_snapshot_preview1 path_symlink
//go:noescape
-func path_symlink(oldPath unsafe.Pointer, oldPathLen size, fd int32, newPath unsafe.Pointer, newPathLen size) Errno
+func path_symlink(oldPath *byte, oldPathLen size, fd int32, newPath *byte, newPathLen size) Errno
//go:wasmimport wasi_snapshot_preview1 path_unlink_file
//go:noescape
-func path_unlink_file(fd int32, path unsafe.Pointer, pathLen size) Errno
+func path_unlink_file(fd int32, path *byte, pathLen size) Errno
//go:wasmimport wasi_snapshot_preview1 path_open
//go:noescape
-func path_open(rootFD int32, dirflags lookupflags, path unsafe.Pointer, pathLen size, oflags oflags, fsRightsBase rights, fsRightsInheriting rights, fsFlags fdflags, fd unsafe.Pointer) Errno
+func path_open(rootFD int32, dirflags lookupflags, path *byte, pathLen size, oflags oflags, fsRightsBase rights, fsRightsInheriting rights, fsFlags fdflags, fd *int32) Errno
//go:wasmimport wasi_snapshot_preview1 random_get
//go:noescape
-func random_get(buf unsafe.Pointer, bufLen size) Errno
+func random_get(buf *byte, bufLen size) Errno
// https://github.com/WebAssembly/WASI/blob/a2b96e81c0586125cc4dc79a5be0b78d9a059925/legacy/preview1/docs.md#-fdstat-record
// fdflags must be at offset 2, hence the uint16 type rather than the
// fdflags (uint32) type.
type fdstat struct {
+ _ structs.HostLayout
filetype filetype
fdflags uint16
rightsBase rights
@@ -282,7 +285,7 @@ type fdstat struct {
//go:wasmimport wasi_snapshot_preview1 fd_fdstat_get
//go:noescape
-func fd_fdstat_get(fd int32, buf unsafe.Pointer) Errno
+func fd_fdstat_get(fd int32, buf *fdstat) Errno
//go:wasmimport wasi_snapshot_preview1 fd_fdstat_set_flags
//go:noescape
@@ -293,7 +296,7 @@ func fd_fdstat_set_flags(fd int32, flags fdflags) Errno
func fd_fdstat_get_flags(fd int) (uint32, error) {
var stat fdstat
- errno := fd_fdstat_get(int32(fd), unsafe.Pointer(&stat))
+ errno := fd_fdstat_get(int32(fd), &stat)
return uint32(stat.fdflags), errnoErr(errno)
}
@@ -302,7 +305,7 @@ func fd_fdstat_get_flags(fd int) (uint32, error) {
func fd_fdstat_get_type(fd int) (uint8, error) {
var stat fdstat
- errno := fd_fdstat_get(int32(fd), unsafe.Pointer(&stat))
+ errno := fd_fdstat_get(int32(fd), &stat)
return stat.filetype, errnoErr(errno)
}
@@ -313,21 +316,23 @@ const (
)
type prestatDir struct {
+ _ structs.HostLayout
prNameLen size
}
type prestat struct {
+ _ structs.HostLayout
typ preopentype
dir prestatDir
}
//go:wasmimport wasi_snapshot_preview1 fd_prestat_get
//go:noescape
-func fd_prestat_get(fd int32, prestat unsafe.Pointer) Errno
+func fd_prestat_get(fd int32, prestat *prestat) Errno
//go:wasmimport wasi_snapshot_preview1 fd_prestat_dir_name
//go:noescape
-func fd_prestat_dir_name(fd int32, path unsafe.Pointer, pathLen size) Errno
+func fd_prestat_dir_name(fd int32, path *byte, pathLen size) Errno
type opendir struct {
fd int32
@@ -354,7 +359,7 @@ func init() {
for preopenFd := int32(3); ; preopenFd++ {
var prestat prestat
- errno := fd_prestat_get(preopenFd, unsafe.Pointer(&prestat))
+ errno := fd_prestat_get(preopenFd, &prestat)
if errno == EBADF {
break
}
@@ -368,7 +373,7 @@ func init() {
dirNameBuf = make([]byte, prestat.dir.prNameLen)
}
- errno = fd_prestat_dir_name(preopenFd, unsafe.Pointer(&dirNameBuf[0]), prestat.dir.prNameLen)
+ errno = fd_prestat_dir_name(preopenFd, &dirNameBuf[0], prestat.dir.prNameLen)
if errno != 0 {
panic("fd_prestat_dir_name: " + errno.Error())
}
@@ -488,7 +493,7 @@ func isDir(path string) bool {
//
// If the path argument is not absolute, it is first appended to the current
// working directory before resolution.
-func preparePath(path string) (int32, unsafe.Pointer, size) {
+func preparePath(path string) (int32, *byte, size) {
var dirFd = int32(-1)
var dirName string
@@ -512,7 +517,7 @@ func preparePath(path string) (int32, unsafe.Pointer, size) {
path = "."
}
- return dirFd, stringPointer(path), size(len(path))
+ return dirFd, unsafe.StringData(path), size(len(path))
}
func Open(path string, openmode int, perm uint32) (int, error) {
@@ -524,10 +529,10 @@ func Open(path string, openmode int, perm uint32) (int, error) {
}
func Openat(dirFd int, path string, openmode int, perm uint32) (int, error) {
- return openat(int32(dirFd), stringPointer(path), size(len(path)), openmode, perm)
+ return openat(int32(dirFd), unsafe.StringData(path), size(len(path)), openmode, perm)
}
-func openat(dirFd int32, pathPtr unsafe.Pointer, pathLen size, openmode int, perm uint32) (int, error) {
+func openat(dirFd int32, pathPtr *byte, pathLen size, openmode int, perm uint32) (int, error) {
var oflags oflags
if (openmode & O_CREATE) != 0 {
oflags |= OFLAG_CREATE
@@ -580,7 +585,7 @@ func openat(dirFd int32, pathPtr unsafe.Pointer, pathLen size, openmode int, per
rights,
fileRights,
fdflags,
- unsafe.Pointer(&fd),
+ &fd,
)
if errno == EISDIR && oflags == 0 && fdflags == 0 && ((rights & writeRights) == 0) {
// wasmtime and wasmedge will error if attempting to open a directory
@@ -601,7 +606,7 @@ func openat(dirFd int32, pathPtr unsafe.Pointer, pathLen size, openmode int, per
rights&dirRights,
fileRights,
fdflags,
- unsafe.Pointer(&fd),
+ &fd,
)
}
return int(fd), errnoErr(errno)
@@ -627,7 +632,7 @@ func Mkdir(path string, perm uint32) error {
func ReadDir(fd int, buf []byte, cookie dircookie) (int, error) {
var nwritten size
- errno := fd_readdir(int32(fd), unsafe.Pointer(&buf[0]), size(len(buf)), cookie, unsafe.Pointer(&nwritten))
+ errno := fd_readdir(int32(fd), &buf[0], size(len(buf)), cookie, &nwritten)
return int(nwritten), errnoErr(errno)
}
@@ -835,9 +840,9 @@ func Readlink(path string, buf []byte) (n int, err error) {
dirFd,
pathPtr,
pathLen,
- unsafe.Pointer(&buf[0]),
+ &buf[0],
size(len(buf)),
- unsafe.Pointer(&nwritten),
+ &nwritten,
)
// For some reason wasmtime returns ERANGE when the output buffer is
// shorter than the symbolic link value. os.Readlink expects a nil
@@ -871,7 +876,7 @@ func Symlink(path, link string) error {
}
dirFd, pathPtr, pathlen := preparePath(link)
errno := path_symlink(
- stringPointer(path),
+ unsafe.StringData(path),
size(len(path)),
dirFd,
pathPtr,
@@ -885,52 +890,44 @@ func Fsync(fd int) error {
return errnoErr(errno)
}
-func bytesPointer(b []byte) unsafe.Pointer {
- return unsafe.Pointer(unsafe.SliceData(b))
-}
-
-func stringPointer(s string) unsafe.Pointer {
- return unsafe.Pointer(unsafe.StringData(s))
-}
-
-func makeIOVec(b []byte) unsafe.Pointer {
- return unsafe.Pointer(&iovec{
- buf: uintptr32(uintptr(bytesPointer(b))),
+func makeIOVec(b []byte) *iovec {
+ return &iovec{
+ buf: uintptr32(uintptr(unsafe.Pointer(unsafe.SliceData(b)))),
bufLen: size(len(b)),
- })
+ }
}
func Read(fd int, b []byte) (int, error) {
var nread size
- errno := fd_read(int32(fd), makeIOVec(b), 1, unsafe.Pointer(&nread))
+ errno := fd_read(int32(fd), makeIOVec(b), 1, &nread)
runtime.KeepAlive(b)
return int(nread), errnoErr(errno)
}
func Write(fd int, b []byte) (int, error) {
var nwritten size
- errno := fd_write(int32(fd), makeIOVec(b), 1, unsafe.Pointer(&nwritten))
+ errno := fd_write(int32(fd), makeIOVec(b), 1, &nwritten)
runtime.KeepAlive(b)
return int(nwritten), errnoErr(errno)
}
func Pread(fd int, b []byte, offset int64) (int, error) {
var nread size
- errno := fd_pread(int32(fd), makeIOVec(b), 1, filesize(offset), unsafe.Pointer(&nread))
+ errno := fd_pread(int32(fd), makeIOVec(b), 1, filesize(offset), &nread)
runtime.KeepAlive(b)
return int(nread), errnoErr(errno)
}
func Pwrite(fd int, b []byte, offset int64) (int, error) {
var nwritten size
- errno := fd_pwrite(int32(fd), makeIOVec(b), 1, filesize(offset), unsafe.Pointer(&nwritten))
+ errno := fd_pwrite(int32(fd), makeIOVec(b), 1, filesize(offset), &nwritten)
runtime.KeepAlive(b)
return int(nwritten), errnoErr(errno)
}
func Seek(fd int, offset int64, whence int) (int64, error) {
var newoffset filesize
- errno := fd_seek(int32(fd), filedelta(offset), uint32(whence), unsafe.Pointer(&newoffset))
+ errno := fd_seek(int32(fd), filedelta(offset), uint32(whence), &newoffset)
return int64(newoffset), errnoErr(errno)
}
@@ -947,6 +944,6 @@ func Pipe(fd []int) error {
}
func RandomGet(b []byte) error {
- errno := random_get(bytesPointer(b), size(len(b)))
+ errno := random_get(unsafe.SliceData(b), size(len(b)))
return errnoErr(errno)
}
diff --git a/src/syscall/net_wasip1.go b/src/syscall/net_wasip1.go
index 3918840a7e..fefd939a0a 100644
--- a/src/syscall/net_wasip1.go
+++ b/src/syscall/net_wasip1.go
@@ -6,8 +6,6 @@
package syscall
-import "unsafe"
-
const (
SHUT_RD = 0x1
SHUT_WR = 0x2
@@ -18,7 +16,7 @@ type sdflags = uint32
//go:wasmimport wasi_snapshot_preview1 sock_accept
//go:noescape
-func sock_accept(fd int32, flags fdflags, newfd unsafe.Pointer) Errno
+func sock_accept(fd int32, flags fdflags, newfd *int32) Errno
//go:wasmimport wasi_snapshot_preview1 sock_shutdown
//go:noescape
@@ -42,7 +40,7 @@ func Listen(fd int, backlog int) error {
func Accept(fd int) (int, Sockaddr, error) {
var newfd int32
- errno := sock_accept(int32(fd), 0, unsafe.Pointer(&newfd))
+ errno := sock_accept(int32(fd), 0, &newfd)
return int(newfd), nil, errnoErr(errno)
}
diff --git a/src/syscall/syscall_wasip1.go b/src/syscall/syscall_wasip1.go
index a125777933..c9225293a0 100644
--- a/src/syscall/syscall_wasip1.go
+++ b/src/syscall/syscall_wasip1.go
@@ -383,7 +383,7 @@ func Getppid() int {
func Gettimeofday(tv *Timeval) error {
var time timestamp
- if errno := clock_time_get(clockRealtime, 1e3, unsafe.Pointer(&time)); errno != 0 {
+ if errno := clock_time_get(clockRealtime, 1e3, &time); errno != 0 {
return errno
}
tv.setTimestamp(time)
@@ -465,7 +465,7 @@ const (
//go:wasmimport wasi_snapshot_preview1 clock_time_get
//go:noescape
-func clock_time_get(id clockid, precision timestamp, time unsafe.Pointer) Errno
+func clock_time_get(id clockid, precision timestamp, time *timestamp) Errno
func SetNonblock(fd int, nonblocking bool) error {
flags, err := fd_fdstat_get_flags(fd)