forked from Bananymous/banan-os
				
			
			update main #1
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -108,7 +108,7 @@ namespace Kernel
 | 
			
		|||
		static BAN::ErrorOr<void> initialize();
 | 
			
		||||
		static ACPI& get();
 | 
			
		||||
 | 
			
		||||
		const SDTHeader* get_header(const char[4]);
 | 
			
		||||
		const SDTHeader* get_header(BAN::StringView signature, uint32_t index);
 | 
			
		||||
 | 
			
		||||
	private:
 | 
			
		||||
		ACPI() = default;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -222,13 +222,20 @@ namespace Kernel
 | 
			
		|||
		return {};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const ACPI::SDTHeader* ACPI::get_header(const char signature[4])
 | 
			
		||||
	const ACPI::SDTHeader* ACPI::get_header(BAN::StringView signature, uint32_t index)
 | 
			
		||||
	{
 | 
			
		||||
		if (signature.size() != 4)
 | 
			
		||||
		{
 | 
			
		||||
			dprintln("Trying to get ACPI header with {} byte signature ??", signature.size());
 | 
			
		||||
			return nullptr;
 | 
			
		||||
		}
 | 
			
		||||
		uint32_t cnt = 0;
 | 
			
		||||
		for (auto& mapped_header : m_mapped_headers)
 | 
			
		||||
		{
 | 
			
		||||
			auto* header = mapped_header.as_header();
 | 
			
		||||
			if (memcmp(header->signature, signature, 4) == 0)
 | 
			
		||||
				return header;
 | 
			
		||||
			if (memcmp(header->signature, signature.data(), 4) == 0)
 | 
			
		||||
				if (cnt++ == index)
 | 
			
		||||
					return header;
 | 
			
		||||
		}
 | 
			
		||||
		return nullptr;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,7 +95,7 @@ namespace Kernel
 | 
			
		|||
			return nullptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const MADT* madt = (const MADT*)Kernel::ACPI::get().get_header("APIC");
 | 
			
		||||
		const MADT* madt = (const MADT*)Kernel::ACPI::get().get_header("APIC"sv, 0);
 | 
			
		||||
		if (madt == nullptr)
 | 
			
		||||
		{
 | 
			
		||||
			dprintln("Could not find MADT header");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ namespace Kernel
 | 
			
		|||
 | 
			
		||||
	BAN::ErrorOr<void> HPET::initialize(bool force_pic)
 | 
			
		||||
	{
 | 
			
		||||
		auto* header = (ACPI::HPET*)ACPI::get().get_header("HPET");
 | 
			
		||||
		auto* header = (ACPI::HPET*)ACPI::get().get_header("HPET"sv, 0);
 | 
			
		||||
		if (header == nullptr)
 | 
			
		||||
			return BAN::Error::from_errno(ENODEV);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,8 +51,7 @@ void laihost_panic(const char* msg)
 | 
			
		|||
 | 
			
		||||
void* laihost_scan(const char* sig, size_t index)
 | 
			
		||||
{
 | 
			
		||||
	ASSERT(index == 0);
 | 
			
		||||
	return (void*)ACPI::get().get_header(sig);
 | 
			
		||||
	return (void*)ACPI::get().get_header(sig, index);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void* laihost_map(size_t address, size_t count)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue