mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-27 16:02:16 +00:00
make it wasi_unstable
This commit is contained in:
parent
8fc4457543
commit
96dc211c5d
@ -1,681 +1 @@
|
||||
// see: https://github.com/CraneStation/wasmtime/blob/master/docs/WASI-api.md
|
||||
|
||||
/* tslint:disable:max-line-length */
|
||||
|
||||
/** Read command-line argument data. */
|
||||
export declare function args_get(argv: uintptr_t, argv_buf: uintptr_t): errno;
|
||||
/** Return command-line argument data sizes. */
|
||||
export declare function args_sizes_get(argc: uintptr_t, argv_buf_size_ptr: uintptr_t): errno;
|
||||
|
||||
/** Return the resolution of a clock. */
|
||||
export declare function clock_res_get(clock: clockid, resolution: uintptr_t): errno;
|
||||
/** Return the time value of a clock. */
|
||||
export declare function clock_time_get(clock: clockid, precision: timestamp_t, time: uintptr_t): errno;
|
||||
|
||||
/** Read environment variable data. */
|
||||
export declare function environ_get(environ: uintptr_t, environ_buf: uintptr_t): errno;
|
||||
/** Return command-line argument data sizes. */
|
||||
export declare function environ_sizes_get(environ_count: uintptr_t, environ_buf_size: uintptr_t): errno;
|
||||
|
||||
/** Provide file advisory information on a file descriptor. */
|
||||
export declare function fd_advise(fd: fd_t, offset: filesize_t, len: filesize_t, advice: advice): errno;
|
||||
/** Provide file advisory information on a file descriptor. */
|
||||
export declare function fd_allocate(fd: fd_t, offset: filesize_t, len: filesize_t): errno;
|
||||
/** Close a file descriptor. */
|
||||
export declare function fd_close(fd: fd_t): errno;
|
||||
/** Synchronize the data of a file to disk. */
|
||||
export declare function fd_datasync(fd: fd_t): errno;
|
||||
/** Get the attributes of a file descriptor. */
|
||||
export declare function fd_fdstat_get(fd: fd_t, buf: uintptr_t): errno;
|
||||
/** Adjust the flags associated with a file descriptor. */
|
||||
export declare function fd_fdstat_set_flags(fd: fd_t, flags: fdflags): errno;
|
||||
/** Adjust the rights associated with a file descriptor. */
|
||||
export declare function fd_fdstat_set_rights(fd: fd_t, fs_rights_base: rights, fs_rights_inheriting: rights): errno;
|
||||
/** Return the attributes of an open file. */
|
||||
export declare function fd_filestat_get(fd: fd_t, buf: uintptr_t): errno;
|
||||
/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */
|
||||
export declare function fd_filestat_set_size(fd: fd_t, size: filesize_t): errno;
|
||||
/** Adjust the timestamps of an open file or directory. */
|
||||
export declare function fd_filestat_set_times(fd: fd_t, st_atim: timestamp_t, st_mtim: timestamp_t, fstflags: fstflags): errno;
|
||||
/** Read from a file descriptor, without using and updating the file descriptor's offset. */
|
||||
export declare function fd_pread(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, offset: filesize_t, nread: uintptr_t): errno;
|
||||
/** Return a description of the given preopened file descriptor. */
|
||||
export declare function fd_prestat_get(fd: fd_t, buf: uintptr_t): errno;
|
||||
/** Return a description of the given preopened file descriptor. */
|
||||
export declare function fd_prestat_dir_name(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
/** Write to a file descriptor, without using and updating the file descriptor's offset. */
|
||||
export declare function fd_pwrite(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, offset: filesize_t, nwritten: uintptr_t): errno;
|
||||
/** Read from a file descriptor. */
|
||||
export declare function fd_read(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, nread: uintptr_t): errno;
|
||||
/** Read directory entries from a directory. */
|
||||
export declare function fd_readdir(fd: fd_t, buf: uintptr_t, buf_len: size_t, cookie: dircookie_t, buf_used: uintptr_t): errno;
|
||||
/** Atomically replace a file descriptor by renumbering another file descriptor. */
|
||||
export declare function fd_renumber(from: fd_t, to: fd_t): errno;
|
||||
/** Move the offset of a file descriptor. */
|
||||
export declare function fd_seek(fd: fd_t, offset: filedelta_t, whence: whence, newoffset: uintptr_t): errno;
|
||||
/** Synchronize the data and metadata of a file to disk. */
|
||||
export declare function fd_sync(fd: fd_t): errno;
|
||||
/** Return the current offset of a file descriptor. */
|
||||
export declare function fd_tell(fd: fd_t, newoffset: uintptr_t): errno;
|
||||
/** Write to a file descriptor. */
|
||||
export declare function fd_write(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, nwritten: uintptr_t): errno;
|
||||
|
||||
/* Create a directory. */
|
||||
export declare function path_create_directory(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
/** Return the attributes of a file or directory. */
|
||||
export declare function path_filestat_get(fd: fd_t, flags: lookupflags, path: uintptr_t, path_len: size_t, buf: uintptr_t): errno;
|
||||
/** Adjust the timestamps of a file or directory. */
|
||||
export declare function path_filestat_set_times(fd: fd_t, flags: lookupflags, path: uintptr_t, path_len: size_t, st_atim: timestamp_t, st_mtim: timestamp_t, fstflags: fstflags): errno;
|
||||
/** Create a hard link. */
|
||||
export declare function path_link(fd0: fd_t, flags0: lookupflags, path0: uintptr_t, path_len0: size_t, fd1: fd_t, path1: uintptr_t, path_len: size_t): errno;
|
||||
/** Open a file or directory. */
|
||||
export declare function path_open(dirfd: fd_t, dirflags: lookupflags, path: uintptr_t, path_len: size_t, oflags: oflags, fs_rights_base: rights, fs_rights_inheriting: rights, fs_flags: fdflags, fd: fd_t): errno;
|
||||
/** Read the contents of a symbolic link. */
|
||||
export declare function path_readlink(fd: fd_t, path: uintptr_t, path_len: size_t, buf: uintptr_t, buf_len: size_t, buf_used: uintptr_t): errno;
|
||||
/** Remove a directory. */
|
||||
export declare function path_remove_directory(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
/** Rename a file or directory. */
|
||||
export declare function path_rename(fd0: fd_t, path0: uintptr_t, path_len0: size_t, fd1: fd_t, path1: uintptr_t, path_len1: size_t): errno;
|
||||
/** Create a symbolic link. */
|
||||
export declare function path_symlink(path0: uintptr_t, path_len0: size_t, fd: fd_t, path1: uintptr_t, path_len1: size_t): errno;
|
||||
/** Unlink a file. */
|
||||
export declare function path_unlink_file(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
|
||||
/** Concurrently poll for the occurrence of a set of events. */
|
||||
export declare function poll_oneoff(in_: uintptr_t, out: uintptr_t, nsubscriptions: size_t, nevents: uintptr_t): errno;
|
||||
|
||||
/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */
|
||||
export declare function proc_exit(rval: u32): void;
|
||||
/** Send a signal to the process of the calling thread. */
|
||||
export declare function proc_raise(sig: signal): errno;
|
||||
|
||||
/** Write high-quality random data into a buffer. */
|
||||
export declare function random_get(buf: uintptr_t, buf_len: size_t): errno;
|
||||
|
||||
/** Temporarily yield execution of the calling thread. */
|
||||
export declare function sched_yield(): errno;
|
||||
|
||||
/** Receive a message from a socket. */
|
||||
export declare function sock_recv(sock: fd_t, ri_data: uintptr_t, ri_data_len: size_t, ri_flags: riflags, ro_datalen: uintptr_t, ro_flags: roflags): errno;
|
||||
/** Send a message on a socket. */
|
||||
export declare function sock_send(sock: fd_t, si_data: uintptr_t, si_data_len: size_t, si_flags: siflags, so_datalen: uintptr_t): errno;
|
||||
/** Shut down socket send and receive channels. */
|
||||
export declare function sock_shutdown(sock: fd_t, how: sdflags): errno;
|
||||
|
||||
// === Types ======================================================================================
|
||||
|
||||
/** File or memory access pattern advisory information. */
|
||||
export const enum advice {
|
||||
/** The application has no advice to give on its behavior with respect to the specified data. */
|
||||
NORMAL = 0,
|
||||
/** The application expects to access the specified data sequentially from lower offsets to higher offsets. */
|
||||
SEQUENTIAL = 1,
|
||||
/** The application expects to access the specified data in a random order. */
|
||||
RANDOM = 2,
|
||||
/** The application expects to access the specified data in the near future. */
|
||||
WILLNEED = 3,
|
||||
/** The application expects that it will not access the specified data in the near future. */
|
||||
DONTNEED = 4,
|
||||
/** The application expects to access the specified data once and then not reuse it thereafter. */
|
||||
NOREUSE = 5
|
||||
}
|
||||
export type advice_t = u8;
|
||||
|
||||
/** Identifiers for clocks. */
|
||||
export const enum clockid {
|
||||
/** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */
|
||||
REALTIME = 0,
|
||||
/** The store-wide monotonic clock. Absolute value has no meaning. */
|
||||
MONOTONIC = 1,
|
||||
/** The CPU-time clock associated with the current process. */
|
||||
PROCESS_CPUTIME_ID = 2,
|
||||
/** The CPU-time clock associated with the current thread. */
|
||||
THREAD_CPUTIME_ID = 3
|
||||
}
|
||||
export type clockid_t = u32;
|
||||
|
||||
/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */
|
||||
export type device_t = u64;
|
||||
|
||||
/** A reference to the offset of a directory entry. */
|
||||
export type dircookie_t = u64;
|
||||
|
||||
/** A directory entry. */
|
||||
@unmanaged export class dirent {
|
||||
/** The offset of the next directory entry stored in this directory. */
|
||||
next: dircookie_t;
|
||||
/** The serial number of the file referred to by this directory entry. */
|
||||
ino: inode_t;
|
||||
/** The length of the name of the directory entry. */
|
||||
namlen: u32;
|
||||
/** The type of the file referred to by this directory entry. */
|
||||
type: filetype_t;
|
||||
}
|
||||
|
||||
/** Error codes returned by functions. */
|
||||
export const enum errno {
|
||||
/** No error occurred. System call completed successfully. */
|
||||
SUCCESS = 0,
|
||||
/** Argument list too long. */
|
||||
TOOBIG = 1,
|
||||
/** Permission denied. */
|
||||
ACCES = 2,
|
||||
/** Address in use. */
|
||||
ADDRINUSE = 3,
|
||||
/** Address not available. */
|
||||
ADDRNOTAVAIL = 4,
|
||||
/** Address family not supported. */
|
||||
AFNOSUPPORT = 5,
|
||||
/** Resource unavailable, or operation would block. */
|
||||
AGAIN = 6,
|
||||
/** Connection already in progress. */
|
||||
ALREADY = 7,
|
||||
/** Bad file descriptor. */
|
||||
BADF = 8,
|
||||
/** Bad message. */
|
||||
BADMSG = 9,
|
||||
/** Device or resource busy. */
|
||||
BUSY = 10,
|
||||
/** Operation canceled. */
|
||||
CANCELED = 11,
|
||||
/** No child processes. */
|
||||
CHILD = 12,
|
||||
/** Connection aborted. */
|
||||
CONNABORTED = 13,
|
||||
/** Connection refused. */
|
||||
CONNREFUSED = 14,
|
||||
/** Connection reset. */
|
||||
CONNRESET = 15,
|
||||
/** Resource deadlock would occur. */
|
||||
DEADLK = 16,
|
||||
/** Destination address required. */
|
||||
DESTADDRREQ = 17,
|
||||
/** Mathematics argument out of domain of function. */
|
||||
DOM = 18,
|
||||
/** Reserved. */
|
||||
DQUOT = 19,
|
||||
/** File exists. */
|
||||
EXIST = 20,
|
||||
/** Bad address. */
|
||||
FAULT = 21,
|
||||
/** File too large. */
|
||||
FBIG = 22,
|
||||
/** Host is unreachable. */
|
||||
HOSTUNREACH = 23,
|
||||
/** Identifier removed. */
|
||||
IDRM = 24,
|
||||
/** Illegal byte sequence. */
|
||||
ILSEQ = 25,
|
||||
/** Operation in progress. */
|
||||
INPROGRESS = 26,
|
||||
/** Interrupted function. */
|
||||
INTR = 27,
|
||||
/** Invalid argument. */
|
||||
INVAL = 28,
|
||||
/** I/O error. */
|
||||
IO = 29,
|
||||
/** Socket is connected. */
|
||||
ISCONN = 30,
|
||||
/** Is a directory. */
|
||||
ISDIR = 31,
|
||||
/** Too many levels of symbolic links. */
|
||||
LOOP = 32,
|
||||
/** File descriptor value too large. */
|
||||
MFILE = 33,
|
||||
/** Too many links. */
|
||||
MLINK = 34,
|
||||
/** Message too large. */
|
||||
MSGSIZE = 35,
|
||||
/** Reserved. */
|
||||
MULTIHOP = 36,
|
||||
/** Filename too long. */
|
||||
NAMETOOLONG = 37,
|
||||
/** Network is down. */
|
||||
NETDOWN = 38,
|
||||
/** Connection aborted by network. */
|
||||
NETRESET = 39,
|
||||
/** Network unreachable. */
|
||||
NETUNREACH = 40,
|
||||
/** Too many files open in system. */
|
||||
NFILE = 41,
|
||||
/** No buffer space available. */
|
||||
NOBUFS = 42,
|
||||
/** No such device. */
|
||||
NODEV = 43,
|
||||
/** No such file or directory. */
|
||||
NOENT = 44,
|
||||
/** Executable file format error. */
|
||||
NOEXEC = 45,
|
||||
/** No locks available. */
|
||||
NOLCK = 46,
|
||||
/** Reserved. */
|
||||
NOLINK = 47,
|
||||
/** Not enough space. */
|
||||
NOMEM = 48,
|
||||
/** No message of the desired type. */
|
||||
NOMSG = 49,
|
||||
/** Protocol not available. */
|
||||
NOPROTOOPT = 50,
|
||||
/** No space left on device. */
|
||||
NOSPC = 51,
|
||||
/** Function not supported. */
|
||||
NOSYS = 52,
|
||||
/** The socket is not connected. */
|
||||
NOTCONN = 53,
|
||||
/** Not a directory or a symbolic link to a directory. */
|
||||
NOTDIR = 54,
|
||||
/** Directory not empty. */
|
||||
NOTEMPTY = 55,
|
||||
/** State not recoverable. */
|
||||
NOTRECOVERABLE = 56,
|
||||
/** Not a socket. */
|
||||
NOTSOCK = 57,
|
||||
/** Not supported, or operation not supported on socket. */
|
||||
NOTSUP = 58,
|
||||
/** Inappropriate I/O control operation. */
|
||||
NOTTY = 59,
|
||||
/** No such device or address. */
|
||||
NXIO = 60,
|
||||
/** Value too large to be stored in data type. */
|
||||
OVERFLOW = 61,
|
||||
/** Previous owner died. */
|
||||
OWNERDEAD = 62,
|
||||
/** Operation not permitted. */
|
||||
PERM = 63,
|
||||
/** Broken pipe. */
|
||||
PIPE = 64,
|
||||
/** Protocol error. */
|
||||
PROTO = 65,
|
||||
/** Protocol not supported. */
|
||||
PROTONOSUPPORT = 66,
|
||||
/** Protocol wrong type for socket. */
|
||||
PROTOTYPE = 67,
|
||||
/** Result too large. */
|
||||
RANGE = 68,
|
||||
/** Read-only file system. */
|
||||
ROFS = 69,
|
||||
/** Invalid seek. */
|
||||
SPIPE = 70,
|
||||
/** No such process. */
|
||||
SRCH = 71,
|
||||
/** Reserved. */
|
||||
STALE = 72,
|
||||
/** Connection timed out. */
|
||||
TIMEDOUT = 73,
|
||||
/** Text file busy. */
|
||||
TXTBSY = 74,
|
||||
/** Cross-device link. */
|
||||
XDEV = 75,
|
||||
/** Extension: Capabilities insufficient. */
|
||||
NOTCAPABLE = 76
|
||||
}
|
||||
export type errno_t = u16;
|
||||
|
||||
/** An event that occurred. */
|
||||
@unmanaged export class event {
|
||||
userdata: userdata_t;
|
||||
error: errno_t;
|
||||
type: eventtype_t;
|
||||
}
|
||||
|
||||
/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */
|
||||
@unmanaged export class rwevent extends event {
|
||||
nbytes: filesize_t;
|
||||
flags: eventrwflags_t;
|
||||
}
|
||||
|
||||
/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */
|
||||
export const enum eventrwflags {
|
||||
/** The peer of this socket has closed or disconnected. */
|
||||
HANGUP = 1
|
||||
}
|
||||
export type eventrwflags_t = u16;
|
||||
|
||||
/** Type of a subscription to an event or its occurrence. */
|
||||
export const enum eventtype {
|
||||
/** The time value of clock has reached the timestamp. */
|
||||
CLOCK = 0,
|
||||
/** File descriptor has data available for reading. */
|
||||
FD_READ = 1,
|
||||
/** File descriptor has capacity available for writing */
|
||||
FD_WRITE = 2
|
||||
}
|
||||
export type eventtype_t = u8;
|
||||
|
||||
/** Exit code generated by a process when exiting. */
|
||||
export type exitcode_t = u32;
|
||||
|
||||
/** A file descriptor number. */
|
||||
export type fd_t = u32;
|
||||
|
||||
/** File descriptor flags. */
|
||||
export const enum fdflags {
|
||||
/** Append mode: Data written to the file is always appended to the file's end. */
|
||||
APPEND = 1,
|
||||
/** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */
|
||||
DSYNC = 2,
|
||||
/** Non-blocking mode. */
|
||||
NONBLOCK = 4,
|
||||
/** Synchronized read I/O operations. */
|
||||
RSYNC = 8,
|
||||
/** Write according to synchronized I/O file integrity completion. */
|
||||
SYNC = 16
|
||||
}
|
||||
export type fdflags_t = u16;
|
||||
|
||||
/** File descriptor attributes. */
|
||||
@unmanaged export class fdstat {
|
||||
/** File type. */
|
||||
filetype: filetype_t;
|
||||
/** File descriptor flags. */
|
||||
flags: fdflags_t;
|
||||
/** Rights that apply to this file descriptor. */
|
||||
rights_base: rights_t;
|
||||
/** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */
|
||||
rights_inheriting: rights_t;
|
||||
}
|
||||
|
||||
/** Relative offset within a file. */
|
||||
export type filedelta_t = i64;
|
||||
|
||||
/** Non-negative file size or length of a region within a file. */
|
||||
export type filesize_t = u64;
|
||||
|
||||
/** File attributes. */
|
||||
@unmanaged export class filestat {
|
||||
/** Device ID of device containing the file. */
|
||||
dev: device_t;
|
||||
/** File serial number. */
|
||||
ino: inode_t;
|
||||
/** File type. */
|
||||
filetype: filetype_t;
|
||||
/** Number of hard links to the file. */
|
||||
nlink: linkcount_t;
|
||||
/** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */
|
||||
size: filesize_t;
|
||||
/** Last data access timestamp. */
|
||||
atim: timestamp_t;
|
||||
/** Last data modification timestamp. */
|
||||
mtim: timestamp_t;
|
||||
/** Last file status change timestamp. */
|
||||
ctim: timestamp_t;
|
||||
}
|
||||
|
||||
/** The type of a file descriptor or file. */
|
||||
export const enum filetype {
|
||||
/** The type of the file descriptor or file is unknown or is different from any of the other types specified. */
|
||||
UNKNOWN = 0,
|
||||
/** The file descriptor or file refers to a block device inode. */
|
||||
BLOCK_DEVICE = 1,
|
||||
/** The file descriptor or file refers to a character device inode. */
|
||||
CHARACTER_DEVICE = 2,
|
||||
/** The file descriptor or file refers to a directory inode. */
|
||||
DIRECTORY = 3,
|
||||
/** The file descriptor or file refers to a regular file inode. */
|
||||
REGULAR_FILE = 4,
|
||||
/** The file descriptor or file refers to a datagram socket. */
|
||||
SOCKET_DGRAM = 5,
|
||||
/** The file descriptor or file refers to a byte-stream socket. */
|
||||
SOCKET_STREAM = 6,
|
||||
/** The file refers to a symbolic link inode. */
|
||||
SYMBOLIC_LINK = 7
|
||||
}
|
||||
export type filetype_t = u8;
|
||||
|
||||
/** Which file time attributes to adjust. */
|
||||
export const enum fstflags {
|
||||
/** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */
|
||||
SET_ATIM = 1,
|
||||
/** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */
|
||||
SET_ATIM_NOW = 2,
|
||||
/** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */
|
||||
SET_MTIM = 4,
|
||||
/** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */
|
||||
SET_MTIM_NOW = 8
|
||||
}
|
||||
export type fstflags_t = u16;
|
||||
|
||||
/** File serial number that is unique within its file system. */
|
||||
export type inode_t = u64;
|
||||
|
||||
/** A region of memory for scatter/gather reads. */
|
||||
@unmanaged export class iovec {
|
||||
/** The address of the buffer to be filled. */
|
||||
buf: uintptr_t;
|
||||
/** The length of the buffer to be filled. */
|
||||
buf_len: size_t;
|
||||
}
|
||||
|
||||
/** Number of hard links to an inode. */
|
||||
export type linkcount_t = u32;
|
||||
|
||||
/** Flags determining the method of how paths are resolved. */
|
||||
export const enum lookupflags {
|
||||
/** As long as the resolved path corresponds to a symbolic link, it is expanded. */
|
||||
SYMLINK_FOLLOW = 1
|
||||
}
|
||||
export type lookupflags_t = u32;
|
||||
|
||||
/** Open flags. */
|
||||
export const enum oflags {
|
||||
/** Create file if it does not exist. */
|
||||
CREAT = 1,
|
||||
/** Fail if not a directory. */
|
||||
DIRECTORY = 2,
|
||||
/** Fail if file already exists. */
|
||||
EXCL = 4,
|
||||
/** Truncate file to size 0. */
|
||||
TRUNC = 8
|
||||
}
|
||||
export type oflags_t = u16;
|
||||
|
||||
/** Flags provided to `sock_recv`. */
|
||||
export const enum riflags {
|
||||
/** Returns the message without removing it from the socket's receive queue. */
|
||||
PEEK = 1,
|
||||
/** On byte-stream sockets, block until the full amount of data can be returned. */
|
||||
WAITALL = 2
|
||||
}
|
||||
export type riflags_t = u16;
|
||||
|
||||
/** File descriptor rights, determining which actions may be performed. */
|
||||
export const enum rights {
|
||||
/** The right to invoke `fd_datasync`. */
|
||||
FD_DATASYNC = 1,
|
||||
/** The right to invoke `fd_read` and `sock_recv`. */
|
||||
FD_READ = 2,
|
||||
/** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */
|
||||
FD_SEEK = 4,
|
||||
/** The right to invoke `fd_fdstat_set_flags`. */
|
||||
FD_FDSTAT_SET_FLAGS = 8,
|
||||
/** The right to invoke `fd_sync`. */
|
||||
FD_SYNC = 16,
|
||||
/** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */
|
||||
FD_TELL = 32,
|
||||
/** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */
|
||||
FD_WRITE = 64,
|
||||
/** The right to invoke `fd_advise`. */
|
||||
FD_ADVISE = 128,
|
||||
/** The right to invoke `fd_allocate`. */
|
||||
FD_ALLOCATE = 256,
|
||||
/** The right to invoke `path_create_directory`. */
|
||||
PATH_CREATE_DIRECTORY = 512,
|
||||
/** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */
|
||||
PATH_CREATE_FILE = 1024,
|
||||
/** The right to invoke `path_link` with the file descriptor as the source directory. */
|
||||
PATH_LINK_SOURCE = 2048,
|
||||
/** The right to invoke `path_link` with the file descriptor as the target directory. */
|
||||
PATH_LINK_TARGET = 4096,
|
||||
/** The right to invoke `path_open`. */
|
||||
PATH_OPEN = 8192,
|
||||
/** The right to invoke `fd_readdir`. */
|
||||
FD_READDIR = 16384,
|
||||
/** The right to invoke `path_readlink`. */
|
||||
PATH_READLINK = 32768,
|
||||
/** The right to invoke `path_rename` with the file descriptor as the source directory. */
|
||||
PATH_RENAME_SOURCE = 65536,
|
||||
/** The right to invoke `path_rename` with the file descriptor as the target directory. */
|
||||
PATH_RENAME_TARGET = 131072,
|
||||
/** The right to invoke `path_filestat_get`. */
|
||||
PATH_FILESTAT_GET = 262144,
|
||||
/** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */
|
||||
PATH_FILESTAT_SET_SIZE = 524288,
|
||||
/** The right to invoke `path_filestat_set_times`. */
|
||||
PATH_FILESTAT_SET_TIMES = 1048576,
|
||||
/** The right to invoke `fd_filestat_get`. */
|
||||
FD_FILESTAT_GET = 2097152,
|
||||
/** The right to invoke `fd_filestat_set_size`. */
|
||||
FD_FILESTAT_SET_SIZE = 4194304,
|
||||
/** The right to invoke `fd_filestat_set_times`. */
|
||||
FD_FILESTAT_SET_TIMES = 8388608,
|
||||
/** The right to invoke `path_symlink`. */
|
||||
RIGHT_PATH_SYMLINK = 16777216,
|
||||
/** The right to invoke `path_remove_directory`. */
|
||||
PATH_REMOVE_DIRECTORY = 33554432,
|
||||
/** The right to invoke `path_unlink_file`. */
|
||||
PATH_UNLINK_FILE = 67108864,
|
||||
/** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */
|
||||
POLL_FD_READWRITE = 134217728,
|
||||
/** The right to invoke `sock_shutdown`. */
|
||||
SOCK_SHUTDOWN = 268435456
|
||||
}
|
||||
export type rights_t = u64;
|
||||
|
||||
/** Flags returned by `sock_recv`. */
|
||||
export const enum roflags {
|
||||
/** Message data has been truncated. */
|
||||
DATA_TRUNCATED = 1
|
||||
}
|
||||
export type roflags_t = u16;
|
||||
|
||||
/** Which channels on a socket to shut down. */
|
||||
export const enum sdflags {
|
||||
/** Disables further receive operations. */
|
||||
RD = 1,
|
||||
/** Disables further send operations. */
|
||||
WR = 2
|
||||
}
|
||||
export type sdflags_t = u8;
|
||||
|
||||
/** Flags provided to `sock_send`. */
|
||||
export const enum siflags {
|
||||
// As there are currently no flags defined, it must be set to zero.
|
||||
}
|
||||
export type siflags_t = u16;
|
||||
|
||||
/** Signal condition. */
|
||||
export const enum signal {
|
||||
/** Hangup. */
|
||||
HUP = 1,
|
||||
/** Terminate interrupt signal. */
|
||||
INT = 2,
|
||||
/** Terminal quit signal. */
|
||||
QUIT = 3,
|
||||
/** Illegal instruction. */
|
||||
ILL = 4,
|
||||
/** Trace/breakpoint trap. */
|
||||
TRAP = 5,
|
||||
/** Process abort signal. */
|
||||
ABRT = 6,
|
||||
/** Access to an undefined portion of a memory object. */
|
||||
BUS = 7,
|
||||
/** Erroneous arithmetic operation. */
|
||||
FPE = 8,
|
||||
/** Kill. */
|
||||
KILL = 9,
|
||||
/** User-defined signal 1. */
|
||||
USR1 = 10,
|
||||
/** Invalid memory reference. */
|
||||
SEGV = 11,
|
||||
/** User-defined signal 2. */
|
||||
USR2 = 12,
|
||||
/** Write on a pipe with no one to read it. */
|
||||
PIPE = 13,
|
||||
/** Alarm clock. */
|
||||
ALRM = 14,
|
||||
/** Termination signal. */
|
||||
TERM = 15,
|
||||
/** Child process terminated, stopped, or continued. */
|
||||
CHLD = 16,
|
||||
/** Continue executing, if stopped. */
|
||||
CONT = 17,
|
||||
/** Stop executing. */
|
||||
STOP = 18,
|
||||
/** Terminal stop signal. */
|
||||
TSTP = 19,
|
||||
/** Background process attempting read. */
|
||||
TTIN = 20,
|
||||
/** Background process attempting write. */
|
||||
TTOU = 21,
|
||||
/** High bandwidth data is available at a socket. */
|
||||
URG = 22,
|
||||
/** CPU time limit exceeded. */
|
||||
XCPU = 23,
|
||||
/** File size limit exceeded. */
|
||||
XFSZ = 24,
|
||||
/** Virtual timer expired. */
|
||||
VTALRM = 25,
|
||||
PROF = 26,
|
||||
WINCH = 27,
|
||||
POLL = 28,
|
||||
PWR = 29,
|
||||
/** Bad system call. */
|
||||
SYS = 30
|
||||
}
|
||||
export type signal_t = u8;
|
||||
|
||||
/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */
|
||||
export const enum subclockflags {
|
||||
/** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */
|
||||
ABSTIME = 1
|
||||
}
|
||||
export type subclockflags_t = u16;
|
||||
|
||||
/** Subscription to an event. */
|
||||
@unmanaged export class subscription {
|
||||
/** User-provided value that is attached to the subscription. */
|
||||
userdata: userdata_t;
|
||||
/** The type of the event to which to subscribe. */
|
||||
type: eventtype_t;
|
||||
}
|
||||
|
||||
/* Subscription to an event of type `eventtype.CLOCK`.**/
|
||||
@unmanaged export class clocksubscription extends subscription {
|
||||
/** The user-defined unique identifier of the clock. */
|
||||
identifier: userdata_t;
|
||||
/** The clock against which to compare the timestamp. */
|
||||
clock_id: clockid_t;
|
||||
/** The absolute or relative timestamp. */
|
||||
timeout: timestamp_t;
|
||||
/** The amount of time that the implementation may wait additionally to coalesce with other events. */
|
||||
precision: timestamp_t;
|
||||
/** Flags specifying whether the timeout is absolute or relative. */
|
||||
flags: subclockflags_t;
|
||||
}
|
||||
|
||||
/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/
|
||||
@unmanaged export class fdsubscription extends subscription {
|
||||
/** The file descriptor on which to wait for it to become ready for reading or writing. */
|
||||
fd_readwrite: fd_t;
|
||||
}
|
||||
|
||||
/** Timestamp in nanoseconds. */
|
||||
export type timestamp_t = u64;
|
||||
|
||||
/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */
|
||||
export type userdata_t = u64;
|
||||
|
||||
/** The position relative to which to set the offset of the file descriptor. */
|
||||
export const enum whence {
|
||||
/** Seek relative to current position. */
|
||||
CUR = 0,
|
||||
/** Seek relative to end-of-file. */
|
||||
END = 1,
|
||||
/** Seek relative to start-of-file. */
|
||||
SET = 2
|
||||
}
|
||||
export type whence_t = u8;
|
||||
|
||||
// glue
|
||||
export type uintptr_t = usize;
|
||||
export type size_t = usize;
|
||||
export * from "./wasi_unstable";
|
||||
|
681
std/assembly/bindings/wasi_unstable.ts
Normal file
681
std/assembly/bindings/wasi_unstable.ts
Normal file
@ -0,0 +1,681 @@
|
||||
// see: https://github.com/CraneStation/wasmtime/blob/master/docs/WASI-api.md
|
||||
|
||||
/* tslint:disable:max-line-length */
|
||||
|
||||
/** Read command-line argument data. */
|
||||
export declare function args_get(argv: uintptr_t, argv_buf: uintptr_t): errno;
|
||||
/** Return command-line argument data sizes. */
|
||||
export declare function args_sizes_get(argc: uintptr_t, argv_buf_size_ptr: uintptr_t): errno;
|
||||
|
||||
/** Return the resolution of a clock. */
|
||||
export declare function clock_res_get(clock: clockid, resolution: uintptr_t): errno;
|
||||
/** Return the time value of a clock. */
|
||||
export declare function clock_time_get(clock: clockid, precision: timestamp_t, time: uintptr_t): errno;
|
||||
|
||||
/** Read environment variable data. */
|
||||
export declare function environ_get(environ: uintptr_t, environ_buf: uintptr_t): errno;
|
||||
/** Return command-line argument data sizes. */
|
||||
export declare function environ_sizes_get(environ_count: uintptr_t, environ_buf_size: uintptr_t): errno;
|
||||
|
||||
/** Provide file advisory information on a file descriptor. */
|
||||
export declare function fd_advise(fd: fd_t, offset: filesize_t, len: filesize_t, advice: advice): errno;
|
||||
/** Provide file advisory information on a file descriptor. */
|
||||
export declare function fd_allocate(fd: fd_t, offset: filesize_t, len: filesize_t): errno;
|
||||
/** Close a file descriptor. */
|
||||
export declare function fd_close(fd: fd_t): errno;
|
||||
/** Synchronize the data of a file to disk. */
|
||||
export declare function fd_datasync(fd: fd_t): errno;
|
||||
/** Get the attributes of a file descriptor. */
|
||||
export declare function fd_fdstat_get(fd: fd_t, buf: uintptr_t): errno;
|
||||
/** Adjust the flags associated with a file descriptor. */
|
||||
export declare function fd_fdstat_set_flags(fd: fd_t, flags: fdflags): errno;
|
||||
/** Adjust the rights associated with a file descriptor. */
|
||||
export declare function fd_fdstat_set_rights(fd: fd_t, fs_rights_base: rights, fs_rights_inheriting: rights): errno;
|
||||
/** Return the attributes of an open file. */
|
||||
export declare function fd_filestat_get(fd: fd_t, buf: uintptr_t): errno;
|
||||
/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */
|
||||
export declare function fd_filestat_set_size(fd: fd_t, size: filesize_t): errno;
|
||||
/** Adjust the timestamps of an open file or directory. */
|
||||
export declare function fd_filestat_set_times(fd: fd_t, st_atim: timestamp_t, st_mtim: timestamp_t, fstflags: fstflags): errno;
|
||||
/** Read from a file descriptor, without using and updating the file descriptor's offset. */
|
||||
export declare function fd_pread(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, offset: filesize_t, nread: uintptr_t): errno;
|
||||
/** Return a description of the given preopened file descriptor. */
|
||||
export declare function fd_prestat_get(fd: fd_t, buf: uintptr_t): errno;
|
||||
/** Return a description of the given preopened file descriptor. */
|
||||
export declare function fd_prestat_dir_name(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
/** Write to a file descriptor, without using and updating the file descriptor's offset. */
|
||||
export declare function fd_pwrite(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, offset: filesize_t, nwritten: uintptr_t): errno;
|
||||
/** Read from a file descriptor. */
|
||||
export declare function fd_read(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, nread: uintptr_t): errno;
|
||||
/** Read directory entries from a directory. */
|
||||
export declare function fd_readdir(fd: fd_t, buf: uintptr_t, buf_len: size_t, cookie: dircookie_t, buf_used: uintptr_t): errno;
|
||||
/** Atomically replace a file descriptor by renumbering another file descriptor. */
|
||||
export declare function fd_renumber(from: fd_t, to: fd_t): errno;
|
||||
/** Move the offset of a file descriptor. */
|
||||
export declare function fd_seek(fd: fd_t, offset: filedelta_t, whence: whence, newoffset: uintptr_t): errno;
|
||||
/** Synchronize the data and metadata of a file to disk. */
|
||||
export declare function fd_sync(fd: fd_t): errno;
|
||||
/** Return the current offset of a file descriptor. */
|
||||
export declare function fd_tell(fd: fd_t, newoffset: uintptr_t): errno;
|
||||
/** Write to a file descriptor. */
|
||||
export declare function fd_write(fd: fd_t, iovs: uintptr_t, iovs_len: size_t, nwritten: uintptr_t): errno;
|
||||
|
||||
/* Create a directory. */
|
||||
export declare function path_create_directory(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
/** Return the attributes of a file or directory. */
|
||||
export declare function path_filestat_get(fd: fd_t, flags: lookupflags, path: uintptr_t, path_len: size_t, buf: uintptr_t): errno;
|
||||
/** Adjust the timestamps of a file or directory. */
|
||||
export declare function path_filestat_set_times(fd: fd_t, flags: lookupflags, path: uintptr_t, path_len: size_t, st_atim: timestamp_t, st_mtim: timestamp_t, fstflags: fstflags): errno;
|
||||
/** Create a hard link. */
|
||||
export declare function path_link(fd0: fd_t, flags0: lookupflags, path0: uintptr_t, path_len0: size_t, fd1: fd_t, path1: uintptr_t, path_len: size_t): errno;
|
||||
/** Open a file or directory. */
|
||||
export declare function path_open(dirfd: fd_t, dirflags: lookupflags, path: uintptr_t, path_len: size_t, oflags: oflags, fs_rights_base: rights, fs_rights_inheriting: rights, fs_flags: fdflags, fd: fd_t): errno;
|
||||
/** Read the contents of a symbolic link. */
|
||||
export declare function path_readlink(fd: fd_t, path: uintptr_t, path_len: size_t, buf: uintptr_t, buf_len: size_t, buf_used: uintptr_t): errno;
|
||||
/** Remove a directory. */
|
||||
export declare function path_remove_directory(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
/** Rename a file or directory. */
|
||||
export declare function path_rename(fd0: fd_t, path0: uintptr_t, path_len0: size_t, fd1: fd_t, path1: uintptr_t, path_len1: size_t): errno;
|
||||
/** Create a symbolic link. */
|
||||
export declare function path_symlink(path0: uintptr_t, path_len0: size_t, fd: fd_t, path1: uintptr_t, path_len1: size_t): errno;
|
||||
/** Unlink a file. */
|
||||
export declare function path_unlink_file(fd: fd_t, path: uintptr_t, path_len: size_t): errno;
|
||||
|
||||
/** Concurrently poll for the occurrence of a set of events. */
|
||||
export declare function poll_oneoff(in_: uintptr_t, out: uintptr_t, nsubscriptions: size_t, nevents: uintptr_t): errno;
|
||||
|
||||
/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */
|
||||
export declare function proc_exit(rval: u32): void;
|
||||
/** Send a signal to the process of the calling thread. */
|
||||
export declare function proc_raise(sig: signal): errno;
|
||||
|
||||
/** Write high-quality random data into a buffer. */
|
||||
export declare function random_get(buf: uintptr_t, buf_len: size_t): errno;
|
||||
|
||||
/** Temporarily yield execution of the calling thread. */
|
||||
export declare function sched_yield(): errno;
|
||||
|
||||
/** Receive a message from a socket. */
|
||||
export declare function sock_recv(sock: fd_t, ri_data: uintptr_t, ri_data_len: size_t, ri_flags: riflags, ro_datalen: uintptr_t, ro_flags: roflags): errno;
|
||||
/** Send a message on a socket. */
|
||||
export declare function sock_send(sock: fd_t, si_data: uintptr_t, si_data_len: size_t, si_flags: siflags, so_datalen: uintptr_t): errno;
|
||||
/** Shut down socket send and receive channels. */
|
||||
export declare function sock_shutdown(sock: fd_t, how: sdflags): errno;
|
||||
|
||||
// === Types ======================================================================================
|
||||
|
||||
/** File or memory access pattern advisory information. */
|
||||
export const enum advice {
|
||||
/** The application has no advice to give on its behavior with respect to the specified data. */
|
||||
NORMAL = 0,
|
||||
/** The application expects to access the specified data sequentially from lower offsets to higher offsets. */
|
||||
SEQUENTIAL = 1,
|
||||
/** The application expects to access the specified data in a random order. */
|
||||
RANDOM = 2,
|
||||
/** The application expects to access the specified data in the near future. */
|
||||
WILLNEED = 3,
|
||||
/** The application expects that it will not access the specified data in the near future. */
|
||||
DONTNEED = 4,
|
||||
/** The application expects to access the specified data once and then not reuse it thereafter. */
|
||||
NOREUSE = 5
|
||||
}
|
||||
export type advice_t = u8;
|
||||
|
||||
/** Identifiers for clocks. */
|
||||
export const enum clockid {
|
||||
/** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */
|
||||
REALTIME = 0,
|
||||
/** The store-wide monotonic clock. Absolute value has no meaning. */
|
||||
MONOTONIC = 1,
|
||||
/** The CPU-time clock associated with the current process. */
|
||||
PROCESS_CPUTIME_ID = 2,
|
||||
/** The CPU-time clock associated with the current thread. */
|
||||
THREAD_CPUTIME_ID = 3
|
||||
}
|
||||
export type clockid_t = u32;
|
||||
|
||||
/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */
|
||||
export type device_t = u64;
|
||||
|
||||
/** A reference to the offset of a directory entry. */
|
||||
export type dircookie_t = u64;
|
||||
|
||||
/** A directory entry. */
|
||||
@unmanaged export class dirent {
|
||||
/** The offset of the next directory entry stored in this directory. */
|
||||
next: dircookie_t;
|
||||
/** The serial number of the file referred to by this directory entry. */
|
||||
ino: inode_t;
|
||||
/** The length of the name of the directory entry. */
|
||||
namlen: u32;
|
||||
/** The type of the file referred to by this directory entry. */
|
||||
type: filetype_t;
|
||||
}
|
||||
|
||||
/** Error codes returned by functions. */
|
||||
export const enum errno {
|
||||
/** No error occurred. System call completed successfully. */
|
||||
SUCCESS = 0,
|
||||
/** Argument list too long. */
|
||||
TOOBIG = 1,
|
||||
/** Permission denied. */
|
||||
ACCES = 2,
|
||||
/** Address in use. */
|
||||
ADDRINUSE = 3,
|
||||
/** Address not available. */
|
||||
ADDRNOTAVAIL = 4,
|
||||
/** Address family not supported. */
|
||||
AFNOSUPPORT = 5,
|
||||
/** Resource unavailable, or operation would block. */
|
||||
AGAIN = 6,
|
||||
/** Connection already in progress. */
|
||||
ALREADY = 7,
|
||||
/** Bad file descriptor. */
|
||||
BADF = 8,
|
||||
/** Bad message. */
|
||||
BADMSG = 9,
|
||||
/** Device or resource busy. */
|
||||
BUSY = 10,
|
||||
/** Operation canceled. */
|
||||
CANCELED = 11,
|
||||
/** No child processes. */
|
||||
CHILD = 12,
|
||||
/** Connection aborted. */
|
||||
CONNABORTED = 13,
|
||||
/** Connection refused. */
|
||||
CONNREFUSED = 14,
|
||||
/** Connection reset. */
|
||||
CONNRESET = 15,
|
||||
/** Resource deadlock would occur. */
|
||||
DEADLK = 16,
|
||||
/** Destination address required. */
|
||||
DESTADDRREQ = 17,
|
||||
/** Mathematics argument out of domain of function. */
|
||||
DOM = 18,
|
||||
/** Reserved. */
|
||||
DQUOT = 19,
|
||||
/** File exists. */
|
||||
EXIST = 20,
|
||||
/** Bad address. */
|
||||
FAULT = 21,
|
||||
/** File too large. */
|
||||
FBIG = 22,
|
||||
/** Host is unreachable. */
|
||||
HOSTUNREACH = 23,
|
||||
/** Identifier removed. */
|
||||
IDRM = 24,
|
||||
/** Illegal byte sequence. */
|
||||
ILSEQ = 25,
|
||||
/** Operation in progress. */
|
||||
INPROGRESS = 26,
|
||||
/** Interrupted function. */
|
||||
INTR = 27,
|
||||
/** Invalid argument. */
|
||||
INVAL = 28,
|
||||
/** I/O error. */
|
||||
IO = 29,
|
||||
/** Socket is connected. */
|
||||
ISCONN = 30,
|
||||
/** Is a directory. */
|
||||
ISDIR = 31,
|
||||
/** Too many levels of symbolic links. */
|
||||
LOOP = 32,
|
||||
/** File descriptor value too large. */
|
||||
MFILE = 33,
|
||||
/** Too many links. */
|
||||
MLINK = 34,
|
||||
/** Message too large. */
|
||||
MSGSIZE = 35,
|
||||
/** Reserved. */
|
||||
MULTIHOP = 36,
|
||||
/** Filename too long. */
|
||||
NAMETOOLONG = 37,
|
||||
/** Network is down. */
|
||||
NETDOWN = 38,
|
||||
/** Connection aborted by network. */
|
||||
NETRESET = 39,
|
||||
/** Network unreachable. */
|
||||
NETUNREACH = 40,
|
||||
/** Too many files open in system. */
|
||||
NFILE = 41,
|
||||
/** No buffer space available. */
|
||||
NOBUFS = 42,
|
||||
/** No such device. */
|
||||
NODEV = 43,
|
||||
/** No such file or directory. */
|
||||
NOENT = 44,
|
||||
/** Executable file format error. */
|
||||
NOEXEC = 45,
|
||||
/** No locks available. */
|
||||
NOLCK = 46,
|
||||
/** Reserved. */
|
||||
NOLINK = 47,
|
||||
/** Not enough space. */
|
||||
NOMEM = 48,
|
||||
/** No message of the desired type. */
|
||||
NOMSG = 49,
|
||||
/** Protocol not available. */
|
||||
NOPROTOOPT = 50,
|
||||
/** No space left on device. */
|
||||
NOSPC = 51,
|
||||
/** Function not supported. */
|
||||
NOSYS = 52,
|
||||
/** The socket is not connected. */
|
||||
NOTCONN = 53,
|
||||
/** Not a directory or a symbolic link to a directory. */
|
||||
NOTDIR = 54,
|
||||
/** Directory not empty. */
|
||||
NOTEMPTY = 55,
|
||||
/** State not recoverable. */
|
||||
NOTRECOVERABLE = 56,
|
||||
/** Not a socket. */
|
||||
NOTSOCK = 57,
|
||||
/** Not supported, or operation not supported on socket. */
|
||||
NOTSUP = 58,
|
||||
/** Inappropriate I/O control operation. */
|
||||
NOTTY = 59,
|
||||
/** No such device or address. */
|
||||
NXIO = 60,
|
||||
/** Value too large to be stored in data type. */
|
||||
OVERFLOW = 61,
|
||||
/** Previous owner died. */
|
||||
OWNERDEAD = 62,
|
||||
/** Operation not permitted. */
|
||||
PERM = 63,
|
||||
/** Broken pipe. */
|
||||
PIPE = 64,
|
||||
/** Protocol error. */
|
||||
PROTO = 65,
|
||||
/** Protocol not supported. */
|
||||
PROTONOSUPPORT = 66,
|
||||
/** Protocol wrong type for socket. */
|
||||
PROTOTYPE = 67,
|
||||
/** Result too large. */
|
||||
RANGE = 68,
|
||||
/** Read-only file system. */
|
||||
ROFS = 69,
|
||||
/** Invalid seek. */
|
||||
SPIPE = 70,
|
||||
/** No such process. */
|
||||
SRCH = 71,
|
||||
/** Reserved. */
|
||||
STALE = 72,
|
||||
/** Connection timed out. */
|
||||
TIMEDOUT = 73,
|
||||
/** Text file busy. */
|
||||
TXTBSY = 74,
|
||||
/** Cross-device link. */
|
||||
XDEV = 75,
|
||||
/** Extension: Capabilities insufficient. */
|
||||
NOTCAPABLE = 76
|
||||
}
|
||||
export type errno_t = u16;
|
||||
|
||||
/** An event that occurred. */
|
||||
@unmanaged export class event {
|
||||
userdata: userdata_t;
|
||||
error: errno_t;
|
||||
type: eventtype_t;
|
||||
}
|
||||
|
||||
/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */
|
||||
@unmanaged export class rwevent extends event {
|
||||
nbytes: filesize_t;
|
||||
flags: eventrwflags_t;
|
||||
}
|
||||
|
||||
/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */
|
||||
export const enum eventrwflags {
|
||||
/** The peer of this socket has closed or disconnected. */
|
||||
HANGUP = 1
|
||||
}
|
||||
export type eventrwflags_t = u16;
|
||||
|
||||
/** Type of a subscription to an event or its occurrence. */
|
||||
export const enum eventtype {
|
||||
/** The time value of clock has reached the timestamp. */
|
||||
CLOCK = 0,
|
||||
/** File descriptor has data available for reading. */
|
||||
FD_READ = 1,
|
||||
/** File descriptor has capacity available for writing */
|
||||
FD_WRITE = 2
|
||||
}
|
||||
export type eventtype_t = u8;
|
||||
|
||||
/** Exit code generated by a process when exiting. */
|
||||
export type exitcode_t = u32;
|
||||
|
||||
/** A file descriptor number. */
|
||||
export type fd_t = u32;
|
||||
|
||||
/** File descriptor flags. */
|
||||
export const enum fdflags {
|
||||
/** Append mode: Data written to the file is always appended to the file's end. */
|
||||
APPEND = 1,
|
||||
/** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */
|
||||
DSYNC = 2,
|
||||
/** Non-blocking mode. */
|
||||
NONBLOCK = 4,
|
||||
/** Synchronized read I/O operations. */
|
||||
RSYNC = 8,
|
||||
/** Write according to synchronized I/O file integrity completion. */
|
||||
SYNC = 16
|
||||
}
|
||||
export type fdflags_t = u16;
|
||||
|
||||
/** File descriptor attributes. */
|
||||
@unmanaged export class fdstat {
|
||||
/** File type. */
|
||||
filetype: filetype_t;
|
||||
/** File descriptor flags. */
|
||||
flags: fdflags_t;
|
||||
/** Rights that apply to this file descriptor. */
|
||||
rights_base: rights_t;
|
||||
/** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */
|
||||
rights_inheriting: rights_t;
|
||||
}
|
||||
|
||||
/** Relative offset within a file. */
|
||||
export type filedelta_t = i64;
|
||||
|
||||
/** Non-negative file size or length of a region within a file. */
|
||||
export type filesize_t = u64;
|
||||
|
||||
/** File attributes. */
|
||||
@unmanaged export class filestat {
|
||||
/** Device ID of device containing the file. */
|
||||
dev: device_t;
|
||||
/** File serial number. */
|
||||
ino: inode_t;
|
||||
/** File type. */
|
||||
filetype: filetype_t;
|
||||
/** Number of hard links to the file. */
|
||||
nlink: linkcount_t;
|
||||
/** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */
|
||||
size: filesize_t;
|
||||
/** Last data access timestamp. */
|
||||
atim: timestamp_t;
|
||||
/** Last data modification timestamp. */
|
||||
mtim: timestamp_t;
|
||||
/** Last file status change timestamp. */
|
||||
ctim: timestamp_t;
|
||||
}
|
||||
|
||||
/** The type of a file descriptor or file. */
|
||||
export const enum filetype {
|
||||
/** The type of the file descriptor or file is unknown or is different from any of the other types specified. */
|
||||
UNKNOWN = 0,
|
||||
/** The file descriptor or file refers to a block device inode. */
|
||||
BLOCK_DEVICE = 1,
|
||||
/** The file descriptor or file refers to a character device inode. */
|
||||
CHARACTER_DEVICE = 2,
|
||||
/** The file descriptor or file refers to a directory inode. */
|
||||
DIRECTORY = 3,
|
||||
/** The file descriptor or file refers to a regular file inode. */
|
||||
REGULAR_FILE = 4,
|
||||
/** The file descriptor or file refers to a datagram socket. */
|
||||
SOCKET_DGRAM = 5,
|
||||
/** The file descriptor or file refers to a byte-stream socket. */
|
||||
SOCKET_STREAM = 6,
|
||||
/** The file refers to a symbolic link inode. */
|
||||
SYMBOLIC_LINK = 7
|
||||
}
|
||||
export type filetype_t = u8;
|
||||
|
||||
/** Which file time attributes to adjust. */
|
||||
export const enum fstflags {
|
||||
/** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */
|
||||
SET_ATIM = 1,
|
||||
/** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */
|
||||
SET_ATIM_NOW = 2,
|
||||
/** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */
|
||||
SET_MTIM = 4,
|
||||
/** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */
|
||||
SET_MTIM_NOW = 8
|
||||
}
|
||||
export type fstflags_t = u16;
|
||||
|
||||
/** File serial number that is unique within its file system. */
|
||||
export type inode_t = u64;
|
||||
|
||||
/** A region of memory for scatter/gather reads. */
|
||||
@unmanaged export class iovec {
|
||||
/** The address of the buffer to be filled. */
|
||||
buf: uintptr_t;
|
||||
/** The length of the buffer to be filled. */
|
||||
buf_len: size_t;
|
||||
}
|
||||
|
||||
/** Number of hard links to an inode. */
|
||||
export type linkcount_t = u32;
|
||||
|
||||
/** Flags determining the method of how paths are resolved. */
|
||||
export const enum lookupflags {
|
||||
/** As long as the resolved path corresponds to a symbolic link, it is expanded. */
|
||||
SYMLINK_FOLLOW = 1
|
||||
}
|
||||
export type lookupflags_t = u32;
|
||||
|
||||
/** Open flags. */
|
||||
export const enum oflags {
|
||||
/** Create file if it does not exist. */
|
||||
CREAT = 1,
|
||||
/** Fail if not a directory. */
|
||||
DIRECTORY = 2,
|
||||
/** Fail if file already exists. */
|
||||
EXCL = 4,
|
||||
/** Truncate file to size 0. */
|
||||
TRUNC = 8
|
||||
}
|
||||
export type oflags_t = u16;
|
||||
|
||||
/** Flags provided to `sock_recv`. */
|
||||
export const enum riflags {
|
||||
/** Returns the message without removing it from the socket's receive queue. */
|
||||
PEEK = 1,
|
||||
/** On byte-stream sockets, block until the full amount of data can be returned. */
|
||||
WAITALL = 2
|
||||
}
|
||||
export type riflags_t = u16;
|
||||
|
||||
/** File descriptor rights, determining which actions may be performed. */
|
||||
export const enum rights {
|
||||
/** The right to invoke `fd_datasync`. */
|
||||
FD_DATASYNC = 1,
|
||||
/** The right to invoke `fd_read` and `sock_recv`. */
|
||||
FD_READ = 2,
|
||||
/** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */
|
||||
FD_SEEK = 4,
|
||||
/** The right to invoke `fd_fdstat_set_flags`. */
|
||||
FD_FDSTAT_SET_FLAGS = 8,
|
||||
/** The right to invoke `fd_sync`. */
|
||||
FD_SYNC = 16,
|
||||
/** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */
|
||||
FD_TELL = 32,
|
||||
/** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */
|
||||
FD_WRITE = 64,
|
||||
/** The right to invoke `fd_advise`. */
|
||||
FD_ADVISE = 128,
|
||||
/** The right to invoke `fd_allocate`. */
|
||||
FD_ALLOCATE = 256,
|
||||
/** The right to invoke `path_create_directory`. */
|
||||
PATH_CREATE_DIRECTORY = 512,
|
||||
/** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */
|
||||
PATH_CREATE_FILE = 1024,
|
||||
/** The right to invoke `path_link` with the file descriptor as the source directory. */
|
||||
PATH_LINK_SOURCE = 2048,
|
||||
/** The right to invoke `path_link` with the file descriptor as the target directory. */
|
||||
PATH_LINK_TARGET = 4096,
|
||||
/** The right to invoke `path_open`. */
|
||||
PATH_OPEN = 8192,
|
||||
/** The right to invoke `fd_readdir`. */
|
||||
FD_READDIR = 16384,
|
||||
/** The right to invoke `path_readlink`. */
|
||||
PATH_READLINK = 32768,
|
||||
/** The right to invoke `path_rename` with the file descriptor as the source directory. */
|
||||
PATH_RENAME_SOURCE = 65536,
|
||||
/** The right to invoke `path_rename` with the file descriptor as the target directory. */
|
||||
PATH_RENAME_TARGET = 131072,
|
||||
/** The right to invoke `path_filestat_get`. */
|
||||
PATH_FILESTAT_GET = 262144,
|
||||
/** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */
|
||||
PATH_FILESTAT_SET_SIZE = 524288,
|
||||
/** The right to invoke `path_filestat_set_times`. */
|
||||
PATH_FILESTAT_SET_TIMES = 1048576,
|
||||
/** The right to invoke `fd_filestat_get`. */
|
||||
FD_FILESTAT_GET = 2097152,
|
||||
/** The right to invoke `fd_filestat_set_size`. */
|
||||
FD_FILESTAT_SET_SIZE = 4194304,
|
||||
/** The right to invoke `fd_filestat_set_times`. */
|
||||
FD_FILESTAT_SET_TIMES = 8388608,
|
||||
/** The right to invoke `path_symlink`. */
|
||||
RIGHT_PATH_SYMLINK = 16777216,
|
||||
/** The right to invoke `path_remove_directory`. */
|
||||
PATH_REMOVE_DIRECTORY = 33554432,
|
||||
/** The right to invoke `path_unlink_file`. */
|
||||
PATH_UNLINK_FILE = 67108864,
|
||||
/** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */
|
||||
POLL_FD_READWRITE = 134217728,
|
||||
/** The right to invoke `sock_shutdown`. */
|
||||
SOCK_SHUTDOWN = 268435456
|
||||
}
|
||||
export type rights_t = u64;
|
||||
|
||||
/** Flags returned by `sock_recv`. */
|
||||
export const enum roflags {
|
||||
/** Message data has been truncated. */
|
||||
DATA_TRUNCATED = 1
|
||||
}
|
||||
export type roflags_t = u16;
|
||||
|
||||
/** Which channels on a socket to shut down. */
|
||||
export const enum sdflags {
|
||||
/** Disables further receive operations. */
|
||||
RD = 1,
|
||||
/** Disables further send operations. */
|
||||
WR = 2
|
||||
}
|
||||
export type sdflags_t = u8;
|
||||
|
||||
/** Flags provided to `sock_send`. */
|
||||
export const enum siflags {
|
||||
// As there are currently no flags defined, it must be set to zero.
|
||||
}
|
||||
export type siflags_t = u16;
|
||||
|
||||
/** Signal condition. */
|
||||
export const enum signal {
|
||||
/** Hangup. */
|
||||
HUP = 1,
|
||||
/** Terminate interrupt signal. */
|
||||
INT = 2,
|
||||
/** Terminal quit signal. */
|
||||
QUIT = 3,
|
||||
/** Illegal instruction. */
|
||||
ILL = 4,
|
||||
/** Trace/breakpoint trap. */
|
||||
TRAP = 5,
|
||||
/** Process abort signal. */
|
||||
ABRT = 6,
|
||||
/** Access to an undefined portion of a memory object. */
|
||||
BUS = 7,
|
||||
/** Erroneous arithmetic operation. */
|
||||
FPE = 8,
|
||||
/** Kill. */
|
||||
KILL = 9,
|
||||
/** User-defined signal 1. */
|
||||
USR1 = 10,
|
||||
/** Invalid memory reference. */
|
||||
SEGV = 11,
|
||||
/** User-defined signal 2. */
|
||||
USR2 = 12,
|
||||
/** Write on a pipe with no one to read it. */
|
||||
PIPE = 13,
|
||||
/** Alarm clock. */
|
||||
ALRM = 14,
|
||||
/** Termination signal. */
|
||||
TERM = 15,
|
||||
/** Child process terminated, stopped, or continued. */
|
||||
CHLD = 16,
|
||||
/** Continue executing, if stopped. */
|
||||
CONT = 17,
|
||||
/** Stop executing. */
|
||||
STOP = 18,
|
||||
/** Terminal stop signal. */
|
||||
TSTP = 19,
|
||||
/** Background process attempting read. */
|
||||
TTIN = 20,
|
||||
/** Background process attempting write. */
|
||||
TTOU = 21,
|
||||
/** High bandwidth data is available at a socket. */
|
||||
URG = 22,
|
||||
/** CPU time limit exceeded. */
|
||||
XCPU = 23,
|
||||
/** File size limit exceeded. */
|
||||
XFSZ = 24,
|
||||
/** Virtual timer expired. */
|
||||
VTALRM = 25,
|
||||
PROF = 26,
|
||||
WINCH = 27,
|
||||
POLL = 28,
|
||||
PWR = 29,
|
||||
/** Bad system call. */
|
||||
SYS = 30
|
||||
}
|
||||
export type signal_t = u8;
|
||||
|
||||
/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */
|
||||
export const enum subclockflags {
|
||||
/** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */
|
||||
ABSTIME = 1
|
||||
}
|
||||
export type subclockflags_t = u16;
|
||||
|
||||
/** Subscription to an event. */
|
||||
@unmanaged export class subscription {
|
||||
/** User-provided value that is attached to the subscription. */
|
||||
userdata: userdata_t;
|
||||
/** The type of the event to which to subscribe. */
|
||||
type: eventtype_t;
|
||||
}
|
||||
|
||||
/* Subscription to an event of type `eventtype.CLOCK`.**/
|
||||
@unmanaged export class clocksubscription extends subscription {
|
||||
/** The user-defined unique identifier of the clock. */
|
||||
identifier: userdata_t;
|
||||
/** The clock against which to compare the timestamp. */
|
||||
clock_id: clockid_t;
|
||||
/** The absolute or relative timestamp. */
|
||||
timeout: timestamp_t;
|
||||
/** The amount of time that the implementation may wait additionally to coalesce with other events. */
|
||||
precision: timestamp_t;
|
||||
/** Flags specifying whether the timeout is absolute or relative. */
|
||||
flags: subclockflags_t;
|
||||
}
|
||||
|
||||
/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/
|
||||
@unmanaged export class fdsubscription extends subscription {
|
||||
/** The file descriptor on which to wait for it to become ready for reading or writing. */
|
||||
fd_readwrite: fd_t;
|
||||
}
|
||||
|
||||
/** Timestamp in nanoseconds. */
|
||||
export type timestamp_t = u64;
|
||||
|
||||
/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */
|
||||
export type userdata_t = u64;
|
||||
|
||||
/** The position relative to which to set the offset of the file descriptor. */
|
||||
export const enum whence {
|
||||
/** Seek relative to current position. */
|
||||
CUR = 0,
|
||||
/** Seek relative to end-of-file. */
|
||||
END = 1,
|
||||
/** Seek relative to start-of-file. */
|
||||
SET = 2
|
||||
}
|
||||
export type whence_t = u8;
|
||||
|
||||
// glue
|
||||
export type uintptr_t = usize;
|
||||
export type size_t = usize;
|
Loading…
x
Reference in New Issue
Block a user