ReactOS 0.4.17-dev-683-g0dafdc5
namespace.h
Go to the documentation of this file.
1#pragma once
2
3#include <uacpi/types.h>
5#include <uacpi/status.h>
6#include <uacpi/namespace.h>
7
8#ifndef UACPI_BAREBONES_MODE
9
10#define UACPI_NAMESPACE_NODE_FLAG_ALIAS (1 << 0)
11
12/*
13 * This node has been uninstalled and has no object associated with it.
14 *
15 * This is used to handle edge cases where an object needs to reference
16 * a namespace node, where the node might end up going out of scope before
17 * the object lifetime ends.
18 */
19#define UACPI_NAMESPACE_NODE_FLAG_DANGLING (1u << 1)
20
21/*
22 * This node is method-local and must not be exposed via public API as its
23 * lifetime is limited.
24 */
25#define UACPI_NAMESPACE_NODE_FLAG_TEMPORARY (1u << 2)
26
27typedef struct uacpi_namespace_node {
36
39
42
43
46);
50);
51
53
56);
57
59 const uacpi_namespace_node *node, uacpi_object **out_obj
60);
63 uacpi_object **out_obj
64);
65
68);
71);
72
75);
77
81);
82
86};
87
91};
92
96};
97
101 uacpi_namespace_node **out_node
102);
103
106 uacpi_iteration_callback ascending_callback,
108 enum uacpi_permanent_only, void *user
109);
110
114
117
120
121#endif // !UACPI_BAREBONES_MODE
void user(int argc, const char *argv[])
Definition: cmds.c:1350
void uacpi_namespace_node_unref(uacpi_namespace_node *node)
Definition: namespace.c:294
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_status uacpi_namespace_write_unlock(void)
Definition: namespace.c:51
uacpi_object * uacpi_namespace_node_get_object_typed(const uacpi_namespace_node *node, uacpi_object_type_bits type_mask)
Definition: namespace.c:654
uacpi_permanent_only
Definition: namespace.h:88
@ UACPI_PERMANENT_ONLY_YES
Definition: namespace.h:90
@ UACPI_PERMANENT_ONLY_NO
Definition: namespace.h:89
uacpi_namespace_node * uacpi_namespace_node_find_sub_node(uacpi_namespace_node *parent, uacpi_object_name name)
Definition: namespace.c:446
uacpi_status uacpi_namespace_node_type_unlocked(const uacpi_namespace_node *node, uacpi_object_type *out_type)
Definition: namespace.c:757
uacpi_status uacpi_namespace_read_unlock(void)
Definition: namespace.c:41
uacpi_bool uacpi_namespace_node_is_dangling(uacpi_namespace_node *node)
Definition: namespace.c:333
uacpi_status uacpi_namespace_node_reacquire_object(uacpi_object *obj)
Definition: namespace.c:740
uacpi_object * uacpi_namespace_node_get_object(const uacpi_namespace_node *node)
Definition: namespace.c:646
uacpi_status uacpi_initialize_namespace(void)
Definition: namespace.c:156
uacpi_bool uacpi_namespace_node_is_temporary(uacpi_namespace_node *node)
Definition: namespace.c:338
uacpi_namespace_node * uacpi_namespace_node_alloc(uacpi_object_name name)
Definition: namespace.c:281
uacpi_status uacpi_namespace_read_lock(void)
Definition: namespace.c:36
uacpi_status uacpi_namespace_node_release_object(uacpi_object *obj)
Definition: namespace.c:747
void uacpi_deinitialize_namespace(void)
Definition: namespace.c:205
uacpi_status uacpi_namespace_node_acquire_object(const uacpi_namespace_node *node, uacpi_object **out_obj)
Definition: namespace.c:698
uacpi_status uacpi_namespace_node_install(uacpi_namespace_node *parent, uacpi_namespace_node *node)
Definition: namespace.c:299
uacpi_bool uacpi_namespace_node_is_predefined(uacpi_namespace_node *node)
Definition: namespace.c:343
uacpi_status uacpi_namespace_node_uninstall(uacpi_namespace_node *node)
Definition: namespace.c:349
uacpi_status uacpi_namespace_node_is_one_of_unlocked(const uacpi_namespace_node *node, uacpi_object_type_bits type_mask, uacpi_bool *out)
Definition: namespace.c:790
uacpi_should_lock
Definition: namespace.h:93
@ UACPI_SHOULD_LOCK_YES
Definition: namespace.h:95
@ UACPI_SHOULD_LOCK_NO
Definition: namespace.h:94
uacpi_status uacpi_namespace_write_lock(void)
Definition: namespace.c:46
uacpi_status uacpi_namespace_node_acquire_object_typed(const uacpi_namespace_node *node, uacpi_object_type_bits, uacpi_object **out_obj)
Definition: namespace.c:670
uacpi_may_search_above_parent
Definition: namespace.h:83
@ UACPI_MAY_SEARCH_ABOVE_PARENT_NO
Definition: namespace.h:84
@ UACPI_MAY_SEARCH_ABOVE_PARENT_YES
Definition: namespace.h:85
uacpi_status uacpi_namespace_node_resolve(uacpi_namespace_node *scope, const uacpi_char *path, enum uacpi_should_lock, enum uacpi_may_search_above_parent, enum uacpi_permanent_only, uacpi_namespace_node **out_node)
Definition: namespace.c:491
uacpi_iteration_decision(* uacpi_iteration_callback)(void *user, uacpi_namespace_node *node, uacpi_u32 node_depth)
Definition: namespace.h:98
uint32_t uacpi_u32
Definition: types.h:21
bool uacpi_bool
Definition: types.h:31
char uacpi_char
Definition: types.h:44
uacpi_status
Definition: status.h:10
uacpi_object_type_bits
Definition: types.h:134
uacpi_object_type
Definition: types.h:110
r parent
Definition: btrfs.c:3010
Definition: name.c:39
uacpi_object_name name
Definition: namespace.h:29
uacpi_object * object
Definition: namespace.h:31
struct uacpi_namespace_node * child
Definition: namespace.h:33
struct uacpi_shareable shareable
Definition: namespace.h:28
struct uacpi_namespace_node * parent
Definition: namespace.h:32
struct uacpi_namespace_node * next
Definition: namespace.h:34
Definition: dlist.c:348
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383