2017-07-30 19:12:10 +10:00
# API
## Functions
### system
#### spawn(*name*, *function*, *environment*)
Spawns a process from *function* called *name* with *environment* .
2017-07-31 12:25:20 +10:00
2017-07-30 19:12:10 +10:00
### 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* .
2017-07-31 12:25:20 +10:00
2017-07-30 19:12:10 +10:00
### event
#### event.get()
Gets the next event in the event queue for the process.
#### event.pull(*type*)
2017-07-31 23:23:42 +10:00
Gets, and possibly waits, for an event, optionally with *type*
2017-07-31 12:25:20 +10:00
2017-07-30 19:12:10 +10:00
### 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.
2017-07-31 12:25:20 +10:00
### 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(...)
2017-07-30 19:12:10 +10:00
Writes its arguments to the I/O device.
#### print(...)
Writes its arguments to the I/O device, with a newline after each.
2017-07-31 12:25:20 +10:00
#### 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.
2017-07-30 19:12:10 +10:00
### 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* .
2017-07-31 12:25:20 +10:00
2017-07-30 19:12:10 +10:00
## Events
### Network
#### net\_msg, *from*, *port*, *message*
Queued when the system receives message *message* from *from* on port *port* .
2017-07-31 12:25:20 +10:00
2017-07-30 19:12:10 +10:00
### 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.
2017-07-31 12:25:20 +10:00
2017-07-30 19:12:10 +10:00
## Applications
### luash(*sI*)
Spawns a luash instance for session *sI*