1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:38:10 +00:00

Kernel/PCI: Cache more details about PCI devices when enumerating them

There's no good reason to fetch these values each time we need them.
This commit is contained in:
Liav A 2021-09-23 09:05:34 +03:00 committed by Andreas Kling
parent e22d9dc360
commit 82bb08a15c
14 changed files with 85 additions and 41 deletions

View file

@ -614,19 +614,19 @@ private:
virtual KResult try_generate(KBufferBuilder& builder) override
{
JsonArraySerializer array { builder };
PCI::enumerate([&array](PCI::Address address, PCI::ID id) {
PCI::enumerate([&array](PCI::Address address, PCI::PhysicalID const& physical_id) {
auto obj = array.add_object();
obj.add("domain", address.domain());
obj.add("bus", address.bus());
obj.add("device", address.device());
obj.add("function", address.function());
obj.add("vendor_id", id.vendor_id);
obj.add("device_id", id.device_id);
obj.add("revision_id", PCI::get_revision_id(address));
obj.add("subclass", PCI::get_subclass(address));
obj.add("class", PCI::get_class(address));
obj.add("subsystem_id", PCI::get_subsystem_id(address));
obj.add("subsystem_vendor_id", PCI::get_subsystem_vendor_id(address));
obj.add("vendor_id", physical_id.id().vendor_id);
obj.add("device_id", physical_id.id().device_id);
obj.add("revision_id", physical_id.revision_id().value());
obj.add("subclass", physical_id.subclass_code().value());
obj.add("class", physical_id.class_code().value());
obj.add("subsystem_id", physical_id.subsystem_id().value());
obj.add("subsystem_vendor_id", physical_id.subsystem_vendor_id().value());
});
array.finish();
return KSuccess;