1. 参考文档
1.1 Linux驱动字符设备分析misc_register、register_chrdev
1.2 mode_t 内核文件权限值 S_IRUGO=S_IRUSR | S_IRGRP | S_IROTH
2 注册和释放
注册:int misc_register(struct miscdevice *misc)
释放:int misc_deregister(struct miscdevice *misc)
3 HAL层
fd = open("/dev/shf",READONY);
ioctl(fd, SHF_CMD, &arg);
close(fd);
4 Kernel 端
static long shf_unlocked_ioctrl(struct file *file, unsigned int cmd,
unsigned long arg)
struct file_operations shf_fops = {
.owner = THIS_MODULE,
.open= shf_open,
.release = shf_release,
.unlocked_ioctl = shf_unlocked_ioctrl,
}
struct miscdevice shf_device = {
.minor = MISC_DYNAMIC_MINOR,
.name = "shf", //节点名字
.fops = &shf_fops,
.mode = S_IFREG|S_IRWXUGO; //S_IFREG 普通文件, S_IRWXUGO读写权限 (S_IRWXU|S_IRWXG|S_IRWXO)
};
misc_regiseter(&shf_device); //会在/dev下创建shf节点,即/dev/shf