ReactOS 0.4.17-dev-1190-g4c812f4
io.h File Reference
#include <uacpi/internal/types.h>
#include <uacpi/acpi.h>
#include <uacpi/io.h>
Include dependency graph for io.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  uacpi_mapped_gas
 

Macros

#define uacpi_mmio_read8   uacpi_builtin_mmio_read8
 
#define uacpi_mmio_read16   uacpi_builtin_mmio_read16
 
#define uacpi_mmio_read32   uacpi_builtin_mmio_read32
 
#define uacpi_mmio_read64   uacpi_builtin_mmio_read64
 
#define uacpi_mmio_write8   uacpi_builtin_mmio_write8
 
#define uacpi_mmio_write16   uacpi_builtin_mmio_write16
 
#define uacpi_mmio_write32   uacpi_builtin_mmio_write32
 
#define uacpi_mmio_write64   uacpi_builtin_mmio_write64
 

Typedefs

typedef struct uacpi_mapped_gas uacpi_mapped_gas
 

Functions

uacpi_status uacpi_map_gas_noalloc (const struct acpi_gas *gas, uacpi_mapped_gas *out_mapped)
 
void uacpi_unmap_gas_nofree (uacpi_mapped_gas *gas)
 
uacpi_size uacpi_round_up_bits_to_bytes (uacpi_size bit_length)
 
void uacpi_read_buffer_field (const uacpi_buffer_field *field, void *dst)
 
void uacpi_write_buffer_field (uacpi_buffer_field *field, const void *src, uacpi_size size)
 
uacpi_status uacpi_field_unit_get_read_type (struct uacpi_field_unit *field, uacpi_object_type *out_type)
 
uacpi_status uacpi_field_unit_get_bit_length (struct uacpi_field_unit *field, uacpi_size *out_length)
 
uacpi_status uacpi_read_field_unit (uacpi_field_unit *field, void *dst, uacpi_size size, uacpi_data_view *wtr_response)
 
uacpi_status uacpi_write_field_unit (uacpi_field_unit *field, const void *src, uacpi_size size, uacpi_data_view *wtr_response)
 
uacpi_status uacpi_write_field_unit_in_chunks (uacpi_field_unit *field, const void *src, uacpi_size size, uacpi_data_view *wtr_response)
 
uacpi_u8 uacpi_builtin_mmio_read8 (void *ptr)
 
uacpi_u16 uacpi_builtin_mmio_read16 (void *ptr)
 
uacpi_u32 uacpi_builtin_mmio_read32 (void *ptr)
 
uacpi_u64 uacpi_builtin_mmio_read64 (void *ptr)
 
void uacpi_builtin_mmio_write8 (void *ptr, uacpi_u8 data)
 
void uacpi_builtin_mmio_write16 (void *ptr, uacpi_u16 data)
 
void uacpi_builtin_mmio_write32 (void *ptr, uacpi_u32 data)
 
void uacpi_builtin_mmio_write64 (void *ptr, uacpi_u64 data)
 
uacpi_status uacpi_system_memory_read (void *ptr, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out)
 
uacpi_status uacpi_system_memory_write (void *ptr, uacpi_size offset, uacpi_u8 width, uacpi_u64 in)
 
uacpi_status uacpi_system_io_read (uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out)
 
uacpi_status uacpi_system_io_write (uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in)
 
uacpi_status uacpi_pci_read (uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out)
 
uacpi_status uacpi_pci_write (uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in)
 

Macro Definition Documentation

◆ uacpi_mmio_read16

#define uacpi_mmio_read16   uacpi_builtin_mmio_read16

Definition at line 89 of file io.h.

◆ uacpi_mmio_read32

#define uacpi_mmio_read32   uacpi_builtin_mmio_read32

Definition at line 90 of file io.h.

◆ uacpi_mmio_read64

#define uacpi_mmio_read64   uacpi_builtin_mmio_read64

