miz*_*izo 6 c embedded posix ioctl driver
我正在为小型微控制器应用开发设备驱动程序I/O模型,使用POSIX作为接口设计的指南.我实现ioctl()了控制驱动器/硬件参数的方法 - 例如UART波特率,I2C从设备地址等.
我注意到,那POSIX:2008年名单ioctl(),并<stropts.h>为过时.与设备驱动程序通信的推荐替代机制是什么?
POSIX仅定义了一个非常有限的ioctl()功能子集- 与STREAMS相关.由于STREAMS设施已淘汰,因此POSIX的界面也已过时.
但是,ioctl()自从'永远'以来一直是Unix的一部分(它肯定是在第7版UNIX中,我可以肯定它甚至不是新的).它是打开后控制设备驱动程序的"方式".唯一的问题是这样的接口和控件没有标准化.
您可以查看<termios.h>写入控制终端的一组函数的文件.我希望典型的实现使用ioctl()或其他类似的专用机制,但是接口在标准化时是通用的(<termios.h>接口与任何早期接口不同,无论是第7版还是System III或任何其他接口).如果您愿意,您可以在您的ioctl()界面上编写标准功能,供用户使用; 你会实现这些函数来调用你的ioctl()接口.
所以,ioctl()不会消失; 这是控制设备驱动程序的正确方法.POSIX的议程略有不同,就是这样.