summaryrefslogtreecommitdiff
path: root/EdkModulePkg/Library/EdkRuntimeStatusCodeLib/BsDataHubStatusCode/BsDataHubStatusCode.h
blob: f15a90e5e272c155dabd8293b78ecbc46846a43e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*++

Copyright (c) 2006, Intel Corporation                                                         
All rights reserved. This program and the accompanying materials                          
are licensed and made available under the terms and conditions of the BSD License         
which accompanies this distribution.  The full text of the license may be found at        
http://opensource.org/licenses/bsd-license.php                                            
                                                                                          
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

Module Name:

  BsDataHubStatusCode.h

Abstract:

  Header for the status code data hub logging component

--*/

#ifndef _EFI_BS_DATA_HUB_STATUS_CODE_H_
#define _EFI_BS_DATA_HUB_STATUS_CODE_H_

//
// Private data declarations
//
#define MAX_RECORD_NUM                    1000
#define BYTES_PER_RECORD                  EFI_STATUS_CODE_DATA_MAX_SIZE
#define EMPTY_RECORD_TAG                  0xFF

#define BS_DATA_HUB_STATUS_CODE_SIGNATURE EFI_SIGNATURE_32 ('B', 'D', 'H', 'S')

typedef struct {
  UINTN           Signature;
  LIST_ENTRY      Link;
  UINT8           RecordBuffer[BYTES_PER_RECORD];
} STATUS_CODE_RECORD_LIST;

//
// Function prototypes
//
STATUS_CODE_RECORD_LIST           *
GetRecordBuffer (
  VOID
  )
;

/*++

Routine Description:

  Returned buffer of length BYTES_PER_RECORD

Arguments:

  None

Returns:

  Entry in mRecordBuffer or NULL if non available

--*/
DATA_HUB_STATUS_CODE_DATA_RECORD  *
AquireEmptyRecordBuffer (
  VOID
  )
;

/*++

Routine Description:

  Allocate a mRecordBuffer entry in the form of a pointer.

Arguments:

  None

Returns:

  Pointer to new buffer. NULL if none exist.

--*/
EFI_STATUS
ReleaseRecordBuffer (
  IN  STATUS_CODE_RECORD_LIST  *RecordBuffer
  )
;

/*++

Routine Description:

  Release a mRecordBuffer entry allocated by AquireEmptyRecordBuffer ().

Arguments:

  RecordBuffer          - Data to free

Returns:

  EFI_SUCCESS           - If RecordBuffer is valid
  EFI_UNSUPPORTED       - The record list has empty

--*/
VOID
EFIAPI
LogDataHubEventHandler (
  IN  EFI_EVENT   Event,
  IN  VOID        *Context
  )
;

/*++

Routine Description:

  Event Handler that log in Status code in Data Hub.

Arguments:

  (Standard EFI Event Handler - EFI_EVENT_NOTIFY)

Returns:

  NONE

--*/
#endif