# API ## Functions ### 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. #### os.setenv(*k*, *v*) Sets the *k* environment variable to *v* for the current process. #### os.tasks() 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. ### 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*) 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*