feat: taken qsort from PDCLIB, Sorting drivers. Generic driver
structure. Driver ranking
This commit is contained in:
@@ -10,10 +10,15 @@
|
||||
#include <stdbool.h>
|
||||
#include <attributes.h>
|
||||
|
||||
#define PCI_CLASS_MASS_STORAGE 0x01
|
||||
#define PCI_CLASS_MASS_STORAGE 0x01
|
||||
#define PCI_CLASS_BRIDGE 0x06
|
||||
|
||||
// class MASS STORAGE 1
|
||||
#define PCI_SUB_CLASS_IDE 0x01
|
||||
// class MASS STORAGE 0x01
|
||||
#define PCI_SUB_CLASS_IDE 0x01
|
||||
|
||||
// class BRIDGE 0x06
|
||||
#define PCI_SUB_CLASS_PCI_PCI_BRIDGE_4 0x04
|
||||
#define PCI_SUB_CLASS_PCI_PCI_BRIDGE_9 0x09
|
||||
|
||||
#define PCI_REGISTER_OK 0
|
||||
#define PCI_REGISTER_ERR_FULL (-1)
|
||||
@@ -24,6 +29,9 @@
|
||||
#define PCI_INIT_OK 0
|
||||
#define PCI_INIT_FAIL 1
|
||||
|
||||
#define PCI_USE_OK 0
|
||||
#define PCI_USE_FAIL 1
|
||||
|
||||
#define PCI_HEADER_TYPE_MULTI_FUNC 0x80
|
||||
#define PCI_HEADER_TYPE_ENDPOINT 0x00
|
||||
#define PCI_HEADER_TYPE_PCI_PCI_BRIDGE 0x01
|
||||
@@ -79,6 +87,8 @@
|
||||
|
||||
typedef struct pci_device pci_device;
|
||||
|
||||
typedef uint8_t (*pci_driver_use)(const pci_device *);
|
||||
|
||||
typedef uint8_t (*pci_driver_validate)(const pci_device *);
|
||||
|
||||
typedef uint8_t (*pci_driver_initialize)(pci_device *);
|
||||
@@ -86,14 +96,27 @@ typedef uint8_t (*pci_driver_initialize)(pci_device *);
|
||||
struct pci_driver {
|
||||
const char *name;
|
||||
const char *description;
|
||||
uint8_t order;
|
||||
uint8_t pci_class;
|
||||
uint8_t pci_subclass;
|
||||
uint16_t rank;
|
||||
struct {
|
||||
bool pci_use_subclass: 1;
|
||||
uint8_t class;
|
||||
uint8_t subclass;
|
||||
uint8_t interface;
|
||||
uint16_t vendor;
|
||||
uint16_t device;
|
||||
} match;
|
||||
struct {
|
||||
bool class: 1;
|
||||
bool subclass: 1;
|
||||
bool interface: 1;
|
||||
bool vendor: 1;
|
||||
bool device: 1;
|
||||
} mask;
|
||||
struct {
|
||||
bool direct_use: 1;
|
||||
bool validatable: 1;
|
||||
bool initialisable: 1;
|
||||
};
|
||||
pci_driver_use use;
|
||||
pci_driver_validate validate;
|
||||
pci_driver_initialize initialize;
|
||||
} __attribute__((__aligned__(STRUCT_ALIGNMENT)));
|
||||
|
||||
Reference in New Issue
Block a user