PatchworkOS
Loading...
Searching...
No Matches
to_string.c
Go to the documentation of this file.
2
3#include <stdio.h>
4
6{
7 switch (type)
8 {
10 return "Uninitialized";
11 case AML_BUFFER:
12 return "Buffer";
14 return "BufferField";
16 return "DebugObject";
17 case AML_DEVICE:
18 return "Device";
19 case AML_EVENT:
20 return "Event";
21 case AML_FIELD_UNIT:
22 return "FieldUnit";
23 case AML_INTEGER:
24 return "Integer";
25 case AML_METHOD:
26 return "Method";
27 case AML_MUTEX:
28 return "Mutex";
30 return "ObjectReference";
32 return "OperationRegion";
33 case AML_PACKAGE:
34 return "Package";
36 return "PowerResource";
37 case AML_PROCESSOR:
38 return "Processor";
40 return "RawDataBuffer";
41 case AML_STRING:
42 return "String";
44 return "ThermalZone";
45 case AML_ALIAS:
46 return "Alias";
47 case AML_UNRESOLVED:
48 return "Unresolved";
50 return "PredefinedScope";
51 case AML_LOCAL:
52 return "Local";
53 case AML_ARG:
54 return "Arg";
55 default:
56 return "Unknown";
57 }
58}
59
61{
62 switch (space)
63 {
65 return "SystemMemory";
67 return "SystemIO";
69 return "PCIConfig";
71 return "EmbeddedControl";
73 return "SMBus";
75 return "SystemCmos";
77 return "PCIBarTarget";
78 case AML_REGION_IPMI:
79 return "IPMI";
81 return "GeneralPurposeIO";
83 return "GenericSerialBus";
84 case AML_REGION_PCC:
85 return "PCC";
86 default:
87 if (space >= AML_REGION_OEM_MIN && space <= AML_REGION_OEM_MAX)
88 {
89 return "OEM";
90 }
91 return "Unknown";
92 }
93}
94
96{
97 switch (accessType)
98 {
100 return "AnyAcc";
102 return "ByteAcc";
104 return "WordAcc";
106 return "DWordAcc";
108 return "QWordAcc";
110 return "BufferAcc";
111 default:
112 return "Unknown";
113 }
114}
115
117{
118 switch (lockRule)
119 {
121 return "NoLock";
123 return "Lock";
124 default:
125 return "Unknown";
126 }
127}
128
130{
131 switch (updateRule)
132 {
134 return "Preserve";
136 return "WriteAsOnes";
138 return "WriteAsZeros";
139 default:
140 return "Unknown";
141 }
142}
143
145{
146 static char buffer[256];
147 if (object == NULL)
148 {
149 return "Unknown";
150 }
151
152 memset(buffer, 0, sizeof(buffer));
153 switch (object->type)
154 {
156 snprintf(buffer, sizeof(buffer), "Uninitialized");
157 return buffer;
158 case AML_BUFFER:
159 snprintf(buffer, sizeof(buffer), "Buffer(Length=%llu, Content=0x", object->buffer.length);
160 for (uint64_t i = 0; i < object->buffer.length && i < 8; i++)
161 {
162 snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "%02x", object->buffer.content[i]);
163 }
164 if (object->buffer.length > 8)
165 {
166 snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "...");
167 }
168 snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), ")");
169 return buffer;
170 case AML_BUFFER_FIELD:
171 snprintf(buffer, sizeof(buffer), "BufferField(BitOffset=%llu, BitSize=%llu)", object->bufferField.bitOffset,
172 object->bufferField.bitSize);
173 return buffer;
174 case AML_DEBUG_OBJECT:
175 snprintf(buffer, sizeof(buffer), "DebugObject");
176 return buffer;
177 case AML_EVENT:
178 snprintf(buffer, sizeof(buffer), "Event");
179 return buffer;
180 case AML_DEVICE:
181 snprintf(buffer, sizeof(buffer), "Device");
182 return buffer;
183 case AML_FIELD_UNIT:
184 snprintf(buffer, sizeof(buffer), "FieldUnit(Type=%d, BitOffset=%llu, BitSize=%llu)", object->fieldUnit.type,
185 object->fieldUnit.bitOffset, object->fieldUnit.bitSize);
186 return buffer;
187 case AML_INTEGER:
188 snprintf(buffer, sizeof(buffer), "Integer(0x%llx)", object->integer.value);
189 return buffer;
190 case AML_METHOD:
191 snprintf(buffer, sizeof(buffer), "Method(ArgCount=0x%x, Start=0x%llx, End=0x%llx)",
192 object->method.methodFlags.argCount, object->method.start, object->method.end);
193 return buffer;
194 case AML_MUTEX:
195 snprintf(buffer, sizeof(buffer), "Mutex(SyncLevel=%d)", object->mutex.syncLevel);
196 return buffer;
198 if (object->objectReference.target != NULL)
199 {
200 snprintf(buffer, sizeof(buffer), "ObjectReference(Target='%s')",
202 }
203 else
204 {
205 snprintf(buffer, sizeof(buffer), "ObjectReference(Target=NULL)");
206 }
207 return buffer;
209 snprintf(buffer, sizeof(buffer), "OperationRegion(Space=%s, Offset=0x%llx, Length=%u)",
211 return buffer;
212 case AML_PACKAGE:
213 snprintf(buffer, sizeof(buffer), "Package(Length=%llu)", object->package.length);
214 return buffer;
216 snprintf(buffer, sizeof(buffer), "PowerResource(SystemLevel=%d, ResourceOrder=%d)",
218 return buffer;
219 case AML_PROCESSOR:
220 snprintf(buffer, sizeof(buffer), "Processor(ProcID=%d, PblkAddr=0x%llx, PblkLen=%d)", object->processor.procId,
221 object->processor.pblkAddr, object->processor.pblkLen);
222 return buffer;
223 case AML_STRING:
224 {
225 uint64_t len = strlen(object->string.content);
226 if (len <= 32)
227 {
228 snprintf(buffer, sizeof(buffer), "String(\"%.*s\")", len, object->string.content);
229 }
230 else
231 {
232 snprintf(buffer, sizeof(buffer), "String(\"%.*s...\")", 29, len, object->string.content);
233 }
234 return buffer;
235 }
236 case AML_THERMAL_ZONE:
237 snprintf(buffer, sizeof(buffer), "ThermalZone");
238 return buffer;
239 case AML_ALIAS:
240 snprintf(buffer, sizeof(buffer), "Alias");
241 return buffer;
242 case AML_UNRESOLVED:
243 snprintf(buffer, sizeof(buffer), "Unresolved");
244 return buffer;
246 snprintf(buffer, sizeof(buffer), "PredefinedScope");
247 return buffer;
248 default:
249 snprintf(buffer, sizeof(buffer), "Unknown(Type=%d)", object->type);
250 return buffer;
251 }
252}
253
254const char* aml_name_string_to_string(const aml_name_string_t* nameString)
255{
256 static char buffer[256];
257 memset(buffer, 0, sizeof(buffer));
258
259 int offset = 0;
260 if (nameString->rootChar.present)
261 {
262 offset += snprintf(buffer + offset, sizeof(buffer) - offset, "\\");
263 }
264 for (uint64_t i = 0; i < nameString->prefixPath.depth; i++)
265 {
266 offset += snprintf(buffer + offset, sizeof(buffer) - offset, "^");
267 }
268 for (uint64_t i = 0; i < nameString->namePath.segmentCount; i++)
269 {
270 if (i > 0)
271 {
272 offset += snprintf(buffer + offset, sizeof(buffer) - offset, ".");
273 }
274 offset += snprintf(buffer + offset, sizeof(buffer) - offset, "%s",
275 AML_NAME_TO_STRING(nameString->namePath.segments[i]));
276 }
277 return buffer;
278}
aml_access_type_t
Enum for all field access types, bits 0-3 of FieldFlags.
Definition named.h:51
aml_lock_rule_t
Enum for all field lock rules, bit 4 of FieldFlags.
Definition named.h:65
aml_update_rule_t
Enum for all field update rules, bits 5-6 of FieldFlags.
Definition named.h:75
aml_region_space_t
Region Space Encoding.
Definition named.h:30
@ AML_ACCESS_TYPE_DWORD
Definition named.h:55
@ AML_ACCESS_TYPE_ANY
Definition named.h:52
@ AML_ACCESS_TYPE_QWORD
Definition named.h:56
@ AML_ACCESS_TYPE_BYTE
Definition named.h:53
@ AML_ACCESS_TYPE_BUFFER
Definition named.h:57
@ AML_ACCESS_TYPE_WORD
Definition named.h:54
@ AML_LOCK_RULE_NO_LOCK
Definition named.h:66
@ AML_LOCK_RULE_LOCK
Definition named.h:67
@ AML_UPDATE_RULE_PRESERVE
Definition named.h:76
@ AML_UPDATE_RULE_WRITE_AS_ZEROS
Definition named.h:78
@ AML_UPDATE_RULE_WRITE_AS_ONES
Definition named.h:77
@ AML_REGION_PCC
Definition named.h:41
@ AML_REGION_IPMI
Definition named.h:38
@ AML_REGION_PCI_CONFIG
Definition named.h:33
@ AML_REGION_SYSTEM_IO
Definition named.h:32
@ AML_REGION_GENERIC_SERIAL_BUS
Definition named.h:40
@ AML_REGION_PCI_BAR_TARGET
Definition named.h:37
@ AML_REGION_OEM_MIN
Definition named.h:42
@ AML_REGION_SM_BUS
Definition named.h:35
@ AML_REGION_GENERAL_PURPOSE_IO
Definition named.h:39
@ AML_REGION_EMBEDDED_CONTROL
Definition named.h:34
@ AML_REGION_SYSTEM_MEMORY
Definition named.h:31
@ AML_REGION_OEM_MAX
Definition named.h:43
@ AML_REGION_SYSTEM_CMOS
Definition named.h:36
#define AML_NAME_TO_STRING(name)
Macro to convert an aml_name_t to a stack allocated string.
Definition namespace.h:129
aml_type_t
ACPI data types.
Definition object.h:57
@ AML_UNRESOLVED
Not in the spec, used internally to represent unresolved references.
Definition object.h:86
@ AML_METHOD
Definition object.h:75
@ AML_BUFFER_FIELD
Definition object.h:60
@ AML_PROCESSOR
Definition object.h:81
@ AML_PACKAGE
Definition object.h:79
@ AML_OBJECT_REFERENCE
Definition object.h:77
@ AML_OPERATION_REGION
Definition object.h:78
@ AML_DEBUG_OBJECT
Definition object.h:61
@ AML_STRING
Definition object.h:83
@ AML_ALIAS
Not in the spec, used internally to represent Aliases.
Definition object.h:85
@ AML_ARG
Not in the spec, used internally to represent method arguments.
Definition object.h:88
@ AML_THERMAL_ZONE
Definition object.h:84
@ AML_FIELD_UNIT
Definition object.h:64
@ AML_POWER_RESOURCE
Definition object.h:80
@ AML_EVENT
Definition object.h:63
@ AML_DEVICE
Definition object.h:62
@ AML_MUTEX
Definition object.h:76
@ AML_LOCAL
Not in the spec, used internally to represent method local variables.
Definition object.h:89
@ AML_INTEGER
Definition object.h:65
@ AML_PREDEFINED_SCOPE
Not in the spec, used internally to represent _SB, _GPE, etc.
Definition object.h:87
@ AML_UNINITIALIZED
Definition object.h:58
@ AML_RAW_DATA_BUFFER
Definition object.h:82
@ AML_BUFFER
Definition object.h:59
const char * aml_update_rule_to_string(aml_update_rule_t updateRule)
Convert an aml UpdateRule to a string.
Definition to_string.c:129
const char * aml_access_type_to_string(aml_access_type_t accessType)
Convert an aml AccessType to a string.
Definition to_string.c:95
const char * aml_name_string_to_string(const aml_name_string_t *nameString)
Convert an aml NameString to a string.
Definition to_string.c:254
const char * aml_type_to_string(aml_type_t type)
Convert an aml data type to a string.
Definition to_string.c:5
const char * aml_region_space_to_string(aml_region_space_t space)
Convert an aml RegionSpace to a string.
Definition to_string.c:60
const char * aml_object_to_string(aml_object_t *object)
Convert an aml object to a string.
Definition to_string.c:144
const char * aml_lock_rule_to_string(aml_lock_rule_t lockRule)
Convert an aml LockRule to a string.
Definition to_string.c:116
#define NULL
Pointer error value.
Definition NULL.h:23
EFI_PHYSICAL_ADDRESS buffer
Definition mem.c:15
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
_PUBLIC int snprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format,...)
Definition snprintf.c:3
_PUBLIC size_t strlen(const char *s)
Definition strlen.c:3
_PUBLIC void * memset(void *s, int c, size_t n)
Definition memset.c:4
aml_bit_size_t bitSize
Definition object.h:227
aml_bit_size_t bitOffset
Definition object.h:226
uint64_t length
Definition object.h:214
uint8_t * content
Definition object.h:213
aml_bit_size_t bitOffset
Used for Field, IndexField and BankField.
Definition object.h:255
aml_bit_size_t bitSize
Used for Field, IndexField and BankField.
Definition object.h:256
aml_integer_t value
Definition object.h:266
uint8_t argCount
Amount of arguments (0-7)
Definition named.h:143
aml_method_flags_t methodFlags
Definition object.h:291
const uint8_t * end
Definition object.h:293
const uint8_t * start
Definition object.h:292
aml_sync_level_t syncLevel
Definition object.h:304
aml_name_seg_t * segments
Array of segments in the name path.
Definition name.h:79
uint64_t segmentCount
Number of segments in the name path.
Definition name.h:78
A NameString structure.
Definition name.h:87
aml_name_path_t namePath
Definition name.h:90
aml_prefix_path_t prefixPath
Definition name.h:89
aml_root_char_t rootChar
Definition name.h:88
aml_object_t * target
Definition object.h:315
ACPI object.
Definition object.h:425
aml_buffer_obj_t buffer
Definition object.h:431
aml_buffer_field_obj_t bufferField
Definition object.h:432
aml_power_resource_obj_t powerResource
Definition object.h:442
aml_opregion_obj_t opregion
Definition object.h:440
aml_mutex_obj_t mutex
Definition object.h:438
aml_object_reference_obj_t objectReference
Definition object.h:439
aml_integer_obj_t integer
Definition object.h:435
aml_processor_obj_t processor
Definition object.h:443
aml_field_unit_obj_t fieldUnit
Definition object.h:434
aml_package_obj_t package
Definition object.h:441
aml_string_obj_t string
Definition object.h:444
aml_method_obj_t method
Definition object.h:437
aml_region_space_t space
Definition object.h:325
uint32_t length
Definition object.h:327
uintptr_t offset
Definition object.h:326
uint64_t length
Definition object.h:340
aml_resource_order_t resourceOrder
Definition object.h:348
aml_system_level_t systemLevel
Definition object.h:347
uint16_t depth
Definition name.h:53
aml_proc_id_t procId
Definition object.h:358
aml_pblk_len_t pblkLen
Definition object.h:360
aml_pblk_addr_t pblkAddr
Definition object.h:359
bool present
If the first character is a root character ('\'), if yes, the name string is absolute.
Definition name.h:63
char * content
Definition object.h:370