linux-2.6.33/remove_vm_area()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#lfa02132]
#backlinks
*説明 [#v7c606aa]
-パス: [[linux-2.6.33/mm/vmalloc.c]]
-FIXME: これは何?
--説明
**引数 [#yc6ae8f3]
-const void *addr
--
**返り値 [#y95ae257]
-struct vm_struct *
--
--[[linux-2.6.33/vm_struct]]
**参考 [#ofd285a9]
*実装 [#cb357f2e]
/**
* remove_vm_area - find and remove a continuous kerne...
* @addr: base address
*
* Search for the kernel VM area starting at @addr, and ...
* This function returns the found VM area, but using it...
* on SMP machines, except for its size or flags.
*/
struct vm_struct *remove_vm_area(const void *addr)
{
struct vmap_area *va;
-
--[[linux-2.6.33/vmap_area]]
va = find_vmap_area((unsigned long)addr);
-
--[[linux-2.6.33/find_vmap_area()]]
if (va && va->flags & VM_VM_AREA) {
struct vm_struct *vm = va->private;
struct vm_struct *tmp, **p;
-
--[[linux-2.6.33/VM_VM_AREA]]
/*
* remove from list and disallow access to this vm_str...
* before unmap. (address range confliction is maintai...
* vmap.)
*/
write_lock(&vmlist_lock);
-
--[[linux-2.6.33/vmlist_lock(global)]]
-
--[[linux-2.6.33/write_lock()]]
for (p = &vmlist; (tmp = *p) != vm; p = &tmp->next)
;
*p = tmp->next;
write_unlock(&vmlist_lock);
-
--[[linux-2.6.33/vmlist(global)]]
-
--[[linux-2.6.33/write_unlock()]]
vmap_debug_free_range(va->va_start, va->va_end);
-
--[[linux-2.6.33/vmap_debug_free_range()]]
free_unmap_vmap_area(va);
vm->size -= PAGE_SIZE;
-
--[[linux-2.6.33/free_unmap_vmap_area()]]
-
--[[linux-2.6.33/PAGE_SIZE]]
return vm;
}
return NULL;
}
*コメント [#x4757271]
終了行:
*参照元 [#lfa02132]
#backlinks
*説明 [#v7c606aa]
-パス: [[linux-2.6.33/mm/vmalloc.c]]
-FIXME: これは何?
--説明
**引数 [#yc6ae8f3]
-const void *addr
--
**返り値 [#y95ae257]
-struct vm_struct *
--
--[[linux-2.6.33/vm_struct]]
**参考 [#ofd285a9]
*実装 [#cb357f2e]
/**
* remove_vm_area - find and remove a continuous kerne...
* @addr: base address
*
* Search for the kernel VM area starting at @addr, and ...
* This function returns the found VM area, but using it...
* on SMP machines, except for its size or flags.
*/
struct vm_struct *remove_vm_area(const void *addr)
{
struct vmap_area *va;
-
--[[linux-2.6.33/vmap_area]]
va = find_vmap_area((unsigned long)addr);
-
--[[linux-2.6.33/find_vmap_area()]]
if (va && va->flags & VM_VM_AREA) {
struct vm_struct *vm = va->private;
struct vm_struct *tmp, **p;
-
--[[linux-2.6.33/VM_VM_AREA]]
/*
* remove from list and disallow access to this vm_str...
* before unmap. (address range confliction is maintai...
* vmap.)
*/
write_lock(&vmlist_lock);
-
--[[linux-2.6.33/vmlist_lock(global)]]
-
--[[linux-2.6.33/write_lock()]]
for (p = &vmlist; (tmp = *p) != vm; p = &tmp->next)
;
*p = tmp->next;
write_unlock(&vmlist_lock);
-
--[[linux-2.6.33/vmlist(global)]]
-
--[[linux-2.6.33/write_unlock()]]
vmap_debug_free_range(va->va_start, va->va_end);
-
--[[linux-2.6.33/vmap_debug_free_range()]]
free_unmap_vmap_area(va);
vm->size -= PAGE_SIZE;
-
--[[linux-2.6.33/free_unmap_vmap_area()]]
-
--[[linux-2.6.33/PAGE_SIZE]]
return vm;
}
return NULL;
}
*コメント [#x4757271]
ページ名: