*参照元 [#k17aa1f4]
#backlinks

*説明 [#d8e3276d]
-パス: [[linux-2.6.33/fs/read_write.c]]

-FIXME: これは何?
--説明


**引数 [#ufe97c70]
-struct file *file
--
--[[linux-2.6.33/file]]
-char __user *buf
--
-size_t count
--
-loff_t *pos
--


**返り値 [#e47c2c45]
-ssize_t
--


**参考 [#r6ff4572]


*実装 [#p0c75314]
 ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
 {
 	ssize_t ret;
 
 	if (!(file->f_mode & FMODE_READ))
 		return -EBADF;
 	if (!file->f_op || (!file->f_op->read && !file->f_op->aio_read))
 		return -EINVAL;
 	if (unlikely(!access_ok(VERIFY_WRITE, buf, count)))
 		return -EFAULT;
 
-file->f_op は file_operations 型
--[[linux-2.6.33/file_operations]]
-
--[[linux-2.6.33/access_ok()]]

 	ret = rw_verify_area(READ, file, pos, count);
-
--[[linux-2.6.33/rw_verify_area()]]

 	if (ret >= 0) {
 		count = ret;
 		if (file->f_op->read)
 			ret = file->f_op->read(file, buf, count, pos);
 		else
 			ret = do_sync_read(file, buf, count, pos);
-
--[[linux-2.6.33/do_sync_read()]]

 		if (ret > 0) {
 			fsnotify_access(file->f_path.dentry);
 			add_rchar(current, ret);
 		}
-
--[[linux-2.6.33/fsnotify_access()]]
-
--[[linux-2.6.33/add_rchar()]]

 		inc_syscr(current);
-
--[[linux-2.6.33/inc_syscr()]]

 	}
 
 	return ret;
 }
 
 EXPORT_SYMBOL(vfs_read);


*コメント [#w59631ab]

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS