- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#la934b18]
#backlinks
*説明 [#k3894d75]
-パス: [[linux-2.6.33/fs/read_write.c]]
-FIXME: これは何?
--説明
**引数 [#wb06405f]
-struct file *filep
--
--[[linux-2.6.33/file]]
-char __user *buf
--
-size_t len
--
-loff_t *ppos
--
**返り値 [#ra180e4f]
-ssize_t
--
**参考 [#i48bec03]
*実装 [#bd881cf9]
ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
{
struct iovec iov = { .iov_base = buf, .iov_len = len };
struct kiocb kiocb;
ssize_t ret;
-
--[[linux-2.6.33/iovec]]
-
--[[linux-2.6.33/kiocb]]
init_sync_kiocb(&kiocb, filp);
kiocb.ki_pos = *ppos;
kiocb.ki_left = len;
-
--[[linux-2.6.33/init_sync_kiocb()]]
for (;;) {
ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos);
if (ret != -EIOCBRETRY)
break;
-file->f_op は file_operations 型
--[[linux-2.6.33/file_operations]]
wait_on_retry_sync_kiocb(&kiocb);
-
--[[linux-2.6.33/wait_on_retry_sync_kiocb()]]
}
if (-EIOCBQUEUED == ret)
ret = wait_on_sync_kiocb(&kiocb);
-
--[[linux-2.6.33/wait_on_sync_kiocb()]]
*ppos = kiocb.ki_pos;
return ret;
}
EXPORT_SYMBOL(do_sync_read);
-特にライセンスを区別せずシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL()]]
*コメント [#s574505d]