OC-PsychOS/docs/api.md

4.3 KiB

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,timeout)

Gets, and possibly waits for up to timeout seconds, 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.

fs.list(path)

Returns a table of files contained in directory path

fs.mkdir(path)

Creates a directory at path

fs.rm(path)

Removes a file or (empty) directory at path.

fs.exists(path)

Returns true if a file or directory path exists.

fs.isdir(path)

Returns true if path is a directory.

fs.cd(path)

Changes the current directory to either path or os.getenv("PWD")/path.

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.

shutil

cd(path)

Alias to fs.cd

rm(path)

Alias to fs.rm

mkdir(path)

Alias to fs.mkdir

ls(path)

Wrapper for fs.list that prints the contents of path.

cat(path)

Prints the contents of the file path.

ps(filter)

Prints running processes, optionally matching filter.

mem()

Print out some memory info.

net

net.send(addr,port,msg)

Sends msg to addr on port.

net.sendstring(addr,port,msg)

Sends msg to addr on port in net.mtu sized chunks.

net.recvstring(addr,port)

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

skex("fname")

Launches an instance of the skex text editor, optionally reading fname at startup.

skex2("fname")

Launches an instance of the skex2 text editor, optionally reading fname at startup.