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

Go to the source code of this file.

Classes

struct  uacpi_table_identifiers
 
struct  uacpi_table
 

Typedefs

typedef struct uacpi_table_identifiers uacpi_table_identifiers
 
typedef struct uacpi_table uacpi_table
 
typedef enum uacpi_table_installation_disposition uacpi_table_installation_disposition
 
typedef uacpi_table_installation_disposition(* uacpi_table_installation_handler) (struct acpi_sdt_hdr *hdr, uacpi_u64 *out_override_address)
 

Enumerations

enum  uacpi_table_installation_disposition { UACPI_TABLE_INSTALLATION_DISPOSITON_ALLOW = 0 , UACPI_TABLE_INSTALLATION_DISPOSITON_DENY , UACPI_TABLE_INSTALLATION_DISPOSITON_VIRTUAL_OVERRIDE , UACPI_TABLE_INSTALLATION_DISPOSITON_PHYSICAL_OVERRIDE }
 

Functions

uacpi_status uacpi_table_install (void *, uacpi_table *out_table)
 
uacpi_status uacpi_table_install_physical (uacpi_phys_addr, uacpi_table *out_table)
 
uacpi_status uacpi_table_load (uacpi_size index)
 
uacpi_status uacpi_table_find_by_signature (const uacpi_char *signature, uacpi_table *out_table)
 
uacpi_status uacpi_table_find_next_with_same_signature (uacpi_table *in_out_table)
 
uacpi_status uacpi_table_find (const uacpi_table_identifiers *id, uacpi_table *out_table)
 
uacpi_status uacpi_table_ref (uacpi_table *)
 
uacpi_status uacpi_table_unref (uacpi_table *)
 
uacpi_status uacpi_table_fadt (struct acpi_fadt **)
 
uacpi_status uacpi_set_table_installation_handler (uacpi_table_installation_handler handler)
 

Typedef Documentation

◆ uacpi_table

◆ uacpi_table_identifiers

◆ uacpi_table_installation_disposition

◆ uacpi_table_installation_handler

typedef uacpi_table_installation_disposition(* uacpi_table_installation_handler) (struct acpi_sdt_hdr *hdr, uacpi_u64 *out_override_address)

Definition at line 117 of file tables.h.

Enumeration Type Documentation

◆ uacpi_table_installation_disposition

Enumerator
UACPI_TABLE_INSTALLATION_DISPOSITON_ALLOW 
UACPI_TABLE_INSTALLATION_DISPOSITON_DENY 
UACPI_TABLE_INSTALLATION_DISPOSITON_VIRTUAL_OVERRIDE 
UACPI_TABLE_INSTALLATION_DISPOSITON_PHYSICAL_OVERRIDE 

Definition at line 93 of file tables.h.

