linux-2.6.33/file_read_actor()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#ffaac8d8]
#backlinks
*説明 [#x26b62d5]
-パス: [[linux-2.6.33/mm/filemap.c]]
-FIXME: これは何?
--説明
**引数 [#c26bab74]
-read_descriptor_t *desc
--
--[[linux-2.6.33/read_descriptor_t]]
-struct page *page
--
--[[linux-2.6.33/page]]
-unsigned long offset
--
-unsigned long size
--
**返り値 [#d52dff5f]
-int
--
**参考 [#n38c9717]
*実装 [#gb8a6a80]
int file_read_actor(read_descriptor_t *desc, struct page...
unsigned long offset, unsigned long size)
{
char *kaddr;
unsigned long left, count = desc->count;
if (size > count)
size = count;
/*
* Faults on the destination of a read are common, so d...
* taking the kmap.
*/
if (!fault_in_pages_writeable(desc->arg.buf, size)) {
-
--[[linux-2.6.33/fault_in_pages_writeable()]]
kaddr = kmap_atomic(page, KM_USER0);
left = __copy_to_user_inatomic(desc->arg.buf,
kaddr + offset, size);
kunmap_atomic(kaddr, KM_USER0);
-
--[[linux-2.6.33/kmap_atomic()]]
--[[linux-2.6.33/__copy_to_user_inatomic()]]
--[[linux-2.6.33/kunmap_atomic()]]
if (left == 0)
goto success;
}
/* Do it the slow way */
kaddr = kmap(page);
left = __copy_to_user(desc->arg.buf, kaddr + offset, si...
kunmap(page);
-
--[[linux-2.6.33/kmap()]]
--[[linux-2.6.33/__copy_to_user()]]
--[[linux-2.6.33/kunmap()]]
if (left) {
size -= left;
desc->error = -EFAULT;
}
success:
desc->count = count - size;
desc->written += size;
desc->arg.buf += size;
return size;
}
*コメント [#z06d1b52]
終了行:
*参照元 [#ffaac8d8]
#backlinks
*説明 [#x26b62d5]
-パス: [[linux-2.6.33/mm/filemap.c]]
-FIXME: これは何?
--説明
**引数 [#c26bab74]
-read_descriptor_t *desc
--
--[[linux-2.6.33/read_descriptor_t]]
-struct page *page
--
--[[linux-2.6.33/page]]
-unsigned long offset
--
-unsigned long size
--
**返り値 [#d52dff5f]
-int
--
**参考 [#n38c9717]
*実装 [#gb8a6a80]
int file_read_actor(read_descriptor_t *desc, struct page...
unsigned long offset, unsigned long size)
{
char *kaddr;
unsigned long left, count = desc->count;
if (size > count)
size = count;
/*
* Faults on the destination of a read are common, so d...
* taking the kmap.
*/
if (!fault_in_pages_writeable(desc->arg.buf, size)) {
-
--[[linux-2.6.33/fault_in_pages_writeable()]]
kaddr = kmap_atomic(page, KM_USER0);
left = __copy_to_user_inatomic(desc->arg.buf,
kaddr + offset, size);
kunmap_atomic(kaddr, KM_USER0);
-
--[[linux-2.6.33/kmap_atomic()]]
--[[linux-2.6.33/__copy_to_user_inatomic()]]
--[[linux-2.6.33/kunmap_atomic()]]
if (left == 0)
goto success;
}
/* Do it the slow way */
kaddr = kmap(page);
left = __copy_to_user(desc->arg.buf, kaddr + offset, si...
kunmap(page);
-
--[[linux-2.6.33/kmap()]]
--[[linux-2.6.33/__copy_to_user()]]
--[[linux-2.6.33/kunmap()]]
if (left) {
size -= left;
desc->error = -EFAULT;
}
success:
desc->count = count - size;
desc->written += size;
desc->arg.buf += size;
return size;
}
*コメント [#z06d1b52]
ページ名: