我想保护我的角色设备免受应用程序操作的影响。 我希望只有特定的应用程序才能在设备上进行操作。
我该怎么做?
由于
答案 0 :(得分:0)
这可能不是正确的答案(因为我没有测试它)。但我相信这会奏效。
我希望,您对task_struct
中的当前字段有所了解,它将为您提供该过程的当前PID。请参考这个主题。 how does current->pid work for linux?
因此,您可以使用task_struct的comm
字段代替pid。
http://lxr.free-electrons.com/source/include/linux/sched.h#L1180
在驱动程序中保留一系列允许的应用程序名称。在comm
open()操作期间,针对允许列表检查/dev/<yourchardriver>
字段。
示例文件操作结构。
struct file_operations fops = { /* these are the file operations provided by our driver */
.owner = THIS_MODULE, /*prevents unloading when operations are in use*/
.open = device_open, /*to open the device*/
.write = device_write, /*to write to the device*/
.read = device_read, /*to read the device*/
.release = device_close, /*to close the device*/
.llseek = device_lseek
};
当您在用户空间中调用open(“/ dev / sampledrv”)时,将在您的驱动程序中调用device_open()。所以这些验证可以在这里完成。