当前位置: 技术问答>linux和unix
关于:设备驱动的提问
来源: 互联网 发布时间:2015-03-20
本文导语: 用户进程: int pid = open("/dev/XXX", O_RDWR); 这时的pid=3. 但在设备驱动:XXX_open()里面返回的是0. 请问:这个pid=3是从哪里来的? | 此pid=3实际是从系统调用sys_open()返回的. 注意用户进程不是直接...
用户进程:
int pid = open("/dev/XXX", O_RDWR);
这时的pid=3.
但在设备驱动:XXX_open()里面返回的是0.
请问:这个pid=3是从哪里来的?
int pid = open("/dev/XXX", O_RDWR);
这时的pid=3.
但在设备驱动:XXX_open()里面返回的是0.
请问:这个pid=3是从哪里来的?
|
此pid=3实际是从系统调用sys_open()返回的. 注意用户进程不是直接调用设备的open()的, 是通过sys_open() --> filp_open() --> dentry_open() --> 设备的open()的顺序调用的. 因此设备的open()返回值仅表示成功(返回0)或失败(非0). 注意设备的open()是通过struct file中的struct file_operations的open 访问的.