- 论坛徽章:
- 0
|
在sys_open()中,调用do_sys_open(),
long do_sys_open(int dfd,const char __user *filename, int flags, int mode)
{
char *tmp = getname(filename);
int fd = PTR_ERR(tmp);if (!IS_ERR(tmp)) {
// 获取一个未使用的文件描述符, 和inode无关
fd = get_unused_fd();
if (fd >= 0) {
// 打开文件,将文件名转换为文件结构
struct file *f = do_filp_open(dfd, tmp, flags, mode);
if (IS_ERR(f)) {
put_unused_fd(fd);
fd = PTR_ERR(f);
} else {
fsnotify_open(f->f_dentry);
fd_install(fd, f);
}
}
putname(tmp);
}
return fd;
}
这中间,fd是文件名所对应文件的文件描述符吗?我找到的PTR_ERR定义如下:
static inline long PTR_ERR(const void *ptr)
{
return (long) ptr;
} |
|