Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
OpenCorePKG_MOD
提交
a495198f
O
OpenCorePKG_MOD
项目概览
btwise
/
OpenCorePKG_MOD
通知
26
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
OpenCorePKG_MOD
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a495198f
编写于
10月 16, 2021
作者:
M
MikeBeaton
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OcFlexArrayLib: Add optional TRACE debugging
上级
ecceb47e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
54 addition
and
11 deletion
+54
-11
Include/Acidanthera/Library/OcFlexArrayLib.h
Include/Acidanthera/Library/OcFlexArrayLib.h
+4
-0
Library/OcFlexArrayLib/FlexArray.c
Library/OcFlexArrayLib/FlexArray.c
+50
-11
未找到文件。
Include/Acidanthera/Library/OcFlexArrayLib.h
浏览文件 @
a495198f
...
...
@@ -6,6 +6,10 @@
#ifndef OC_FLEX_ARRAY_LIB_H
#define OC_FLEX_ARRAY_LIB_H
#if !defined(OC_TRACE_FLEX)
#define OC_TRACE_FLEX DEBUG_VERBOSE
#endif
#include <Uefi.h>
#include <Library/OcStringLib.h>
#include <Protocol/ApplePlatformInfoDatabase.h>
...
...
Library/OcFlexArrayLib/FlexArray.c
浏览文件 @
a495198f
...
...
@@ -29,9 +29,30 @@ OcFlexArrayInit (
FlexArray
->
ItemSize
=
ItemSize
;
FlexArray
->
FreeItem
=
FreeItem
;
}
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: Init %p %u
\n
"
,
FlexArray
,
ItemSize
));
return
FlexArray
;
}
STATIC
VOID
*
InternalFlexArrayItemAt
(
IN
CONST
OC_FLEX_ARRAY
*
FlexArray
,
IN
CONST
UINTN
Index
)
{
VOID
*
Item
;
ASSERT
(
FlexArray
!=
NULL
);
ASSERT
(
Index
<
FlexArray
->
Count
);
ASSERT
(
FlexArray
->
Items
!=
NULL
);
Item
=
((
UINT8
*
)
FlexArray
->
Items
)
+
Index
*
FlexArray
->
ItemSize
;
return
Item
;
}
STATIC
VOID
*
InternalFlexArrayAddItem
(
...
...
@@ -71,7 +92,7 @@ InternalFlexArrayAddItem (
}
}
Item
=
Oc
FlexArrayItemAt
(
FlexArray
,
FlexArray
->
Count
-
1
);
Item
=
Internal
FlexArrayItemAt
(
FlexArray
,
FlexArray
->
Count
-
1
);
return
Item
;
}
...
...
@@ -91,6 +112,8 @@ OcFlexArrayAddItem (
ZeroMem
(
Item
,
FlexArray
->
ItemSize
);
}
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: Add %p %p
\n
"
,
FlexArray
,
Item
));
return
Item
;
}
...
...
@@ -116,12 +139,14 @@ OcFlexArrayInsertItem (
return
Item
;
}
Item
=
Oc
FlexArrayItemAt
(
FlexArray
,
InsertIndex
);
Dest
=
Oc
FlexArrayItemAt
(
FlexArray
,
InsertIndex
+
1
);
Item
=
Internal
FlexArrayItemAt
(
FlexArray
,
InsertIndex
);
Dest
=
Internal
FlexArrayItemAt
(
FlexArray
,
InsertIndex
+
1
);
CopyMem
(
Dest
,
Item
,
(
FlexArray
->
Count
-
InsertIndex
)
*
FlexArray
->
ItemSize
);
ZeroMem
(
Item
,
FlexArray
->
ItemSize
);
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: Insert %p %p
\n
"
,
FlexArray
,
Item
));
return
Item
;
}
...
...
@@ -131,12 +156,20 @@ OcFlexArrayItemAt (
IN
CONST
UINTN
Index
)
{
if
(
Index
>=
FlexArray
->
Count
||
FlexArray
->
Items
==
NULL
)
{
ASSERT
(
FALSE
);
return
NULL
;
}
return
((
UINT8
*
)
FlexArray
->
Items
)
+
Index
*
FlexArray
->
ItemSize
;
VOID
*
Item
;
//
// Repeat these checks here and in internal ItemAt for easier debugging if they fail.
//
ASSERT
(
FlexArray
!=
NULL
);
ASSERT
(
Index
<
FlexArray
->
Count
);
ASSERT
(
FlexArray
->
Items
!=
NULL
);
Item
=
InternalFlexArrayItemAt
(
FlexArray
,
Index
);
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: At %p %p
\n
"
,
FlexArray
,
Item
));
return
Item
;
}
VOID
...
...
@@ -146,13 +179,15 @@ OcFlexArrayFree (
{
UINTN
Index
;
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: Free %p
\n
"
,
FlexArray
));
ASSERT
(
FlexArray
!=
NULL
);
if
(
*
FlexArray
!=
NULL
)
{
if
((
*
FlexArray
)
->
Items
!=
NULL
)
{
if
((
*
FlexArray
)
->
FreeItem
!=
NULL
)
{
for
(
Index
=
0
;
Index
<
(
*
FlexArray
)
->
Count
;
Index
++
)
{
(
*
FlexArray
)
->
FreeItem
(
Oc
FlexArrayItemAt
(
*
FlexArray
,
Index
));
(
*
FlexArray
)
->
FreeItem
(
Internal
FlexArrayItemAt
(
*
FlexArray
,
Index
));
}
}
FreePool
((
*
FlexArray
)
->
Items
);
...
...
@@ -168,12 +203,14 @@ OcFlexArrayDiscardItem (
IN
CONST
BOOLEAN
FreeItem
)
{
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: Discard %p %u
\n
"
,
FlexArray
,
FreeItem
));
ASSERT
(
FlexArray
!=
NULL
);
ASSERT
(
FlexArray
->
Items
!=
NULL
);
ASSERT
(
FlexArray
->
Count
>
0
);
if
(
FreeItem
&&
FlexArray
->
FreeItem
!=
NULL
)
{
FlexArray
->
FreeItem
(
Oc
FlexArrayItemAt
(
FlexArray
,
FlexArray
->
Count
-
1
));
FlexArray
->
FreeItem
(
Internal
FlexArrayItemAt
(
FlexArray
,
FlexArray
->
Count
-
1
));
}
--
FlexArray
->
Count
;
...
...
@@ -186,6 +223,8 @@ OcFlexArrayFreeContainer (
IN
UINTN
*
Count
)
{
DEBUG
((
OC_TRACE_FLEX
,
"FLEX: FreeContainer %p
\n
"
,
FlexArray
));
if
(
FlexArray
==
NULL
||
*
FlexArray
==
NULL
)
{
ASSERT
(
FALSE
);
*
Items
=
NULL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录