Every task has a deadline associated with it. Our efforts focused on creating a basic, general purpose real-time model, so the handling and avoidance of such timing faults are left as a matter for the user. To create real-time applications or any application for that matter, it's nice to be able to view problems and hardware facilities in an abstract manner. The structure and syntax of Amulet are inspired by the parallel programming language Charm developed at the University of Illinois. Amulet is based in C, and the typical Amulet application consists of C code blocks nestled in Amulet constructs.
Chares are similar to objects in an object-oriented language.
Every chare has one basic property, namely a pointer to the body of its code, along with any user-defined fields. This main body of code is broken up into many smaller blocks known as entries and are where messages are directed to. Messages directed to a chare are always sent to a specific entry point in that chare's body, and once received, the associated code block of the entry is executed. The real-time behavior in Amulet comes about through the sorting and sending of messages. Every instance of a message has a deadline which is the latest it can be delivered to a chare.