Definition at line 91 of file io.h.

◆ uacpi_mmio_read8

#define uacpi_mmio_read8   uacpi_builtin_mmio_read8

Definition at line 88 of file io.h.

◆ uacpi_mmio_write16

#define uacpi_mmio_write16   uacpi_builtin_mmio_write16

Definition at line 94 of file io.h.

◆ uacpi_mmio_write32

#define uacpi_mmio_write32   uacpi_builtin_mmio_write32

Definition at line 95 of file io.h.

◆ uacpi_mmio_write64

#define uacpi_mmio_write64   uacpi_builtin_mmio_write64

Definition at line 96 of file io.h.

◆ uacpi_mmio_write8

#define uacpi_mmio_write8   uacpi_builtin_mmio_write8

Definition at line 93 of file io.h.

Typedef Documentation

◆ uacpi_mapped_gas

Function Documentation

◆ uacpi_builtin_mmio_read16()

uacpi_u16 uacpi_builtin_mmio_read16 ( void *  ptr)

Definition at line 1096 of file io.c.

1097{
1098 return *(volatile uacpi_u16*)ptr;
1099}
uint16_t uacpi_u16
Definition: types.h:20
static PVOID ptr
Definition: dispmode.c:27

◆ uacpi_builtin_mmio_read32()

uacpi_u32 uacpi_builtin_mmio_read32 ( void *  ptr)

Definition at line 1101 of file io.c.

1102{
1103 return *(volatile uacpi_u32*)ptr;
1104}
uint32_t uacpi_u32
Definition: types.h:21

◆ uacpi_builtin_mmio_read64()

uacpi_u64 uacpi_builtin_mmio_read64 ( void *  ptr)

Definition at line 1106 of file io.c.

1107{
1108 return *(volatile uacpi_u64*)ptr;
1109}
uint64_t uacpi_u64
Definition: types.h:22

◆ uacpi_builtin_mmio_read8()

uacpi_u8 uacpi_builtin_mmio_read8 ( void *  ptr)

Definition at line 1091 of file io.c.

1092{
1093 return *(volatile uacpi_u8*)ptr;
1094}
uint8_t uacpi_u8
Definition: types.h:19

◆ uacpi_builtin_mmio_write16()

void uacpi_builtin_mmio_write16 ( void *  ptr,
uacpi_u16  data 
)

Definition at line 1116 of file io.c.

1117{
1118 *(volatile uacpi_u16*)ptr = data;
1119}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ uacpi_builtin_mmio_write32()

void uacpi_builtin_mmio_write32 ( void *  ptr,
uacpi_u32  data 
)

Definition at line 1121 of file io.c.

1122{
1123 *(volatile uacpi_u32*)ptr = data;
1124}

◆ uacpi_builtin_mmio_write64()

void uacpi_builtin_mmio_write64 ( void *  ptr,
uacpi_u64  data 
)

Definition at line 1126 of file io.c.

1127{
1128 *(volatile uacpi_u64*)ptr = data;
1129}

◆ uacpi_builtin_mmio_write8()

void uacpi_builtin_mmio_write8 ( void *  ptr,
uacpi_u8  data 
)

Definition at line 1111 of file io.c.

1112{
1113 *(volatile uacpi_u8*)ptr = data;
1114}

◆ uacpi_field_unit_get_bit_length()

uacpi_status uacpi_field_unit_get_bit_length ( struct uacpi_field_unit *  field,
uacpi_size *  out_length 
)

Definition at line 786 of file io.c.

