首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换ioctl()函数

替换ioctl()函数
EN

Stack Overflow用户
提问于 2011-09-03 17:35:49
回答 1查看 3.1K关注 0票数 6

我正在为小型微控制器应用程序开发设备驱动程序I/O模型,使用POSIX作为接口设计指南。我实现了ioctl()作为一种控制驱动程序/硬件参数的方法,例如UART波特率、I2C从地址等。

我注意到,POSIX:2008将ioctl()和列为过时。推荐的与设备驱动程序通信的替代机制是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-03 17:51:43

POSIX只定义了一个非常有限的ioctl()功能子集--与流相关的子集。由于STREAMS设施已经过时,其接口在POSIX中也是过时的。

然而,ioctl()从‘永远’开始就成为UNIX的一部分(它肯定在第7版的Unix中,而且我相当肯定它在那时也不是新的)。这是在设备驱动程序打开后控制设备驱动程序的“方法”。唯一的问题是这些接口和控件没有标准化。

您可以查看写入控制终端的一组函数的<termios.h>文件。我希望典型的实现使用ioctl()或其他类似的专门机制,但是当它标准化时,接口变得通用了( <termios.h>接口与任何早期的接口不同,无论是第7版还是System或任何其他接口)。如果您愿意,可以在用户使用的ioctl()接口上编写标准函数;您可以实现这些函数来调用您的ioctl()接口。

因此,ioctl()并没有消失,它是控制设备驱动程序的正确方法。POSIX的议程略有不同,仅此而已。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7294732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档