AMX Linked List Manager
K
A
DAK
139
12. AMX Linked List Manager12.1 IntroductionThe Linked List Manager provides a general set of fast linked list services suitable for
use in real-time systems. The Linked List Manager removes the tedium and potential for
serious error inherent in many applications in which list maintenance is implemented by
each programmer in unique and varying ways.
The Linked List Manager offers a feature not often found in similar utilities. Objects
manipulated by the Linked List Manager can concurrently reside on more than one list.
The Linked List Manager also resolves list manipulation races which frequently occur in
real-time multitasking applications. The Linked List Manager assures that no list
linkages will be corrupted because of races between tasks, ISPs or Timer Procedures
attempting to manipulate the same list.
The Linked List Manager supports doubly linked lists in which all objects on a list are
linked in forward and backward directions.
The Linked List Manager also supports keyed lists in which the order of objects in the list
is determined by an ordering key provided by the application.
The AMX Linked List Manager provides the following list manipulation procedures.
The procedures are reentrant permitting them to be shared by concurrently executing
tasks, ISPs and Timer Procedures.
ajlcre AALCRE Create an empty list
ajlinsh AALINSH Insert at the head of a list
ajlinst AALINST Insert at the tail of a list
ajlinsc AALINSC Insert before the specified object on list
ajlrmvh AALRMVH Remove from the head of a list
ajlrmvt AALRMVT Remove from the tail of a list
ajlrmvc AALRMVC Remove specified object from a list
ajlhead AALHEAD Find current head of a list
ajltail AALTAIL Find current tail of a list
ajlnext AALNEXT Find next object on a list (walk towards tail)
ajlprev AALPREV Find previous object on a list (walk towards head)
ajlinsk AALINSK Insert into a keyed list
ajlordk AALORDK Reorder object in a keyed list
ajlmerg AALMERG Merge two lists