]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/StatusCode/Dxe/DataHubStatusCodeWorker.c
1) Check in Pei/Dxe status code;
[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 222.
CommitLineData
56836fe9 1/** @file\r
2 Data Hub status code worker in DXE.\r
3\r
4Copyright (c) 2006, Intel Corporation. All rights reserved. \r
5This software and associated documentation (if any) is furnished\r
6under a license and may only be used or copied in accordance\r
7with the terms of the license. Except as permitted by such\r
8license, no part of this software or documentation may be\r
9reproduced, stored in a retrieval system, or transmitted in any\r
10form or by any means without the express written consent of\r
11Intel Corporation.\r
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
21EFI_LOCK mFifoLock = EFI_INITIALIZE_LOCK_VARIABLE (EFI_TPL_HIGH_LEVEL);\r
22LIST_ENTRY mRecordsFifo = INITIALIZE_LIST_HEAD_VARIABLE (mRecordsFifo);\r
23UINTN mNumberOfRecords = 0;\r
24\r
25EFI_EVENT mLogDataHubEvent;\r
26//\r
27// Cache data hub protocol.\r
28//\r
29EFI_DATA_HUB_PROTOCOL *mDataHubProtocol;\r
30\r
31\r
32/**\r
33 Return buffer of length DATAHUB_STATUSCODE_RECORD\r
34 \r
35 @retval NULL Can not allocate free memeory for record.\r
36 @retval !NULL Point to buffer of record.\r
37\r
38**/\r
39DATAHUB_STATUSCODE_RECORD *\r
40AcquireRecordBuffer (\r
41 VOID\r
42 )\r
43{\r
44 DATAHUB_STATUSCODE_RECORD *Record;\r
45\r
46 Record = (DATAHUB_STATUSCODE_RECORD *) AllocateZeroPool (sizeof (DATAHUB_STATUSCODE_RECORD));\r
47 if (NULL == Record) {\r
48 return NULL;\r
49 }\r
50 Record->Signature = DATAHUB_STATUS_CODE_SIGNATURE;\r
51\r
52 EfiAcquireLock (&mFifoLock);\r
53 InsertTailList (&mRecordsFifo, &Record->Node);\r
54 mNumberOfRecords++;\r
55 EfiReleaseLock (&mFifoLock);\r
56\r
57 return Record;\r
58}\r
59\r
60\r
61/**\r
62 Release a mRecordBuffer entry allocated by AcquirRecordBuffer ().\r
63\r
64 @param Record Point to record buffer which is acquired by AcquirRecordBuffer()\r
65 \r
66 @retval EFI_SUCCESS If DataRecord is valid.\r
67 @retval !EFI_SUCCESS The record list has empty.\r
68\r
69**/\r
70VOID\r
71FreeRecordBuffer (\r
72 IN DATAHUB_STATUSCODE_RECORD *Record\r
73 )\r
74/*++\r
75\r
76Routine Description:\r
77\r
78 Release a mRecordBuffer entry allocated by AquireEmptyRecordBuffer ().\r
79\r
80Arguments:\r
81\r
82 RecordBuffer - Data to free\r
83\r
84Returns:\r
85\r
86 EFI_SUCCESS - If DataRecord is valid\r
87 EFI_UNSUPPORTED - The record list has empty\r
88\r
89--*/\r
90{\r
91 ASSERT (Record != NULL);\r
92 ASSERT (mNumberOfRecords != 0);\r
93\r
94 EfiAcquireLock (&mFifoLock);\r
95 RemoveEntryList (&Record->Node);\r
96 mNumberOfRecords--;\r
97 EfiReleaseLock (&mFifoLock);\r
98\r
99 FreePool (Record);\r
100}\r
101\r
102\r
103/**\r
104 Report status code into DataHub.\r
105 \r
106