linux uio 硬件中断,Linux 设备驱动之 UIO 机制(测试 UIO 机制)

/**

* This is a simple demon of uio driver.

* @Author: ZP1015

*

* @Copyright:SCUT.

*

* @Function:Demon of uio driver.

*

* @Creat:2015-12-30

*

* @Modify:

**/

#include

#include

#include

#include

#include

#include

#include /* kmalloc, kfree */

struct uio_info uio_virtual_device_info = {

.name = "myuio",

.version = "1.0",

.irq = UIO_IRQ_NONE,

};

static int uio_virtual_device_drv_probe(struct platform_device *pdev)

{

printk("uio_virtual_device_probe( %p)\n", pdev);

uio_virtual_device_info.mem[0].addr = (unsigned long)kmalloc(1024,GFP_KERNEL);

if(uio_virtual_device_info.mem[0].addr == 0)

return -ENOMEM;

uio_virtual_device_info.mem[0].memtype = UIO_MEM_LOGICAL;

uio_virtual_device_info.mem[0].size = 1024;

printk("[%s,%d] uio_virtual_device_info.mem[0].addr:0x%x,.size :%lu\n",\

__func__,__LINE__,uio_virtual_device_info.mem[0].addr,\

uio_virtual_device_info.mem[0].size);

if(uio_register_device(&pdev->dev, &uio_virtual_device_info))

return -ENODEV;

return 0;

}

static int uio_virtual_device_drv_remove(struct platform_device *pdev)

{

uio_unregister_device(&uio_virtual_device_info);

return 0;

}

static struct platform_driver virtual_device_drv = {

.probe  = uio_virtual_device_drv_probe,

.remove = __devexit_p(uio_virtual_device_drv_remove),

.driver = {

.name = "VIRTUAL_DEVICE",

.owner = THIS_MODULE,

}

};

static void virtual_device_remove(struct device *dev)

{

}

static struct platform_device virtual_device = {

.name           = "VIRTUAL_DEVICE",

.id             = -1,

.dev            = {

.release  = virtual_device_remove,

},

};

static int __init uio_virtual_device_init(void)

{

printk("virtual_device init ok!\n");

platform_device_register(&virtual_device);

printk("virtual_device_drv init ok!\n");

return platform_driver_register(&virtual_device_drv);

}

static void __exit uio_virtual_device_exit(void)

{

printk("Virtual_device remove ok!\n");

platform_device_unregister(&virtual_device);

printk("virtual_device_drv remove ok!\n");

platform_driver_unregister(&virtual_device_drv);

}

module_init(uio_virtual_device_init);

module_exit(uio_virtual_device_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("ZP1015");

MODULE_DESCRIPTION("Demon of UIO");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值