[ C++ RCOS Home | RCOS.java Home | RCOS Home | David's Home ]

RCOS C++ CRC for class Knl

Name:

Knl

Comment:

The visible members of the kernel are used by the Device Drivers to communicate with each other, or the Kernel itself, by calling eithe the member which places the message is in a FIFO queqe for future dispatch, or (if the matter is urgent) which causes the Kernel to immediatly call the destination driver. Note the member allows the supervisor to control the kernel and probably should not be used by any drivers as it would result in recursive invocations.

Collaborators:

Responsibilities:

  class Knl {
    Exec   *pTask;
    INT16   inCrit;                     // count variable on Kernel code
    DblList Dev;                        // List of Device Rx ports
    DblList Msg;                        // Message Queue
    void Service (PMSG);                // Service messages to kernel
    PDEVLST GetPort (UINT16);           // Get devlist element of ID
  public:
    Knl (UINT16);
    ~Knl (void);
    BOOL Run (void);                    // Entry from Supervisor
    void PostMsg (UINT16, PMSG);        // Asynchronous message transfer
    void SendMsg (UINT16, PMSG);        // Synchronous message transfer
    void PeekMsg (UINT16, PMSG*);       // Anything for me?
    void Startup (void)
       { pTask->StartCon(); }           // Startup process Zero
  };