Skip to content

Releases: uACPI/uACPI

Release 5.0.0

07 Jun 13:07

Choose a tag to compare

Changes since 4.0.0

Non-backwards-compatible changes

  • For uacpi_kernel_map, NULL is now considered a valid return value to allow hosts that identity map all physical memory. Failure is now indicated by returning UACPI_MAP_FAILED.
  • uacpi_eval_{simple_}buffer_or_string has been renamed to uacpi_eval_{simple_}string_or_buffer to be consistent with all other string_or_buffer API
  • uacpi_kernel_vlog is 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 a uacpi_table handle
    • uacpi_table_count: returns the number of tables uACPI currently manages
    • uacpi_table_get_by_index: allows retrieving a table by its index in the internal array
    • uacpi_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 array
    • uacpi_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_MSG options. 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_MSG is set to \n for 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_fadt now correctly returns UACPI_STAUTS_NOT_FOUND if the firmware hasn't provided one, previously it would return a fully zeroed table
  • Added a missing uacpi_va_end for the internal logger
  • Fixed an accidental usage of NULL instead of UACPI_NULL in default_handlers.c
  • A bunch of typo fixes

Installation & usage instructions can be found in the README and osdev wiki

Release 4.0.0

23 Feb 13:00

Choose a tag to compare

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_FOUND from uacpi_kernel_pci_device_open, previously this would be treated as a hard error

General changes

  • Added a new uacpi_is_platform_reduced_hardware helper, which is used to detect whether the current platform is hardware-reduced ACPI
  • Added a new uacpi_table_subsystem_available helper, 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

19 Oct 18:50

Choose a tag to compare

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

17 Aug 23:11

Choose a tag to compare

Changes since 3.0.0

  • Added new _PIC values from the ACPI specification 6.6
  • New uacpi_for_each_subtable API 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_attribute are 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

13 Jun 11:53

Choose a tag to compare

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 the interrupt keyword
  • 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

30 Mar 18:16

Choose a tag to compare

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

22 Mar 19:57

Choose a tag to compare

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

22 Feb 13:12

Choose a tag to compare

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 Unload opcode
  • uACPI now relies on the host's implementation of mem{cpy,move,set,cmp} by default, pass UACPI_USE_BUILTIN_STRING to 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

05 Feb 19:14

Choose a tag to compare

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_reset would crash if the system was previously in legacy mode
  • A few miscellaneous fixes

Special thanks to @monkuous for the bug reports!


Installation & usage instructions can be found in the README and osdev wiki

Release 1.0.0

25 Jan 12:17

Choose a tag to compare

Initial release of uACPI


Installation & usage instructions can be found in the README and osdev wiki