当前位置: 技术问答>linux和unix
请教一个ioctl函数的参数问题
来源: 互联网 发布时间:2015-08-01
本文导语: 请问一下ioctl函数的第二个参数可不可以自己定义, 还是系统都已经定义好了,包含一些头文件就行了 ioctl ( fd, KIOCSOUND, (int) tone); | 呵呵,对于系统支持设备的ioctl号,你可以在/usr/include下面的头文...
请问一下ioctl函数的第二个参数可不可以自己定义,
还是系统都已经定义好了,包含一些头文件就行了
ioctl ( fd, KIOCSOUND, (int) tone);
|
呵呵,对于系统支持设备的ioctl号,你可以在/usr/include下面的头文件中找到,对于你自己的设备,如果需要使用ioctl接口,则需要定义自己的ioctl号。以前的2.4中有个问题是,大家都随便定义自己的ioctl号,造成很大可能性的重复性。一个坏处是难以管理,另外一个是容易造成错误,例如如果用户本来希望打开一个串口设备,结果通过open打开了网口,如果串口的某个ioctl号正好是网口的关闭操作,这样就会造成错误。在2.6里面,你定义自己的ioctl号最好使用_IO, _IOR, _IOW和_IORW来定义,这些宏考虑了第三个参数的长度,设备的magic number,以及操作的方向等,避免了2.4中的问题
|
这要看你是操作什么设备了,如果是你自己开发的驱动这个参数当然由你定义了.
|
系统自带的设备都已经定义好了,对于你自己的设备驱动,当然可以自己定义,但是需要驱动保证有相应的实现来处理。
|
是的
|
其实就是接口!具体实现看你的设备