ReactOS 0.4.17-dev-1190-g4c812f4
shareable.h
Go to the documentation of this file.
1#pragma once
2
3#include <uacpi/types.h>
5
6#ifndef UACPI_BAREBONES_MODE
7
8#define UACPI_SHAREABLE_BUGGED_REFCOUNT 0xFFFFFFFF
9
12};
13
15{
16 struct uacpi_shareable *shareable = handle;
17 shareable->reference_count = 1;
18}
19
21{
22 struct uacpi_shareable *shareable = handle;
23
26 );
27}
28
30{
31 struct uacpi_shareable *shareable = handle;
32
35
36 return uacpi_atomic_load32(&shareable->reference_count) ==
38}
39
41{
42 struct uacpi_shareable *shareable = handle;
43
46
47 return uacpi_atomic_inc32(&shareable->reference_count) - 1;
48}
49
51{
52 struct uacpi_shareable *shareable = handle;
53
56
57 return uacpi_atomic_dec32(&shareable->reference_count) + 1;
58}
59
61 uacpi_handle handle, void (*do_free)(uacpi_handle)
62)
63{
64 if (handle == UACPI_NULL)
65 return;
66
68 return;
69
71 do_free(handle);
72}
73
75{
76 struct uacpi_shareable *shareable = handle;
77 return uacpi_atomic_load32(&shareable->reference_count);
78}
79
80#endif // !UACPI_BAREBONES_MODE
#define uacpi_atomic_load32(ptr)
Definition: atomic.h:322
#define uacpi_atomic_store32(ptr, value)
Definition: atomic.h:327
#define uacpi_atomic_dec32(ptr)
Definition: atomic.h:335
#define uacpi_atomic_inc32(ptr)
Definition: atomic.h:331
#define uacpi_unlikely(expr)
Definition: compiler.h:88
uint32_t uacpi_u32
Definition: types.h:21
bool uacpi_bool
Definition: types.h:31
#define UACPI_NULL
Definition: types.h:33
static uacpi_u32 uacpi_shareable_ref(uacpi_handle handle)
Definition: shareable.h:40
static void uacpi_make_shareable_bugged(uacpi_handle handle)
Definition: shareable.h:20
static uacpi_bool uacpi_bugged_shareable(uacpi_handle handle)
Definition: shareable.h:29
static void uacpi_shareable_unref_and_delete_if_last(uacpi_handle handle, void(*do_free)(uacpi_handle))
Definition: shareable.h:60
#define UACPI_SHAREABLE_BUGGED_REFCOUNT
Definition: shareable.h:8
static void uacpi_shareable_init(uacpi_handle handle)
Definition: shareable.h:14
static uacpi_u32 uacpi_shareable_unref(uacpi_handle handle)
Definition: shareable.h:50
static uacpi_u32 uacpi_shareable_refcount(uacpi_handle handle)
Definition: shareable.h:74
uacpi_u32 reference_count
Definition: shareable.h:11