首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux操作系统下PCI设备驱动程序开发 05

Linux操作系统下PCI设备驱动程序开发 05

 释放设备模块主要负责释放对设备的控制权,释放占用的内存和中断等,所做的事情正好与打开设备模块相反:
  static int demo_release(struct inode *inode, struct file *file)
  {
  /* ... */
  /* 释放对设备的控制权 */
  card->open_mode &= (FMODE_READ | FMODE_WRITE);
  /* 唤醒其它等待获取控制权的进程 */
  wake_up(&card->open_wait);
  up(&card->open_sem);
  /* 释放中断 */
  free_irq(card->irq, card);
  /* 设备打开计数增1 */
  MOD_DEC_USE_COUNT;
  /* ... */
  }
  8. 卸载设备模块
  卸载设备模块与初始化设备模块是相对应的,实现起来相对比较简单,主要是调用函数pci_unregister_driver( )从Linux内核中注销设备驱动程序:
  static void __exit demo_cleanup_module (void)
  {
  pci_unregister_driver(&demo_pci_driver);
  }
  四、小结
  PCI总线不仅是目前应用广泛的计算机总线标准,而且是一种兼容性最强、功能最全的计算机总线。而Linux作为一种新的操作系统,其发展前景是无法估量的,同时也为PCI总线与各种新型设备互连成为可能。由于Linux源码开放,因此给连接到PCI总线上的任何设备编写驱动程序变得相对容易。本文介绍如何编译Linux下的PCI驱动程序,针对的内核版本是2.4。
返回列表