drivers/zorro/zorro-driver.c
Source file repositories/reference/linux-study-clean/drivers/zorro/zorro-driver.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/zorro/zorro-driver.c- Extension
.c- Size
- 4386 bytes
- Lines
- 172
- Domain
- Driver Families
- Bucket
- drivers/zorro
- 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.
- 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.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/init.hlinux/module.hlinux/zorro.hzorro.h
Detected Declarations
function Copyrightfunction zorro_device_probefunction zorro_device_removefunction zorro_register_driverfunction removefunction zorro_bus_matchfunction zorro_ueventfunction zorro_driver_initexport zorro_register_driverexport zorro_unregister_driverexport zorro_bus_type
Annotated Snippet
static int zorro_bus_match(struct device *dev, const struct device_driver *drv)
{
struct zorro_dev *z = to_zorro_dev(dev);
const struct zorro_driver *zorro_drv = to_zorro_driver(drv);
const struct zorro_device_id *ids = zorro_drv->id_table;
if (!ids)
return 0;
return !!zorro_match_device(ids, z);
}
static int zorro_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
const struct zorro_dev *z;
if (!dev)
return -ENODEV;
z = to_zorro_dev(dev);
if (!z)
return -ENODEV;
if (add_uevent_var(env, "ZORRO_ID=%08X", z->id) ||
add_uevent_var(env, "ZORRO_SLOT_NAME=%s", dev_name(dev)) ||
add_uevent_var(env, "ZORRO_SLOT_ADDR=%04X", z->slotaddr) ||
add_uevent_var(env, "MODALIAS=" ZORRO_DEVICE_MODALIAS_FMT, z->id))
return -ENOMEM;
return 0;
}
const struct bus_type zorro_bus_type = {
.name = "zorro",
.dev_name = "zorro",
.dev_groups = zorro_device_attribute_groups,
.match = zorro_bus_match,
.uevent = zorro_uevent,
.probe = zorro_device_probe,
.remove = zorro_device_remove,
};
EXPORT_SYMBOL(zorro_bus_type);
static int __init zorro_driver_init(void)
{
return bus_register(&zorro_bus_type);
}
postcore_initcall(zorro_driver_init);
Annotation
- Immediate include surface: `linux/init.h`, `linux/module.h`, `linux/zorro.h`, `zorro.h`.
- Detected declarations: `function Copyright`, `function zorro_device_probe`, `function zorro_device_remove`, `function zorro_register_driver`, `function remove`, `function zorro_bus_match`, `function zorro_uevent`, `function zorro_driver_init`, `export zorro_register_driver`, `export zorro_unregister_driver`.
- Atlas domain: Driver Families / drivers/zorro.
- Implementation status: pattern implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.