diff options
Diffstat (limited to 'sys/dev/pci/pci.c')
-rw-r--r-- | sys/dev/pci/pci.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 8328ffc..d59f68f 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -31,6 +31,7 @@ #include <sys/queue.h> #include <sys/syslog.h> #include <sys/errno.h> +#include <sys/spinlock.h> #include <dev/pci/pci.h> #include <dev/pci/pciregs.h> #include <vm/dynalloc.h> @@ -39,6 +40,7 @@ #define pr_trace(fmt, ...) kprintf("pci: " fmt, ##__VA_ARGS__) static TAILQ_HEAD(, pci_device) device_list; +static struct spinlock devlist_lock = {0}; static bool pci_dev_exists(uint8_t bus, uint8_t slot, uint8_t func) @@ -262,6 +264,15 @@ pci_get_device(struct pci_lookup lookup, uint16_t lookup_type) return NULL; } + +void +pci_add_device(struct pci_device *dev) +{ + spinlock_acquire(&devlist_lock); + TAILQ_INSERT_TAIL(&device_list, dev, link); + spinlock_release(&devlist_lock); +} + int pci_init(void) { |