linux-2.6.33/do_mlock()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#je153adc]
#backlinks
*説明 [#g466dcc3]
-パス: [[linux-2.6.33/mm/mlock.c]]
-FIXME: これは何?
--説明
**引数 [#rddb8e50]
-unsigned long start
--
-size_t len
--
-int on
--
**返り値 [#jf4bd499]
-int
--
**参考 [#h8d66186]
*実装 [#n603eed1]
static int do_mlock(unsigned long start, size_t len, int...
{
unsigned long nstart, end, tmp;
struct vm_area_struct * vma, * prev;
int error;
-
--[[linux-2.6.33/vm_area_struct]]
len = PAGE_ALIGN(len);
end = start + len;
if (end < start)
return -EINVAL;
if (end == start)
return 0;
-
--[[linux-2.6.33/PAGE_ALIGN()]]
vma = find_vma_prev(current->mm, start, &prev);
if (!vma || vma->vm_start > start)
return -ENOMEM;
if (start > vma->vm_start)
prev = vma;
-
--[[linux-2.6.33/find_vma_prev()]]
-
--[[linux-2.6.33/current(global)]]
for (nstart = start ; ; ) {
unsigned int newflags;
/* Here we know that vma->vm_start <= nstart < vma->v...
newflags = vma->vm_flags | VM_LOCKED;
if (!on)
newflags &= ~VM_LOCKED;
-
--[[linux-2.6.33/VM_LOCKED]]
tmp = vma->vm_end;
if (tmp > end)
tmp = end;
error = mlock_fixup(vma, &prev, nstart, tmp, newflags);
if (error)
break;
-
--[[linux-2.6.33/mlock_fixup()]]
nstart = tmp;
if (nstart < prev->vm_end)
nstart = prev->vm_end;
if (nstart >= end)
break;
vma = prev->vm_next;
if (!vma || vma->vm_start != nstart) {
error = -ENOMEM;
break;
}
}
return error;
}
*コメント [#iee2d81b]
終了行:
*参照元 [#je153adc]
#backlinks
*説明 [#g466dcc3]
-パス: [[linux-2.6.33/mm/mlock.c]]
-FIXME: これは何?
--説明
**引数 [#rddb8e50]
-unsigned long start
--
-size_t len
--
-int on
--
**返り値 [#jf4bd499]
-int
--
**参考 [#h8d66186]
*実装 [#n603eed1]
static int do_mlock(unsigned long start, size_t len, int...
{
unsigned long nstart, end, tmp;
struct vm_area_struct * vma, * prev;
int error;
-
--[[linux-2.6.33/vm_area_struct]]
len = PAGE_ALIGN(len);
end = start + len;
if (end < start)
return -EINVAL;
if (end == start)
return 0;
-
--[[linux-2.6.33/PAGE_ALIGN()]]
vma = find_vma_prev(current->mm, start, &prev);
if (!vma || vma->vm_start > start)
return -ENOMEM;
if (start > vma->vm_start)
prev = vma;
-
--[[linux-2.6.33/find_vma_prev()]]
-
--[[linux-2.6.33/current(global)]]
for (nstart = start ; ; ) {
unsigned int newflags;
/* Here we know that vma->vm_start <= nstart < vma->v...
newflags = vma->vm_flags | VM_LOCKED;
if (!on)
newflags &= ~VM_LOCKED;
-
--[[linux-2.6.33/VM_LOCKED]]
tmp = vma->vm_end;
if (tmp > end)
tmp = end;
error = mlock_fixup(vma, &prev, nstart, tmp, newflags);
if (error)
break;
-
--[[linux-2.6.33/mlock_fixup()]]
nstart = tmp;
if (nstart < prev->vm_end)
nstart = prev->vm_end;
if (nstart >= end)
break;
vma = prev->vm_next;
if (!vma || vma->vm_start != nstart) {
error = -ENOMEM;
break;
}
}
return error;
}
*コメント [#iee2d81b]
ページ名: