我是照着蜂鸣器的驱动 自己模拟写了个驱动。
一般驱动都会有
#define HELLO_MAGIC 'k'
#define HELLO_CMD1 _IO(HELLO_MAGIC,0x1a)
#define HELLO_CMD2 _IO(HELLO_MAGIC,0x1b)
其中'k'为幻数,要按照Linux内核的约定方法为驱动程序选择ioctl编号,应该首先看看include/asm/ioctl.h和Documentation/ioctl-number.txt这两个文件,下面是ioctl.h的部分内容,也是比较重要的:
_IO(type, nr)
用于构造无参数的命令编号;
_IOR(type, nr, datatype)
用于构造从驱动程序中读取数据的命令编号;
_IOW(type, nr, datatype)
用于写入数据的命令;
_IOWR(type, nr, datatype)
用于双向传输。注意千万不能重复定义。
这些cmd命令定义,为何在蜂鸣器中看不到 ?