Releases: uACPI/uACPI
Releases · uACPI/uACPI
Release 5.0.0
Changes since 4.0.0
Non-backwards-compatible changes
- For
uacpi_kernel_map,NULLis now considered a valid return value to allow hosts that identity map all physical memory. Failure is now indicated by returningUACPI_MAP_FAILED. uacpi_eval_{simple_}buffer_or_stringhas been renamed touacpi_eval_{simple_}string_or_bufferto be consistent with all otherstring_or_bufferAPIuacpi_kernel_vlogis no longer a part of the kernel API. It was never used by uACPI so it is now removed.
Features
- New table API:
uacpi_table_{ref,unref}_by_index: allows manipulating a table's refcount without keeping auacpi_tablehandleuacpi_table_count: returns the number of tables uACPI currently managesuacpi_table_get_by_index: allows retrieving a table by its index in the internal arrayuacpi_table_info_get_by_index,uacpi_for_each_table: low level helpers that allow inspecting the entire internal state that uACPI keeps about a table. This includes: index, origin, refcount, signature, address, mapping address, flags, etc.uacpi_table_find_by_signature_at: find a table by signature starting at an offset in the internal arrayuacpi_table_find_nth_by_signature: find an nth instance of a table in firmware enumeration order
- New config option:
UACPI_NATIVE_MMIO. If enabled, this option strips the builtin (naive) uACPI MMIO helpers, and instead requires the host to provide them as part of the kernel API. These helpers are used by uACPI for serving MMIO read/write requests from AML, as well as a few places in the library code. - Added a way to modify the uACPI log messages via
UACPI_{START,END}_OF_LOG_MSGoptions. These are applied to every log message uACPI outputs and can optionally specify a prefix, as well as suffix for each message. By default,UACPI_END_OF_LOG_MSGis set to\nfor backward compatibility - New tables: WAET, DMAR, SCPR, and DBG2 (by @ThatMishakov )
- Added
uacpi_enter_sleep_state_simple, a helper that combines both preparation & the actual sleep state entering into one function for convenience
Bug Fixes
uacpi_table_fadtnow correctly returnsUACPI_STAUTS_NOT_FOUNDif the firmware hasn't provided one, previously it would return a fully zeroed table- Added a missing
uacpi_va_endfor the internal logger - Fixed an accidental usage of
NULLinstead ofUACPI_NULLin default_handlers.c - A bunch of typo fixes
Installation & usage instructions can be found in the README and osdev wiki
Release 4.0.0
Changes since 3.2.0
Non-backwards-compatible changes
- Added new kernel api
uacpi_kernel_{disable,restore}_interrupts, used for more precise control over when interrupts are disabled by uACPI - uACPI is now able to automatically handle AML accesses to PCI devices that don't exist on the system. This behavior is invoked by returning
UACPI_STATUS_NOT_FOUNDfromuacpi_kernel_pci_device_open, previously this would be treated as a hard error
General changes
- Added a new
uacpi_is_platform_reduced_hardwarehelper, which is used to detect whether the current platform is hardware-reduced ACPI - Added a new
uacpi_table_subsystem_availablehelper, which can be used to detect whether the early API in table.h is currently usable - Added support for automatic handling of misaligned early table buffers
- Fixed a bug that caused a sleeping mutex to be grabbed during shutdown with interrupts disabled
- Fixed a bunch of event.h API that didn't properly check against reduced hardware which would produce a bogus error status
- Added support for pkg-config file generation via meson (by @no92)
Installation & usage instructions can be found in the README and osdev wiki
Release 3.2.0
Changes since 3.1.0
- Added definitions for DBG2 and SPCR tables (by @avdgrinten)
- uACPI is now buildable with -Wshadow
- DerefOf now correctly reads field references instead of returning a plain field object
Installation & usage instructions can be found in the README and osdev wiki
Release 3.1.0
Changes since 3.0.0
- Added new _PIC values from the ACPI specification 6.6
- New
uacpi_for_each_subtableAPI for iterating subtables of structures like MADT or SRAT - Tables smaller than the SDT header no longer cause uACPI initialization to fail
- Older GCC compilers that don't have
__has_attributeare now supported by the default platform headers - Expanded the comment about
UACPI_ITERATION_DECISION_NEXT_PEER - Internal cleanups of Load/LoadTable AML opcodes
Installation & usage instructions can be found in the README and osdev wiki
Release 3.0.0
Changes since 2.1.1
- Added support for the OpenWatcom compiler (including a full rewrite of the test-runner in C) by @monkuous
- UACPI_STATIC_ASSERT is now part of compiler.h
- Added a whole bunch of new API documentation
- Fixed a typo in a resource macro (
UACPI_POISITIVE_DECODE->UACPI_POSITIVE_DECODE) - Renamed a field in
uacpi_resource_gpio_connection(interrupt->intr) because OpenWatcom reserves theinterruptkeyword - Fixed a bug where the RSDP length field would be used even for revisions < 2 when dumping it
Installation & usage instructions can be found in the README and osdev wiki
Release 2.1.1
Changes since 2.1.0
- Fixed a bug where accessing certain registers would cause a NULL dereference
- Added missing OOM handling for namespace node allocation
Installation & usage instructions can be found in the README and osdev wiki
Release 2.1.0
Changes since 2.0.0
- Added a new
UACPI_BAREBONES_MODE, which strips everything but the table API, and only depends on 3 kernel API functions (see config.h) - Fixed a bug where an OOM during register initialization would leave uACPI in an inconsistent state
- Fixed a few warnings produced by GCC at -Os
- Made the internal snprintf implementation correctly honor minimum width & precision
- config.h is now correctly propagated to all translation units and headers
- Compiling under clang for windows now uses the clang builtins by default
- A few miscellaneous documentation improvements in various places
Installation & usage instructions can be found in the README and osdev wiki
Release 2.0.0
Changes since 1.0.1
- Added new iterator-based API for namespace traversal (
uacpi_namespace_node_next{_typed}), as an alternative to the callback-based API - Made register programming API public
- Added version macros accessible via uacpi.h (
UACPI_{MAJOR,MINOR,PATCH}) - uACPI now logs its version during startup
- Added basic validity checking for the kernel API clock source
- Added no-op support for the deprecated
Unloadopcode - uACPI now relies on the host's implementation of
mem{cpy,move,set,cmp}by default, passUACPI_USE_BUILTIN_STRINGto revert to the old behavior - Fixed a bug where the namespace lock could get unlocked twice during traversal
- Added extra documentation for some of the kernel API declarations to make it more clear what is expected from the implementation
Installation & usage instructions can be found in the README and osdev wiki
Release 1.0.1
Changes since 1.0.0
- Fixed an issue where failure to map a GAS during initialization would cause a NULL dereference
- Fixed an issue where
uacpi_state_resetwould crash if the system was previously in legacy mode - A few miscellaneous fixes
Special thanks to @monkuous for the bug reports!