diff --git a/docs/api.md b/docs/api.md index 1fa3ea2..847ab3e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -3,6 +3,7 @@ ### system #### spawn(*name*, *function*, *environment*) Spawns a process from *function* called *name* with *environment*. + ### os #### os.getenv(*k*) Gets the *k* environment variable for the current process. @@ -12,35 +13,70 @@ Sets the *k* environment variable to *v* for the current process. Returns a list of current processes running, the key being the pid and the value being the name. #### os.taskinfo(*pid*) Returns the name, parent process, and user ID for process *pid*. + ### event #### event.get() Gets the next event in the event queue for the process. #### event.pull(*type*) Gets, and possibly waits, for an event, optionally with *type + ### buffer #### buffer.create(*w*, *c*) Creates a buffer with worker function *w* and close function *c*. *w* is called on creation with the buffer as the argument. -### I/O stuff -#### write(...) + +### filesystem +#### fs.mount(*mp*, *pr*) +Mounts the component proxy *pr* to mountpoint *mp*. +#### fs.simplify(*path*) +Simplifies *path* by resolving .. and . and similar. +#### fs.resolve(*path*) +Resolves *path* to a table of path elements, a mountpoint and a relative filesystem path. +#### fs.open(*path*,*mode*) +Returns a system file handle usable by other fs functions for *path* in *mode*. Modes can be r, w, a, rb, wb, ab. +#### fs.close(*handle*) +Closes a system file handle. +#### fs.read(*handle*,*length*) +Reads *length* bytes of data from *handle*. *length* is usually limited to 2048. +#### fs.write(*handle*,*data*) +Writes *data* to *handle*. +#### fs.readall(*handle*) +Returns as much data as can be read from *handle*. + +### io +#### write(...) or io.write(...) Writes its arguments to the I/O device. #### print(...) Writes its arguments to the I/O device, with a newline after each. -#### readln(*rch*) -Reads a line from the I/O device, optionally replacing the echoed characters with *rch*. +#### readln(*rch*) or io.read(...) +Reads a line from the I/O device, optionally replacing the echoed characters with *rch*.a +#### io.open(*path*,*mode*) +Returns a file object for *path* in *mode*. +##### fobj:read(*len*) +If *len* is a number, reads *len* bytes from *fobj*. If *len* is "\*a", it reads all the data from *fobj*. If *len* is "\*l", it reads a line from *fobj*. +##### fobj:write(*data*) +Writes *data* to *fobj* (if in write mode) +##### fobj:close() +Closes *fobj*, flushing buffers and removing the object from memory. + ### drivers #### tty(*gA*, *sA*, *sI*, *fg*, *bg*) Creates a GPU driver instance for GPU *gA* and screen *sA* attached to session *sI*, optionally with foreground and background colours *fg* and *bg*. #### kbd(*kA*, *sI*) Creates a keyboard driver instance for keyboard *kA* attached to session *sI*. + + ## Events ### Network #### net\_msg, *from*, *port*, *message* Queued when the system receives message *message* from *from* on port *port*. + ### Terminal I/O #### key, *session*, *char*, *code* A key with value *char* and code *code* was pressed and parsed by a keyboard handler attached to session *session* #### display, *session*, *text* This is triggered to make a tty driver attached to *session* write *text* to the screen. Ideally, use write(), not the raw event. + + ## Applications ### luash(*sI*) Spawns a luash instance for session *sI*