789{
791
793 goto out_basic_field;
794
797 );
800
801 if (uacpi_is_buffer_access_address_space(obj->op_region->space)) {
802 /*
803 * Bit length is protocol specific, the data will be returned
804 * via the write-then-read response buffer.
805 */
806 *out_length = 0;
807 return UACPI_STATUS_OK;
808 }
809
810out_basic_field:
811 *out_length = field->bit_length;
812 return UACPI_STATUS_OK;
813}
uacpi_object * uacpi_namespace_node_get_object_typed(const uacpi_namespace_node *node, uacpi_object_type_bits type_mask)
Definition: namespace.c:661
@ UACPI_FIELD_UNIT_KIND_INDEX
Definition: types.h:208
#define uacpi_unlikely(expr)
Definition: compiler.h:88
#define UACPI_NULL
Definition: types.h:33
@ UACPI_STATUS_INVALID_ARGUMENT
Definition: status.h:18
@ UACPI_STATUS_OK
Definition: status.h:11
@ UACPI_OBJECT_OPERATION_REGION_BIT
Definition: types.h:144
uacpi_bool uacpi_is_buffer_access_address_space(uacpi_address_space space)
Definition: opregion.c:1111
Definition: parser.c:44

Referenced by field_byte_size().

◆ uacpi_field_unit_get_read_type()

uacpi_status uacpi_field_unit_get_read_type ( struct uacpi_field_unit *  field,
uacpi_object_type *  out_type 
)

Definition at line 757 of file io.c.

760{
762
764 goto out_basic_field;
765
768 );
771
772 if (uacpi_is_buffer_access_address_space(obj->op_region->space)) {
773 *out_type = UACPI_OBJECT_BUFFER;
774 return UACPI_STATUS_OK;
775 }
776
777out_basic_field:
778 if (field->bit_length > (g_uacpi_rt_ctx.is_rev1 ? 32u : 64u))
779 *out_type = UACPI_OBJECT_BUFFER;
780 else
781 *out_type = UACPI_OBJECT_INTEGER;
782
783 return UACPI_STATUS_OK;
784}
struct uacpi_runtime_context g_uacpi_rt_ctx
Definition: uacpi.c:18
@ UACPI_OBJECT_BUFFER
Definition: types.h:114
@ UACPI_OBJECT_INTEGER
Definition: types.h:112

Referenced by field_get_read_type().

◆ uacpi_map_gas_noalloc()

uacpi_status uacpi_map_gas_noalloc ( const struct acpi_gas *  gas,
uacpi_mapped_gas *  out_mapped 
)

Definition at line 992 of file io.c.

