2019-03-27 21:04:03 +01:00
// see: https://github.com/CraneStation/wasmtime/blob/master/docs/WASI-api.md
/* tslint:disable:max-line-length */
2019-03-27 20:37:09 +01:00
/** 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. */
2019-03-27 21:04:03 +01:00
next : dircookie_t ;
2019-03-27 20:37:09 +01:00
/** The serial number of the file referred to by this directory entry. */
2019-03-27 21:04:03 +01:00
ino : inode_t ;
2019-03-27 20:37:09 +01:00
/** The length of the name of the directory entry. */
2019-03-27 21:04:03 +01:00
namlen : u32 ;
2019-03-27 20:37:09 +01:00
/** The type of the file referred to by this directory entry. */
2019-03-27 21:04:03 +01:00
type : filetype_t ;
2019-03-27 20:37:09 +01:00
}
/** 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. */
2019-03-27 21:04:03 +01:00
filetype : filetype_t ;
2019-03-27 20:37:09 +01:00
/** File descriptor flags. */
2019-03-27 21:04:03 +01:00
flags : fdflags_t ;
2019-03-27 20:37:09 +01:00
/** Rights that apply to this file descriptor. */
2019-03-27 21:04:03 +01:00
rights_base : rights_t ;
2019-03-27 20:37:09 +01:00
/** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */
2019-03-27 21:04:03 +01:00
rights_inheriting : rights_t ;
2019-03-27 20:37:09 +01:00
}
/** 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. */
2019-03-27 21:04:03 +01:00
dev : device_t ;
2019-03-27 20:37:09 +01:00
/** File serial number. */
2019-03-27 21:04:03 +01:00
ino : inode_t ;
2019-03-27 20:37:09 +01:00
/** File type. */
2019-03-27 21:04:03 +01:00
filetype : filetype_t ;
2019-03-27 20:37:09 +01:00
/** Number of hard links to the file. */
2019-03-27 21:04:03 +01:00
nlink : linkcount_t ;
2019-03-27 20:37:09 +01:00
/** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */
2019-03-27 21:04:03 +01:00
size : filesize_t ;
2019-03-27 20:37:09 +01:00
/** Last data access timestamp. */
2019-03-27 21:04:03 +01:00
atim : timestamp_t ;
2019-03-27 20:37:09 +01:00
/** Last data modification timestamp. */
2019-03-27 21:04:03 +01:00
mtim : timestamp_t ;
2019-03-27 20:37:09 +01:00
/** Last file status change timestamp. */
2019-03-27 21:04:03 +01:00
ctim : timestamp_t ;
2019-03-27 20:37:09 +01:00
}
/** 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. */
2019-03-27 21:04:03 +01:00
PEEK = 1 ,
2019-03-27 20:37:09 +01:00
/** On byte-stream sockets, block until the full amount of data can be returned. */
2019-03-27 21:04:03 +01:00
WAITALL = 2
2019-03-27 20:37:09 +01:00
}
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. */
2019-03-27 21:04:03 +01:00
RD = 1 ,
2019-03-27 20:37:09 +01:00
/** Disables further send operations. */
2019-03-27 21:04:03 +01:00
WR = 2
2019-03-27 20:37:09 +01:00
}
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 {
2019-03-27 21:04:03 +01:00
/** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */
ABSTIME = 1
2019-03-27 20:37:09 +01:00
}
export type subclockflags_t = u16 ;
/** Subscription to an event. */
@unmanaged export class subscription {
2019-03-27 21:04:03 +01:00
/** User-provided value that is attached to the subscription. */
2019-03-27 20:37:09 +01:00
userdata : userdata_t ;
2019-03-27 21:04:03 +01:00
/** The type of the event to which to subscribe. */
2019-03-27 20:37:09 +01:00
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 ;