-
Andy Grover authored
Found and fixed a reported problem where an AE_NOT_FOUND error occurred occasionally during _BST evaluation. This turned out to be an Owner ID allocation issue where a called method did not get a new ID assigned to it. Eventually, (after 64k calls), the Owner ID UINT16 would wraparound so that the ID would be the same as the caller's and the called method would delete the caller's namespace. Implemented extended error reporting for control methods that are aborted due to a run-time exception. Output includes the exact AML instruction that caused the method abort, a dump of the method locals and arguments at the time of the abort, and a trace of all nested control method calls. Modified the interpreter to allow the creation of buffers of zero length from the AML code. Implemented new code to ensure that no attempt is made to actually allocate a memory buffer (of length zero), only a buffer object with a NULL buffer pointer and length zero. A warning is no longer issued when the AML attempts to create a zero-length buffer. Implemented a workaround for the "leading asterisk problem" in _HIDs, _UIDs, and _CIDs. One leading asterisk is automatically removed if present in all HID, UID, and CID strings. Implemented full support for _CID methods that return a package of multiple CIDs. The AcpiGetObjectInfo interface now returns a device _HID, _UID, and _CID list if present. This required a change to the external interface to pass an ACPI_BUFFER object as a parameter, since the _CID list is of variable length. Fixed a problem with the new AE_SAME_HANDLER exception where handler initialization code did not know about this exception.
ce7d8354