995{
997 uacpi_u8 access_bit_width, total_width;
998
999 ret = gas_validate(gas, &access_bit_width, &total_width);
1000 if (ret != UACPI_STATUS_OK)
1001 return ret;
1002
1003 if (gas->address_space_id == UACPI_ADDRESS_SPACE_SYSTEM_MEMORY) {
1004 out_mapped->mapping = uacpi_kernel_map(gas->address, total_width / 8);
1005 if (uacpi_unlikely(out_mapped->mapping == UACPI_MAP_FAILED))
1007
1008 out_mapped->read = uacpi_system_memory_read;
1009 out_mapped->write = uacpi_system_memory_write;
1010 out_mapped->unmap = uacpi_kernel_unmap;
1011 } else { // IO, validated by gas_validate above
1012 ret = uacpi_kernel_io_map(gas->address, total_width / 8, &out_mapped->mapping);
1014 return ret;
1015
1016 out_mapped->read = uacpi_system_io_read;
1017 out_mapped->write = uacpi_system_io_write;
1018 out_mapped->unmap = unmap_gas_io;
1019 }
1020
1021 out_mapped->access_bit_width = access_bit_width;
1022 out_mapped->total_bit_width = total_width;
1023 out_mapped->bit_offset = gas->register_bit_offset;
1024
1025 return UACPI_STATUS_OK;
1026}
#define uacpi_unlikely_error(expr)
Definition: status.h:50
uacpi_status
Definition: status.h:10
@ UACPI_STATUS_MAPPING_FAILED
Definition: status.h:12
@ UACPI_ADDRESS_SPACE_SYSTEM_MEMORY
Definition: types.h:43
uacpi_status uacpi_system_io_write(uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in)
Definition: io.c:1223
uacpi_status uacpi_system_memory_read(void *ptr, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out)
Definition: io.c:1132
uacpi_status uacpi_system_io_read(uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out)
Definition: io.c:1191
static void unmap_gas_io(uacpi_handle io_handle, uacpi_size size)
Definition: io.c:986
uacpi_status uacpi_system_memory_write(void *ptr, uacpi_size offset, uacpi_u8 width, uacpi_u64 in)
Definition: io.c:1158
static uacpi_status gas_validate(const struct acpi_gas *gas, uacpi_u8 *access_bit_width, uacpi_u8 *bit_width)
Definition: io.c:861
return ret
Definition: mutex.c:147
uacpi_status uacpi_kernel_io_map(uacpi_io_addr base, uacpi_size len, uacpi_handle *out_handle)
Definition: uacpiosl.c:165
#define UACPI_MAP_FAILED
Definition: kernel_api.h:13
void uacpi_kernel_unmap(void *addr, uacpi_size len)
Definition: uacpiosl.c:198
void * uacpi_kernel_map(uacpi_phys_addr addr, uacpi_size len)
Definition: uacpiosl.c:191
uacpi_u8 access_bit_width
Definition: io.h:11
uacpi_u8 total_bit_width
Definition: io.h:12
uacpi_handle mapping
Definition: io.h:10
void(* unmap)(uacpi_handle, uacpi_size)
Definition: io.h:22
uacpi_status(* write)(uacpi_handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in)
Definition: io.h:18
uacpi_u8 bit_offset
Definition: io.h:13
uacpi_status(* read)(uacpi_handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out)
Definition: io.h:15

Referenced by create_gpe_block(), map_one(), uacpi_gas_read(), uacpi_gas_write(), and uacpi_map_gas().

◆ uacpi_pci_read()

uacpi_status uacpi_pci_read ( uacpi_handle  handle,
uacpi_size  offset,
uacpi_u8  width,
uacpi_u64 *  out 
)

Definition at line 1250 of file io.c.

1253{
1255 union integer_data data = {
1256 .qword = 0,
1257 };
1258
1259 switch (width) {
1260 case 1:
1262 break;
1263 case 2:
1265 break;
1266 case 4:
1268 break;
1269 default:
1271 "invalid PCI_Config read %p@%zu width=%d",
1273 );
1275 }
1276
1278 *out = data.qword;
1279 return ret;
1280}
#define uacpi_error(...)
Definition: log.h:36
#define uacpi_likely_success(expr)
Definition: status.h:54
GLint GLint GLsizei width
Definition: gl.h:1546
GLintptr offset
Definition: glext.h:5920
uacpi_status uacpi_kernel_pci_read8(uacpi_handle device, uacpi_size offset, uacpi_u8 *value)
Definition: uacpiosl.c:257
uacpi_status uacpi_kernel_pci_read16(uacpi_handle device, uacpi_size offset, uacpi_u16 *value)
Definition: uacpiosl.c:264
uacpi_status uacpi_kernel_pci_read32(uacpi_handle device, uacpi_size offset, uacpi_u32 *value)
Definition: uacpiosl.c:271
uacpi_u64 qword
Definition: io.c:1188
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by pci_region_do_rw().

◆ uacpi_pci_write()

uacpi_status uacpi_pci_write ( uacpi_handle  handle,
uacpi_size  offset,
uacpi_u8  width,
uacpi_u64  in 
)

Definition at line 1282 of file io.c.

