freebsd compat. layer: added a requirements field so not all drivers init all subsystems. pcnet for instance doesn't need taskqueues.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21072 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
859a95b6c7
commit
b6ace498dd
@ -6,6 +6,9 @@
|
||||
#include <dev/le/lancevar.h>
|
||||
#include <dev/le/am79900var.h>
|
||||
|
||||
HAIKU_FBSD_DRIVER_GLUE(pcnet, le, pci);
|
||||
HAIKU_DRIVER_REQUIREMENTS(0);
|
||||
|
||||
/* from if_le_pci.c */
|
||||
#define PCNET_PCI_RDP 0x10
|
||||
#define PCNET_PCI_RAP 0x12
|
||||
@ -27,8 +30,6 @@ struct le_pci_softc {
|
||||
bus_dmamap_t sc_dmam;
|
||||
};
|
||||
|
||||
HAIKU_FBSD_DRIVER_GLUE(pcnet, le, pci)
|
||||
|
||||
int HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev) {
|
||||
struct le_pci_softc *lesc = (struct le_pci_softc *)device_get_softc(dev);
|
||||
cpu_status status;
|
||||
|
@ -85,6 +85,17 @@ extern int __haiku_disable_interrupts(device_t dev);
|
||||
return -1; \
|
||||
}
|
||||
|
||||
extern int __haiku_driver_requirements;
|
||||
|
||||
enum {
|
||||
FBSD_TASKQUEUES = 1 << 0,
|
||||
};
|
||||
|
||||
#define HAIKU_DRIVER_REQUIREMENTS(flags) \
|
||||
int __haiku_driver_requirements = (flags)
|
||||
|
||||
#define HAIKU_DRIVER_REQUIRES(flag) (__haiku_driver_requirements & (flag))
|
||||
|
||||
#define HAIKU_INTR_REGISTER_ENTER(status) do { \
|
||||
status = disable_interrupts(); \
|
||||
acquire_spinlock(&__haiku_intr_spinlock); \
|
||||
|
@ -407,9 +407,11 @@ _fbsd_init_driver(driver_t *driver)
|
||||
if (status < B_OK)
|
||||
goto err_2;
|
||||
|
||||
status = init_taskqueues();
|
||||
if (status < B_OK)
|
||||
goto err_3;
|
||||
if (HAIKU_DRIVER_REQUIRES(FBSD_TASKQUEUES)) {
|
||||
status = init_taskqueues();
|
||||
if (status < B_OK)
|
||||
goto err_3;
|
||||
}
|
||||
|
||||
status = init_mbufs();
|
||||
if (status < B_OK)
|
||||
@ -446,7 +448,8 @@ _fbsd_init_driver(driver_t *driver)
|
||||
return B_OK;
|
||||
|
||||
err_4:
|
||||
uninit_taskqueues();
|
||||
if (HAIKU_DRIVER_REQUIRES(FBSD_TASKQUEUES))
|
||||
uninit_taskqueues();
|
||||
err_3:
|
||||
uninit_mutexes();
|
||||
err_2:
|
||||
@ -469,6 +472,7 @@ _fbsd_uninit_driver(driver_t *driver)
|
||||
|
||||
uninit_bounce_pages();
|
||||
uninit_mbufs();
|
||||
uninit_taskqueues();
|
||||
if (HAIKU_DRIVER_REQUIRES(FBSD_TASKQUEUES))
|
||||
uninit_taskqueues();
|
||||
uninit_mutexes();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user