diff --git a/include/uvwasi.h b/include/uvwasi.h index 7dbcc66..5061ce1 100644 --- a/include/uvwasi.h +++ b/include/uvwasi.h @@ -77,124 +77,159 @@ typedef struct uvwasi_options_s { } uvwasi_options_t; /* Embedder API. */ +UVWASI_EXPORT uvwasi_errno_t uvwasi_init(uvwasi_t* uvwasi, const uvwasi_options_t* options); +UVWASI_EXPORT void uvwasi_destroy(uvwasi_t* uvwasi); +UVWASI_EXPORT void uvwasi_options_init(uvwasi_options_t* options); /* Use int instead of uv_file to avoid needing uv.h */ +UVWASI_EXPORT uvwasi_errno_t uvwasi_embedder_remap_fd(uvwasi_t* uvwasi, const uvwasi_fd_t fd, int new_host_fd); +UVWASI_EXPORT const char* uvwasi_embedder_err_code_to_string(uvwasi_errno_t code); /* WASI system call API. */ +UVWASI_EXPORT uvwasi_errno_t uvwasi_args_get(uvwasi_t* uvwasi, char** argv, char* argv_buf); +UVWASI_EXPORT uvwasi_errno_t uvwasi_args_sizes_get(uvwasi_t* uvwasi, uvwasi_size_t* argc, uvwasi_size_t* argv_buf_size); +UVWASI_EXPORT uvwasi_errno_t uvwasi_clock_res_get(uvwasi_t* uvwasi, uvwasi_clockid_t clock_id, uvwasi_timestamp_t* resolution); +UVWASI_EXPORT uvwasi_errno_t uvwasi_clock_time_get(uvwasi_t* uvwasi, uvwasi_clockid_t clock_id, uvwasi_timestamp_t precision, uvwasi_timestamp_t* time); +UVWASI_EXPORT uvwasi_errno_t uvwasi_environ_get(uvwasi_t* uvwasi, char** environment, char* environ_buf); +UVWASI_EXPORT uvwasi_errno_t uvwasi_environ_sizes_get(uvwasi_t* uvwasi, uvwasi_size_t* environ_count, uvwasi_size_t* environ_buf_size); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_advise(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_filesize_t offset, uvwasi_filesize_t len, uvwasi_advice_t advice); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_allocate(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_filesize_t offset, uvwasi_filesize_t len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_close(uvwasi_t* uvwasi, uvwasi_fd_t fd); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_datasync(uvwasi_t* uvwasi, uvwasi_fd_t fd); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_fdstat_get(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_fdstat_t* buf); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_fdstat_set_flags(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_fdflags_t flags); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_fdstat_set_rights(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_rights_t fs_rights_base, uvwasi_rights_t fs_rights_inheriting ); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_filestat_get(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_filestat_t* buf); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_filestat_set_size(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_filesize_t st_size); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_filestat_set_times(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_timestamp_t st_atim, uvwasi_timestamp_t st_mtim, uvwasi_fstflags_t fst_flags); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_pread(uvwasi_t* uvwasi, uvwasi_fd_t fd, const uvwasi_iovec_t* iovs, uvwasi_size_t iovs_len, uvwasi_filesize_t offset, uvwasi_size_t* nread); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_prestat_get(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_prestat_t* buf); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_prestat_dir_name(uvwasi_t* uvwasi, uvwasi_fd_t fd, char* path, uvwasi_size_t path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_pwrite(uvwasi_t* uvwasi, uvwasi_fd_t fd, const uvwasi_ciovec_t* iovs, uvwasi_size_t iovs_len, uvwasi_filesize_t offset, uvwasi_size_t* nwritten); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_read(uvwasi_t* uvwasi, uvwasi_fd_t fd, const uvwasi_iovec_t* iovs, uvwasi_size_t iovs_len, uvwasi_size_t* nread); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_readdir(uvwasi_t* uvwasi, uvwasi_fd_t fd, void* buf, uvwasi_size_t buf_len, uvwasi_dircookie_t cookie, uvwasi_size_t* bufused); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_renumber(uvwasi_t* uvwasi, uvwasi_fd_t from, uvwasi_fd_t to); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_seek(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_filedelta_t offset, uvwasi_whence_t whence, uvwasi_filesize_t* newoffset); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_sync(uvwasi_t* uvwasi, uvwasi_fd_t fd); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_tell(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_filesize_t* offset); +UVWASI_EXPORT uvwasi_errno_t uvwasi_fd_write(uvwasi_t* uvwasi, uvwasi_fd_t fd, const uvwasi_ciovec_t* iovs, uvwasi_size_t iovs_len, uvwasi_size_t* nwritten); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_create_directory(uvwasi_t* uvwasi, uvwasi_fd_t fd, const char* path, uvwasi_size_t path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_filestat_get(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_lookupflags_t flags, const char* path, uvwasi_size_t path_len, uvwasi_filestat_t* buf); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_filestat_set_times(uvwasi_t* uvwasi, uvwasi_fd_t fd, uvwasi_lookupflags_t flags, @@ -203,6 +238,7 @@ uvwasi_errno_t uvwasi_path_filestat_set_times(uvwasi_t* uvwasi, uvwasi_timestamp_t st_atim, uvwasi_timestamp_t st_mtim, uvwasi_fstflags_t fst_flags); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_link(uvwasi_t* uvwasi, uvwasi_fd_t old_fd, uvwasi_lookupflags_t old_flags, @@ -211,6 +247,7 @@ uvwasi_errno_t uvwasi_path_link(uvwasi_t* uvwasi, uvwasi_fd_t new_fd, const char* new_path, uvwasi_size_t new_path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_open(uvwasi_t* uvwasi, uvwasi_fd_t dirfd, uvwasi_lookupflags_t dirflags, @@ -221,6 +258,7 @@ uvwasi_errno_t uvwasi_path_open(uvwasi_t* uvwasi, uvwasi_rights_t fs_rights_inheriting, uvwasi_fdflags_t fs_flags, uvwasi_fd_t* fd); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_readlink(uvwasi_t* uvwasi, uvwasi_fd_t fd, const char* path, @@ -228,10 +266,12 @@ uvwasi_errno_t uvwasi_path_readlink(uvwasi_t* uvwasi, char* buf, uvwasi_size_t buf_len, uvwasi_size_t* bufused); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_remove_directory(uvwasi_t* uvwasi, uvwasi_fd_t fd, const char* path, uvwasi_size_t path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_rename(uvwasi_t* uvwasi, uvwasi_fd_t old_fd, const char* old_path, @@ -239,31 +279,40 @@ uvwasi_errno_t uvwasi_path_rename(uvwasi_t* uvwasi, uvwasi_fd_t new_fd, const char* new_path, uvwasi_size_t new_path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_symlink(uvwasi_t* uvwasi, const char* old_path, uvwasi_size_t old_path_len, uvwasi_fd_t fd, const char* new_path, uvwasi_size_t new_path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_path_unlink_file(uvwasi_t* uvwasi, uvwasi_fd_t fd, const char* path, uvwasi_size_t path_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_poll_oneoff(uvwasi_t* uvwasi, const uvwasi_subscription_t* in, uvwasi_event_t* out, uvwasi_size_t nsubscriptions, uvwasi_size_t* nevents); +UVWASI_EXPORT uvwasi_errno_t uvwasi_proc_exit(uvwasi_t* uvwasi, uvwasi_exitcode_t rval); +UVWASI_EXPORT uvwasi_errno_t uvwasi_proc_raise(uvwasi_t* uvwasi, uvwasi_signal_t sig); +UVWASI_EXPORT uvwasi_errno_t uvwasi_random_get(uvwasi_t* uvwasi, void* buf, uvwasi_size_t buf_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_sched_yield(uvwasi_t* uvwasi); +UVWASI_EXPORT uvwasi_errno_t uvwasi_sock_accept(uvwasi_t* uvwasi, uvwasi_fd_t sock, uvwasi_fdflags_t flags, uvwasi_fd_t* fd); +UVWASI_EXPORT uvwasi_errno_t uvwasi_sock_recv(uvwasi_t* uvwasi, uvwasi_fd_t sock, const uvwasi_iovec_t* ri_data, @@ -271,12 +320,14 @@ uvwasi_errno_t uvwasi_sock_recv(uvwasi_t* uvwasi, uvwasi_riflags_t ri_flags, uvwasi_size_t* ro_datalen, uvwasi_roflags_t* ro_flags); +UVWASI_EXPORT uvwasi_errno_t uvwasi_sock_send(uvwasi_t* uvwasi, uvwasi_fd_t sock, const uvwasi_ciovec_t* si_data, uvwasi_size_t si_data_len, uvwasi_siflags_t si_flags, uvwasi_size_t* so_datalen); +UVWASI_EXPORT uvwasi_errno_t uvwasi_sock_shutdown(uvwasi_t* uvwasi, uvwasi_fd_t sock, uvwasi_sdflags_t how); diff --git a/include/wasi_serdes.h b/include/wasi_serdes.h index 038ae74..90db7cd 100644 --- a/include/wasi_serdes.h +++ b/include/wasi_serdes.h @@ -124,12 +124,14 @@ STRUCT(subscription_t) #undef STRUCT #undef IOVS_STRUCT +UVWASI_EXPORT uvwasi_errno_t uvwasi_serdes_readv_ciovec_t(const void* ptr, size_t end, size_t offset, uvwasi_ciovec_t* iovs, uvwasi_size_t iovs_len); +UVWASI_EXPORT uvwasi_errno_t uvwasi_serdes_readv_iovec_t(const void* ptr, size_t end, size_t offset, @@ -137,7 +139,9 @@ uvwasi_errno_t uvwasi_serdes_readv_iovec_t(const void* ptr, uvwasi_size_t iovs_len); /* Helper functions for memory bounds checking. */ +UVWASI_EXPORT int uvwasi_serdes_check_bounds(size_t offset, size_t end, size_t size); +UVWASI_EXPORT int uvwasi_serdes_check_array_bounds(size_t offset, size_t end, size_t size, diff --git a/include/wasi_types.h b/include/wasi_types.h index 045c552..295c93e 100644 --- a/include/wasi_types.h +++ b/include/wasi_types.h @@ -322,4 +322,10 @@ typedef uint8_t uvwasi_whence_t; #define UVWASI_WHENCE_CUR 1 #define UVWASI_WHENCE_END 2 +#if defined(_WIN32) || defined(__CYGWIN__) + #define UVWASI_EXPORT +#else + #define UVWASI_EXPORT __attribute__((visibility("default"))) +#endif + #endif /* __UVWASI_WASI_TYPES_H__ */