acpiexec: Ensure terminal state is always restored.

Fixes a problem where the original terminal state for the unix
version was restored in these cases:

acpiexec
acpiexec -v

ACPICA BZ 1104.
iASL: Improve cacheing, reduce memory leaks.

Ensure that the parse tree is deleted for each compile.
Fix other miscellaneous memory leaks per-compile.
Consistently deploy the use of the string cache.
Add tracking for multiple buffers within caches.
Ensure the cache buffers are always deleted.
iASL/TableCompiler: Add object caching, cleanup memory leaks.

Add object caches for the field and subtable objects, to improve
performance and to simplify memory management.
acpisrc: Add support to standardize lines after copyright header.

Now will ensure that there is exactly one blank line after the
header -- no more, no less.
Standardize one blank line after copyright header, no functional change.

From acpisrc execution -- the utility now ensures that there is
exactly one blank line after the header.
ACPI 5.1/Disassembler: Add GICC affinity subtable to SRAT table.

Update template for SRAT.
Add ClockDomain to standard CPU affinity subtable.

Mostly by: Hanjun Guo <hanjun.guo@linaro.org>
Headers: Add GTDT flag definitions for the timer subtable.

Mostly by Hanjun Guo <hanjun.guo@linaro.org>
iASL: Add _HID or _ADR requirement for Device objects. Remove for _DSD.

_DSD no longer has a requirement for a _HID.
However, a Device() object is required to have a _HID, a _ADR, or both.
Disassembler: Fix for GpioInt interrupt polarity flags.

The field is actually 2 bits, not 1.
Utilities: Fix local printf issue found for parsed format types.

The following commit has fixed local printf issue in width.prec:

  Commit: 6de9d1e3f1f9383dbe46e2454297873229b59234
  Subject: Utilities: Fix local printf issue.

But this commit only resets width/precision/quialifier to fix the reported
issue and doesn't fix other states issues. So now we still can see breakage
in format types and integer bases.

This patch resets format type/base states for local printf to fix this
issue. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Applications: Enable USE_NATIVE_ALLOCATE_ZEROED environment for all applications.

We now safe to enable USE_NATIVE_ALLOCATE_ZEROED for all applications as
there are implementations in oswinxf.c, osunixxf.c and osefixf.c. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Clib: Add porting layer for print APIs.

This patch:
1. Adds AcpiUtVprintf()/AcpiUtPrintf() support.
2. Adds default stdout for AcpiUtFileVprintf()/AcpiUtFilePrintf().
3. Adds wrapper layer for AcpiUtSnprintf()/AcpiUtVsnprintf(),
   AcpiUtFileVprintf()/AcpiUtFilePrintf() and
   AcpiUtVprintf()/AcpiUtPrintf() and converts their usages into the
   invocations of the wrapper layer.
Note that this patch doesn't enable the print APIs for OSPMs that do not
have ACPI_USE_SYSTEM_CLIBRARY defined before fulling testing the
implementations. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Applications: Fix a potential issue that help messages may be dumped to AcpiGbl_DebugFile.

There is an issue for usage macros, if an command line option changed
AcpiGbl_DebugFile, then the follow up usage may errornously dumped to the
debug file.
This is just a bug in theory, because currently AcpiGbl_DebugFile can only
be modified by acpibin and acpiexec. Currently this will not trigger such
issue because:
1. For acpibin, AcpiGbl_DebugFile will be modified by "-t" option and the
   program exit after processing this option without dumping help message
   or other error options.
2. For acpiexec, AcpiGbl_DebugFile will only be modified by the open
   command, which happens after parsing the command line options, so no
   help message will be dumped into the debug file.
But maintaining this logic is difficult, so this patch modifies
AcpiOsPrintf() into ACPI_PRINTF() for usage macros so that the help
messages are ensured to be dumped to the stdout. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
EFI: Add OSL supports for those can be empty.

This patch adds OSLs that can be empty under EFI environment. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
EFI: Fix build errors by adding component/module definitions.

There are build errors for ACPI_DEBUG_OUTPUT enabled tools. This is because
osefixf.c is lacking of component/module definitions. This patch fixes such
build errors by filling this gap. Yizhe Wang.

Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Clib: Add AcpiUtMemmove() to improve portability

This patch implements AcpiUtMemmove() as a native replacement of memmove.
This implementation has been roughly tested under unix. Yizhe Wang.

Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Clib: Add AcpiOsGetFileCharacter()/AcpiOsPutFileCharacter() to improve portability.

This patch added two new OSLs:
1. AcpiOsGetFileCharacter() as a replacement of fgetc()/getc().
2. AcpiOsPutFileCharacter() as a replacement of fputc()/putc().
For Unix/Windows environments, these 2 APIs are implemented using
fgetc()/fputc(). For EFI environment, they are implemented using
AcpiOsReadFile()/AcpiOsWriteFile().

Note in this patch, ACPI_FILE_IN is simply defined as NULL for EFI
environment. Its EFI support should be implemented by further patches.
Yizhe Wang.

Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Common: Modify string/memory/file libc invocations in AcpiOsGetLine() into c library wrappers to improve portability.

This patch cleans up AcpiOsGetLine() by replacing the following libc
invocations into the c library wrappers:
1. strlen -> ACPI_STRLEN
2. strcpy -> ACPI_STRCPY
3. strtoul -> ACPI_STRTOUL
4. strcpy -> ACPI_STRCPY
5. memmove -> ACPI_MEMMOVE
6. memset -> ACPI_MEMSET
7. fprintf -> ACPI_FPRINTF
8. putchar -> AcpiOsPutFileCharacter(ACPI_FILE_OUT)
9. getchar -> AcpiOsGetFileCharacter(ACPI_FILE_IN)
No functional changes for Unix/Windows environments. Yizhe Wang.

Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Clib: Introduce a new file open types - ACPI_FILE_APPENDING/ACPI_FILE_TEXT.

This patch introduced a new types:
1. ACPI_FILE_APPENDING so that "w+" can be expressed as
   (ACPI_FILE_WRITING | ACPI_FILE_APPENDING).
2. ACPI_FILE_TEXT so that "rt" can be expressed as
   (ACPI_FILE_READING | ACPI_FILE_TEXT).
The new types are used by ACPICA applications. Yizhe Wang.

Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Debugger/Utilities: Replace stdio invocations with OSL APIs to improve portability.

This patch improves portability by:
1. Replace fclose() with AcpiOsCloseFile().
2. Replace fopen() with AcpiOsOpenFile().
3. Replace perror() and fprintf with AcpiLogError().
4. Replace type FILE with ACPI_FILE
5. Replace fseek() with AcpiOsSetFileOffset().
6. Replace fread() with AcpiOsReadFile().

Signed-off-by: Yizhe Wang <yizhe.wang@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>