kernel
ARES System Manual: psyche Microkernel

Psyche is the task scheduling module that powers the current version of Nanite Systems ARES. Its main purpose is to allow interprocess communication. It also queues messages and ensures their timely delivery for sleeping programs.


ARES Interprocess Communication

In Companion, OpenCollar, and most other large LSL software, scripts in a single linkset communicate primarily through a high-speed interface called link messages. These have no size limit and are efficient for small projects.

However, link messages are hard to filter out. Every script in the target prim is notified when a link message occurs. In Companion 8.4 this meant that every message could trigger 20 or more scripts.

ARES instead uses chat channels as much as possible, the same way scripts in different prims communicate. Each script has its own channel, and each listener only responds to messages from the kernel and from system services.

As a result, idle programs are truly idle and use zero script time, even when waiting for messages.


Kernel Debug Commands

To debug the kernel, send linked message 0x1000 (4096) to prim 1. The following commands are supported:

- a: Dump process address lookup table
- d: Dump daemon info table
- da: Dump daemon address lookup table
- f: List free and used memory
- m: Dump module info table
- q: List waiting job messages
- reset: Reinitialize the kernel

If the kernel was compiled with debug mode enabled, additional commands may be available:

- s: Toggle verbose message logging. ('Strong' debugging.)

All message output is via the echo() macro (llOwnerSay).

The =ddt built-in of input sends this message, e.g. typing =ddt m will cause the kernel to dump the module info table.

See also monitor, a utility for restarting and swapping kernels.

Debugging of events and timers can be found in the scheduler daemon.