linux驱动中的ENODEV

ENODEV 应该是默认尚未分配到具体设备的意思。


如果程序有一个打开的设备句柄,
在当前结构里,我们只要把它赋值为空,就像它已经消失了。
对于每一次设备读写等其它函数操作,
我们都要检查结构是否存在。


如果不存在,就表明设备已经消失,并返回一个-ENODEV错误给用户程序。




来源:http://zhidao.baidu.com/link?url=guaBHmXEjxfZU-gRFCbbK4EjWe6VXgLhfjjPNBHmQFi-YMBko4XxjIHhAX7nUFBt2C6vM9VK586l6WxFb-OuvK

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xpt2046是一种触摸屏控制器芯片,Linux系统下的驱动程序可以使用SPI总线来控制和读取该芯片的数据。以下是一个简单的xpt2046驱动程序的示例代码: ``` #include <linux/module.h> #include <linux/spi/spi.h> static struct spi_device *xpt2046_spi; static int __init xpt2046_init(void) { struct spi_master *master; int status; master = spi_busnum_to_master(0); if (!master) { printk(KERN_ALERT "Failed to get SPI master\n"); return -ENODEV; } xpt2046_spi = spi_alloc_device(master); if (!xpt2046_spi) { printk(KERN_ALERT "Failed to allocate SPI device\n"); return -ENOMEM; } xpt2046_spi->max_speed_hz = 1000000; xpt2046_spi->mode = SPI_MODE_0; xpt2046_spi->bits_per_word = 8; xpt2046_spi->chip_select = 0; status = spi_add_device(xpt2046_spi); if (status) { printk(KERN_ALERT "Failed to add SPI device\n"); spi_dev_put(xpt2046_spi); return status; } printk(KERN_INFO "xpt2046 SPI device initialized\n"); return 0; } static void __exit xpt2046_exit(void) { spi_unregister_device(xpt2046_spi); spi_dev_put(xpt2046_spi); printk(KERN_INFO "xpt2046 SPI device unregistered\n"); } module_init(xpt2046_init); module_exit(xpt2046_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("xpt2046 SPI driver"); ``` 该驱动程序使用spi_alloc_device函数来分配一个SPI设备结构体,并通过spi_add_device函数将其添加到系统驱动程序还设置了SPI总线的一些参数,例如通信速率、工作模式和数据位数等。在驱动程序退出时,使用spi_unregister_device函数将SPI设备从系统注销并释放相关资源。 请注意,此示例代码仅用于说明xpt2046驱动程序的基本结构。实际驱动程序需要根据具体硬件和应用场景进行更多的配置和实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值