ReactOS 0.4.16-dev-1946-g52006dd
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
27#define UACPI_NAMESPACE_NODE_PREDEFINED (1u << 31)
28
29typedef struct uacpi_namespace_node {
38
41
44
45
48);
52);
53
55
58);
59
61 const uacpi_namespace_node *node, uacpi_object **out_obj
62);
65 uacpi_object **out_obj
66);
67
70);
73);
74
77);
79
83);
84
88};
89
93};
94
98};
99
103 uacpi_namespace_node **out_node
104);
105
108 uacpi_iteration_callback ascending_callback,
110 enum uacpi_permanent_only, void *user
111);
112
116
119
122
123#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:297
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:54
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:90
@ UACPI_PERMANENT_ONLY_YES
Definition: namespace.h:92
@ UACPI_PERMANENT_ONLY_NO
Definition: namespace.h:91
uacpi_namespace_node * uacpi_namespace_node_find_sub_node(uacpi_namespace_node *parent, uacpi_object_name name)
Definition: namespace.c:448
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:44
uacpi_bool uacpi_namespace_node_is_dangling(uacpi_namespace_node *node)
Definition: namespace.c:336
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:159
uacpi_bool uacpi_namespace_node_is_temporary(uacpi_namespace_node *node)
Definition: namespace.c:341
uacpi_namespace_node * uacpi_namespace_node_alloc(uacpi_object_name name)
Definition: namespace.c:284
uacpi_status uacpi_namespace_read_lock(void)
Definition: namespace.c:39
uacpi_status uacpi_namespace_node_release_object(uacpi_object *obj)
Definition: namespace.c:747
void uacpi_deinitialize_namespace(void)
Definition: namespace.c:208
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:302
uacpi_bool uacpi_namespace_node_is_predefined(uacpi_namespace_node *node)
Definition: namespace.c:346
uacpi_status uacpi_namespace_node_uninstall(uacpi_namespace_node *node)
Definition: namespace.c:351
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:95
@ UACPI_SHOULD_LOCK_YES
Definition: namespace.h:97
@ UACPI_SHOULD_LOCK_NO
Definition: namespace.h:96
uacpi_status uacpi_namespace_write_lock(void)
Definition: namespace.c:49
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:85
@ UACPI_MAY_SEARCH_ABOVE_PARENT_NO
Definition: namespace.h:86
@ UACPI_MAY_SEARCH_ABOVE_PARENT_YES
Definition: namespace.h:87
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:128
uacpi_object_type
Definition: types.h:104
r parent
Definition: btrfs.c:3010
Definition: name.c:39
uacpi_object_name name
Definition: namespace.h:31
uacpi_object * object
Definition: namespace.h:33
struct uacpi_namespace_node * child
Definition: namespace.h:35
struct uacpi_shareable shareable
Definition: namespace.h:30
struct uacpi_namespace_node * parent
Definition: namespace.h:34
struct uacpi_namespace_node * next
Definition: namespace.h:36
Definition: dlist.c:348
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383