drivers/vfio/mdev/mdev_driver.c

Source file repositories/reference/linux-study-clean/drivers/vfio/mdev/mdev_driver.c

File Facts

System
Linux kernel
Corpus path
drivers/vfio/mdev/mdev_driver.c
Extension
.c
Size
1641 bytes
Lines
76
Domain
Driver Families
Bucket
drivers/vfio
Inferred role
Driver Families: operation-table or driver-model contract
Status
pattern implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

static int mdev_match(struct device *dev, const struct device_driver *drv)
{
	/*
	 * No drivers automatically match. Drivers are only bound by explicit
	 * device_driver_attach()
	 */
	return 0;
}

const struct bus_type mdev_bus_type = {
	.name		= "mdev",
	.probe		= mdev_probe,
	.remove		= mdev_remove,
	.match		= mdev_match,
};

/**
 * mdev_register_driver - register a new MDEV driver
 * @drv: the driver to register
 *
 * Returns a negative value on error, otherwise 0.
 **/
int mdev_register_driver(struct mdev_driver *drv)
{
	if (!drv->device_api)
		return -EINVAL;

	/* initialize common driver fields */
	drv->driver.bus = &mdev_bus_type;
	return driver_register(&drv->driver);
}
EXPORT_SYMBOL(mdev_register_driver);

/*
 * mdev_unregister_driver - unregister MDEV driver
 * @drv: the driver to unregister
 */
void mdev_unregister_driver(struct mdev_driver *drv)
{
	driver_unregister(&drv->driver);
}
EXPORT_SYMBOL(mdev_unregister_driver);

Annotation

Implementation Notes