Title: Private Mailboxes

Description:

This test verifies that the microkernel mailbox APIs operate as expected.
This also verifies the mechanism to define private mailboxes and their usage.

--------------------------------------------------------------------------------

Building and Running Project:

This microkernel project outputs to the console.  It can be built and executed
on QEMU as follows:

    make qemu

--------------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

--------------------------------------------------------------------------------

Sample Output:

Starting mailbox tests
===================================================================
MsgSenderTask: task_mbox_put(TICKS_NONE) to non-waiting task is OK
MsgRcvrTask: task_mbox_get when no message is OK
MsgSenderTask: task_mbox_put(timeout) to non-waiting task is OK
MsgRcvrTask: task_mbox_get(timeout) when no message is OK
MsgRcvrTask: task_mbox_get(TICKS_UNLIMITED) from specified task is OK
MsgSenderTask: task_mbox_put(TICKS_NONE) to specified waiting task is OK
MsgRcvrTask: task_mbox_get from anonymous task is OK
MsgSenderTask: task_mbox_put(timeout) to anonymous non-waiting task is OK
MsgSenderTask: task_mbox_put(TICKS_UNLIMITED) of empty message is OK
MsgRcvrTask: task_mbox_get(TICKS_UNLIMITED) of empty message is OK
MsgRcvrTask: task_mbox_get(TICKS_UNLIMITED) of message header #3 is OK
MsgRcvrTask: task_mbox_data_get of message data #3 is OK
MsgSenderTask: task_mbox_put(timeout) for 2 part receive test is OK
MsgRcvrTask: task_mbox_get(timeout) of message header #4 is OK
MsgRcvrTask: task_mbox_data_get cancellation of message #4 is OK
MsgSenderTask: task_mbox_put(TICKS_UNLIMITED) for cancelled receive test is OK
MsgRcvrTask: task_mbox_get(TICKS_UNLIMITED) of message header #1 is OK
MsgRcvrTask: task_mbox_data_block_get of message data #1 is OK
MsgSenderTask: task_mbox_put(TICKS_UNLIMITED) for block-based receive test is OK
MsgRcvrTask: task_mbox_get(TICKS_UNLIMITED) of message header #2 is OK
MsgRcvrTask: task_mbox_data_block_get of message data #2 is OK
MsgSenderTask: task_mbox_put(TICKS_UNLIMITED) for block-exhaustion receive test is OK
MsgRcvrTask: task_mbox_get(TICKS_UNLIMITED) of message header #3 is OK
MsgRcvrTask: task_mbox_data_get of message data #3 is OK
MsgSenderTask: task_mbox_put(timeout) for long-duration receive test is OK
===================================================================
PROJECT EXECUTION SUCCESSFUL
