From d6038c5709a8421623a56f23658526636e75ea05 Mon Sep 17 00:00:00 2001 From: nickysn Date: Fri, 22 Jan 2021 01:04:19 +0000 Subject: [PATCH] + implemented do_read for WASI git-svn-id: branches/wasm@48307 - --- rtl/wasi/sysfile.inc | 8 +++++++- rtl/wasi/system.pp | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/rtl/wasi/sysfile.inc b/rtl/wasi/sysfile.inc index 9b14662776..19f0eed266 100644 --- a/rtl/wasi/sysfile.inc +++ b/rtl/wasi/sysfile.inc @@ -45,8 +45,14 @@ begin end; function Do_Read(Handle:thandle;Addr:Pointer;Len:Longint):Longint; +var + our_iov: __wasi_iovec_t; + our_nread: __wasi_size_t; begin - DebugWriteLn('Do_Read'); + our_iov.buf:=Addr; + our_iov.buf_len:=Len; + fd_read(Handle,@our_iov,1,@our_nread); + Do_Read:=our_nread; end; function Do_FilePos(Handle: thandle):Int64; diff --git a/rtl/wasi/system.pp b/rtl/wasi/system.pp index dfe63fc542..20f9a905f3 100644 --- a/rtl/wasi/system.pp +++ b/rtl/wasi/system.pp @@ -50,6 +50,12 @@ type size_t = longint; __wasi_errno_t = longint; + P__wasi_iovec_t = ^__wasi_iovec_t; + __wasi_iovec_t = record + buf: PUInt8; + buf_len: __wasi_size_t; + end; + P__wasi_ciovec_t = ^__wasi_ciovec_t; __wasi_ciovec_t = record buf: pointer; @@ -62,6 +68,10 @@ function fd_write(fd: __wasi_fd_t; iovs: P__wasi_ciovec_t; iovs_len: size_t; nwritten: P__wasi_size_t): __wasi_errno_t; external 'wasi_snapshot_preview1'; +function fd_read(fd: __wasi_fd_t; + iovs: P__wasi_iovec_t; + iovs_len: size_t; + nread: P__wasi_size_t): __wasi_errno_t; external 'wasi_snapshot_preview1'; procedure proc_exit(rval: __wasi_exitcode_t); noreturn; external 'wasi_snapshot_preview1'; {$I system.inc}