1285{
1287
1288 switch (width) {
1289 case 1:
1291 break;
1292 case 2:
1294 break;
1295 case 4:
1297 break;
1298 default:
1300 "invalid PCI_Config write %p@%zu width=%d",
1302 );
1304 }
1305
1306 return ret;
1307}
GLuint in
Definition: glext.h:9616
uacpi_status uacpi_kernel_pci_write16(uacpi_handle device, uacpi_size offset, uacpi_u16 value)
Definition: uacpiosl.c:285
uacpi_status uacpi_kernel_pci_write8(uacpi_handle device, uacpi_size offset, uacpi_u8 value)
Definition: uacpiosl.c:278
uacpi_status uacpi_kernel_pci_write32(uacpi_handle device, uacpi_size offset, uacpi_u32 value)
Definition: uacpiosl.c:292

Referenced by pci_region_do_rw().

◆ uacpi_read_buffer_field()

void uacpi_read_buffer_field ( const uacpi_buffer_field *  field,
void *  dst 
)

Definition at line 113 of file io.c.

116{
117 // There's nothing to read from a buffer field that's empty
118 if (uacpi_unlikely(field->bit_length == 0))
119 return;
120
121 if (!(field->bit_index & 7)) {
122 uacpi_u8 *src = field->backing->data;
124
126 uacpi_memcpy(dst, src + (field->bit_index / 8), count);
127 cut_misaligned_tail(dst, count - 1, field->bit_length);
128 return;
129 }
130
132}
#define uacpi_memcpy
Definition: stdlib.h:34
size_t uacpi_size
Definition: types.h:37
uacpi_size uacpi_round_up_bits_to_bytes(uacpi_size bit_length)
Definition: io.c:11
static void do_misaligned_buffer_read(const uacpi_buffer_field *field, uacpi_u8 *dst)
Definition: io.c:97
static void cut_misaligned_tail(uacpi_u8 *data, uacpi_size offset, uacpi_u32 bit_length)
Definition: io.c:16
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340

Referenced by handle_field_read(), and handle_inc_dec().

◆ uacpi_read_field_unit()

uacpi_status uacpi_read_field_unit ( uacpi_field_unit *  field,
void *  dst,
uacpi_size  size,
uacpi_data_view *  wtr_response 
)

Definition at line 558 of file io.c.

562{
564 uacpi_u32 field_byte_length;
565 uacpi_bool did_handle;
566 uacpi_data_view data_view = { 0 };
567
568 data_view.data = dst;
569 data_view.length = size;
570
573 return ret;
574
576 field, data_view, UACPI_REGION_OP_READ,
577 wtr_response, &did_handle
578 );
579 if (did_handle)
580 goto out;
581
582 // There's nothing to read from a field that the AML declared as empty
583 if (uacpi_unlikely(field->bit_length == 0)) {
585 goto out;
586 }
587
588 field_byte_length = uacpi_round_up_bits_to_bytes(field->bit_length);
589
590 /*
591 * Very simple fast case:
592 * - Bit offset within first byte is 0
593 * AND
594 * - Field size is <= access width
595 */
596 if (field->bit_offset_within_first_byte == 0 &&
597 field_byte_length <= field->access_width_bytes)
598 {
601
602 data.integer = &out;
604 field, field->byte_offset, UACPI_REGION_OP_READ,
605 data
606 );
608 goto out;
609
610 uacpi_memcpy_zerout(dst, &out, size, field_byte_length);
611 if (size >= field_byte_length)
612 cut_misaligned_tail(dst, field_byte_length - 1, field->bit_length);
613
614 goto out;
615 }
616
617 // Slow case
619
620out:
622 return ret;
623}
#define uacpi_memzero(ptr, size)
Definition: stdlib.h:99
void uacpi_memcpy_zerout(void *dst, const void *src, uacpi_size dst_size, uacpi_size src_size)
Definition: stdlib.c:112
bool uacpi_bool
Definition: types.h:31
@ UACPI_REGION_OP_READ
Definition: types.h:380
static uacpi_status access_field_unit(uacpi_field_unit *field, uacpi_u32 offset, uacpi_region_op op, union uacpi_opregion_io_data data)
Definition: io.c:274
static uacpi_status do_read_misaligned_field_unit(uacpi_field_unit *field, uacpi_u8 *dst, uacpi_size size)
Definition: io.c:504
static uacpi_status lock_field_unit_transaction(uacpi_field_unit *field)
Definition: io.c:219
static void unlock_field_unit_transaction(uacpi_field_unit *field)
Definition: io.c:256
static uacpi_status handle_special_field(uacpi_field_unit *field, uacpi_data_view buf, uacpi_region_op op, uacpi_data_view *wtr_response, uacpi_bool *did_handle)
Definition: io.c:406
GLsizeiptr size
Definition: glext.h:5919
uacpi_size length
Definition: types.h:105
void * data
Definition: types.h:102
uacpi_u64 * integer
Definition: opregion.h:47

