16. Protocols Debugger Support Test#
16.1. EFI_DEBUG_SUPPORT_PROTOCOL Test#
Reference Document:
UEFI Specification, EFI_DEBUG_SUPPORT_PROTOCOL Section.
16.1.1. GetMaximumProcessorIndex()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.1.1.1 |
0x2ac7927c, 0xd9df, 0x4c32, 0x87, 0xb4, 0xad, 0x0a, 0xc4, 0xbb, 0xd5, 0x92 |
EFI_DEBUG_SUPPORT_PROTOCOL.GetMaximumProcessorIndex - Invokes GetMaximumProcessorIndex() returns EFI_SUCCESS and the out parameter contains a UINTN value. |
Call GetMaximumProcessorIndex(). It should return EFI_SUCCESS and the out parameter should contain a UINTN value. |
16.1.2. RegisterPeriodicCallback()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.1.2.1 |
0x1e43071e, 0xa00d, 0x46eb, 0xbd, 0xdd, 0x8f, 0x54, 0x22, 0xef, 0x24, 0x30 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback - Invokes RegisterPeriodicCallback() installs an interrupt handler function and returns EFI_SUCCESS. |
Call RegisterPeriodicCallback() with a valid interrupt handler function. The return code should be EFI_SUCCESS. |
5.12.1.2.2 |
0x792e517a, 0xf006, 0x46e6, 0xb3, 0x19, 0xc0, 0xc8, 0x7e, 0x43, 0x8b, 0x32 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback - The SYSTEM_TIMER_VECTOR interrupt invokes the PeriodicCallback(). |
Wait for the PeriodicCallback() to be invoked by the SYSTEM_TIMER_VECTOR interrupt. The PeriodicCallback() should be invoked. |
5.12.1.2.3 |
0xef21928d, 0xa7c3, 0x4c92, 0xaa, 0x22, 0x97, 0xc3, 0x3d, 0x4d, 0xd2, 0x00 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback - The PeriodicCallback() is invoked earlier than the time event callback function. |
Create a time event and register a callback function for it with less time than the machine clock. Wait for two callback functions to be invoked. The PeriodicCallback() should be invoked earlier than the time event callback function. |
5.12.1.2.4 |
0x9f3d4d83, 0xee41, 0x41dd, 0x83, 0x13, 0x6c, 0xc0, 0x59, 0x7f, 0x22, 0x21 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback - Invokes RegisterPeriodicCallback() installs another interrupt handler function and returns EFI_ALREADY_STARTED. |
Call RegisterPeriodicCallback() with a valid interrupt handler function. The return code should be EFI_ALREADY_STARTED. |
5.12.1.2.5 |
0x29778e36, 0x09ad, 0x47db, 0x82, 0x4c, 0x5b, 0x46, 0x25, 0xd0, 0xe5, 0xb4 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback - Invokes RegisterPeriodicCallback() unstalls the interrupt handler function and returns EFI_SUCCESS. |
Call RegisterPeriodicCallback() with a NULL interrupt handler function. The return code should be EFI_SUCCESS. |
5.12.1.2.6 |
0xc34688c4, 0x9f84, 0x40a7, 0x90, 0x84, 0xe6, 0x5e, 0x2c, 0xbe, 0xae, 0x45 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback - The PeriodicCallback() is not invoked after the SYSTEM_TIMER_VECTOR interrupt. |
Wait for the SYSTEM_TIMER_VECTOR interrupt. The PeriodicCallback() should not be invoked. |
16.1.3. RegisterExceptionCallback()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.1.3.1 |
0x20bc4ac1, 0x8958, 0x446a, 0x8b, 0x5f, 0x27, 0xb3, 0xcc, 0x77, 0x41, 0x06 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Invokes RegisterExceptionCallback() installs an interrupt handler function. |
Call RegisterExceptionCallback() with a valid InterrruptHandler function, the exception type is EXCEPT_IA32_BREAKPOINT. The return code should be EFI_SUCCESS. |
5.12.1.3.2 |
0xfbfa47e8, 0xbd32, 0x4f81, 0x89, 0x38, 0xb7, 0x36, 0x47, 0x08, 0xa2, 0xb9 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Calling INT3 invokes the interrupt handler function. |
Use “INT 3” instruction to invokes the interrupt. After “INT 3” is called, the interrupt handler function should be invoked. |
5.12.1.3.3 |
0x14362c36, 0xf284, 0x4a95, 0xab, 0x1b, 0x3b, 0x67, 0xa9, 0x6e, 0x1d, 0xe8 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Invokes RegisterPeriodicCallback() installs the Periodic interrupt handler function and two callback functions are invoked. |
Call RegisterPeriodicCallback() with a valid InterrruptHandler function.Use “INT 3” instruction to invokes the Exception callback function, and wait for the periodic callback function to be invoked. The return code of RegisterPeriodicCallback() should be EFI_SUCCESS.Two callback functions should be invoked successfully. |
5.12.1.3.4 |
0x0cf314a2, 0xfe51, 0x4093, 0xb4, 0x22, 0x9f, 0x4a, 0x90, 0x98, 0xd2, 0x89 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Invokes **RegisterExceptionCallback()**installs another interrupt handler function. |
Call RegisterExceptionCallback() with a valid InterrruptHandler function. The return code should be EFI_ALREADY_STARTED. |
5.12.1.3.5 |
0x28e232bd, 0xfe72, 0x4963, 0xb3, 0x33, 0x1e, 0x83, 0x61, 0x5e, 0x1e, 0x2e |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Invokes **RegisterExceptionCallback()**uninstalls the interrupt handler function. |
Call RegisterExceptionCallback() with NULL InterrruptHandler function. The return code should be EFI_SUCCESS. |
5.12.1.3.6 |
0x59efd2fb, 0x2f7d, 0x4535, 0xa2, 0x1c, 0x39, 0x25, 0xcb, 0xb3, 0x0b, 0x87 |
EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback - Using “INT 3“ instruction does not invokes the previously installed (but now uninstalled) interrupt handler function. |
Use “INT 3“ instruction to invokes the interrupt. After “INT 3” is called, the previously installed (but now uninstalled) interrupt handler function should not be invoked. |
16.1.4. InvalidateInstructionCache()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.1.4.1 |
0x41c3bc2c, 0xf066, 0x4272, 0xac, 0xa7, 0xb9, 0x48, 0x9f, 0xac, 0x94, 0x2b |
EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache - Invokes InvalidateInstructionCache() returns EFI_SUCCESS, verifying interface correctness. |
Call InvalidateInstructionCache().The return code should be EFI_SUCCESS. |
16.1.5. Isa#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.1.5.1 |
0x701d9223, 0x1123, 0x40a2, 0xa8, 0x81, 0x5f, 0xd6, 0x68, 0xeb, 0x32, 0x87 |
EFI_DEBUG_SUPPORT_PROTOCOL.Isa – The instruction is IA32, IPF, or EBC. |
Get the Isa value, it should be IA32 (0x014C), IPF (0x0200), or EBC (0xEBC). |
16.2. EFI_DEBUGPORT_PROTOCOL Test#
Reference Document:
UEFI Specification, EFI_DEBUGPORT_PROTOCOL Section.
16.2.1. Reset()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.2.1.1 |
0x6aca7c62, 0x7bbe, 0x4d1b, 0x9c, 0x8a, 0xc7, 0x7a, 0x6c, 0x68, 0x74, 0x76 |
EFI_DEBUGPORT_PROTOCOL.Reset - Invokes Reset() returns EFI_SUCCESS, verifying interface correctness within test case. |
Call Reset().It should return EFI_SUCCESS. |
16.2.2. Write()#
No automatic test is designed to verify this function.
16.2.3. Read()#
No automatic test is designed to verify this function.
16.2.4. Poll()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.12.2.4.1 |
0x4bf087b2, 0xe914, 0x4056, 0x8e, 0x1a, 0x25, 0xf0, 0x13, 0x54, 0x31, 0x26 |
EFI_DEBUGPORT_PROTOCOL.Poll - Calling **Poll()**when the debug port has data returns EFI_SUCCESS. |
Call Write() to send data to the debug port. Call Poll() to check the debug port to see if any data is available to be read. The return code of Poll() should be EFI_SUCCESS. |
5.12.2.4.2 |
0x838a1da2, 0x9640, 0x47f3, 0xba, 0xc1, 0x39, 0x26, 0xf3, 0x1d, 0x00, 0xc2 |
EFI_DEBUGPORT_PROTOCOL.Poll - Calling Poll() when the debug port does not have data returns EFI_NOT_READY. |
Call Reset() to reset the debug port. Call Poll() to check the debug port to see if any data is available to be read. The return code of Poll() should be EFI_NOT_READY. |