10#ifndef UACPI_BAREBONES_MODE
12#define LARGE_RESOURCE_BASE (ACPI_RESOURCE_END_TAG + 1)
13#define L(x) (x + LARGE_RESOURCE_BASE)
117#define SMALL_ITEM_HEADER_SIZE sizeof(struct acpi_small_item)
118#define LARGE_ITEM_HEADER_SIZE sizeof(struct acpi_large_item)
145 mask = dma->channel_mask;
149 for (
i = 0;
i < total_bits; ++
i)
150 num_bits += !!(
mask & (1 <<
i));
164 switch (
irq->length_kind) {
182 uacpi_warn(
"requested IRQ resource length is "
183 "not compatible with specified flags, corrected\n");
213 uacpi_warn(
"requested StartDependentFn resource length is "
214 "not compatible with specified flags, corrected\n");
242 uacpi_warn(
"vendor data too large for small descriptor (%zu), "
243 "correcting to large\n",
size);
261 if (reported_size <= base_size)
267 string_length = (reported_size - base_size) - 1;
278 uacpi_warn(
"resource declares no source index with non-empty "
279 "string (%zu bytes), corrected\n",
length);
374 switch (spec->
type) {
376 struct acpi_resource_gpio_connection *gpio =
data;
377 pin_table_offset = gpio->pin_table_offset;
383 pin_table_offset =
pin->pin_table_offset;
388 struct acpi_resource_pin_configuration *
config =
data;
389 pin_table_offset =
config->pin_table_offset;
395 pin_table_offset =
group->pin_table_offset;
418 switch (spec->
type) {
421 source_length =
res->source.length;
422 pin_table_length =
res->pin_table_length;
423 vendor_length =
res->vendor_data_length;
429 source_length =
res->source.length;
430 pin_table_length =
res->pin_table_length;
431 vendor_length =
res->vendor_data_length;
437 source_length =
res->source.length;
438 pin_table_length =
res->pin_table_length;
439 vendor_length =
res->vendor_data_length;
445 source_length =
res->label.length;
446 pin_table_length =
res->pin_table_length;
447 vendor_length =
res->vendor_data_length;
455 size += source_length;
456 size += pin_table_length * 2;
457 size += vendor_length;
468 switch (spec->
type) {
471 source_offset =
func->source_offset;
476 struct acpi_resource_pin_group_configuration *
config =
data;
477 source_offset =
config->source_offset;
496 switch (spec->
type) {
499 source_length =
res->source.length;
500 label_length =
res->label.length;
501 vendor_length =
res->vendor_data_length;
508 source_length =
res->source.length;
509 label_length =
res->label.length;
510 vendor_length =
res->vendor_data_length;
518 size += source_length;
519 size += label_length;
520 size += vendor_length;
525#define AML_SERIAL_RESOURCE_EXTRA_SIZE(type) \
526 (sizeof(struct acpi_resource_serial_##type) \
527 - sizeof(struct acpi_resource_serial))
529#define NATIVE_SERIAL_RESOURCE_EXTRA_SIZE(type) \
530 (sizeof(uacpi_resource_##type##_connection) \
531 - sizeof(uacpi_resource_serial_bus_common))
578#define OP(short_code, ...) \
580 .code = UACPI_RESOURCE_CONVERT_OPCODE_##short_code, \
586#define AML_O(short_aml_name, field) \
587 uacpi_offsetof(struct acpi_resource_##short_aml_name, field)
589#define AML_F(short_aml_name, field) \
590 .aml_offset = AML_O(short_aml_name, field)
592#define NATIVE_O(short_name, field) \
593 uacpi_offsetof(uacpi_resource_##short_name, field)
595#define NATIVE_F(short_native_name, field) \
596 .native_offset = NATIVE_O(short_native_name, field)
598#define IMM(value) .imm = value
599#define ARG0(value) .arg0 = (value)
600#define ARG1(value) .arg1 = (value)
601#define ARG2(value) .arg2 = (value)
607 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(3),
IMM(6)),
624 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(3),
IMM(4)),
643 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(1),
IMM(4)),
644 OP(SET_TO_IMM,
NATIVE_F(start_dependent, length_kind),
651 OP(SET_TO_IMM,
NATIVE_F(start_dependent, length_kind),
653 OP(SET_TO_IMM,
NATIVE_F(start_dependent, compatibility),
655 OP(SET_TO_IMM,
NATIVE_F(start_dependent, performance),
662 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(1),
IMM(1)),
686 OP(FIELD_16,
AML_F(fixed_dma, request_line),
689 OP(FIELD_8,
AML_F(fixed_dma, transfer_width),
690 NATIVE_F(fixed_dma, transfer_width)),
733 OP(FIELD_8,
AML_F(generic_register, address_space_id),
734 NATIVE_F(generic_register, address_space_id),
IMM(4)),
740#define CONVERT_TYPE_SPECIFIC_FLAGS(addr_type) \
741 OP(LOAD_8_STORE, AML_F(addr_type, common.type), \
742 NATIVE_F(addr_type, common.type)), \
743 OP(SKIP_IF_NOT_EQUALS, ARG0(UACPI_RANGE_MEMORY), IMM(5)), \
745 AML_F(addr_type, common.type_flags), \
746 NATIVE_F(addr_type, common.attribute.memory.write_status), IMM(0)), \
748 AML_F(addr_type, common.type_flags), \
749 NATIVE_F(addr_type, common.attribute.memory.caching), IMM(1)), \
751 AML_F(addr_type, common.type_flags), \
752 NATIVE_F(addr_type, common.attribute.memory.range_type), IMM(3)), \
754 AML_F(addr_type, common.type_flags), \
755 NATIVE_F(addr_type, common.attribute.memory.translation), IMM(5)), \
757 OP(SKIP_IF_NOT_EQUALS, ARG0(UACPI_RANGE_IO), IMM(4)), \
759 AML_F(addr_type, common.type_flags), \
760 NATIVE_F(addr_type, common.attribute.io.range_type), IMM(0)), \
762 AML_F(addr_type, common.type_flags), \
763 NATIVE_F(addr_type, common.attribute.io.translation_type), IMM(4)), \
765 AML_F(addr_type, common.type_flags), \
766 NATIVE_F(addr_type, common.attribute.io.translation), IMM(5)), \
769 OP(FIELD_8, AML_F(addr_type, common.type_flags), \
770 NATIVE_F(addr_type, common.attribute.type_specific), IMM(0xFF)), \
773#define CONVERT_GENERAL_ADDRESS_FLAGS(addr_type) \
775 AML_F(addr_type, common.flags), \
776 NATIVE_F(addr_type, common.direction), IMM(0)), \
778 AML_F(addr_type, common.flags), \
779 NATIVE_F(addr_type, common.decode_type), IMM(1)), \
781 AML_F(addr_type, common.flags), \
782 NATIVE_F(addr_type, common.fixed_min_address), IMM(2)), \
784 AML_F(addr_type, common.flags), \
785 NATIVE_F(addr_type, common.fixed_max_address), IMM(3)) \
787#define DEFINE_ADDRESS_CONVERSION(width) \
788 static const struct uacpi_resource_convert_instruction \
789 convert_address##width[] = { \
790 CONVERT_GENERAL_ADDRESS_FLAGS(address##width), \
791 OP(FIELD_##width, AML_F(address##width, granularity), \
792 NATIVE_F(address##width, granularity), IMM(5)), \
793 OP(RESOURCE_SOURCE, NATIVE_F(address##width, source)), \
794 CONVERT_TYPE_SPECIFIC_FLAGS(address##width), \
804 OP(FIELD_8,
AML_F(address64_extended, revision_id),
805 NATIVE_F(address64_extended, revision_id)),
806 OP(FIELD_64,
AML_F(address64_extended, granularity),
807 NATIVE_F(address64_extended, granularity),
IMM(6)),
823 OP(LOAD_8_STORE,
AML_F(extended_irq, num_irqs),
833 OP(FIELD_8,
AML_F(clock_input, revision_id),
834 NATIVE_F(clock_input, revision_id)),
840 OP(FIELD_32,
AML_F(clock_input, numerator),
NATIVE_F(clock_input, numerator)),
846#define DECODE_SOURCE_INDEX(short_aml_name) \
847 OP(FIELD_8, AML_F(short_aml_name, source_index), \
848 NATIVE_F(short_aml_name, source.index)) \
850#define DECODE_RES_PIN_TBL_AND_VENDOR_DATA( \
851 short_aml_name, res_opcode, offset_field, res_field \
853 OP(LOAD_PIN_TABLE_LENGTH, AML_F(short_aml_name, offset_field), \
854 NATIVE_F(short_aml_name, pin_table_length)), \
855 OP(RESOURCE_##res_opcode, NATIVE_F(short_aml_name, res_field), \
856 AML_F(short_aml_name, offset_field), \
857 ARG2(AML_O(short_aml_name, vendor_data_offset))), \
858 OP(PIN_TABLE, AML_F(short_aml_name, pin_table_offset), \
859 NATIVE_F(short_aml_name, pin_table_length), \
860 ARG2(NATIVE_O(short_aml_name, pin_table))), \
861 OP(VENDOR_DATA, AML_F(short_aml_name, vendor_data_offset), \
862 NATIVE_F(short_aml_name, vendor_data_length), \
863 ARG2(NATIVE_O(short_aml_name, vendor_data)))
867 OP(FIELD_8,
AML_F(gpio_connection, revision_id),
868 NATIVE_F(gpio_connection, revision_id)),
869 OP(BIT_FIELD_1,
AML_F(gpio_connection, general_flags),
870 NATIVE_F(gpio_connection, direction)),
871 OP(FIELD_8,
AML_F(gpio_connection, pull_configuration),
872 NATIVE_F(gpio_connection, pull_configuration)),
873 OP(FIELD_16,
AML_F(gpio_connection, drive_strength),
874 NATIVE_F(gpio_connection, drive_strength),
IMM(2)),
877 gpio_connection, SOURCE_NO_INDEX, source_offset,
source
881 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
882 NATIVE_F(gpio_connection, interrupt.triggering),
IMM(0)),
883 OP(BIT_FIELD_2,
AML_F(gpio_connection, connection_flags),
884 NATIVE_F(gpio_connection, interrupt.polarity),
IMM(1)),
885 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
886 NATIVE_F(gpio_connection, interrupt.sharing),
IMM(3)),
887 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
888 NATIVE_F(gpio_connection, interrupt.wake_capability),
IMM(4)),
891 OP(BIT_FIELD_2,
AML_F(gpio_connection, connection_flags),
893 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
896 OP(FIELD_16,
AML_F(gpio_connection, connection_flags),
897 NATIVE_F(gpio_connection, type_specific),
IMM(0xFF)),
903 OP(FIELD_8,
AML_F(pin_function, revision_id),
904 NATIVE_F(pin_function, revision_id)),
907 OP(FIELD_8,
AML_F(pin_function, pull_configuration),
908 NATIVE_F(pin_function, pull_configuration)),
909 OP(FIELD_16,
AML_F(pin_function, function_number),
910 NATIVE_F(pin_function, function_number)),
913 pin_function, SOURCE_NO_INDEX, source_offset,
source
920 OP(FIELD_8,
AML_F(pin_configuration, revision_id),
921 NATIVE_F(pin_configuration, revision_id)),
932 pin_configuration, SOURCE_NO_INDEX, source_offset,
source
938 OP(FIELD_8,
AML_F(pin_group, revision_id),
943 pin_group, LABEL, source_lable_offset,
label
948#define DECODE_PIN_GROUP_RES_SOURCES(postfix) \
949 DECODE_SOURCE_INDEX(pin_group_##postfix), \
950 OP(RESOURCE_SOURCE_NO_INDEX, NATIVE_F(pin_group_##postfix, source), \
951 AML_F(pin_group_##postfix, source_offset), \
952 ARG2(AML_O(pin_group_##postfix, source_lable_offset))), \
953 OP(LOAD_16_NATIVE, NATIVE_F(pin_group_##postfix, source.length)), \
954 OP(RESOURCE_LABEL, NATIVE_F(pin_group_##postfix, label), \
955 AML_F(pin_group_##postfix, source_lable_offset), \
956 ARG2(AML_O(pin_group_##postfix, vendor_data_offset))), \
957 OP(VENDOR_DATA, AML_F(pin_group_##postfix, vendor_data_offset), \
958 NATIVE_F(pin_group_##postfix, vendor_data_length), \
959 ARG2(NATIVE_O(pin_group_##postfix, vendor_data)))
963 OP(FIELD_8,
AML_F(pin_group_function, revision_id),
964 NATIVE_F(pin_group_function, revision_id)),
969 OP(FIELD_16,
AML_F(pin_group_function, function),
970 NATIVE_F(pin_group_function, function)),
977 OP(FIELD_8,
AML_F(pin_group_configuration, revision_id),
978 NATIVE_F(pin_group_configuration, revision_id)),
982 NATIVE_F(pin_group_configuration, direction),
IMM(1)),
994 NATIVE_F(serial_bus_common, revision_id)),
996 NATIVE_F(serial_bus_common, type_revision_id)),
1000 NATIVE_F(serial_bus_common, type_data_length)),
1013 NATIVE_F(i2c_connection, addressing_mode),
IMM(0)),
1014 OP(FIELD_32,
AML_F(serial_i2c, connection_speed),
1015 NATIVE_F(i2c_connection, connection_speed),
IMM(0xFF)),
1016 OP(FIELD_16,
AML_F(serial_i2c, slave_address),
1017 NATIVE_F(i2c_connection, slave_address)),
1023 NATIVE_F(spi_connection, device_polarity),
IMM(1)),
1024 OP(FIELD_32,
AML_F(serial_spi, connection_speed),
1025 NATIVE_F(spi_connection, connection_speed),
IMM(0xFF)),
1026 OP(FIELD_8,
AML_F(serial_spi, data_bit_length),
1027 NATIVE_F(spi_connection, data_bit_length),
IMM(5)),
1038 OP(FIELD_32,
AML_F(serial_uart, baud_rate),
1040 OP(FIELD_16,
AML_F(serial_uart, rx_fifo),
1042 OP(FIELD_8,
AML_F(serial_uart, parity),
1059#define NATIVE_RESOURCE_HEADER_SIZE 8
1061#define DEFINE_SMALL_AML_RESOURCE(aml_type_enum, native_type_enum, \
1062 aml_struct, native_struct, ...) \
1063 [aml_type_enum] = { \
1064 .type = aml_type_enum, \
1065 .native_type = native_type_enum, \
1066 .resource_kind = UACPI_AML_RESOURCE_KIND_SMALL, \
1067 .aml_size = sizeof(aml_struct) - SMALL_ITEM_HEADER_SIZE, \
1068 .native_size = sizeof(native_struct) + NATIVE_RESOURCE_HEADER_SIZE, \
1072#define DEFINE_SMALL_AML_RESOURCE_NO_NATIVE_REPR( \
1073 aml_type_enum, native_type_enum, aml_struct, ... \
1075 [aml_type_enum] = { \
1076 .type = aml_type_enum, \
1077 .native_type = native_type_enum, \
1078 .resource_kind = UACPI_AML_RESOURCE_KIND_SMALL, \
1079 .aml_size = sizeof(aml_struct) - SMALL_ITEM_HEADER_SIZE, \
1080 .native_size = NATIVE_RESOURCE_HEADER_SIZE, \
1084#define DEFINE_LARGE_AML_RESOURCE(aml_type_enum, native_type_enum, \
1085 aml_struct, native_struct, ...) \
1086 [aml_type_enum] = { \
1087 .type = aml_type_enum, \
1088 .native_type = native_type_enum, \
1089 .resource_kind = UACPI_AML_RESOURCE_KIND_LARGE, \
1090 .aml_size = sizeof(aml_struct) - LARGE_ITEM_HEADER_SIZE, \
1091 .native_size = sizeof(native_struct) + NATIVE_RESOURCE_HEADER_SIZE, \
1130 struct acpi_resource_end_dependent,
1163 struct acpi_resource_vendor_defined_type0,
1198 struct acpi_resource_vendor_defined_type1,
1233 .
to_aml = convert_address32,
1244 .
to_aml = convert_address16,
1266 .
to_aml = convert_address64,
1271 struct acpi_resource_address64_extended,
1280 struct acpi_resource_gpio_connection,
1302 struct acpi_resource_serial,
1313 struct acpi_resource_pin_configuration,
1346 struct acpi_resource_pin_group_configuration,
1357 struct acpi_resource_clock_input,
1435 bytes_left =
buffer.length;
1438 while (bytes_left) {
1450 if (resource_size != spec->
aml_size)
1454 if (resource_size < spec->
aml_size)
1458 if (resource_size != spec->
aml_size &&
1459 resource_size != (spec->
aml_size - 1))
1467 struct acpi_resource_serial *
serial;
1476 decision =
cb(
user,
data, resource_size, spec);
1485 bytes_left -= total_size;
1533 if (
buffer.length == 0) {
1547 *out_offset = end_tag_ptr -
buffer.bytes;
1570#define CONVERSION_OPCODES_COMMON(native_buf) \
1571 case UACPI_RESOURCE_CONVERT_OPCODE_END: \
1572 return conditional_continue(ctx); \
1574 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_8: \
1575 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_16: \
1576 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_32: \
1577 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_64: { \
1580 bytes = 1 << (insn->code - UACPI_RESOURCE_CONVERT_OPCODE_FIELD_8); \
1581 accumulator = insn->imm == 0xFF ? 0 : accumulator + insn->imm; \
1583 uacpi_memcpy(dst, src, bytes * UACPI_MAX(1, accumulator)); \
1588 case UACPI_RESOURCE_CONVERT_OPCODE_SKIP_IF_AML_SIZE_LESS_THAN: \
1589 if (aml_size < insn->arg0) \
1592 case UACPI_RESOURCE_CONVERT_OPCODE_SKIP_IF_NOT_EQUALS: \
1593 if (insn->arg0 != accumulator) \
1597 case UACPI_RESOURCE_CONVERT_OPCODE_SET_TO_IMM: \
1598 uacpi_memcpy(dst, &insn->imm, sizeof(insn->imm)); \
1601 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_IMM: \
1602 accumulator = insn->imm; \
1605 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_8_STORE: \
1606 uacpi_memcpy_zerout(&accumulator, src, sizeof(accumulator), 1); \
1607 uacpi_memcpy(dst, &accumulator, 1); \
1610 accumulator *= insn->imm; \
1613 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_8_NATIVE: \
1614 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_16_NATIVE: { \
1618 1 << (insn->code - UACPI_RESOURCE_CONVERT_OPCODE_LOAD_8_NATIVE); \
1619 uacpi_memcpy_zerout( \
1620 &accumulator, native_buf, sizeof(accumulator), bytes \
1625 case UACPI_RESOURCE_CONVERT_OPCODE_UNREACHABLE: \
1627 if (insn->code != UACPI_RESOURCE_CONVERT_OPCODE_UNREACHABLE) { \
1628 uacpi_error("unhandled resource conversion opcode %d\n", \
1631 uacpi_error("tried to execute unreachable conversion opcode\n"); \
1633 ctx->st = UACPI_STATUS_INTERNAL_ERROR; \
1634 return UACPI_ITERATION_DECISION_BREAK;
1636#define PTR_AT(ptr, offset) (void*)((uacpi_u8*)(ptr) + (offset))
1638#define NATIVE_OFFSET(res, offset) \
1639 PTR_AT(res, (offset) + (sizeof(uacpi_u32) * 2))
1641#define NATIVE_FIELD(res, name, field) \
1642 NATIVE_OFFSET(res, NATIVE_O(name, field))
1644#define CHECK_AML_OOB(offset, prefix, what) \
1645 if (uacpi_unlikely(offset > ((uacpi_u32)aml_size + header_size))) { \
1646 uacpi_error(prefix what " is OOB: %zu > %u\n", \
1647 (uacpi_size)offset, (uacpi_u32)aml_size + header_size); \
1648 ctx->st = UACPI_STATUS_AML_INVALID_RESOURCE; \
1649 return UACPI_ITERATION_DECISION_BREAK; \
1652#define CHECK_AML_OFFSET_BASE(offset, what) \
1653 if (uacpi_unlikely(offset < base_aml_size_with_header)) { \
1655 "invalid " what " offset: %zu, expected at least %u\n", \
1656 (uacpi_size)offset, base_aml_size_with_header); \
1657 ctx->st = UACPI_STATUS_AML_INVALID_RESOURCE; \
1658 return UACPI_ITERATION_DECISION_BREAK; \
1661#define CHECK_AML_OFFSET(offset, what) \
1662 CHECK_AML_OOB(offset, "end of ", what) \
1663 CHECK_AML_OFFSET_BASE(offset, what)
1685 uacpi_u32 base_aml_size_with_header, accumulator = 0;
1695 base_aml_size = base_aml_size_with_header = spec->
aml_size;
1696 base_aml_size_with_header += header_size;
1702 insn = &insns[pc++];
1707 switch (insn->
code) {
1723 for (
i = 0,
j = 0;
i < max_bit; ++
i) {
1749 accumulator = aml_size;
1762 } dst_name = { .ptr =
dst };
1773 max_offset = aml_size + header_size;
1776 offset += base_aml_size_with_header;
1782 if (
offset >= max_offset) {
1791 uacpi_memcpy(&dst_name.source->index, src_string++, 1);
1795 if (
offset == max_offset)
1798 while (
offset++ < max_offset) {
1799 if (src_string[
length++] ==
'\0')
1803 if (src_string[
length - 1] !=
'\0') {
1804 uacpi_error(
"non-null-terminated resource source string\n");
1809 dst_string =
PTR_AT(resource_end, accumulator);
1813 dst_name.label->length =
length;
1814 dst_name.label->string = dst_string;
1816 dst_name.source->length =
length;
1817 dst_name.source->string = dst_string;
1825 sizeof(accumulator),
sizeof(
uacpi_u16));
1828 accumulator -= base_aml_size_with_header;
1832 uacpi_u16 entry_count = accumulator / 2;
1840 data + base_aml_size_with_header,
1849 &resource_end,
sizeof(
void*));
1856 void *native_dst, *vendor_data;
1861 vendor_data =
data + data_offset;
1867 data_offset -= header_size;
1869 length = aml_size - data_offset;
1875 offset_from_end = data_offset - base_aml_size;
1876 native_dst =
PTR_AT(resource_end, offset_from_end);
1880 &native_dst,
sizeof(
void*));
1886 uacpi_u8 serial_type, extra_size, type_length;
1888 serial_bus_common = &
resource->serial_bus_common;
1890 serial_bus_common->
type = serial_type;
1902 base_aml_size += extra_size;
1903 base_aml_size_with_header += extra_size;
1908 "invalid type-specific data length: %d, "
1909 "expected at least %d\n", type_length, extra_size
1919 accumulator = type_length - extra_size;
1920 if (accumulator == 0)
1927 data + base_aml_size_with_header,
1947 if (size_for_this == 0 || (
ctx->size + size_for_this) <
ctx->size) {
1948 uacpi_error(
"invalid native size for aml resource: %zu\n",
1954 ctx->size += size_for_this;
1997 uacpi_error(
"bug: bogus native resource buffer size %zu\n",
ctx.size);
2123 while (bytes_left) {
2126 uacpi_error(
"corrupted resource buffer %p length %zu\n",
2137 uacpi_error(
"corrupted resource@%p length %u (%zu bytes left)\n",
2148 bytes_left -=
current->length;
2198 uacpi_u32 aml_size, base_aml_size_with_header, accumulator = 0;
2205 dst_base =
ctx->byte_buf;
2206 ctx->byte_buf += aml_size;
2209 base_aml_size_with_header = spec->
aml_size;
2220 *dst_base |= aml_size;
2227 insn = &insns[pc++];
2232 switch (insn->
code) {
2257 accumulator = aml_size;
2270 } src_name = { .ptr =
src };
2272 source_offset = base_aml_size_with_header + accumulator;
2273 dst_string = dst_base + source_offset;
2279 src_name.source->index_present)
2280 uacpi_memcpy(dst_string++, &src_name.source->index, 1);
2283 length = src_name.label->length;
2284 src_string = src_name.label->string;
2286 length = src_name.source->length;
2287 src_string = src_name.source->string;
2295 "source string length is %zu but the pointer is NULL\n",
2308 sizeof(accumulator),
sizeof(
uacpi_u16));
2324 dst_base + base_aml_size_with_header,
2331 uacpi_u16 vendor_data_length, data_offset, vendor_data_offset;
2344 "vendor_data_length is %d, but pointer is NULL\n",
2356 full_aml_size = aml_size;
2372 data_offset = vendor_data - (
uacpi_u8*)resource_end;
2373 vendor_data_offset = data_offset + base_aml_size_with_header;
2385 &vendor_data_length,
2386 sizeof(vendor_data_length)
2391 dst_base + vendor_data_offset,
2409 "native serial resource type %d doesn't match expected %d\n",
2425 accumulator =
resource->serial_bus_common.vendor_data_length;
2426 if (accumulator == 0)
2431 dst_base + base_aml_size_with_header,
2443#define INLINE_END_TAG &(uacpi_resource) { .type = UACPI_RESOURCE_TYPE_END_TAG }
2480 if (size_for_this == 0 || (
ctx->size + size_for_this) <
ctx->size) {
2481 uacpi_error(
"invalid aml size for native resource: %zu\n",
2487 ctx->size += size_for_this;
2515 uacpi_error(
"bug: bogus target aml resource buffer size %zu\n",
2531 obj->buffer->size =
ctx.size;
2538 *out_template =
obj;
2555 args.objects = &res_template;
static unsigned char bytes[4]
_Check_return_ _Ret_maybenull_ _In_ size_t alignment
void user(int argc, const char *argv[])
static PDB_INFORMATION information
#define ACPI_RESOURCE_START_DEPENDENT
#define ACPI_SMALL_ITEM_NAME_MASK
#define ACPI_SERIAL_TYPE_MAX
#define ACPI_RESOURCE_END_TAG
#define ACPI_RESOURCE_SERIAL_CONNECTION
#define ACPI_RESOURCE_ADDRESS32
#define ACPI_RESOURCE_FIXED_DMA
#define ACPI_SERIAL_TYPE_CSI2
#define ACPI_RESOURCE_PIN_CONFIGURATION
#define ACPI_RESOURCE_ADDRESS16
#define ACPI_RESOURCE_CLOCK_INPUT
#define ACPI_RESOURCE_IRQ
#define ACPI_RESOURCE_VENDOR_TYPE0
#define ACPI_RESOURCE_GPIO_CONNECTION
#define ACPI_SERIAL_TYPE_SPI
#define ACPI_SMALL_ITEM_NAME_IDX
#define ACPI_RESOURCE_PIN_GROUP_FUNCTION
#define ACPI_RESOURCE_PIN_GROUP
#define ACPI_RESOURCE_VENDOR_TYPE1
#define ACPI_RESOURCE_GENERIC_REGISTER
#define ACPI_RESOURCE_MEMORY32
#define ACPI_RESOURCE_PIN_FUNCTION
#define ACPI_SMALL_ITEM_LENGTH_MASK
#define ACPI_SERIAL_TYPE_I2C
#define ACPI_RESOURCE_PIN_GROUP_CONFIGURATION
#define ACPI_RESOURCE_ADDRESS64
#define ACPI_RESOURCE_DMA
#define ACPI_RESOURCE_END_DEPENDENT
#define ACPI_RESOURCE_ADDRESS64_EXTENDED
#define ACPI_RESOURCE_FIXED_MEMORY32
#define ACPI_SERIAL_TYPE_UART
#define ACPI_LARGE_ITEM_NAME_MASK
#define ACPI_RESOURCE_EXTENDED_IRQ
#define ACPI_RESOURCE_MEMORY24
#define ACPI_RESOURCE_FIXED_IO
uacpi_u16 uacpi_gpe_triggering triggering
@ UACPI_AML_RESOURCE_KIND_LARGE
@ UACPI_AML_RESOURCE_KIND_SMALL
@ UACPI_AML_RESOURCE_END_TAG
@ UACPI_AML_RESOURCE_PIN_GROUP
@ UACPI_AML_RESOURCE_FIXED_MEMORY32
@ UACPI_AML_RESOURCE_ADDRESS32
@ UACPI_AML_RESOURCE_PIN_CONFIGURATION
@ UACPI_AML_RESOURCE_FIXED_IO
@ UACPI_AML_RESOURCE_MEMORY24
@ UACPI_AML_RESOURCE_TYPE_INVALID
@ UACPI_AML_RESOURCE_VENDOR_TYPE0
@ UACPI_AML_RESOURCE_PIN_FUNCTION
@ UACPI_AML_RESOURCE_FIXED_DMA
@ UACPI_AML_RESOURCE_PIN_GROUP_FUNCTION
@ UACPI_AML_RESOURCE_GPIO_CONNECTION
@ UACPI_AML_RESOURCE_EXTENDED_IRQ
@ UACPI_AML_RESOURCE_GENERIC_REGISTER
@ UACPI_AML_RESOURCE_END_DEPENDENT
@ UACPI_AML_RESOURCE_VENDOR_TYPE1
@ UACPI_AML_RESOURCE_ADDRESS64_EXTENDED
@ UACPI_AML_RESOURCE_ADDRESS64
@ UACPI_AML_RESOURCE_ADDRESS16
@ UACPI_AML_RESOURCE_START_DEPENDENT
@ UACPI_AML_RESOURCE_CLOCK_INPUT
@ UACPI_AML_RESOURCE_SERIAL_CONNECTION
@ UACPI_AML_RESOURCE_PIN_GROUP_CONFIGURATION
@ UACPI_AML_RESOURCE_MEMORY32
uacpi_iteration_decision(* uacpi_aml_resource_iteration_callback)(void *, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *)
@ UACPI_RESOURCE_CONVERT_OPCODE_PACKED_ARRAY_8
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_2
@ UACPI_RESOURCE_CONVERT_OPCODE_PIN_TABLE
@ UACPI_RESOURCE_CONVERT_OPCODE_PACKED_ARRAY_16
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_1
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_3
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_6
@ UACPI_RESOURCE_CONVERT_OPCODE_LOAD_AML_SIZE_32
@ UACPI_RESOURCE_CONVERT_OPCODE_RESOURCE_LABEL
@ UACPI_RESOURCE_CONVERT_OPCODE_RESOURCE_SOURCE_NO_INDEX
@ UACPI_RESOURCE_CONVERT_OPCODE_LOAD_PIN_TABLE_LENGTH
@ UACPI_RESOURCE_CONVERT_OPCODE_SERIAL_TYPE_SPECIFIC
@ UACPI_RESOURCE_CONVERT_OPCODE_RESOURCE_SOURCE
@ UACPI_RESOURCE_CONVERT_OPCODE_VENDOR_DATA
@ UACPI_AML_RESOURCE_SIZE_KIND_FIXED
@ UACPI_AML_RESOURCE_SIZE_KIND_FIXED_OR_ONE_LESS
@ UACPI_AML_RESOURCE_SIZE_KIND_VARIABLE
#define UACPI_ALIGN_UP(x, val, type)
#define uacpi_kernel_alloc_zeroed
#define uacpi_free(mem, _)
void uacpi_memcpy_zerout(void *dst, const void *src, uacpi_size dst_size, uacpi_size src_size)
uacpi_object * uacpi_create_object(uacpi_object_type type)
void uacpi_buffer_to_view(uacpi_buffer *, uacpi_data_view *)
uacpi_status uacpi_namespace_node_is(const uacpi_namespace_node *node, uacpi_object_type type, uacpi_bool *out)
@ UACPI_RESOURCE_TYPE_PIN_GROUP_CONFIGURATION
@ UACPI_RESOURCE_TYPE_ADDRESS32
@ UACPI_RESOURCE_TYPE_START_DEPENDENT
@ UACPI_RESOURCE_TYPE_SERIAL_UART_CONNECTION
@ UACPI_RESOURCE_TYPE_VENDOR_SMALL
@ UACPI_RESOURCE_TYPE_PIN_FUNCTION
@ UACPI_RESOURCE_TYPE_EXTENDED_IRQ
@ UACPI_RESOURCE_TYPE_MEMORY32
@ UACPI_RESOURCE_TYPE_END_DEPENDENT
@ UACPI_RESOURCE_TYPE_SERIAL_I2C_CONNECTION
@ UACPI_RESOURCE_TYPE_FIXED_DMA
@ UACPI_RESOURCE_TYPE_GENERIC_REGISTER
@ UACPI_RESOURCE_TYPE_ADDRESS16
@ UACPI_RESOURCE_TYPE_SERIAL_SPI_CONNECTION
@ UACPI_RESOURCE_TYPE_PIN_GROUP
@ UACPI_RESOURCE_TYPE_MAX
@ UACPI_RESOURCE_TYPE_IRQ
@ UACPI_RESOURCE_TYPE_PIN_CONFIGURATION
@ UACPI_RESOURCE_TYPE_FIXED_IO
@ UACPI_RESOURCE_TYPE_VENDOR_LARGE
@ UACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION
@ UACPI_RESOURCE_TYPE_END_TAG
@ UACPI_RESOURCE_TYPE_ADDRESS64
@ UACPI_RESOURCE_TYPE_CLOCK_INPUT
@ UACPI_RESOURCE_TYPE_SERIAL_CSI2_CONNECTION
@ UACPI_RESOURCE_TYPE_GPIO_CONNECTION
@ UACPI_RESOURCE_TYPE_ADDRESS64_EXTENDED
@ UACPI_RESOURCE_TYPE_MEMORY24
@ UACPI_RESOURCE_TYPE_FIXED_MEMORY32
@ UACPI_RESOURCE_TYPE_DMA
#define UACPI_POLARITY_ACTIVE_HIGH
@ UACPI_RESOURCE_LENGTH_KIND_DONT_CARE
@ UACPI_RESOURCE_LENGTH_KIND_ONE_LESS
@ UACPI_RESOURCE_LENGTH_KIND_FULL
#define UACPI_GPIO_CONNECTION_IO
uacpi_iteration_decision(* uacpi_resource_iteration_callback)(void *user, uacpi_resource *resource)
#define UACPI_TRIGGERING_EDGE
#define UACPI_GPIO_CONNECTION_INTERRUPT
#define uacpi_unlikely_error(expr)
@ UACPI_STATUS_INVALID_ARGUMENT
@ UACPI_STATUS_INTERNAL_ERROR
@ UACPI_STATUS_AML_INVALID_RESOURCE
@ UACPI_STATUS_OUT_OF_MEMORY
@ UACPI_STATUS_NO_RESOURCE_END_TAG
@ UACPI_ITERATION_DECISION_BREAK
@ UACPI_ITERATION_DECISION_CONTINUE
void uacpi_object_unref(uacpi_object *obj)
static const struct uacpi_resource_convert_instruction convert_io[]
#define OP(short_code,...)
const struct uacpi_resource_spec aml_resources[UACPI_AML_RESOURCE_MAX+1]
static const uacpi_u8 aml_resource_to_type[256]
static const struct uacpi_resource_convert_instruction convert_pin_group[]
static const struct uacpi_resource_convert_instruction convert_vendor_type1[]
static const struct uacpi_resource_convert_instruction convert_memory32[]
static uacpi_size size_for_aml_resource_source(uacpi_resource_source *source, uacpi_bool with_index)
static const struct uacpi_resource_convert_instruction convert_gpio_connection[]
static uacpi_resource_type aml_serial_to_native_type(uacpi_u8 type)
uacpi_status uacpi_get_possible_resources(uacpi_namespace_node *device, uacpi_resources **out_resources)
#define NATIVE_F(short_native_name, field)
#define LARGE_RESOURCE_BASE
static uacpi_iteration_decision do_native_resource_to_aml(void *opaque, uacpi_resource *resource)
static uacpi_size size_for_aml_extended_irq(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static const struct uacpi_resource_convert_instruction convert_irq_to_native[]
static const uacpi_u8 aml_serial_resource_to_extra_native_size[ACPI_SERIAL_TYPE_MAX+1]
static const struct uacpi_resource_convert_instruction convert_fixed_memory32[]
#define CONVERT_TYPE_SPECIFIC_FLAGS(addr_type)
static const uacpi_u8 type_to_aml_resource[]
static uacpi_iteration_decision conditional_continue(struct resource_conversion_ctx *ctx)
uacpi_status uacpi_find_aml_resource_end_tag(uacpi_data_view buffer, uacpi_size *out_offset)
#define LARGE_ITEM_HEADER_SIZE
static uacpi_iteration_decision accumulate_native_buffer_size(void *opaque, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *spec)
uacpi_status uacpi_get_current_resources(uacpi_namespace_node *device, uacpi_resources **out_resources)
static uacpi_size size_for_aml_irq(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static uacpi_size size_for_aml_start_dependent(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
uacpi_status uacpi_for_each_resource(uacpi_resources *resources, uacpi_resource_iteration_callback cb, void *user)
#define DEFINE_SMALL_AML_RESOURCE(aml_type_enum, native_type_enum, aml_struct, native_struct,...)
static const struct uacpi_resource_convert_instruction convert_fixed_io[]
static const struct uacpi_resource_convert_instruction convert_vendor_type0[]
#define DECODE_RES_PIN_TBL_AND_VENDOR_DATA( short_aml_name, res_opcode, offset_field, res_field)
static uacpi_iteration_decision do_aml_resource_to_native(void *opaque, uacpi_u8 *data, uacpi_u16 aml_size, const struct uacpi_resource_spec *spec)
uacpi_status uacpi_for_each_aml_resource(uacpi_data_view buffer, uacpi_aml_resource_iteration_callback cb, void *user)
void uacpi_free_resources(uacpi_resources *resources)
uacpi_status uacpi_native_resources_to_aml(uacpi_resources *resources, uacpi_object **out_template)
static const struct uacpi_resource_convert_instruction convert_clock_input[]
static enum uacpi_aml_resource get_aml_resource_type(uacpi_u8 raw_byte)
static const struct uacpi_resource_convert_instruction convert_start_dependent_to_aml[]
#define AML_F(short_aml_name, field)
#define DECODE_PIN_GROUP_RES_SOURCES(postfix)
uacpi_status uacpi_native_resources_from_aml(uacpi_data_view aml_buffer, uacpi_resources **out_resources)
#define NATIVE_SERIAL_RESOURCE_EXTRA_SIZE(type)
static uacpi_size native_size_for_aml_resource(uacpi_u8 *data, uacpi_u16 size, const struct uacpi_resource_spec *spec)
static uacpi_size size_for_aml_pin_group(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static uacpi_status get_aml_resource_size(uacpi_u8 *data, uacpi_size bytes_left, uacpi_u16 *out_size)
static uacpi_size size_for_aml_vendor(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
#define AML_SERIAL_RESOURCE_EXTRA_SIZE(type)
uacpi_status uacpi_get_device_resources(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resources **out_resources)
static const struct uacpi_resource_convert_instruction convert_start_dependent_to_native[]
static const struct uacpi_resource_convert_instruction convert_pin_configuration[]
static uacpi_status validate_aml_serial_type(uacpi_u8 type)
#define PTR_AT(ptr, offset)
static uacpi_iteration_decision accumulate_aml_buffer_size(void *opaque, uacpi_resource *resource)
static const struct uacpi_resource_convert_instruction convert_pin_group_function[]
uacpi_status uacpi_set_resources(uacpi_namespace_node *device, uacpi_resources *resources)
#define NATIVE_OFFSET(res, offset)
static const uacpi_u8 aml_resource_kind_to_header_size[2]
static uacpi_size aml_size_for_native_resource(uacpi_resource *resource, const struct uacpi_resource_spec *spec)
static const uacpi_u8 aml_serial_resource_to_extra_aml_size[ACPI_SERIAL_TYPE_MAX+1]
#define CHECK_AML_OFFSET(offset, what)
static const struct uacpi_resource_convert_instruction convert_generic_register[]
static const struct uacpi_resource_convert_instruction convert_generic_serial_bus[]
static const struct uacpi_resource_convert_instruction convert_address64_extended[]
static uacpi_iteration_decision find_end(void *opaque, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *spec)
static uacpi_size aml_size_with_header(const struct uacpi_resource_spec *spec)
uacpi_status uacpi_for_each_device_resource(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resource_iteration_callback cb, void *user)
static const uacpi_u8 native_resource_to_type[UACPI_RESOURCE_TYPE_MAX+1]
#define NATIVE_O(short_name, field)
static uacpi_size extra_size_for_serial_connection(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static const struct uacpi_resource_convert_instruction convert_pin_group_configuration[]
#define SMALL_ITEM_HEADER_SIZE
static uacpi_size extra_size_for_native_pin_group(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static uacpi_size extra_size_for_native_vendor(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
void uacpi_free_resource(uacpi_resource *resource)
static uacpi_size extra_size_for_resource_source(uacpi_size base_size, uacpi_size reported_size)
uacpi_status uacpi_get_resource_from_buffer(uacpi_data_view aml_buffer, uacpi_resource **out_resource)
static uacpi_size extra_size_for_native_irq_or_dma(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
#define DEFINE_ADDRESS_CONVERSION(width)
static const struct uacpi_resource_convert_instruction convert_extended_irq[]
static uacpi_size aml_size_for_serial_connection(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
#define CONVERSION_OPCODES_COMMON(native_buf)
static const struct uacpi_resource_spec * resource_spec_from_native(uacpi_resource *resource)
static uacpi_size extra_size_for_native_address_or_clock_input(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static uacpi_size size_for_aml_gpio_or_pins(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static uacpi_status native_resources_to_aml(uacpi_resources *native_resources, void *aml_buffer)
#define CONVERT_GENERAL_ADDRESS_FLAGS(addr_type)
#define DEFINE_SMALL_AML_RESOURCE_NO_NATIVE_REPR( aml_type_enum, native_type_enum, aml_struct,...)
static uacpi_size extra_size_for_native_gpio_or_pins(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static uacpi_status eval_resource_helper(uacpi_namespace_node *node, const uacpi_char *method, uacpi_object **out_obj)
static const struct uacpi_resource_convert_instruction convert_dma[]
#define DECODE_SOURCE_INDEX(short_aml_name)
static const struct uacpi_resource_convert_instruction convert_memory24[]
static const struct uacpi_resource_convert_instruction convert_pin_function[]
static uacpi_status extract_native_resources_from_method(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resources **out_resources)
static uacpi_size size_for_aml_address_or_clock_input(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
#define DEFINE_LARGE_AML_RESOURCE(aml_type_enum, native_type_enum, aml_struct, native_struct,...)
static uacpi_size extra_size_for_extended_irq(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
const struct uacpi_resource_convert_instruction convert_irq_to_aml[]
static const struct uacpi_resource_convert_instruction convert_fixed_dma[]
static void write_status(LPCWSTR lpFmt,...)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLenum GLenum GLenum scale
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define UACPI_PTR_ADD(ptr, value)
struct task_struct * current
static const WCHAR label[]
static HMODULE MODULEINFO DWORD cb
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
static ULONG POBJECT_ATTRIBUTES PIO_STATUS_BLOCK ULONG sharing
static LARGE_INTEGER * frequency
uacpi_resource_source source
uacpi_u16 type_data_length
uacpi_u16 vendor_data_length
uacpi_size(* size_for_aml)(const struct uacpi_resource_spec *, uacpi_resource *)
const struct uacpi_resource_convert_instruction * to_aml
const struct uacpi_resource_convert_instruction * to_native
uacpi_size(* extra_size_for_native)(const struct uacpi_resource_spec *, void *, uacpi_size)
uacpi_status uacpi_eval_simple_buffer(uacpi_namespace_node *parent, const uacpi_char *path, uacpi_object **ret)
uacpi_status uacpi_eval(uacpi_namespace_node *parent, const uacpi_char *path, const uacpi_object_array *args, uacpi_object **ret)