Abstract POSIX filesystem functions (#2585)
To allow non-POSIX platforms such as Windows to support WASI libc filesystem functionality, create a set of wrapper functions which provide a platform-agnostic interface to interact with the host filesystem. For now, the Windows implementation is stubbed but this will be implemented properly in a future PR. There are no functional changes in this change, just a reorganization of code to move any direct POSIX references out of posix.c in the libc implementation into posix_file.c under the shared POSIX sources. See https://github.com/bytecodealliance/wasm-micro-runtime/issues/2495 for a more detailed overview of the plan to port the WASI libc filesystem to Windows.
This commit is contained in:
@ -64,4 +64,8 @@ int signbit(double x);
|
||||
int isnan(double x);
|
||||
/* clang-format on */
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#endif /* end of _BH_PLATFORM_H */
|
||||
|
||||
@ -146,6 +146,10 @@ preadv(int __fd, const struct iovec *__iov, int __count, off_t __offset);
|
||||
ssize_t
|
||||
pwritev(int __fd, const struct iovec *__iov, int __count, off_t __offset);
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
256
core/shared/platform/common/libc-util/libc_errno.c
Normal file
256
core/shared/platform/common/libc-util/libc_errno.c
Normal file
@ -0,0 +1,256 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#include "errno.h"
|
||||
#include "libc_errno.h"
|
||||
|
||||
__wasi_errno_t
|
||||
convert_errno(int error)
|
||||
{
|
||||
// The C standard library only requires EDOM, EILSEQ and ERANGE to be
|
||||
// defined. Other error codes are POSIX-specific and hence may or may
|
||||
// not be available on non-POSIX platforms.
|
||||
__wasi_errno_t code = __WASI_ENOSYS;
|
||||
#define X(v) \
|
||||
case v: \
|
||||
code = __WASI_##v; \
|
||||
break;
|
||||
switch (error) {
|
||||
X(EDOM)
|
||||
X(EILSEQ)
|
||||
X(ERANGE)
|
||||
#ifdef E2BIG
|
||||
X(E2BIG)
|
||||
#endif
|
||||
#ifdef EACCES
|
||||
X(EACCES)
|
||||
#endif
|
||||
#ifdef EADDRINUSE
|
||||
X(EADDRINUSE)
|
||||
#endif
|
||||
#ifdef EADDRNOTAVAIL
|
||||
X(EADDRNOTAVAIL)
|
||||
#endif
|
||||
#ifdef EAFNOSUPPORT
|
||||
X(EAFNOSUPPORT)
|
||||
#endif
|
||||
#ifdef EAGAIN
|
||||
X(EAGAIN)
|
||||
#endif
|
||||
#ifdef EALREADY
|
||||
X(EALREADY)
|
||||
#endif
|
||||
#ifdef EBADF
|
||||
X(EBADF)
|
||||
#endif
|
||||
#ifdef EBADMSG
|
||||
X(EBADMSG)
|
||||
#endif
|
||||
#ifdef EBUSY
|
||||
X(EBUSY)
|
||||
#endif
|
||||
#ifdef ECANCELED
|
||||
X(ECANCELED)
|
||||
#endif
|
||||
#ifdef ECHILD
|
||||
X(ECHILD)
|
||||
#endif
|
||||
#ifdef ECONNABORTED
|
||||
X(ECONNABORTED)
|
||||
#endif
|
||||
#ifdef ECONNREFUSED
|
||||
X(ECONNREFUSED)
|
||||
#endif
|
||||
#ifdef ECONNRESET
|
||||
X(ECONNRESET)
|
||||
#endif
|
||||
#ifdef EDEADLK
|
||||
X(EDEADLK)
|
||||
#endif
|
||||
#ifdef EDESTADDRREQ
|
||||
X(EDESTADDRREQ)
|
||||
#endif
|
||||
#ifdef EDQUOT
|
||||
X(EDQUOT)
|
||||
#endif
|
||||
#ifdef EEXIST
|
||||
X(EEXIST)
|
||||
#endif
|
||||
#ifdef EFAULT
|
||||
X(EFAULT)
|
||||
#endif
|
||||
#ifdef EFBIG
|
||||
X(EFBIG)
|
||||
#endif
|
||||
#ifdef EHOSTUNREACH
|
||||
X(EHOSTUNREACH)
|
||||
#endif
|
||||
#ifdef EIDRM
|
||||
X(EIDRM)
|
||||
#endif
|
||||
#ifdef EINPROGRESS
|
||||
X(EINPROGRESS)
|
||||
#endif
|
||||
#ifdef EINTR
|
||||
X(EINTR)
|
||||
#endif
|
||||
#ifdef EINVAL
|
||||
X(EINVAL)
|
||||
#endif
|
||||
#ifdef EIO
|
||||
X(EIO)
|
||||
#endif
|
||||
#ifdef EISCONN
|
||||
X(EISCONN)
|
||||
#endif
|
||||
#ifdef EISDIR
|
||||
X(EISDIR)
|
||||
#endif
|
||||
#ifdef ELOOP
|
||||
X(ELOOP)
|
||||
#endif
|
||||
#ifdef EMFILE
|
||||
X(EMFILE)
|
||||
#endif
|
||||
#ifdef EMLINK
|
||||
X(EMLINK)
|
||||
#endif
|
||||
#ifdef EMSGSIZE
|
||||
X(EMSGSIZE)
|
||||
#endif
|
||||
#ifdef EMULTIHOP
|
||||
X(EMULTIHOP)
|
||||
#endif
|
||||
#ifdef ENAMETOOLONG
|
||||
X(ENAMETOOLONG)
|
||||
#endif
|
||||
#ifdef ENETDOWN
|
||||
X(ENETDOWN)
|
||||
#endif
|
||||
#ifdef ENETRESET
|
||||
X(ENETRESET)
|
||||
#endif
|
||||
#ifdef ENETUNREACH
|
||||
X(ENETUNREACH)
|
||||
#endif
|
||||
#ifdef ENFILE
|
||||
X(ENFILE)
|
||||
#endif
|
||||
#ifdef ENOBUFS
|
||||
X(ENOBUFS)
|
||||
#endif
|
||||
#ifdef ENODEV
|
||||
X(ENODEV)
|
||||
#endif
|
||||
#ifdef ENOENT
|
||||
X(ENOENT)
|
||||
#endif
|
||||
#ifdef ENOEXEC
|
||||
X(ENOEXEC)
|
||||
#endif
|
||||
#ifdef ENOLCK
|
||||
X(ENOLCK)
|
||||
#endif
|
||||
#ifdef ENOLINK
|
||||
X(ENOLINK)
|
||||
#endif
|
||||
#ifdef ENOMEM
|
||||
X(ENOMEM)
|
||||
#endif
|
||||
#ifdef ENOMSG
|
||||
X(ENOMSG)
|
||||
#endif
|
||||
#ifdef ENOPROTOOPT
|
||||
X(ENOPROTOOPT)
|
||||
#endif
|
||||
#ifdef ENOSPC
|
||||
X(ENOSPC)
|
||||
#endif
|
||||
#ifdef ENOSYS
|
||||
X(ENOSYS)
|
||||
#endif
|
||||
#ifdef ENOTCAPABLE
|
||||
X(ENOTCAPABLE)
|
||||
#endif
|
||||
#ifdef ENOTCONN
|
||||
X(ENOTCONN)
|
||||
#endif
|
||||
#ifdef ENOTDIR
|
||||
X(ENOTDIR)
|
||||
#endif
|
||||
#ifdef ENOTEMPTY
|
||||
X(ENOTEMPTY)
|
||||
#endif
|
||||
#ifdef ENOTRECOVERABLE
|
||||
X(ENOTRECOVERABLE)
|
||||
#endif
|
||||
#ifdef ENOTSOCK
|
||||
X(ENOTSOCK)
|
||||
#endif
|
||||
#ifdef ENOTSUP
|
||||
X(ENOTSUP)
|
||||
#endif
|
||||
#ifdef ENOTTY
|
||||
X(ENOTTY)
|
||||
#endif
|
||||
#ifdef ENXIO
|
||||
X(ENXIO)
|
||||
#endif
|
||||
#ifdef EOVERFLOW
|
||||
X(EOVERFLOW)
|
||||
#endif
|
||||
#ifdef EOWNERDEAD
|
||||
X(EOWNERDEAD)
|
||||
#endif
|
||||
#ifdef EPERM
|
||||
X(EPERM)
|
||||
#endif
|
||||
#ifdef EPIPE
|
||||
X(EPIPE)
|
||||
#endif
|
||||
#ifdef EPROTO
|
||||
X(EPROTO)
|
||||
#endif
|
||||
#ifdef EPROTONOSUPPORT
|
||||
X(EPROTONOSUPPORT)
|
||||
#endif
|
||||
#ifdef EPROTOTYPE
|
||||
X(EPROTOTYPE)
|
||||
#endif
|
||||
#ifdef EROFS
|
||||
X(EROFS)
|
||||
#endif
|
||||
#ifdef ESPIPE
|
||||
X(ESPIPE)
|
||||
#endif
|
||||
#ifdef ESRCH
|
||||
X(ESRCH)
|
||||
#endif
|
||||
#ifdef ESTALE
|
||||
X(ESTALE)
|
||||
#endif
|
||||
#ifdef ETIMEDOUT
|
||||
X(ETIMEDOUT)
|
||||
#endif
|
||||
#ifdef ETXTBSY
|
||||
X(ETXTBSY)
|
||||
#endif
|
||||
#ifdef EXDEV
|
||||
X(EXDEV)
|
||||
#endif
|
||||
default:
|
||||
#ifdef EOPNOTSUPP
|
||||
if (error == EOPNOTSUPP)
|
||||
code = __WASI_ENOTSUP;
|
||||
#endif
|
||||
#ifdef EWOULDBLOCK
|
||||
if (error == EWOULDBLOCK)
|
||||
code = __WASI_EAGAIN;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#undef X
|
||||
return code;
|
||||
}
|
||||
15
core/shared/platform/common/libc-util/libc_errno.h
Normal file
15
core/shared/platform/common/libc-util/libc_errno.h
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef WASI_ERRNO_H
|
||||
#define WASI_ERRNO_H
|
||||
|
||||
#include "platform_wasi.h"
|
||||
|
||||
// Converts an errno error code to a WASI error code.
|
||||
__wasi_errno_t
|
||||
convert_errno(int error);
|
||||
|
||||
#endif /* end of WASI_ERRNO_H */
|
||||
@ -0,0 +1,8 @@
|
||||
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
set (PLATFORM_COMMON_LIBC_UTIL_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
include_directories(${PLATFORM_COMMON_LIBC_UTIL_DIR})
|
||||
|
||||
file (GLOB_RECURSE PLATFORM_COMMON_LIBC_UTIL_SOURCE ${PLATFORM_COMMON_LIBC_UTIL_DIR}/*.c)
|
||||
@ -5,4 +5,11 @@ set (PLATFORM_COMMON_POSIX_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
file (GLOB_RECURSE source_all ${PLATFORM_COMMON_POSIX_DIR}/*.c)
|
||||
|
||||
if (NOT WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
list(REMOVE_ITEM source_all ${PLATFORM_COMMON_POSIX_DIR}/posix_file.c)
|
||||
else()
|
||||
include (${CMAKE_CURRENT_LIST_DIR}/../libc-util/platform_common_libc_util.cmake)
|
||||
set(source_all ${source_all} ${PLATFORM_COMMON_LIBC_UTIL_SOURCE})
|
||||
endif()
|
||||
|
||||
set (PLATFORM_COMMON_POSIX_SOURCE ${source_all} )
|
||||
|
||||
1013
core/shared/platform/common/posix/posix_file.c
Normal file
1013
core/shared/platform/common/posix/posix_file.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -63,6 +63,10 @@ typedef sem_t korp_sem;
|
||||
|
||||
#define bh_socket_t int
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#if WASM_DISABLE_WRITE_GS_BASE == 0
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_AMD_64)
|
||||
#define os_writegsbase(base_addr) \
|
||||
|
||||
@ -109,6 +109,10 @@ os_sigreturn();
|
||||
void
|
||||
os_set_signal_number_for_blocking_op(int signo);
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -109,6 +109,10 @@ typedef unsigned int korp_sem;
|
||||
#define DT_LNK DTYPE_LINK
|
||||
#define DT_SOCK DTYPE_SOCK
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -66,6 +66,10 @@ typedef sem_t korp_sem;
|
||||
|
||||
#define bh_socket_t int
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#if WASM_DISABLE_HW_BOUND_CHECK == 0
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_AMD_64) \
|
||||
|| defined(BUILD_TARGET_AARCH64) || defined(BUILD_TARGET_RISCV64_LP64D) \
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
#define PLATFORM_API_EXTENSION_H
|
||||
|
||||
#include "platform_common.h"
|
||||
#include "platform_wasi.h"
|
||||
/**
|
||||
* The related data structures should be defined
|
||||
* in platform_internal.h
|
||||
|
||||
1100
core/shared/platform/include/platform_wasi.h
Normal file
1100
core/shared/platform/include/platform_wasi.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -69,6 +69,10 @@ strcpy(char *dest, const char *src);
|
||||
#define os_memory_order_seq_cst __ATOMIC_SEQ_CST
|
||||
#define os_atomic_thread_fence __atomic_thread_fence
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
#define _LIBC_WASI_SGX_PFS_H
|
||||
|
||||
#include "bh_hashmap.h"
|
||||
#include "wasmtime_ssp.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@ -20,16 +20,20 @@ if (NOT BUILD_UNTRUST_PART EQUAL 1)
|
||||
${SGX_SDK_DIR}/include/libcxx)
|
||||
endif ()
|
||||
|
||||
if (NOT WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
add_definitions(-DSGX_DISABLE_WASI)
|
||||
endif ()
|
||||
|
||||
if (NOT WAMR_BUILD_THREAD_MGR EQUAL 1)
|
||||
add_definitions(-DSGX_DISABLE_PTHREAD)
|
||||
endif ()
|
||||
|
||||
file (GLOB source_all ${PLATFORM_SHARED_DIR}/*.c)
|
||||
|
||||
if (NOT WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
add_definitions(-DSGX_DISABLE_WASI)
|
||||
else()
|
||||
list(APPEND source_all ${PLATFORM_SHARED_DIR}/../common/posix/posix_file.c)
|
||||
include (${CMAKE_CURRENT_LIST_DIR}/../common/libc-util/platform_common_libc_util.cmake)
|
||||
set(source_all ${source_all} ${PLATFORM_COMMON_LIBC_UTIL_SOURCE})
|
||||
endif()
|
||||
|
||||
file (GLOB source_all_untrusted ${PLATFORM_SHARED_DIR}/untrusted/*.c)
|
||||
|
||||
set (PLATFORM_SHARED_SOURCE ${source_all})
|
||||
|
||||
@ -122,6 +122,10 @@ os_sigreturn();
|
||||
void
|
||||
os_set_signal_number_for_blocking_op(int signo);
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -130,6 +130,10 @@ fdopendir(int fd);
|
||||
void
|
||||
os_set_signal_number_for_blocking_op(int signo);
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -10,5 +10,11 @@ include_directories(${PLATFORM_SHARED_DIR}/../include)
|
||||
|
||||
file (GLOB_RECURSE source_all ${PLATFORM_SHARED_DIR}/*.c)
|
||||
|
||||
if (WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
list(APPEND source_all ${PLATFORM_SHARED_DIR}/../common/posix/posix_file.c)
|
||||
include (${CMAKE_CURRENT_LIST_DIR}/../common/libc-util/platform_common_libc_util.cmake)
|
||||
set(source_all ${source_all} ${PLATFORM_COMMON_LIBC_UTIL_SOURCE})
|
||||
endif ()
|
||||
|
||||
set (PLATFORM_SHARED_SOURCE ${source_all} ${PLATFORM_COMMON_MATH_SOURCE})
|
||||
|
||||
|
||||
@ -52,6 +52,10 @@ typedef struct korp_cond {
|
||||
#define os_printf printf
|
||||
#define os_vprintf vprintf
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#if WA_MATH
|
||||
/* clang-format off */
|
||||
/* math functions which are not provided by os*/
|
||||
|
||||
@ -45,4 +45,8 @@ typedef rt_int16_t int16_t;
|
||||
typedef rt_uint64_t uint64_t;
|
||||
typedef rt_int64_t int64_t;
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#endif /* RTTHREAD_PLATFORM_INTERNAL_H */
|
||||
|
||||
@ -61,6 +61,10 @@ typedef sem_t korp_sem;
|
||||
|
||||
#define os_thread_local_attribute __thread
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#if WASM_DISABLE_HW_BOUND_CHECK == 0
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_AMD_64) \
|
||||
|| defined(BUILD_TARGET_AARCH64)
|
||||
|
||||
@ -137,6 +137,14 @@ bh_atomic_thread_fence(int mem_order);
|
||||
|
||||
#define os_atomic_thread_fence bh_atomic_thread_fence
|
||||
|
||||
typedef HANDLE os_file_handle;
|
||||
typedef void *os_dir_stream;
|
||||
#if WASM_ENABLE_UVWASI != 1
|
||||
typedef HANDLE os_raw_file_handle;
|
||||
#else
|
||||
typedef uint32_t os_raw_file_handle;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -13,6 +13,13 @@ include_directories(${PLATFORM_SHARED_DIR}/../include)
|
||||
file (GLOB_RECURSE source_all ${PLATFORM_SHARED_DIR}/*.c
|
||||
${PLATFORM_SHARED_DIR}/*.cpp)
|
||||
|
||||
if (NOT WAMR_BUILD_LIBC_WASI EQUAL 1)
|
||||
list(REMOVE_ITEM source_all ${PLATFORM_SHARED_DIR}/win_file.c)
|
||||
else()
|
||||
include (${CMAKE_CURRENT_LIST_DIR}/../common/libc-util/platform_common_libc_util.cmake)
|
||||
set(source_all ${source_all} ${PLATFORM_COMMON_LIBC_UTIL_SOURCE})
|
||||
endif()
|
||||
|
||||
set (PLATFORM_SHARED_SOURCE ${source_all})
|
||||
|
||||
file (GLOB header ${PLATFORM_SHARED_DIR}/../include/*.h)
|
||||
|
||||
267
core/shared/platform/windows/win_file.c
Normal file
267
core/shared/platform/windows/win_file.c
Normal file
@ -0,0 +1,267 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#include "platform_api_extension.h"
|
||||
#include "platform_internal.h"
|
||||
|
||||
__wasi_errno_t
|
||||
os_fstat(os_file_handle handle, struct __wasi_filestat_t *buf)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_fstatat(os_file_handle handle, const char *path,
|
||||
struct __wasi_filestat_t *buf, __wasi_lookupflags_t lookup_flags)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_file_get_fdflags(os_file_handle handle, __wasi_fdflags_t *flags)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_file_set_fdflags(os_file_handle handle, __wasi_fdflags_t flags)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_file_get_access_mode(os_file_handle handle,
|
||||
wasi_libc_file_access_mode *access_mode)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_fdatasync(os_file_handle handle)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_fsync(os_file_handle handle)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_open_preopendir(const char *path, os_file_handle *out)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_openat(os_file_handle handle, const char *path, __wasi_oflags_t oflags,
|
||||
__wasi_fdflags_t fs_flags, __wasi_lookupflags_t lookup_flags,
|
||||
wasi_libc_file_access_mode read_write_mode, os_file_handle *out)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_close(os_file_handle handle, bool is_stdio)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_preadv(os_file_handle handle, const struct __wasi_iovec_t *iov, int iovcnt,
|
||||
__wasi_filesize_t offset, size_t *nread)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_pwritev(os_file_handle handle, const struct __wasi_ciovec_t *iov, int iovcnt,
|
||||
__wasi_filesize_t offset, size_t *nwritten)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_readv(os_file_handle handle, const struct __wasi_iovec_t *iov, int iovcnt,
|
||||
size_t *nread)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_writev(os_file_handle handle, const struct __wasi_ciovec_t *iov, int iovcnt,
|
||||
size_t *nwritten)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_fallocate(os_file_handle handle, __wasi_filesize_t offset,
|
||||
__wasi_filesize_t length)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_ftruncate(os_file_handle handle, __wasi_filesize_t size)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_futimens(os_file_handle handle, __wasi_timestamp_t access_time,
|
||||
__wasi_timestamp_t modification_time, __wasi_fstflags_t fstflags)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_utimensat(os_file_handle handle, const char *path,
|
||||
__wasi_timestamp_t access_time,
|
||||
__wasi_timestamp_t modification_time, __wasi_fstflags_t fstflags,
|
||||
__wasi_lookupflags_t lookup_flags)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_readlinkat(os_file_handle handle, const char *path, char *buf,
|
||||
size_t bufsize, size_t *nread)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_linkat(os_file_handle from_handle, const char *from_path,
|
||||
os_file_handle to_handle, const char *to_path,
|
||||
__wasi_lookupflags_t lookup_flags)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_symlinkat(const char *old_path, os_file_handle handle, const char *new_path)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_mkdirat(os_file_handle handle, const char *path)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_renameat(os_file_handle old_handle, const char *old_path,
|
||||
os_file_handle new_handle, const char *new_path)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_unlinkat(os_file_handle handle, const char *path, bool is_dir)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_lseek(os_file_handle handle, __wasi_filedelta_t offset,
|
||||
__wasi_whence_t whence, __wasi_filesize_t *new_offset)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_fadvise(os_file_handle handle, __wasi_filesize_t offset,
|
||||
__wasi_filesize_t length, __wasi_advice_t advice)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_isatty(os_file_handle handle)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
os_file_handle
|
||||
os_convert_stdin_handle(os_raw_file_handle raw_stdin)
|
||||
{
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
os_file_handle
|
||||
os_convert_stdout_handle(os_raw_file_handle raw_stdout)
|
||||
{
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
os_file_handle
|
||||
os_convert_stderr_handle(os_raw_file_handle raw_stderr)
|
||||
{
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_fdopendir(os_file_handle handle, os_dir_stream *dir_stream)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_rewinddir(os_dir_stream dir_stream)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_seekdir(os_dir_stream dir_stream, __wasi_dircookie_t position)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_readdir(os_dir_stream dir_stream, __wasi_dirent_t *entry,
|
||||
const char **d_name)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
__wasi_errno_t
|
||||
os_closedir(os_dir_stream dir_stream)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
os_dir_stream
|
||||
os_get_invalid_dir_stream()
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool
|
||||
os_is_dir_stream_valid(os_dir_stream *dir_stream)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
os_file_handle
|
||||
os_get_invalid_handle()
|
||||
{
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
bool
|
||||
os_is_handle_valid(os_file_handle *handle)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char *
|
||||
os_realpath(const char *path, char *resolved_path)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@ -146,4 +146,8 @@ void
|
||||
set_exec_mem_alloc_func(exec_mem_alloc_func_t alloc_func,
|
||||
exec_mem_free_func_t free_func);
|
||||
|
||||
typedef int os_file_handle;
|
||||
typedef DIR *os_dir_stream;
|
||||
typedef int os_raw_file_handle;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user