misc questions about the device&driver arch

william wallace avalonwallace at gmail.com
Tue May 30 06:42:42 PDT 2006


Sir:
I  have got the way to map linux pci access way to the BSD way :)
now ,several more question ,wondering :(
FIRST
struct pci_devinfo * pci_read_device(device_t pcib, int b, int s, int
f, size_t size)
struct cardbus_devinfo {
	struct pci_devinfo pci;
	uint8_t        mprefetchable; /* bit mask of prefetchable BARs */

so what happen when dinfo = (struct cardbus_devinfo
*)pci_read_device(brdev, bus, slot, func, sizeof(struct
cardbus_devinfo));
can we use this magic as a common way to wrap common guts?

SECOND
what should we do to destroy a device and hot remove it from the system ?
1 pause the application
2 device_detach(devlist[tmp]);
3***_release_all_resources(busdev, dinfo);
4 device_delete_child(busdev, devlist[tmp]);
5 pci_freecfg((struct pci_devinfo *)dinfo);
6 shutdown power of the slot
so what exactly happens between 2 and 5?


THIRD
Because the PCIE configure space is 4k long ,shall we change the
#define PCI_REGMAX	255
to facilitate the PCI express config R/W?


More information about the freebsd-hackers mailing list