93 {
94 // Allow the table to be installed as-is
96
97 /*
98 * Deny the table from being installed completely. This is useful for
99 * debugging various problems, e.g. AML loading bad SSDTs that cause the
100 * system to hang or enter an undesired state.
101 */
103
104 /*
105 * Override the table being installed with the table at the virtual address
106 * returned in 'out_override_address'.
107 */
109
110 /*
111 * Override the table being installed with the table at the physical address
112 * returned in 'out_override_address'.
113 */
uacpi_table_installation_disposition
Definition: tables.h:93
@ UACPI_TABLE_INSTALLATION_DISPOSITON_DENY
Definition: tables.h:102
@ UACPI_TABLE_INSTALLATION_DISPOSITON_PHYSICAL_OVERRIDE
Definition: tables.h:114
@ UACPI_TABLE_INSTALLATION_DISPOSITON_VIRTUAL_OVERRIDE
Definition: tables.h:108
@ UACPI_TABLE_INSTALLATION_DISPOSITON_ALLOW
Definition: tables.h:95

Function Documentation

◆ uacpi_set_table_installation_handler()

uacpi_status uacpi_set_table_installation_handler ( uacpi_table_installation_handler  handler)

Definition at line 356 of file tables.c.

359{
361
364 return ret;
365
366 if (installation_handler != UACPI_NULL && handler != UACPI_NULL)
367 goto out;
368
369 installation_handler = handler;
370
371out:
373 return ret;
374}
static uacpi_status uacpi_acquire_native_mutex_may_be_null(uacpi_handle mtx)
Definition: mutex.h:34
static uacpi_status uacpi_release_native_mutex_may_be_null(uacpi_handle mtx)
Definition: mutex.h:44
UINT(* handler)(MSIPACKAGE *)
Definition: action.c:7512
#define UACPI_NULL
Definition: types.h:33
#define uacpi_unlikely_error(expr)
Definition: status.h:49
uacpi_status
Definition: status.h:10
return ret
Definition: mutex.c:146
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ uacpi_table_fadt()

uacpi_status uacpi_table_fadt ( struct acpi_fadt **  out_fadt)

Definition at line 1391 of file tables.c.

1392{
1394
1395 *out_fadt = &g_uacpi_rt_ctx.fadt;
1396 return UACPI_STATUS_OK;
1397}
struct uacpi_runtime_context g_uacpi_rt_ctx
Definition: uacpi.c:17
@ UACPI_STATUS_OK
Definition: status.h:11
#define ENSURE_TABLES_ONLINE()

◆ uacpi_table_find()

uacpi_status uacpi_table_find ( const uacpi_table_identifiers id,
uacpi_table out_table 
)

Definition at line 1013 of file tables.c.

1016{
1018
1019 return find_table(0, id, out_table);
1020}
static uacpi_status find_table(uacpi_size base_idx, const uacpi_table_identifiers *id, uacpi_table *out_table)
Definition: tables.c:955

Referenced by handle_create_data_region(), and handle_load_table().

◆ uacpi_table_find_by_signature()

uacpi_status uacpi_table_find_by_signature ( const uacpi_char signature,
uacpi_table out_table 
)

Definition at line 975 of file tables.c.

978{
979 struct uacpi_table_identifiers id = {
980 .signature = {
981 .text = {
982 signature_string[0],
983 signature_string[1],
984 signature_string[2],
985 signature_string[3]
986 }
987 }
988 };
989
991
992 return find_table(0, &id, out_table);
993}
GLuint id
Definition: glext.h:5910
uacpi_object_name signature
Definition: tables.h:14
uacpi_char text[4]
Definition: types.h:24

Referenced by uacpi_namespace_load().

◆ uacpi_table_find_next_with_same_signature()

uacpi_status uacpi_table_find_next_with_same_signature ( uacpi_table in_out_table)

Definition at line 995 of file tables.c.

998{
999 struct uacpi_table_identifiers id = { 0 };
1000
1002
1003 if (uacpi_unlikely(in_out_table->ptr == UACPI_NULL))
1005
1006 uacpi_memcpy(&id.signature, in_out_table->hdr->signature,
1007 sizeof(id.signature));
1008 uacpi_table_unref(in_out_table);
1009
1010 return find_table(in_out_table->index + 1, &id, in_out_table);
1011}
#define uacpi_memcpy
Definition: stdlib.h:34
#define uacpi_unlikely(expr)
Definition: compiler.h:58
@ UACPI_STATUS_INVALID_ARGUMENT
Definition: status.h:18
uacpi_status uacpi_table_unref(uacpi_table *tbl)
Definition: tables.c:1158
void * ptr
Definition: tables.h:26
struct acpi_sdt_hdr * hdr
Definition: tables.h:27
uacpi_size index
Definition: tables.h:31

◆ uacpi_table_install()

uacpi_status uacpi_table_install ( void virt,
uacpi_table out_table 
)

Definition at line 812 of file tables.c.

813{
815
817 virt, UACPI_TABLE_ORIGIN_HOST_VIRTUAL, out_table
818 );
819}
uacpi_status uacpi_table_install_with_origin(void *virt, enum uacpi_table_origin origin, uacpi_table *out_table)
Definition: tables.c:796
@ UACPI_TABLE_ORIGIN_HOST_VIRTUAL
Definition: tables.h:15

◆ uacpi_table_install_physical()

uacpi_status uacpi_table_install_physical ( uacpi_phys_addr  addr,
uacpi_table out_table 
)

Definition at line 821 of file tables.c.

824{
826
829 );
830}
uacpi_status uacpi_table_install_physical_with_origin(uacpi_phys_addr phys, enum uacpi_table_origin origin, uacpi_table *out_table)
Definition: tables.c:726
GLenum const GLvoid * addr
Definition: glext.h:9621
@ UACPI_TABLE_ORIGIN_HOST_PHYSICAL
Definition: tables.h:16

◆ uacpi_table_load()

uacpi_status uacpi_table_load ( uacpi_size  index)

Definition at line 1138 of file tables.c.

1139{
1141}
unsigned int idx
Definition: utils.c:41
uacpi_status uacpi_table_load_with_cause(uacpi_size idx, enum uacpi_table_load_cause cause)
Definition: tables.c:1115
@ UACPI_TABLE_LOAD_CAUSE_HOST
Definition: interpreter.h:13

◆ uacpi_table_ref()

uacpi_status uacpi_table_ref ( uacpi_table tbl)

Definition at line 1151 of file tables.c.

1152{
1153 return table_ctl(tbl->index, &(struct table_ctl_request) {
1154 .type = TABLE_CTL_GET
1155 });
1156}
static uacpi_status table_ctl(uacpi_size idx, struct table_ctl_request *req)
Definition: tables.c:1040

◆ uacpi_table_unref()

uacpi_status uacpi_table_unref ( uacpi_table tbl)

Definition at line 1158 of file tables.c.

1159{
1160 return table_ctl(tbl->index, &(struct table_ctl_request) {
1161 .type = TABLE_CTL_PUT
1162 });
1163}

Referenced by free_op_region(), handle_load_table(), uacpi_namespace_load(), and uacpi_table_find_next_with_same_signature().