コード例 #1
0
ファイル: cardbus.c プロジェクト: MattDooner/freebsd-west
static int
cardbus_detach_card(device_t cbdev)
{
	int numdevs;
	device_t *devlist;
	int tmp;
	int err = 0;

	if (device_get_children(cbdev, &devlist, &numdevs) != 0)
		return (ENOENT);
	if (numdevs == 0) {
		free(devlist, M_TEMP);
		return (ENOENT);
	}

	for (tmp = 0; tmp < numdevs; tmp++) {
		struct cardbus_devinfo *dinfo = device_get_ivars(devlist[tmp]);

		if (dinfo->pci.cfg.dev != devlist[tmp])
			device_printf(cbdev, "devinfo dev mismatch\n");
		cardbus_device_destroy(dinfo);
		pci_delete_child(cbdev, devlist[tmp]);
	}
	POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev);
	free(devlist, M_TEMP);
	return (err);
}
コード例 #2
0
ファイル: cardbus.c プロジェクト: 2asoft/freebsd
static void
cardbus_child_deleted(device_t cbdev, device_t child)
{
	struct cardbus_devinfo *dinfo = device_get_ivars(child);

	if (dinfo->pci.cfg.dev != child)
		device_printf(cbdev, "devinfo dev mismatch\n");
	cardbus_device_destroy(dinfo);
	pci_child_deleted(cbdev, child);
}