Mark3 Realtime Kernel
ll.h File Reference

Core linked-list declarations, used by all kernel list types At the heart of RTOS data structures are linked lists. Having a robust and efficient set of linked-list types that we can use as a foundation for building the rest of our kernel types allows u16 to keep our RTOS code efficient and logically-separated. More...

#include "kerneltypes.h"

Go to the source code of this file.

Classes

class  Mark3::LinkListNode
 The LinkListNode Class Basic linked-list node data structure. This data is managed by the linked-list class types, and can be used transparently between them. More...
 
class  Mark3::TypedLinkListNode< T >
 The TypedLinkListNode class The TypedLinkListNode class provides a linked-list node type for a specified object type. This can be used with typed link-list data structures to manage lists of objects without having to static-cast between the base type and the derived class. More...
 
class  Mark3::LinkList
 The LinkList Class Abstract-data-type from which all other linked-lists are derived. More...
 
class  Mark3::DoubleLinkList
 The DoubleLinkList Class Doubly-linked-list data type, inherited from the base LinkList type. More...
 
class  Mark3::CircularLinkList
 The CircularLinkList class Circular-linked-list data type, inherited from the base LinkList type. More...
 
class  Mark3::TypedDoubleLinkList< T >
 The TypedDoubleLinkList Class Doubly-linked-list data type, inherited from the base LinkList type, and templated for use with linked-list-node derived data-types. More...
 
class  Mark3::TypedCircularLinkList< T >
 The TypedCircularLinkList Class Circular-linked-list data type, inherited from the base LinkList type, and templated for use with linked-list-node derived data-types. More...
 

Namespaces

 Mark3
 

Detailed Description

Core linked-list declarations, used by all kernel list types At the heart of RTOS data structures are linked lists. Having a robust and efficient set of linked-list types that we can use as a foundation for building the rest of our kernel types allows u16 to keep our RTOS code efficient and logically-separated.

So what data types rely on these linked-list classes?

-Threads -ThreadLists -The Scheduler -Timers, -The Timer Scheduler -Blocking objects (Semaphores, Mutexes, etc...)

Pretty much everything in the kernel uses these linked lists. By having objects inherit from the base linked-list node type, we're able to leverage the double and circular linked-list classes to manager virtually every object type in the system without duplicating code. These functions are very efficient as well, allowing for very deterministic behavior in our code.

Definition in file ll.h.