10#ifndef UACPI_BAREBONES_MODE
50 handler =
ctx->node_object->handlers->notify_head;
54 if (did_notify_root) {
108 uacpi_warn(
"unable to schedule notification work: %s\n",
125 if (
handler->callback == target_handler)
178 handlers->notify_head = new_handler;
225 prev_handler =
handlers->notify_head;
228 if (prev_handler == containing) {
234 while (prev_handler) {
235 if (prev_handler->
next == containing) {
236 prev_handler->
next = containing->
next;
240 prev_handler = prev_handler->
next;
static uacpi_status uacpi_release_native_mutex(uacpi_handle mtx)
static uacpi_status uacpi_acquire_native_mutex(uacpi_handle mtx)
UINT(* handler)(MSIPACKAGE *)
#define UACPI_ENSURE_INIT_LEVEL_AT_LEAST(lvl)
struct uacpi_runtime_context g_uacpi_rt_ctx
void uacpi_namespace_node_unref(uacpi_namespace_node *node)
uacpi_object * uacpi_namespace_node_get_object_typed(const uacpi_namespace_node *node, uacpi_object_type_bits type_mask)
uacpi_object * uacpi_namespace_node_get_object(const uacpi_namespace_node *node)
uacpi_status uacpi_namespace_node_release_object(uacpi_object *obj)
uacpi_status uacpi_namespace_node_acquire_object_typed(const uacpi_namespace_node *node, uacpi_object_type_bits, uacpi_object **out_obj)
#define uacpi_kernel_alloc_zeroed
#define uacpi_free(mem, _)
uacpi_namespace_node * uacpi_namespace_root(void)
#define uacpi_likely_success(expr)
#define uacpi_unlikely_error(expr)
@ UACPI_STATUS_INVALID_ARGUMENT
@ UACPI_STATUS_OUT_OF_MEMORY
@ UACPI_STATUS_ALREADY_EXISTS
@ UACPI_STATUS_NO_HANDLER
const uacpi_char * uacpi_status_to_string(uacpi_status)
void uacpi_object_ref(uacpi_object *obj)
uacpi_status(* uacpi_notify_handler)(uacpi_handle context, uacpi_namespace_node *node, uacpi_u64 value)
@ UACPI_OBJECT_PROCESSOR_BIT
@ UACPI_OBJECT_THERMAL_ZONE_BIT
@ UACPI_OBJECT_DEVICE_BIT
@ UACPI_INIT_LEVEL_SUBSYSTEM_INITIALIZED
void uacpi_object_unref(uacpi_object *obj)
static void do_notify(uacpi_handle opaque)
static uacpi_device_notify_handler * handler_container(uacpi_handlers *handlers, uacpi_notify_handler target_handler)
uacpi_status uacpi_uninstall_notify_handler(uacpi_namespace_node *node, uacpi_notify_handler handler)
static void free_notification_ctx(struct notification_ctx *ctx)
void uacpi_deinitialize_notify(void)
uacpi_status uacpi_install_notify_handler(uacpi_namespace_node *node, uacpi_notify_handler handler, uacpi_handle handler_context)
uacpi_status uacpi_initialize_notify(void)
static uacpi_handle notify_mutex
uacpi_status uacpi_notify_all(uacpi_namespace_node *node, uacpi_u64 value)
static xmlCharEncodingHandlerPtr * handlers
void * uacpi_kernel_alloc(uacpi_size size)
uacpi_status uacpi_kernel_wait_for_work_completion(void)
uacpi_status uacpi_kernel_schedule_work(uacpi_work_type, uacpi_work_handler, uacpi_handle ctx)
uacpi_handle uacpi_kernel_create_mutex(void)
void uacpi_kernel_free_mutex(uacpi_handle)
@ UACPI_WORK_NOTIFICATION
uacpi_u32 uacpi_shareable_ref(uacpi_handle)
uacpi_namespace_node * node
uacpi_object * node_object
struct uacpi_device_notify_handler * next
uacpi_notify_handler callback
uacpi_handle user_context
uacpi_device_notify_handler * notify_head
uacpi_handlers * handlers
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out