ReactOS 0.4.16-dev-1946-g52006dd
shareable.c
Go to the documentation of this file.
4
5#ifndef UACPI_BAREBONES_MODE
6
7#define BUGGED_REFCOUNT 0xFFFFFFFF
8
10{
11 struct uacpi_shareable *shareable = handle;
12 shareable->reference_count = 1;
13}
14
16{
17 struct uacpi_shareable *shareable = handle;
18
19 if (uacpi_unlikely(shareable->reference_count == 0))
21
23}
24
26{
27 struct uacpi_shareable *shareable = handle;
29}
30
32{
33 struct uacpi_shareable *shareable = handle;
34
36 return BUGGED_REFCOUNT;
37
38 return uacpi_atomic_inc32(&shareable->reference_count) - 1;
39}
40
42{
43 struct uacpi_shareable *shareable = handle;
44
46 return BUGGED_REFCOUNT;
47
48 return uacpi_atomic_dec32(&shareable->reference_count) + 1;
49}
50
52 uacpi_handle handle, void (*do_free)(uacpi_handle)
53)
54{
55 if (handle == UACPI_NULL)
56 return;
57
59 return;
60
62 do_free(handle);
63}
64
66{
67 struct uacpi_shareable *shareable = handle;
68 return uacpi_atomic_load32(&shareable->reference_count);
69}
70
71#endif // !UACPI_BAREBONES_MODE
#define uacpi_atomic_load32(ptr)
Definition: atomic.h:104
#define uacpi_atomic_store32(ptr, value)
Definition: atomic.h:109
#define uacpi_atomic_dec32(ptr)
Definition: atomic.h:117
#define uacpi_atomic_inc32(ptr)
Definition: atomic.h:113
#define uacpi_unlikely(expr)
Definition: compiler.h:58
uint32_t uacpi_u32
Definition: types.h:21
bool uacpi_bool
Definition: types.h:31
#define UACPI_NULL
Definition: types.h:33
uacpi_u32 uacpi_shareable_refcount(uacpi_handle handle)
Definition: shareable.c:65
uacpi_bool uacpi_bugged_shareable(uacpi_handle handle)
Definition: shareable.c:15
uacpi_u32 uacpi_shareable_ref(uacpi_handle handle)
Definition: shareable.c:31
void uacpi_make_shareable_bugged(uacpi_handle handle)
Definition: shareable.c:25
void uacpi_shareable_init(uacpi_handle handle)
Definition: shareable.c:9
#define BUGGED_REFCOUNT
Definition: shareable.c:7
void uacpi_shareable_unref_and_delete_if_last(uacpi_handle handle, void(*do_free)(uacpi_handle))
Definition: shareable.c:51
uacpi_u32 uacpi_shareable_unref(uacpi_handle handle)
Definition: shareable.c:41
uacpi_u32 reference_count
Definition: shareable.h:6