ReactOS 0.4.16-dev-1946-g52006dd
opregion.h File Reference
#include <uacpi/types.h>
#include <uacpi/status.h>
Include dependency graph for opregion.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

uacpi_status uacpi_install_address_space_handler (uacpi_namespace_node *device_node, enum uacpi_address_space space, uacpi_region_handler handler, uacpi_handle handler_context)
 
uacpi_status uacpi_uninstall_address_space_handler (uacpi_namespace_node *device_node, enum uacpi_address_space space)
 
uacpi_status uacpi_reg_all_opregions (uacpi_namespace_node *device_node, enum uacpi_address_space space)
 

Function Documentation

◆ uacpi_install_address_space_handler()

uacpi_status uacpi_install_address_space_handler ( uacpi_namespace_node device_node,
enum uacpi_address_space  space,
uacpi_region_handler  handler,
uacpi_handle  handler_context 
)

Definition at line 701 of file opregion.c.

705{
707 device_node, space, handler, handler_context, 0
708 );
709}
UINT(* handler)(MSIPACKAGE *)
Definition: action.c:7512
uacpi_status uacpi_install_address_space_handler_with_flags(uacpi_namespace_node *device_node, enum uacpi_address_space space, uacpi_region_handler handler, uacpi_handle handler_context, uacpi_u16 flags)
Definition: opregion.c:620

◆ uacpi_reg_all_opregions()

uacpi_status uacpi_reg_all_opregions ( uacpi_namespace_node device_node,
enum uacpi_address_space  space 
)

Definition at line 585 of file opregion.c.

589{
591
593
595 return UACPI_STATUS_OK;
596
599 return ret;
600
604 return ret;
605 }
606
607 if (uacpi_unlikely(extract_handlers(device_node) == UACPI_NULL)) {
609 goto out;
610 }
611
613
614out:
617 return ret;
618}
#define ACPI_REG_CONNECT
Definition: actypes.h:890
uacpi_status uacpi_recursive_lock_acquire(struct uacpi_recursive_lock *lock)
Definition: mutex.c:287
uacpi_status uacpi_recursive_lock_release(struct uacpi_recursive_lock *lock)
Definition: mutex.c:307
#define UACPI_ENSURE_INIT_LEVEL_AT_LEAST(lvl)
Definition: context.h:127
uacpi_status uacpi_namespace_write_unlock(void)
Definition: namespace.c:54
uacpi_status uacpi_namespace_write_lock(void)
Definition: namespace.c:49
#define uacpi_unlikely(expr)
Definition: compiler.h:58
#define UACPI_NULL
Definition: types.h:33
#define uacpi_unlikely_error(expr)
Definition: status.h:49
uacpi_status
Definition: status.h:10
@ UACPI_STATUS_INVALID_ARGUMENT
Definition: status.h:18
@ UACPI_STATUS_OK
Definition: status.h:11
@ UACPI_INIT_LEVEL_NAMESPACE_LOADED
Definition: types.h:72
return ret
Definition: mutex.c:146
static uacpi_status reg_or_unreg_all_opregions(uacpi_namespace_node *device_node, enum uacpi_address_space space, uacpi_u8 connection_code)
Definition: opregion.c:520
static uacpi_bool space_needs_reg(enum uacpi_address_space space)
Definition: opregion.c:112
static uacpi_address_space_handlers * extract_handlers(uacpi_namespace_node *node)
Definition: opregion.c:565
struct uacpi_recursive_lock g_opregion_lock
Definition: opregion.c:13
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by uacpi_namespace_initialize().

◆ uacpi_uninstall_address_space_handler()

uacpi_status uacpi_uninstall_address_space_handler ( uacpi_namespace_node device_node,
enum uacpi_address_space  space 
)

Definition at line 711 of file opregion.c.

715{
719 struct opregion_iter_ctx iter_ctx;
720
723 return ret;
724
728 return ret;
729 }
730
731 handlers = extract_handlers(device_node);
734 goto out;
735 }
736
740 goto out;
741 }
742
743 iter_ctx.handler = handler;
744 iter_ctx.action = OPREGION_ITER_ACTION_UNINSTALL;
745
749 UACPI_PERMANENT_ONLY_NO, &iter_ctx
750 );
751
752 prev_handler = handlers->head;
753
754 // Are we the last linked handler?
755 if (prev_handler == handler) {
756 handlers->head = handler->next;
757 goto out_unreg;
758 }
759
760 // Nope, we're somewhere in the middle. Do a search.
761 while (prev_handler) {
762 if (prev_handler->next == handler) {
763 prev_handler->next = handler->next;
764 goto out;
765 }
766
767 prev_handler = prev_handler->next;
768 }
769
770out_unreg:
773
774out:
775 if (handler != UACPI_NULL)
777
780 return ret;
781}
#define ACPI_REG_DISCONNECT
Definition: actypes.h:889
uacpi_status uacpi_namespace_do_for_each_child(uacpi_namespace_node *parent, uacpi_iteration_callback descending_callback, uacpi_iteration_callback ascending_callback, uacpi_object_type_bits, uacpi_u32 max_depth, enum uacpi_should_lock, enum uacpi_permanent_only, void *user)
Definition: namespace.c:834
@ UACPI_PERMANENT_ONLY_NO
Definition: namespace.h:91
@ UACPI_SHOULD_LOCK_NO
Definition: namespace.h:96
void uacpi_address_space_handler_unref(uacpi_address_space_handler *handler)
Definition: types.c:548
#define UACPI_MAX_DEPTH_ANY
Definition: namespace.h:102
@ UACPI_STATUS_NO_HANDLER
Definition: status.h:25
@ UACPI_OBJECT_ANY_BIT
Definition: types.h:146
static xmlCharEncodingHandlerPtr * handlers
Definition: encoding.c:1317
static uacpi_address_space_handler * find_handler(uacpi_address_space_handlers *handlers, enum uacpi_address_space space)
Definition: opregion.c:193
static uacpi_iteration_decision do_install_or_uninstall_handler(uacpi_handle opaque, uacpi_namespace_node *node, uacpi_u32 depth)
Definition: opregion.c:425
@ OPREGION_ITER_ACTION_UNINSTALL
Definition: opregion.c:416