Referenced by access_field_unit(), handle_field_read(), and handle_inc_dec().

◆ uacpi_round_up_bits_to_bytes()

uacpi_size uacpi_round_up_bits_to_bytes ( uacpi_size  bit_length)

◆ uacpi_system_io_read()

uacpi_status uacpi_system_io_read ( uacpi_handle  handle,
uacpi_size  offset,
uacpi_u8  width,
uacpi_u64 *  out 
)

Definition at line 1191 of file io.c.

1194{
1196 union integer_data data = {
1197 .qword = 0,
1198 };
1199
1200 switch (width) {
1201 case 1:
1203 break;
1204 case 2:
1206 break;
1207 case 4:
1209 break;
1210 default:
1212 "invalid SystemIO read %p@%zu width=%d",
1214 );
1216 }
1217
1219 *out = data.qword;
1220 return ret;
1221}
uacpi_status uacpi_kernel_io_read32(uacpi_handle, uacpi_size offset, uacpi_u32 *out_value)
Definition: uacpiosl.c:313
uacpi_status uacpi_kernel_io_read8(uacpi_handle, uacpi_size offset, uacpi_u8 *out_value)
Definition: uacpiosl.c:299
uacpi_status uacpi_kernel_io_read16(uacpi_handle, uacpi_size offset, uacpi_u16 *out_value)
Definition: uacpiosl.c:306

Referenced by io_region_do_rw(), and uacpi_map_gas_noalloc().

◆ uacpi_system_io_write()

uacpi_status uacpi_system_io_write ( uacpi_handle  handle,
uacpi_size  offset,
uacpi_u8  width,
uacpi_u64  in 
)

Definition at line 1223 of file io.c.

1226{
1228
1229 switch (width) {
1230 case 1:
1232 break;
1233 case 2:
1235 break;
1236 case 4:
1238 break;
1239 default:
1241 "invalid SystemIO write %p@%zu width=%d",
1243 );
1245 }
1246
1247 return ret;
1248}
uacpi_status uacpi_kernel_io_write8(uacpi_handle, uacpi_size offset, uacpi_u8 in_value)
Definition: uacpiosl.c:320
uacpi_status uacpi_kernel_io_write32(uacpi_handle, uacpi_size offset, uacpi_u32 in_value)
Definition: uacpiosl.c:334
uacpi_status uacpi_kernel_io_write16(uacpi_handle, uacpi_size offset, uacpi_u16 in_value)
Definition: uacpiosl.c:327

Referenced by io_region_do_rw(), and uacpi_map_gas_noalloc().

◆ uacpi_system_memory_read()

uacpi_status uacpi_system_memory_read ( void *  ptr,
uacpi_size  offset,
uacpi_u8  width,
uacpi_u64 *  out 
)

Definition at line 1132 of file io.c.

