]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/StatusCode/Dxe/DataHubStatusCodeWorker.c
Fix EdkII tracker 223 to enhance genfvimage tool to support TE image format. If so...
[mirror_edk2.git] / EdkModulePkg / Universal / StatusCode / Dxe / DataHubStatusCodeWorker.c
Content-type: text/html ]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/StatusCode/Dxe/DataHubStatusCodeWorker.c


500 - Internal Server Error

Malformed UTF-8 character (fatal) at (eval 6) line 1, <$fd> line 252.
CommitLineData
56836fe9 1/** @file\r
2 Data Hub status code worker in DXE.\r
3\r
161c26a7 4 Copyright (c) 2006, Intel Corporation \r
5 All rights reserved. This program and the accompanying materials \r
6 are licensed and made available under the terms and conditions of the BSD License \r
7 which accompanies this distribution. The full text of the license may be found at \r
8 http://opensource.org/licenses/bsd-license.php \r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
56836fe9 12\r
13 Module Name: DataHubStatusCodeWorker.c\r
14\r
15**/\r
16#include "DxeStatusCode.h"\r
17\r
18//\r
19// Initialize FIFO to cache records.\r
20//\r
a93763b7 21STATIC \r
56836fe9 22EFI_LOCK mFifoLock = EFI_INITIALIZE_LOCK_VARIABLE (EFI_TPL_HIGH_LEVEL);\r
a93763b7 23STATIC\r
56836fe9 24LIST_ENTRY mRecordsFifo = INITIALIZE_LIST_HEAD_VARIABLE (mRecordsFifo);\r
a93763b7 25STATIC\r
56836fe9 26UINTN mNumberOfRecords = 0;\r
a93763b7 27STATIC\r
56836fe9 28EFI_EVENT mLogDataHubEvent;\r
29//\r
30// Cache data hub protocol.\r
31//\r
a93763b7 32STATIC\r
56836fe9 33EFI_DATA_HUB_PROTOCOL *mDataHubProtocol;\r
34\r
35\r
36/**\r
37 Return buffer of length DATAHUB_STATUSCODE_RECORD\r
38 \r
39 @retval NULL Can not allocate free memeory for record.\r
40 @retval !NULL Point to buffer of record.\r
41\r
42**/\r
43DATAHUB_STATUSCODE_RECORD *\r
44AcquireRecordBuffer (\r
45 VOID\r
46 )\r
47{\r
48 DATAHUB_STATUSCODE_RECORD *Record;\r
49\r
50 Record = (DATAHUB_STATUSCODE_RECORD *) AllocateZeroPool (sizeof (DATAHUB_STATUSCODE_RECORD));\r
51 if (NULL == Record) {\r
52 return NULL;\r
53 }\r
54 Record->Signature = DATAHUB_STATUS_CODE_SIGNATURE;\r
55\r
56 EfiAcquireLock (&mFifoLock);\r
57 InsertTailList (&mRecordsFifo, &Record->Node);\r
58 mNumberOfRecords++;\r
59 EfiReleaseLock (&mFifoLock);\r
60\r
61 return Record;\r
62}\r
63\r
64\r
65/**\r
66 Release a mRecordBuffer entry allocated by AcquirRecordBuffer ().\r
67\r
68 @param Record Point to record buffer which is acquired by AcquirRecordBuffer()\r
69 \r
70 @retval EFI_SUCCESS If DataRecord is valid.\r
71 @retval !EFI_SUCCESS The record list has empty.\r
72\r
73**/\r
74VOID\r
75FreeRecordBuffer (\r
76 IN DATAHUB_STATUSCODE_RECORD *Record\r
77 )\r
78/*++\r
79\r
80Routine Description:\r
81\r
82 Release a mRecordBuffer entry allocated by AquireEmptyRecordBuffer ().\r
83\r
84Arguments:\r
85\r
86 RecordBuffer - Data to free\r
87\r
88Returns:\r
89\r
90 EFI_SUCCESS - If DataRecord is valid\r
91 EFI_UNSUPPORTED - The record list has empty\r
92\r
93--*/\r
94{\r
95 ASSERT (Record != NULL);\r
96 ASSERT (mNumberOfRecords != 0);\r
97\r
98 EfiAcquireLock (&mFifoLock);\r
99 RemoveEntryList (&Record->Node);\r
100 mNumberOfRecords--;\r
101 EfiReleaseLock (&mFifoLock);\r
102\r
103 FreePool (Record);\r
104}\r
105\r
106\r
107/**\r
108 Report status code into DataHub.\r
109 \r
110