免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 831 | 回复: 0
打印 上一主题 下一主题

《Linux 程序设计入门》 第四版 §3 文件处理 §3.2 系统调用和设备驱动程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-19 15:30 |只看该作者 |倒序浏览

我们用很少量的函数就可以对文件和设备进行访问和控制。这些函数被称为系统调用,由UNIX(Linux)直接提供,它们也是通向操作系统本身的接口。
操作系统的核心部分,即内核,是一组设备驱动程序。这是一些对系统硬件进行控制的底层接口,我们将在第18章详细讨论设备驱动程序。例如,磁带机就有一个与之对应的设备驱动程序,它知道如何启动磁带、如何对它前后回绕、如何对它进行读写等。它还知道磁带必须以固定长度的数据块为单位进行读写。因为磁带上的数据读写操作完全是线性的,所以该驱动程序并不能直接访问磁带上的数据块.而是必须先把它回绕到正确的位置。
    为了向用户提供一个统一的接口,设备驱动程序封装了所有与硬件相关的特性。硬件的特有功能
可通过ioctl调用来完成。
/dev目录中的设备文件的用法都是一致的,它们都可以被打开、读、写和关闭。例如,用来访问普通文件的open调用同样可以用来访问一台用户终端、一台打印机或一台磁带机。
用来访问设备驱动程序的底层函数(系统调用)包括:
􀂉 open:打开文件或设备。
􀂉 read:从打开的文件或设备里读数据。
􀂉 write:向文件或设备写数据。
􀂉 close:关闭文件或设备。
􀂉 ioctl:把控制信息传递给设备驱动程序。
系统调用ioctl用来提供一些与特定硬件设备有关的必要控制(与正常输入输出相反),所以它的用法随设备的不同而不同。例如,ioctl调用可以用于回绕磁带机或设置串行口的流控特性。因此, ioctl并不需要具备可移植性。此外,每个驱动程序都定义了它自己的一组ioctl命令。
这些系统调用和其他系统调用的文档一般放在手册页的第二节。提供系统调用参数列表和返回类型的函数原型及相关的# define常量都由include文件提供。每个系统调用特有的特点包括在各个调用的说明中。

               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21908/showart_1424030.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP