Kernel: Add helper functions to create AML String and Buffer
This commit is contained in:
		
							parent
							
								
									3800d5420e
								
							
						
					
					
						commit
						35149b6960
					
				|  | @ -150,6 +150,27 @@ namespace Kernel::ACPI::AML | |||
| 		Node(Node&& other) { *this = BAN::move(other); } | ||||
| 		Node& operator=(Node&&); | ||||
| 
 | ||||
| 		static BAN::ErrorOr<Node> create_string(BAN::StringView string) | ||||
| 		{ | ||||
| 			const auto* u8_data = reinterpret_cast<const uint8_t*>(string.data()); | ||||
| 			auto result = TRY(create_buffer({ u8_data, string.size() })); | ||||
| 			result.type = Node::Type::String; | ||||
| 			return result; | ||||
| 		} | ||||
| 
 | ||||
| 		static BAN::ErrorOr<Node> create_buffer(BAN::ConstByteSpan buffer) | ||||
| 		{ | ||||
| 			Node node; | ||||
| 			node.type = Node::Type::Buffer; | ||||
| 			node.as.str_buf = static_cast<Buffer*>(kmalloc(sizeof(Buffer) + buffer.size())); | ||||
| 			if (node.as.str_buf == nullptr) | ||||
| 				return BAN::Error::from_errno(ENOMEM); | ||||
| 			node.as.str_buf->ref_count = 1; | ||||
| 			node.as.str_buf->size = buffer.size(); | ||||
| 			memcpy(node.as.str_buf->bytes, buffer.data(), buffer.size()); | ||||
| 			return node; | ||||
| 		} | ||||
| 
 | ||||
| 		enum class Type | ||||
| 		{ | ||||
| 			Uninitialized, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue