|
| 1 | +#ifndef__UVWASI_H__ |
| 2 | +#define__UVWASI_H__ |
| 3 | + |
| 4 | +#ifdef__cplusplus |
| 5 | +extern"C" { |
| 6 | +#endif |
| 7 | + |
| 8 | +#include"wasi_types.h" |
| 9 | +#include"uv_mapping.h" |
| 10 | +#include"fd_table.h" |
| 11 | + |
| 12 | +#defineUVWASI_VERSION_MAJOR 0 |
| 13 | +#defineUVWASI_VERSION_MINOR 0 |
| 14 | +#defineUVWASI_VERSION_PATCH 1 |
| 15 | +#defineUVWASI_VERSION_HEX ((UVWASI_VERSION_MAJOR << 16) | \ |
| 16 | + (UVWASI_VERSION_MINOR << 8) | \ |
| 17 | + (UVWASI_VERSION_PATCH)) |
| 18 | +#defineUVWASI_STRINGIFY(v) UVWASI_STRINGIFY_HELPER(v) |
| 19 | +#defineUVWASI_STRINGIFY_HELPER(v) #v |
| 20 | +#defineUVWASI_VERSION_STRING UVWASI_STRINGIFY(UVWASI_VERSION_MAJOR) "." \ |
| 21 | + UVWASI_STRINGIFY(UVWASI_VERSION_MINOR) "." \ |
| 22 | + UVWASI_STRINGIFY(UVWASI_VERSION_PATCH) |
| 23 | + |
| 24 | + |
| 25 | +typedefstructuvwasi_s { |
| 26 | +structuvwasi_fd_table_tfds; |
| 27 | +size_targc; |
| 28 | +char**argv; |
| 29 | +char*argv_buf; |
| 30 | +size_targv_buf_size; |
| 31 | +size_tenvc; |
| 32 | +char**env; |
| 33 | +char*env_buf; |
| 34 | +size_tenv_buf_size; |
| 35 | +} uvwasi_t; |
| 36 | + |
| 37 | +typedefstructuvwasi_preopen_s { |
| 38 | +char*mapped_path; |
| 39 | +char*real_path; |
| 40 | +} uvwasi_preopen_t; |
| 41 | + |
| 42 | +typedefstructuvwasi_options_s { |
| 43 | +size_tfd_table_size; |
| 44 | +size_tpreopenc; |
| 45 | +uvwasi_preopen_t*preopens; |
| 46 | +size_targc; |
| 47 | +char**argv; |
| 48 | +char**envp; |
| 49 | +} uvwasi_options_t; |
| 50 | + |
| 51 | + |
| 52 | +// Embedder API. |
| 53 | +uvwasi_errno_tuvwasi_init(uvwasi_t*uvwasi, uvwasi_options_t*options); |
| 54 | +voiduvwasi_destroy(uvwasi_t*uvwasi); |
| 55 | +uvwasi_errno_tuvwasi_embedder_remap_fd(uvwasi_t*uvwasi, |
| 56 | +constuvwasi_fd_tfd, |
| 57 | +uv_filenew_host_fd); |
| 58 | + |
| 59 | + |
| 60 | +// WASI system call API. |
| 61 | +uvwasi_errno_tuvwasi_args_get(uvwasi_t*uvwasi, char**argv, char*argv_buf); |
| 62 | +uvwasi_errno_tuvwasi_args_sizes_get(uvwasi_t*uvwasi, |
| 63 | +size_t*argc, |
| 64 | +size_t*argv_buf_size); |
| 65 | +uvwasi_errno_tuvwasi_clock_res_get(uvwasi_t*uvwasi, |
| 66 | +uvwasi_clockid_tclock_id, |
| 67 | +uvwasi_timestamp_t*resolution); |
| 68 | +uvwasi_errno_tuvwasi_clock_time_get(uvwasi_t*uvwasi, |
| 69 | +uvwasi_clockid_tclock_id, |
| 70 | +uvwasi_timestamp_tprecision, |
| 71 | +uvwasi_timestamp_t*time); |
| 72 | +uvwasi_errno_tuvwasi_environ_get(uvwasi_t*uvwasi, |
| 73 | +char**environment, |
| 74 | +char*environ_buf); |
| 75 | +uvwasi_errno_tuvwasi_environ_sizes_get(uvwasi_t*uvwasi, |
| 76 | +size_t*environ_count, |
| 77 | +size_t*environ_buf_size); |
| 78 | +uvwasi_errno_tuvwasi_fd_advise(uvwasi_t*uvwasi, |
| 79 | +uvwasi_fd_tfd, |
| 80 | +uvwasi_filesize_toffset, |
| 81 | +uvwasi_filesize_tlen, |
| 82 | +uvwasi_advice_tadvice); |
| 83 | +uvwasi_errno_tuvwasi_fd_allocate(uvwasi_t*uvwasi, |
| 84 | +uvwasi_fd_tfd, |
| 85 | +uvwasi_filesize_toffset, |
| 86 | +uvwasi_filesize_tlen); |
| 87 | +uvwasi_errno_tuvwasi_fd_close(uvwasi_t*uvwasi, uvwasi_fd_tfd); |
| 88 | +uvwasi_errno_tuvwasi_fd_datasync(uvwasi_t*uvwasi, uvwasi_fd_tfd); |
| 89 | +uvwasi_errno_tuvwasi_fd_fdstat_get(uvwasi_t*uvwasi, |
| 90 | +uvwasi_fd_tfd, |
| 91 | +uvwasi_fdstat_t*buf); |
| 92 | +uvwasi_errno_tuvwasi_fd_fdstat_set_flags(uvwasi_t*uvwasi, |
| 93 | +uvwasi_fd_tfd, |
| 94 | +uvwasi_fdflags_tflags); |
| 95 | +uvwasi_errno_tuvwasi_fd_fdstat_set_rights(uvwasi_t*uvwasi, |
| 96 | +uvwasi_fd_tfd, |
| 97 | +uvwasi_rights_tfs_rights_base, |
| 98 | +uvwasi_rights_tfs_rights_inheriting |
| 99 | + ); |
| 100 | +uvwasi_errno_tuvwasi_fd_filestat_get(uvwasi_t*uvwasi, |
| 101 | +uvwasi_fd_tfd, |
| 102 | +uvwasi_filestat_t*buf); |
| 103 | +uvwasi_errno_tuvwasi_fd_filestat_set_size(uvwasi_t*uvwasi, |
| 104 | +uvwasi_fd_tfd, |
| 105 | +uvwasi_filesize_tst_size); |
| 106 | +uvwasi_errno_tuvwasi_fd_filestat_set_times(uvwasi_t*uvwasi, |
| 107 | +uvwasi_fd_tfd, |
| 108 | +uvwasi_timestamp_tst_atim, |
| 109 | +uvwasi_timestamp_tst_mtim, |
| 110 | +uvwasi_fstflags_tfst_flags); |
| 111 | +uvwasi_errno_tuvwasi_fd_pread(uvwasi_t*uvwasi, |
| 112 | +uvwasi_fd_tfd, |
| 113 | +constuvwasi_iovec_t*iovs, |
| 114 | +size_tiovs_len, |
| 115 | +uvwasi_filesize_toffset, |
| 116 | +size_t*nread); |
| 117 | +uvwasi_errno_tuvwasi_fd_prestat_get(uvwasi_t*uvwasi, |
| 118 | +uvwasi_fd_tfd, |
| 119 | +uvwasi_prestat_t*buf); |
| 120 | +uvwasi_errno_tuvwasi_fd_prestat_dir_name(uvwasi_t*uvwasi, |
| 121 | +uvwasi_fd_tfd, |
| 122 | +char*path, |
| 123 | +size_tpath_len); |
| 124 | +uvwasi_errno_tuvwasi_fd_pwrite(uvwasi_t*uvwasi, |
| 125 | +uvwasi_fd_tfd, |
| 126 | +constuvwasi_ciovec_t*iovs, |
| 127 | +size_tiovs_len, |
| 128 | +uvwasi_filesize_toffset, |
| 129 | +size_t*nwritten); |
| 130 | +uvwasi_errno_tuvwasi_fd_read(uvwasi_t*uvwasi, |
| 131 | +uvwasi_fd_tfd, |
| 132 | +constuvwasi_iovec_t*iovs, |
| 133 | +size_tiovs_len, |
| 134 | +size_t*nread); |
| 135 | +uvwasi_errno_tuvwasi_fd_readdir(uvwasi_t*uvwasi, |
| 136 | +uvwasi_fd_tfd, |
| 137 | +void*buf, |
| 138 | +size_tbuf_len, |
| 139 | +uvwasi_dircookie_tcookie, |
| 140 | +size_t*bufused); |
| 141 | +uvwasi_errno_tuvwasi_fd_renumber(uvwasi_t*uvwasi, |
| 142 | +uvwasi_fd_tfrom, |
| 143 | +uvwasi_fd_tto); |
| 144 | +uvwasi_errno_tuvwasi_fd_seek(uvwasi_t*uvwasi, |
| 145 | +uvwasi_fd_tfd, |
| 146 | +uvwasi_filedelta_toffset, |
| 147 | +uvwasi_whence_twhence, |
| 148 | +uvwasi_filesize_t*newoffset); |
| 149 | +uvwasi_errno_tuvwasi_fd_sync(uvwasi_t*uvwasi, uvwasi_fd_tfd); |
| 150 | +uvwasi_errno_tuvwasi_fd_tell(uvwasi_t*uvwasi, |
| 151 | +uvwasi_fd_tfd, |
| 152 | +uvwasi_filesize_t*offset); |
| 153 | +uvwasi_errno_tuvwasi_fd_write(uvwasi_t*uvwasi, |
| 154 | +uvwasi_fd_tfd, |
| 155 | +constuvwasi_ciovec_t*iovs, |
| 156 | +size_tiovs_len, |
| 157 | +size_t*nwritten); |
| 158 | +uvwasi_errno_tuvwasi_path_create_directory(uvwasi_t*uvwasi, |
| 159 | +uvwasi_fd_tfd, |
| 160 | +constchar*path, |
| 161 | +size_tpath_len); |
| 162 | +uvwasi_errno_tuvwasi_path_filestat_get(uvwasi_t*uvwasi, |
| 163 | +uvwasi_fd_tfd, |
| 164 | +uvwasi_lookupflags_tflags, |
| 165 | +constchar*path, |
| 166 | +size_tpath_len, |
| 167 | +uvwasi_filestat_t*buf); |
| 168 | +uvwasi_errno_tuvwasi_path_filestat_set_times(uvwasi_t*uvwasi, |
| 169 | +uvwasi_fd_tfd, |
| 170 | +uvwasi_lookupflags_tflags, |
| 171 | +constchar*path, |
| 172 | +size_tpath_len, |
| 173 | +uvwasi_timestamp_tst_atim, |
| 174 | +uvwasi_timestamp_tst_mtim, |
| 175 | +uvwasi_fstflags_tfst_flags); |
| 176 | +uvwasi_errno_tuvwasi_path_link(uvwasi_t*uvwasi, |
| 177 | +uvwasi_fd_told_fd, |
| 178 | +uvwasi_lookupflags_told_flags, |
| 179 | +constchar*old_path, |
| 180 | +size_told_path_len, |
| 181 | +uvwasi_fd_tnew_fd, |
| 182 | +constchar*new_path, |
| 183 | +size_tnew_path_len); |
| 184 | +uvwasi_errno_tuvwasi_path_open(uvwasi_t*uvwasi, |
| 185 | +uvwasi_fd_tdirfd, |
| 186 | +uvwasi_lookupflags_tdirflags, |
| 187 | +constchar*path, |
| 188 | +size_tpath_len, |
| 189 | +uvwasi_oflags_to_flags, |
| 190 | +uvwasi_rights_tfs_rights_base, |
| 191 | +uvwasi_rights_tfs_rights_inheriting, |
| 192 | +uvwasi_fdflags_tfs_flags, |
| 193 | +uvwasi_fd_t*fd); |
| 194 | +uvwasi_errno_tuvwasi_path_readlink(uvwasi_t*uvwasi, |
| 195 | +uvwasi_fd_tfd, |
| 196 | +constchar*path, |
| 197 | +size_tpath_len, |
| 198 | +char*buf, |
| 199 | +size_tbuf_len, |
| 200 | +size_t*bufused); |
| 201 | +uvwasi_errno_tuvwasi_path_remove_directory(uvwasi_t*uvwasi, |
| 202 | +uvwasi_fd_tfd, |
| 203 | +constchar*path, |
| 204 | +size_tpath_len); |
| 205 | +uvwasi_errno_tuvwasi_path_rename(uvwasi_t*uvwasi, |
| 206 | +uvwasi_fd_told_fd, |
| 207 | +constchar*old_path, |
| 208 | +size_told_path_len, |
| 209 | +uvwasi_fd_tnew_fd, |
| 210 | +constchar*new_path, |
| 211 | +size_tnew_path_len); |
| 212 | +uvwasi_errno_tuvwasi_path_symlink(uvwasi_t*uvwasi, |
| 213 | +constchar*old_path, |
| 214 | +size_told_path_len, |
| 215 | +uvwasi_fd_tfd, |
| 216 | +constchar*new_path, |
| 217 | +size_tnew_path_len); |
| 218 | +uvwasi_errno_tuvwasi_path_unlink_file(uvwasi_t*uvwasi, |
| 219 | +uvwasi_fd_tfd, |
| 220 | +constchar*path, |
| 221 | +size_tpath_len); |
| 222 | +uvwasi_errno_tuvwasi_poll_oneoff(uvwasi_t*uvwasi, |
| 223 | +constuvwasi_subscription_t*in, |
| 224 | +uvwasi_event_t*out, |
| 225 | +size_tnsubscriptions, |
| 226 | +size_t*nevents); |
| 227 | +uvwasi_errno_tuvwasi_proc_exit(uvwasi_t*uvwasi, uvwasi_exitcode_trval); |
| 228 | +uvwasi_errno_tuvwasi_proc_raise(uvwasi_t*uvwasi, uvwasi_signal_tsig); |
| 229 | +uvwasi_errno_tuvwasi_random_get(uvwasi_t*uvwasi, void*buf, size_tbuf_len); |
| 230 | +uvwasi_errno_tuvwasi_sched_yield(uvwasi_t*uvwasi); |
| 231 | +uvwasi_errno_tuvwasi_sock_recv(uvwasi_t*uvwasi, |
| 232 | +uvwasi_fd_tsock, |
| 233 | +constuvwasi_iovec_t*ri_data, |
| 234 | +size_tri_data_len, |
| 235 | +uvwasi_riflags_tri_flags, |
| 236 | +size_t*ro_datalen, |
| 237 | +uvwasi_roflags_t*ro_flags); |
| 238 | +uvwasi_errno_tuvwasi_sock_send(uvwasi_t*uvwasi, |
| 239 | +uvwasi_fd_tsock, |
| 240 | +constuvwasi_ciovec_t*si_data, |
| 241 | +size_tsi_data_len, |
| 242 | +uvwasi_siflags_tsi_flags, |
| 243 | +size_t*so_datalen); |
| 244 | +uvwasi_errno_tuvwasi_sock_shutdown(uvwasi_t*uvwasi, |
| 245 | +uvwasi_fd_tsock, |
| 246 | +uvwasi_sdflags_thow); |
| 247 | + |
| 248 | +#ifdef__cplusplus |
| 249 | +} |
| 250 | +#endif |
| 251 | + |
| 252 | +#endif/* __UVWASI_H__ */ |
0 commit comments