提交 6fc0caa3 编写于 作者: V vit9696

Docs: Sync and provide coding conventions

上级 72b4a21d
...@@ -7,6 +7,8 @@ OpenCore Changelog ...@@ -7,6 +7,8 @@ OpenCore Changelog
- Fixed rare kext injection failure due to plist-only kext in prelinkedkernel - Fixed rare kext injection failure due to plist-only kext in prelinkedkernel
- Fixed error reporting for dmg loading - Fixed error reporting for dmg loading
- Added various debugging improvements - Added various debugging improvements
- Added new crypto stack resulting in vault key format changes
- Added `UnblockFsConnect` UEFI quirk to fix missing filesystems on some laptops
#### v0.5.2 #### v0.5.2
- Fixed `MinKernel` and `MaxKernel` logic (thx @dhinakg, @reitermarkus) - Fixed `MinKernel` and `MaxKernel` logic (thx @dhinakg, @reitermarkus)
......
...@@ -602,6 +602,108 @@ across the releases and the tool shall ensure that it carefully follows this doc ...@@ -602,6 +602,108 @@ across the releases and the tool shall ensure that it carefully follows this doc
Failure to do so may result in this tool to be considered as malware and blocked with Failure to do so may result in this tool to be considered as malware and blocked with
all possible means. all possible means.
\subsection{Coding conventions}\label{configuration-conv}
Just like any other project we have conventions that we follow during the development.
All third-party contributors are highly recommended to read and follow the conventions
listed below before submitting their patches. In general it is also recommended to firstly
discuss the issue in \href{https://github.com/acidanthera/bugtracker}{Acidanthera Bugtracker}
before sending the patch to ensure no double work and to avoid your patch being rejected.
\textbf{Organisation}. The codebase is structured in multiple repositories
which contain separate EDK II packages. \texttt{AppleSupportPkg} and \texttt{OpenCorePkg}
are primary packages, and \texttt{EfiPkg}, \texttt{OcSupportPkg}, \texttt{MacInfoPkg.dsc})
are dependent packages.
\begin{itemize}
\tightlist
\item Whenever changes are required in multiple repositories, separate pull requests should
be sent to each.
\item Committing the changes should happen firstly to dependent repositories, secondly to
primary repositories to avoid automatic build errors.
\item Each unique commit should compile with \texttt{XCODE5} and preferably with other
toolchains. In the majority of the cases it can be checked by accessing the
\href{https://travis-ci.com/acidanthera}{CI interface}. Ensuring that static analysis finds
no warnings is preferred.
\item External pull requests and tagged commits must be validated. That said, commits in
master may build but may not necessarily work.
\item Internal branches should be named as follows: \texttt{author-name-date}, e.g.
\texttt{vit9696-ballooning-20191026}.
\item Commit messages should be prefixed with the primary module (e.g. library or code module) the
changes were made in. For example, \texttt{OcGuardLib: Add OC\_ALIGNED macro}. For non-library changes
\texttt{Docs} or \texttt{Build} prefixes are used.
\end{itemize}
\textbf{Design}. The codebase is written in a subset of freestanding C11 (C17) supported by
most modern toolchains used by EDK II. Applying common software development practices or requesting
clarification is recommended if any particular case is not discussed below.
\begin{itemize}
\tightlist
\item Never rely on undefined behaviour and try to avoid implementation defined behaviour unless
explicitly covered below (feel free to create an issue when a relevant case is not present).
\item Use \texttt{OcGuardLib} to ensure safe integral arithmetics avoiding overflows. Unsigned
wraparound should be relied on with care and reduced to the necessary amount.
\item Check pointers for correct alignment with \texttt{OcGuardLib} and do not rely on the architecture
being able to dereference unaligned pointers.
\item Use flexible array members instead of zero-length or one-length arrays where necessary.
\item Use static assertions (\texttt{STATIC\_ASSERT}) for type and value assumptions, and runtime
assertions (\texttt{ASSERT}) for precondition and invariant sanity checking. Do not use runtime
assertions to check for errors as they should never alter control flow and potentially be excluded.
\item Assume \texttt{UINT32}/\texttt{INT32} to be \texttt{int}-sized and use \texttt{\%u},
\texttt{\%d}, and \texttt{\%x} to print them.
\item Assume \texttt{UINTN}/\texttt{INTN} to be of unspecified size, and cast them to
\texttt{UINT64}/\texttt{INT64} for printing with \texttt{\%Lu}, \texttt{\%Ld} and so on as normal.
\item Do not rely on integer promotions for numeric literals. Use explicit casts when the type is
implementation-dependent or suffixes when type size is known. Assume \texttt{U} for \texttt{UINT32}
and \texttt{ULL} for \texttt{UINT64}.
\item Do ensure unsigned arithmetics especially in bitwise maths, shifts in particular.
\item \texttt{sizeof} operator should take variables instead of types where possible to be error prone.
Use \texttt{ARRAY\_SIZE} to obtain array size in elements. Use \texttt{L\_STR\_LEN} and
\texttt{L\_STR\_SIZE} macros from \texttt{OcStringLib} to obtain string literal sizes to ensure compiler
optimisation.
\item Do not use \texttt{goto} keyword. Prefer early \texttt{return}, \texttt{break}, or \texttt{continue}
after failing to pass error checking instead of nesting conditionals.
\item Use \texttt{EFIAPI}, force UEFI calling convention, only in protocols, external callbacks between
modules, and functions with variadic arguments.
\item Provide inline documentation to every added function, at least describing its inputs, outputs,
precondition, postcondition, and giving a brief description.
\item Do not use \texttt{RETURN\_STATUS}. Assume \texttt{EFI\_STATUS} to be a matching superset that is
to be always used when \texttt{BOOLEAN} is not enough.
\item Security violations should halt the system or cause a forced reboot.
\end{itemize}
\textbf{Codestyle}. The codebase follows
\href{https://github.com/tianocore/tianocore.github.io/wiki/Code-Style-C}{EDK II codestyle} with few changes
and clarifications.
\begin{itemize}
\tightlist
\item Write inline documentation for the functions and variables only once: in headers, where a header prototype
is available, and inline for \texttt{static} variables and functions.
\item Use line length of 120 characters or less, preferably 100 characters.
\item Use spaces after casts, e.g. \texttt{(VOID *)(UINTN) Variable}.
\item Use SPDX license headers as shown in
\href{https://github.com/acidanthera/bugtracker/issues/483}{acidanthera/bugtracker\#483}.
\end{itemize}
\textbf{Debugging}. The codebase incorporates EDK II debugging and few custom features to improve the experience.
\begin{itemize}
\tightlist
\item Use module prefixes, 2-5 letters followed by a colon (\texttt{:}), for debug messages. For \texttt{OpenCorePkg}
use \texttt{OC:}, for libraries and drivers use their own unique prefixes.
\item Do not use dots (\texttt{.}) in the end of debug messages and separate \texttt{EFI\_STATUS}, printed by
\texttt{\%r}, with a hyphen (e.g. \texttt{OCRAM: Allocation of \%u bytes failed - \%r\textbackslash n}).
\item Use \texttt{DEBUG\_CODE\_BEGIN ()} and \texttt{DEBUG\_CODE\_END ()} constructions to guard debug checks
that may potentially reduce the performance of release builds and are otherwise unnecessary.
\item Use \texttt{DEBUG} macro to print debug messages during normal functioning, and \texttt{RUNTIME\_DEBUG} for
debugging after \texttt{EXIT\_BOOT\_SERVICES}.
\item Use \texttt{DEBUG\_VERBOSE} debug level to leave debug messages for future debugging of the code, which
are currently not necessary. By default \texttt{DEBUG\_VERBOSE} messages are ignored even in \texttt{DEBUG} builds.
\item Use \texttt{DEBUG\_INFO} debug level for all non critical messages (including errors) and \texttt{DEBUG\_BULK\_INFO}
for extensive messages that should not appear in NVRAM log that is heavily limited in size. These messages are ignored in
\texttt{RELEASE} builds.
\item Use \texttt{DEBUG\_ERROR} to print critical human visible messages that may potentially halt the boot process, and
\texttt{DEBUG\_WARN} for all other human visible errors, \texttt{RELEASE} builds included.
\end{itemize}
\section{ACPI}\label{acpi} \section{ACPI}\label{acpi}
\subsection{Introduction}\label{acpiintro} \subsection{Introduction}\label{acpiintro}
...@@ -3675,6 +3777,18 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc ...@@ -3675,6 +3777,18 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc
recommended. For known issues refer to recommended. For known issues refer to
\href{https://github.com/acidanthera/bugtracker/issues/449}{\texttt{acidanthera/bugtracker\#449}}. \href{https://github.com/acidanthera/bugtracker/issues/449}{\texttt{acidanthera/bugtracker\#449}}.
\item
\texttt{ClearScreenOnModeSwitch}\\
\textbf{Type}: \texttt{plist\ boolean}\\
\textbf{Failsafe}: \texttt{false}\\
\textbf{Description}: Some firmwares clear only part of screen when switching
from graphics to text mode, leaving a fragment of previously drawn image visible.
This option fills the entire graphics screen with black color before switching to
text mode.
\emph{Note}: \texttt{ConsoleControl} should be set to
\texttt{true} for this to work.
\item \item
\texttt{ExitBootServicesDelay}\\ \texttt{ExitBootServicesDelay}\\
\textbf{Type}: \texttt{plist\ integer}\\ \textbf{Type}: \texttt{plist\ integer}\\
...@@ -3781,18 +3895,15 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc ...@@ -3781,18 +3895,15 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc
\emph{Note}: \texttt{ConsoleControl} may need to be set to \emph{Note}: \texttt{ConsoleControl} may need to be set to
\texttt{true} for this to work. On all known affected systems \texttt{true} for this to work. On all known affected systems
\texttt{ConsoleMode} had to be set to empty string for this to work. \texttt{ConsoleMode} had to be set to empty string for this to work.
\item \item
\texttt{ClearScreenOnModeSwitch}\\ \texttt{UnblockFsConnect}\\
\textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Type}: \texttt{plist\ boolean}\\
\textbf{Failsafe}: \texttt{false}\\ \textbf{Failsafe}: \texttt{false}\\
\textbf{Description}: Some firmwares clear only part of screen when switching \textbf{Description}: Some firmwares block partition handles by opening them
from graphics to text mode, leaving a fragment of previously drawn image visible. in By Driver mode, which results in File System protocols being unable to install.
This option fills the entire graphics screen with black color before switching to
text mode.
\emph{Note}: \texttt{ConsoleControl} should be set to \emph{Note}: The quirk is mostly relevant for select HP laptops with no drives listed.
\texttt{true} for this to work.
\end{enumerate} \end{enumerate}
......
\documentclass[]{article} \documentclass[]{article}
%DIF LATEXDIFF DIFFERENCE FILE %DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL PreviousConfiguration.tex Fri Nov 1 12:48:55 2019 %DIF DEL PreviousConfiguration.tex Sun Nov 3 16:31:21 2019
%DIF ADD ../Configuration.tex Fri Nov 1 12:59:01 2019 %DIF ADD ../Configuration.tex Thu Nov 7 10:22:26 2019
\usepackage{lmodern} \usepackage{lmodern}
\usepackage{amssymb,amsmath} \usepackage{amssymb,amsmath}
...@@ -662,7 +662,110 @@ across the releases and the tool shall ensure that it carefully follows this doc ...@@ -662,7 +662,110 @@ across the releases and the tool shall ensure that it carefully follows this doc
Failure to do so may result in this tool to be considered as malware and blocked with Failure to do so may result in this tool to be considered as malware and blocked with
all possible means. all possible means.
\section{ACPI}\label{acpi} \DIFaddbegin \subsection{\DIFadd{Coding conventions}}\label{configuration-conv}
\DIFadd{Just like any other project we have conventions that we follow during the development.
All third-party contributors are highly recommended to read and follow the conventions
listed below before submitting their patches. In general it is also recommended to firstly
discuss the issue in }\href{https://github.com/acidanthera/bugtracker}{Acidanthera Bugtracker}
\DIFadd{before sending the patch to ensure no double work and to avoid your patch being rejected.
}
\textbf{\DIFadd{Organisation}}\DIFadd{. The codebase is structured in multiple repositories
which contain separate EDK II packages. }\texttt{\DIFadd{AppleSupportPkg}} \DIFadd{and }\texttt{\DIFadd{OpenCorePkg}}
\DIFadd{are primary packages, and }\texttt{\DIFadd{EfiPkg}}\DIFadd{, }\texttt{\DIFadd{OcSupportPkg}}\DIFadd{, }\texttt{\DIFadd{MacInfoPkg.dsc}}\DIFadd{)
are dependent packages.
}\begin{itemize}
\tightlist
\item \DIFadd{Whenever changes are required in multiple repositories, separate pull requests should
be sent to each.
}\item \DIFadd{Committing the changes should happen firstly to dependent repositories, secondly to
primary repositories to avoid automatic build errors.
}\item \DIFadd{Each unique commit should compile with }\texttt{\DIFadd{XCODE5}} \DIFadd{and preferably with other
toolchains. In the majority of the cases it can be checked by accessing the
}\href{https://travis-ci.com/acidanthera}{CI interface}\DIFadd{. Ensuring that static analysis finds
no warnings is preferred.
}\item \DIFadd{External pull requests and tagged commits must be validated. That said, commits in
master may build but may not necessarily work.
}\item \DIFadd{Internal branches should be named as follows: }\texttt{\DIFadd{author-name-date}}\DIFadd{, e.g.
}\texttt{\DIFadd{vit9696-ballooning-20191026}}\DIFadd{.
}\item \DIFadd{Commit messages should be prefixed with the primary module (e.g. library or code module) the
changes were made in. For example, }\texttt{\DIFadd{OcGuardLib: Add OC\_ALIGNED macro}}\DIFadd{. For non-library changes
}\texttt{\DIFadd{Docs}} \DIFadd{or }\texttt{\DIFadd{Build}} \DIFadd{prefixes are used.
}\end{itemize}
\textbf{\DIFadd{Design}}\DIFadd{. The codebase is written in a subset of freestanding C11 (C17) supported by
most modern toolchains used by EDK II. Applying common software development practices or requesting
clarification is recommended if any particular case is not discussed below.
}\begin{itemize}
\tightlist
\item \DIFadd{Never rely on undefined behaviour and try to avoid implementation defined behaviour unless
explicitly covered below (feel free to create an issue when a relevant case is not present).
}\item \DIFadd{Use }\texttt{\DIFadd{OcGuardLib}} \DIFadd{to ensure safe integral arithmetics avoiding overflows. Unsigned
wraparound should be relied on with care and reduced to the necessary amount.
}\item \DIFadd{Check pointers for correct alignment with }\texttt{\DIFadd{OcGuardLib}} \DIFadd{and do not rely on the architecture
being able to dereference unaligned pointers.
}\item \DIFadd{Use flexible array members instead of zero-length or one-length arrays where necessary.
}\item \DIFadd{Use static assertions (}\texttt{\DIFadd{STATIC\_ASSERT}}\DIFadd{) for type and value assumptions, and runtime
assertions (}\texttt{\DIFadd{ASSERT}}\DIFadd{) for precondition and invariant sanity checking. Do not use runtime
assertions to check for errors as they should never alter control flow and potentially be excluded.
}\item \DIFadd{Assume }\texttt{\DIFadd{UINT32}}\DIFadd{/}\texttt{\DIFadd{INT32}} \DIFadd{to be }\texttt{\DIFadd{int}}\DIFadd{-sized and use }\texttt{\DIFadd{\%u}}\DIFadd{,
}\texttt{\DIFadd{\%d}}\DIFadd{, and }\texttt{\DIFadd{\%x}} \DIFadd{to print them.
}\item \DIFadd{Assume }\texttt{\DIFadd{UINTN}}\DIFadd{/}\texttt{\DIFadd{INTN}} \DIFadd{to be of unspecified size, and cast them to
}\texttt{\DIFadd{UINT64}}\DIFadd{/}\texttt{\DIFadd{INT64}} \DIFadd{for printing with }\texttt{\DIFadd{\%Lu}}\DIFadd{, }\texttt{\DIFadd{\%Ld}} \DIFadd{and so on as normal.
}\item \DIFadd{Do not rely on integer promotions for numeric literals. Use explicit casts when the type is
implementation-dependent or suffixes when type size is known. Assume }\texttt{\DIFadd{U}} \DIFadd{for }\texttt{\DIFadd{UINT32}}
\DIFadd{and }\texttt{\DIFadd{ULL}} \DIFadd{for }\texttt{\DIFadd{UINT64}}\DIFadd{.
}\item \DIFadd{Do ensure unsigned arithmetics especially in bitwise maths, shifts in particular.
}\item \texttt{\DIFadd{sizeof}} \DIFadd{operator should take variables instead of types where possible to be error prone.
Use }\texttt{\DIFadd{ARRAY\_SIZE}} \DIFadd{to obtain array size in elements. Use }\texttt{\DIFadd{L\_STR\_LEN}} \DIFadd{and
}\texttt{\DIFadd{L\_STR\_SIZE}} \DIFadd{macros from }\texttt{\DIFadd{OcStringLib}} \DIFadd{to obtain string literal sizes to ensure compiler
optimisation.
}\item \DIFadd{Do not use }\texttt{\DIFadd{goto}} \DIFadd{keyword. Prefer early }\texttt{\DIFadd{return}}\DIFadd{, }\texttt{\DIFadd{break}}\DIFadd{, or }\texttt{\DIFadd{continue}}
\DIFadd{after failing to pass error checking instead of nesting conditionals.
}\item \DIFadd{Use }\texttt{\DIFadd{EFIAPI}}\DIFadd{, force UEFI calling convention, only in protocols, external callbacks between
modules, and functions with variadic arguments.
}\item \DIFadd{Provide inline documentation to every added function, at least describing its inputs, outputs,
precondition, postcondition, and giving a brief description.
}\item \DIFadd{Do not use }\texttt{\DIFadd{RETURN\_STATUS}}\DIFadd{. Assume }\texttt{\DIFadd{EFI\_STATUS}} \DIFadd{to be a matching superset that is
to be always used when }\texttt{\DIFadd{BOOLEAN}} \DIFadd{is not enough.
}\item \DIFadd{Security violations should halt the system or cause a forced reboot.
}\end{itemize}
\textbf{\DIFadd{Codestyle}}\DIFadd{. The codebase follows
}\href{https://github.com/tianocore/tianocore.github.io/wiki/Code-Style-C}{EDK II codestyle} \DIFadd{with few changes
and clarifications.
}\begin{itemize}
\tightlist
\item \DIFadd{Write inline documentation for the functions and variables only once: in headers, where a header prototype
is available, and inline for }\texttt{\DIFadd{static}} \DIFadd{variables and functions.
}\item \DIFadd{Use line length of 120 characters or less, preferably 100 characters.
}\item \DIFadd{Use spaces after casts, e.g. }\texttt{\DIFadd{(VOID *)(UINTN) Variable}}\DIFadd{.
}\item \DIFadd{Use SPDX license headers as shown in
}\href{https://github.com/acidanthera/bugtracker/issues/483}{acidanthera/bugtracker\#483}\DIFadd{.
}\end{itemize}
\textbf{\DIFadd{Debugging}}\DIFadd{. The codebase incorporates EDK II debugging and few custom features to improve the experience.
}\begin{itemize}
\tightlist
\item \DIFadd{Use module prefixes, 2-5 letters followed by a colon (}\texttt{\DIFadd{:}}\DIFadd{), for debug messages. For }\texttt{\DIFadd{OpenCorePkg}}
\DIFadd{use }\texttt{\DIFadd{OC:}}\DIFadd{, for libraries and drivers use their own unique prefixes.
}\item \DIFadd{Do not use dots (}\texttt{\DIFadd{.}}\DIFadd{) in the end of debug messages and separate }\texttt{\DIFadd{EFI\_STATUS}}\DIFadd{, printed by
}\texttt{\DIFadd{\%r}}\DIFadd{, with a hyphen (e.g. }\texttt{\DIFadd{OCRAM: Allocation of \%u bytes failed - \%r\textbackslash n}}\DIFadd{).
}\item \DIFadd{Use }\texttt{\DIFadd{DEBUG\_CODE\_BEGIN ()}} \DIFadd{and }\texttt{\DIFadd{DEBUG\_CODE\_END ()}} \DIFadd{constructions to guard debug checks
that may potentially reduce the performance of release builds and are otherwise unnecessary.
}\item \DIFadd{Use }\texttt{\DIFadd{DEBUG}} \DIFadd{macro to print debug messages during normal functioning, and }\texttt{\DIFadd{RUNTIME\_DEBUG}} \DIFadd{for
debugging after }\texttt{\DIFadd{EXIT\_BOOT\_SERVICES}}\DIFadd{.
}\item \DIFadd{Use }\texttt{\DIFadd{DEBUG\_VERBOSE}} \DIFadd{debug level to leave debug messages for future debugging of the code, which
are currently not necessary. By default }\texttt{\DIFadd{DEBUG\_VERBOSE}} \DIFadd{messages are ignored even in }\texttt{\DIFadd{DEBUG}} \DIFadd{builds.
}\item \DIFadd{Use }\texttt{\DIFadd{DEBUG\_INFO}} \DIFadd{debug level for all non critical messages (including errors) and }\texttt{\DIFadd{DEBUG\_BULK\_INFO}}
\DIFadd{for extensive messages that should not appear in NVRAM log that is heavily limited in size. These messages are ignored in
}\texttt{\DIFadd{RELEASE}} \DIFadd{builds.
}\item \DIFadd{Use }\texttt{\DIFadd{DEBUG\_ERROR}} \DIFadd{to print critical human visible messages that may potentially halt the boot process, and
}\texttt{\DIFadd{DEBUG\_WARN}} \DIFadd{for all other human visible errors, }\texttt{\DIFadd{RELEASE}} \DIFadd{builds included.
}\end{itemize}
\DIFaddend \section{ACPI}\label{acpi}
\subsection{Introduction}\label{acpiintro} \subsection{Introduction}\label{acpiintro}
...@@ -1490,7 +1593,7 @@ blocking. ...@@ -1490,7 +1593,7 @@ blocking.
%DIFDELCMD < \text{Where }\mu\in(0,99)\text{ is kernel version patch} %DIFDELCMD < \text{Where }\mu\in(0,99)\text{ is kernel version patch}
%DIFDELCMD < \end{aligned}%%% %DIFDELCMD < \end{aligned}%%%
\DIFdelend \DIFaddbegin \begin{aligned} \DIFdelend \DIFaddbegin \begin{aligned}
ParseDarwinVersion(\kappa,\lambda,\mu)=&(\kappa \cdot10000 && ParseDarwinVersion(\kappa,\lambda,\mu)&=\kappa \cdot10000 &&
\text{Where }\kappa\in(0,99)\text{ is kernel version major} \\ \text{Where }\kappa\in(0,99)\text{ is kernel version major} \\
&+ \lambda\cdot100 && &+ \lambda\cdot100 &&
\text{Where }\lambda\in(0,99)\text{ is kernel version minor} \\ \text{Where }\lambda\in(0,99)\text{ is kernel version minor} \\
...@@ -3747,7 +3850,21 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc ...@@ -3747,7 +3850,21 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc
\href{https://github.com/acidanthera/bugtracker/issues/449}{\texttt{acidanthera/bugtracker\#449}}. \href{https://github.com/acidanthera/bugtracker/issues/449}{\texttt{acidanthera/bugtracker\#449}}.
\item \item
\texttt{ExitBootServicesDelay}\\ \DIFaddbegin \texttt{\DIFadd{ClearScreenOnModeSwitch}}\\
\textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\
\textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\
\textbf{\DIFadd{Description}}\DIFadd{: Some firmwares clear only part of screen when switching
from graphics to text mode, leaving a fragment of previously drawn image visible.
This option fills the entire graphics screen with black color before switching to
text mode.
}
\emph{\DIFadd{Note}}\DIFadd{: }\texttt{\DIFadd{ConsoleControl}} \DIFadd{should be set to
}\texttt{\DIFadd{true}} \DIFadd{for this to work.
}
\item
\DIFaddend \texttt{ExitBootServicesDelay}\\
\textbf{Type}: \texttt{plist\ integer}\\ \textbf{Type}: \texttt{plist\ integer}\\
\textbf{Failsafe}: \texttt{0}\\ \textbf{Failsafe}: \texttt{0}\\
\textbf{Description}: Adds delay in microseconds after \texttt{EXIT\_BOOT\_SERVICES} \textbf{Description}: Adds delay in microseconds after \texttt{EXIT\_BOOT\_SERVICES}
...@@ -3854,16 +3971,18 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc ...@@ -3854,16 +3971,18 @@ build -a X64 -b RELEASE -t XCODE5 -p MdeModulePkg/MdeModulePkg.dsc
\texttt{ConsoleMode} had to be set to empty string for this to work. \texttt{ConsoleMode} had to be set to empty string for this to work.
\item \item
\texttt{ClearScreenOnModeSwitch}\\ \texttt{\DIFdelbegin \DIFdel{ClearScreenOnModeSwitch}\DIFdelend \DIFaddbegin \DIFadd{UnblockFsConnect}\DIFaddend }\\
\textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Type}: \texttt{plist\ boolean}\\
\textbf{Failsafe}: \texttt{false}\\ \textbf{Failsafe}: \texttt{false}\\
\textbf{Description}: Some firmwares clear only part of screen when switching \textbf{Description}: Some firmwares \DIFdelbegin \DIFdel{clear only part of screen when switching
from graphics to text mode, leaving a fragment of previously drawn image visible. from graphics to text mode, leaving a fragment of previously drawn image visible.
This option fills the entire graphics screen with black color before switching to This option fills the entire graphics screen with black color before switching to text mode}\DIFdelend \DIFaddbegin \DIFadd{block partition handles by opening them
text mode. in By Driver mode, which results in File System protocols being unable to install}\DIFaddend .
\emph{Note}: \texttt{ConsoleControl} should be set to \emph{Note}: \DIFdelbegin \texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD
\texttt{true} for this to work. \DIFdel{should be set to
}\texttt{\DIFdel{true}} %DIFAUXCMD
\DIFdel{for this to work}\DIFdelend \DIFaddbegin \DIFadd{The quirk is mostly relevant for select HP laptops with no drives listed}\DIFaddend .
\end{enumerate} \end{enumerate}
......
...@@ -796,6 +796,8 @@ ...@@ -796,6 +796,8 @@
<true/> <true/>
<key>SanitiseClearScreen</key> <key>SanitiseClearScreen</key>
<false/> <false/>
<key>UnblockFsConnect</key>
<false/>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
...@@ -899,6 +899,8 @@ ...@@ -899,6 +899,8 @@
<true/> <true/>
<key>SanitiseClearScreen</key> <key>SanitiseClearScreen</key>
<false/> <false/>
<key>UnblockFsConnect</key>
<false/>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
PLATFORM_NAME = OpenCorePkg PLATFORM_NAME = OpenCorePkg
PLATFORM_GUID = C46F121D-ABC6-42A3-A241-91B09224C357 PLATFORM_GUID = C46F121D-ABC6-42A3-A241-91B09224C357
PLATFORM_VERSION = 1.0 PLATFORM_VERSION = 1.0
SUPPORTED_ARCHITECTURES = X64 SUPPORTED_ARCHITECTURES = X64|IA32
BUILD_TARGETS = RELEASE|DEBUG|NOOPT BUILD_TARGETS = RELEASE|DEBUG|NOOPT
SKUID_IDENTIFIER = DEFAULT SKUID_IDENTIFIER = DEFAULT
DSC_SPECIFICATION = 0x00010006 DSC_SPECIFICATION = 0x00010006
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册