1135{
1137
1138 switch (width) {
1139 case 1:
1141 break;
1142 case 2:
1144 break;
1145 case 4:
1147 break;
1148 case 8:
1150 break;
1151 default:
1153 }
1154
1155 return UACPI_STATUS_OK;
1156}
#define uacpi_mmio_read8
Definition: io.h:88
#define uacpi_mmio_read16
Definition: io.h:89
#define uacpi_mmio_read64
Definition: io.h:91
#define uacpi_mmio_read32
Definition: io.h:90
#define UACPI_PTR_ADD(ptr, value)
Definition: utilities.h:23

Referenced by memory_region_do_rw(), table_data_region_do_rw(), and uacpi_map_gas_noalloc().

◆ uacpi_system_memory_write()

uacpi_status uacpi_system_memory_write ( void *  ptr,
uacpi_size  offset,
uacpi_u8  width,
uacpi_u64  in 
)

Definition at line 1158 of file io.c.

1161{
1163
1164 switch (width) {
1165 case 1:
1167 break;
1168 case 2:
1170 break;
1171 case 4:
1173 break;
1174 case 8:
1176 break;
1177 default:
1179 }
1180
1181 return UACPI_STATUS_OK;
1182}
#define uacpi_mmio_write16
Definition: io.h:94
#define uacpi_mmio_write64
Definition: io.h:96
#define uacpi_mmio_write32
Definition: io.h:95
#define uacpi_mmio_write8
Definition: io.h:93

Referenced by memory_region_do_rw(), table_data_region_do_rw(), and uacpi_map_gas_noalloc().

◆ uacpi_unmap_gas_nofree()

void uacpi_unmap_gas_nofree ( uacpi_mapped_gas *  gas)

Definition at line 1049 of file io.c.

1050{
1051 gas->unmap(gas->mapping, gas->access_bit_width / 8);
1052}

Referenced by free_gpe_block(), uacpi_deinitialize_registers(), uacpi_gas_read(), uacpi_gas_write(), and uacpi_unmap_gas().

◆ uacpi_write_buffer_field()

void uacpi_write_buffer_field ( uacpi_buffer_field *  field,
const void *  src,
uacpi_size  size 
)

Definition at line 152 of file io.c.

156{
157 // There's nothing to write to a buffer field that's empty
158 if (uacpi_unlikely(field->bit_length == 0))
159 return;
160
161 if (!(field->bit_index & 7)) {
162 uacpi_u8 *dst, last_byte, tail_shift;
164
165 dst = field->backing->data;
166 dst += field->bit_index / 8;
168
169 last_byte = dst[count - 1];
170 tail_shift = field->bit_length & 7;
171
173 if (tail_shift) {
174 uacpi_u8 last_shift = 8 - tail_shift;
175 dst[count - 1] = dst[count - 1] << last_shift;
176 dst[count - 1] >>= last_shift;
177 dst[count - 1] |= (last_byte >> tail_shift) << tail_shift;
178 }
179
180 return;
181 }
182
184}
static void do_write_misaligned_buffer_field(uacpi_buffer_field *field, const void *src, uacpi_size size)
Definition: io.c:134

Referenced by object_assign_with_implicit_cast().

◆ uacpi_write_field_unit()

uacpi_status uacpi_write_field_unit ( uacpi_field_unit *  field,
const void *  src,
uacpi_size  size,
uacpi_data_view *  wtr_response 
)

Definition at line 738 of file io.c.

742{
743 return write_field_unit(field, src, size, size, wtr_response);
744}
static uacpi_status write_field_unit(uacpi_field_unit *field, const void *src, uacpi_size size, uacpi_size chunk_size, uacpi_data_view *wtr_response)
Definition: io.c:696

Referenced by access_field_unit(), and store_to_field_unit().

◆ uacpi_write_field_unit_in_chunks()

uacpi_status uacpi_write_field_unit_in_chunks ( uacpi_field_unit *  field,
const void *  src,
uacpi_size  size,
uacpi_data_view *  wtr_response 
)

Definition at line 746 of file io.c.

750{
751 return write_field_unit(
753 wtr_response
754 );
755}

Referenced by store_to_field_unit().