#include #include #include struct uio_info kpart_info = { .name = "kpart", .version = "0.1", .irq = UIO_IRQ_NONE, }; static int drv_kpart_probe(struct device *dev); static int drv_kpart_remove(struct device *dev); static struct device_driver uio_dummy_driver = { .name = "kpart", .bus = &platform_bus_type, .probe = drv_kpart_probe, .remove = drv_kpart_remove, }; static int drv_kpart_probe(struct device *dev) { printk("drv_kpart_probe( %p )\n", dev ); kpart_info.mem[0].addr = (unsigned long)kmalloc(512, GFP_KERNEL); if( kpart_info.mem[0].addr==0 ) return -ENOMEM; kpart_info.mem[0].memtype = UIO_MEM_LOGICAL; kpart_info.mem[0].size = 512; if( uio_register_device(dev,&kpart_info) ) return -ENODEV; return 0; } static int drv_kpart_remove(struct device *dev) { uio_unregister_device(&kpart_info); return 0; } static struct platform_device *uio_dummy_device; static int __init uio_kpart_init(void) { uio_dummy_device = platform_device_register_simple("kpart", -1, NULL, 0); return driver_register(&uio_dummy_driver); } static void __exit uio_kpart_exit(void) { platform_device_unregister(uio_dummy_device); driver_unregister(&uio_dummy_driver); } module_init( uio_kpart_init ); module_exit( uio_kpart_exit ); MODULE_LICENSE("GPL"); /* vim: set ts=4 aw ic sw=4: */