| /** @file |
| |
| The file defines the EFI Debugport protocol. |
| This protocol is used by debug agent to communicate with the |
| remote debug host. |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| **/ |
| |
| #ifndef __DEBUG_PORT_H__ |
| #define __DEBUG_PORT_H__ |
| |
| |
| /// |
| /// DebugPortIo protocol {EBA4E8D2-3858-41EC-A281-2647BA9660D0} |
| /// |
| #define EFI_DEBUGPORT_PROTOCOL_GUID \ |
| { \ |
| 0xEBA4E8D2, 0x3858, 0x41EC, {0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \ |
| } |
| |
| extern EFI_GUID gEfiDebugPortProtocolGuid; |
| |
| typedef struct _EFI_DEBUGPORT_PROTOCOL EFI_DEBUGPORT_PROTOCOL; |
| |
| // |
| // DebugPort member functions |
| // |
| |
| /** |
| Resets the debugport. |
| |
| @param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance. |
| |
| @retval EFI_SUCCESS The debugport device was reset and is in usable state. |
| @retval EFI_DEVICE_ERROR The debugport device could not be reset and is unusable. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_DEBUGPORT_RESET)( |
| IN EFI_DEBUGPORT_PROTOCOL *This |
| ); |
| |
| /** |
| Writes data to the debugport. |
| |
| @param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance. |
| @param Timeout The number of microseconds to wait before timing out a write operation. |
| @param BufferSize On input, the requested number of bytes of data to write. On output, the |
| number of bytes of data actually written. |
| @param Buffer A pointer to a buffer containing the data to write. |
| |
| @retval EFI_SUCCESS The data was written. |
| @retval EFI_DEVICE_ERROR The device reported an error. |
| @retval EFI_TIMEOUT The data write was stopped due to a timeout. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_DEBUGPORT_WRITE)( |
| IN EFI_DEBUGPORT_PROTOCOL *This, |
| IN UINT32 Timeout, |
| IN OUT UINTN *BufferSize, |
| IN VOID *Buffer |
| ); |
| |
| /** |
| Reads data from the debugport. |
| |
| @param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance. |
| @param Timeout The number of microseconds to wait before timing out a read operation. |
| @param BufferSize On input, the requested number of bytes of data to read. On output, the |
| number of bytes of data actually number of bytes |
| of data read and returned in Buffer. |
| @param Buffer A pointer to a buffer into which the data read will be saved. |
| |
| @retval EFI_SUCCESS The data was read. |
| @retval EFI_DEVICE_ERROR The device reported an error. |
| @retval EFI_TIMEOUT The operation was stopped due to a timeout or overrun. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_DEBUGPORT_READ)( |
| IN EFI_DEBUGPORT_PROTOCOL *This, |
| IN UINT32 Timeout, |
| IN OUT UINTN *BufferSize, |
| OUT VOID *Buffer |
| ); |
| |
| /** |
| Checks to see if any data is available to be read from the debugport device. |
| |
| @param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance. |
| |
| @retval EFI_SUCCESS At least one byte of data is available to be read. |
| @retval EFI_DEVICE_ERROR The debugport device is not functioning correctly. |
| @retval EFI_NOT_READY No data is available to be read. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_DEBUGPORT_POLL)( |
| IN EFI_DEBUGPORT_PROTOCOL *This |
| ); |
| |
| /// |
| /// This protocol provides the communication link between the debug agent and the remote host. |
| /// |
| struct _EFI_DEBUGPORT_PROTOCOL { |
| EFI_DEBUGPORT_RESET Reset; |
| EFI_DEBUGPORT_WRITE Write; |
| EFI_DEBUGPORT_READ Read; |
| EFI_DEBUGPORT_POLL Poll; |
| }; |
| |
| // |
| // DEBUGPORT variable definitions... |
| // |
| #define EFI_DEBUGPORT_VARIABLE_NAME L"DEBUGPORT" |
| #define EFI_DEBUGPORT_VARIABLE_GUID EFI_DEBUGPORT_PROTOCOL_GUID |
| |
| extern EFI_GUID gEfiDebugPortVariableGuid; |
| |
| // |
| // DebugPort device path definitions... |
| // |
| #define DEVICE_PATH_MESSAGING_DEBUGPORT EFI_DEBUGPORT_PROTOCOL_GUID |
| |
| extern EFI_GUID gEfiDebugPortDevicePathGuid; |
| |
| typedef struct { |
| EFI_DEVICE_PATH_PROTOCOL Header; |
| EFI_GUID Guid; |
| } DEBUGPORT_DEVICE_PATH; |
| |
| #endif |