diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxAppleSim/DataHub.h')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxAppleSim/DataHub.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxAppleSim/DataHub.h b/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxAppleSim/DataHub.h new file mode 100644 index 00000000..976de54d --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxAppleSim/DataHub.h @@ -0,0 +1,178 @@ +/* $Id: DataHub.h $ */ +/** @file + * DataHub.h + */ + +/* + * Copyright (C) 2019-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included + * in the VirtualBox distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + * + * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 + */ + +#ifndef __DATA_HUB_H__ +#define __DATA_HUB_H__ + +#define EFI_DATA_HUB_PROTOCOL_GUID \ + { 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81} } + +typedef struct _EFI_DATA_HUB_PROTOCOL EFI_DATA_HUB_PROTOCOL; + + +#define EFI_DATA_RECORD_HEADER_VERSION 0x0100 + +#define EFI_DATA_CLASS_DEBUG 0x1ULL +#define EFI_DATA_CLASS_ERROR 0x2ULL +#define EFI_DATA_CLASS_DATA 0x4ULL +#define EFI_DATA_CLASS_PROGRESS_CODE 0x8ULL + +typedef struct { + UINT16 Version; + UINT16 HeaderSize; + UINT32 RecordSize; + EFI_GUID DataRecordGuid; + EFI_GUID ProducerName; + UINT64 DataRecordClass; + EFI_TIME LogTime; + UINT64 LogMonotonicCount; +} EFI_DATA_RECORD_HEADER; + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_LOG_DATA) ( + IN EFI_DATA_HUB_PROTOCOL *This, + IN EFI_GUID *DataRecordGuid, + IN EFI_GUID *ProducerName, + IN UINT64 DataRecordClass, + IN VOID *RawData, + IN UINT32 RawDataSize + ) +/*++ + + Routine Description: + Logs a data record to the system event log. + + Arguments: + This - Protocol instance pointer. + + + Returns: + EFI_SUCCESS - Data was logged. + +--*/ +; + + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_GET_NEXT_DATA_RECORD) ( + IN EFI_DATA_HUB_PROTOCOL *This, + IN OUT UINT64 *MonotonicCount, + IN EFI_EVENT *FilterDriver OPTIONAL, + OUT EFI_DATA_RECORD_HEADER **Record + ) +/*++ + + Routine Description: + Allows the system data log to be searched. + + Arguments: + This - Protocol instance pointer. + + + Returns: + EFI_SUCCESS - Data was logged. + +--*/ +; + + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_REGISTER_DATA_FILTER_DRIVER) ( + IN EFI_DATA_HUB_PROTOCOL *This, + IN EFI_EVENT FilterEvent, + IN EFI_TPL FilterTpl, + IN UINT64 FilterClass, + IN EFI_GUID *FilterDataRecordGui OPTIONAL + ) +/*++ + + Routine Description: + Registers an event to be signaled evey time a data record is logged in the system. + + Arguments: + This - Protocol instance pointer. + + + Returns: + EFI_SUCCESS - The filter driver event was registered. + +--*/ +; + + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_UNREGISTER_DATA_FILTER_DRIVER) ( + IN EFI_DATA_HUB_PROTOCOL *This, + IN EFI_EVENT FilterEvent + ) +/*++ + + Routine Description: + Stops a filter driver from being notified when data records are logged. + + Arguments: + This - Protocol instance pointer. + + + Returns: + EFI_SUCCESS - The filter driver represented by FilterEvent was shut off. + +--*/ +; + + +struct _EFI_DATA_HUB_PROTOCOL { + EFI_DATA_HUB_LOG_DATA LogData; + EFI_DATA_HUB_GET_NEXT_DATA_RECORD GetNextDataRecord; + EFI_DATA_HUB_REGISTER_DATA_FILTER_DRIVER RegisterFilterDriver; + EFI_DATA_HUB_UNREGISTER_DATA_FILTER_DRIVER UnregisterFilterDriver; +}; + +extern EFI_GUID gEfiDataHubProtocolGuid; + + +EFI_STATUS +EFIAPI +InitializeDataHub ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); + +#endif |