mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:17:44 +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:
parent
e22d9dc360
commit
82bb08a15c
14 changed files with 85 additions and 41 deletions
|
@ -181,11 +181,25 @@ private:
|
|||
const u8 m_ptr;
|
||||
};
|
||||
|
||||
TYPEDEF_DISTINCT_ORDERED_ID(u8, ClassCode);
|
||||
TYPEDEF_DISTINCT_ORDERED_ID(u8, SubclassCode);
|
||||
TYPEDEF_DISTINCT_ORDERED_ID(u8, ProgrammingInterface);
|
||||
TYPEDEF_DISTINCT_ORDERED_ID(u8, RevisionID);
|
||||
TYPEDEF_DISTINCT_ORDERED_ID(u16, SubsystemID);
|
||||
TYPEDEF_DISTINCT_ORDERED_ID(u16, SubsystemVendorID);
|
||||
|
||||
class Access;
|
||||
class PhysicalID {
|
||||
public:
|
||||
PhysicalID(Address address, ID id, Vector<Capability> capabilities)
|
||||
PhysicalID(Address address, ID id, RevisionID revision_id, ClassCode class_code, SubclassCode subclass_code, ProgrammingInterface prog_if, SubsystemID subsystem_id, SubsystemVendorID subsystem_vendor_id, Vector<Capability> capabilities)
|
||||
: m_address(address)
|
||||
, m_id(id)
|
||||
, m_revision_id(revision_id)
|
||||
, m_class_code(class_code)
|
||||
, m_subclass_code(subclass_code)
|
||||
, m_prog_if(prog_if)
|
||||
, m_subsystem_id(subsystem_id)
|
||||
, m_subsystem_vendor_id(subsystem_vendor_id)
|
||||
, m_capabilities(capabilities)
|
||||
{
|
||||
if constexpr (PCI_DEBUG) {
|
||||
|
@ -198,13 +212,36 @@ public:
|
|||
const ID& id() const { return m_id; }
|
||||
const Address& address() const { return m_address; }
|
||||
|
||||
RevisionID revision_id() const { return m_revision_id; }
|
||||
ClassCode class_code() const { return m_class_code; }
|
||||
SubclassCode subclass_code() const { return m_subclass_code; }
|
||||
ProgrammingInterface prog_if() const { return m_prog_if; }
|
||||
SubsystemID subsystem_id() const { return m_subsystem_id; }
|
||||
SubsystemVendorID subsystem_vendor_id() const { return m_subsystem_vendor_id; }
|
||||
|
||||
void apply_subclass_code_change(Badge<Access>, SubclassCode new_subclass)
|
||||
{
|
||||
m_subclass_code = new_subclass;
|
||||
}
|
||||
void apply_prog_if_change(Badge<Access>, ProgrammingInterface new_progif)
|
||||
{
|
||||
m_prog_if = new_progif;
|
||||
}
|
||||
|
||||
private:
|
||||
Address m_address;
|
||||
ID m_id;
|
||||
|
||||
RevisionID m_revision_id;
|
||||
ClassCode m_class_code;
|
||||
SubclassCode m_subclass_code;
|
||||
ProgrammingInterface m_prog_if;
|
||||
SubsystemID m_subsystem_id;
|
||||
SubsystemVendorID m_subsystem_vendor_id;
|
||||
|
||||
Vector<Capability> m_capabilities;
|
||||
};
|
||||
|
||||
class Access;
|
||||
class Domain;
|
||||
class Device;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue