linux-2.6.33/sys_read()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#fd855da4]
#backlinks
*説明 [#re9e1d9b]
-パス: [[linux-2.6.33/fs/read_write.c]]
-FIXME: これは何?
--説明
**引数 [#l65437c2]
-unsigned int fd
--
-char __user *buf
--
--[[linux-2.6.33/__user]]
-size_t count
--
**返り値 [#m97e8054]
-ssize_t
--
**参考 [#q92d2138]
*実装 [#b9075d59]
SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, b...
{
-[[linux-2.6.33/SYSCALL_DEFINE3()]]
--
struct file *file;
ssize_t ret = -EBADF;
int fput_needed;
-
--[[linux-2.6.33/file]]
file = fget_light(fd, &fput_needed);
-
--[[linux-2.6.33/fget_light()]]
if (file) {
loff_t pos = file_pos_read(file);
-現在のファイル位置を得る。
--[[linux-2.6.33/file_pos_read()]]
ret = vfs_read(file, buf, count, &pos);
-
--[[linux-2.6.33/vfs_read()]]
file_pos_write(file, pos);
-現在のファイル位置を更新する。
--[[linux-2.6.33/file_pos_write()]]
fput_light(file, fput_needed);
-
--[[linux-2.6.33/fput_light()]]
}
return ret;
}
*コメント [#z5353562]
終了行:
*参照元 [#fd855da4]
#backlinks
*説明 [#re9e1d9b]
-パス: [[linux-2.6.33/fs/read_write.c]]
-FIXME: これは何?
--説明
**引数 [#l65437c2]
-unsigned int fd
--
-char __user *buf
--
--[[linux-2.6.33/__user]]
-size_t count
--
**返り値 [#m97e8054]
-ssize_t
--
**参考 [#q92d2138]
*実装 [#b9075d59]
SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, b...
{
-[[linux-2.6.33/SYSCALL_DEFINE3()]]
--
struct file *file;
ssize_t ret = -EBADF;
int fput_needed;
-
--[[linux-2.6.33/file]]
file = fget_light(fd, &fput_needed);
-
--[[linux-2.6.33/fget_light()]]
if (file) {
loff_t pos = file_pos_read(file);
-現在のファイル位置を得る。
--[[linux-2.6.33/file_pos_read()]]
ret = vfs_read(file, buf, count, &pos);
-
--[[linux-2.6.33/vfs_read()]]
file_pos_write(file, pos);
-現在のファイル位置を更新する。
--[[linux-2.6.33/file_pos_write()]]
fput_light(file, fput_needed);
-
--[[linux-2.6.33/fput_light()]]
}
return ret;
}
*コメント [#z5353562]
ページ名: