我正在玩ioctl
,这个问题发生在我身上。
背景
0x80
),但接受额外的参数以按需提供不同的功能。ioctl
。因此我的问题。为什么操作系统不提供足够的系统调用并摆脱ioctl
? (或者仅仅是为了创建一个层次结构来提供更好的可扩展性?)
答案 0 :(得分:1)
我对此的看法是,系统调用可以被视为操作系统内核向用户应用程序提供的一组服务,而ioctl
只是这些服务之一,允许您发送自定义命令特定设备(或驱动程序)。
在开发驱动程序时,您可以编写一个处理程序来处理ioctl
请求。通过实现自己的系统调用来管理同样的事情有几个缺点:
您可以将ioctl
视为read
和write
的概括。可以提供输入和输出缓冲区,以及定义从目标(通常是内核驱动程序)所需操作的控制代码。