*参照元 [#gd28b136] #backlinks *説明 [#hfc01913] -パス: [[linux-2.6.33/mm/memory.c]] -FIXME: これは何? --説明 **引数 [#s97f4e9e] -unsigned long addr -- -unsigned long end -- **返り値 [#y5c8041f] -int --成功したときは 0、エラーが起きたときは負のエラー値。 **参考 [#j16d3387] *実装 [#nad19021] int make_pages_present(unsigned long addr, unsigned long end) { int ret, len, write; struct vm_area_struct * vma; - --[[linux-2.6.33/vm_area_struct]] vma = find_vma(current->mm, addr); if (!vma) return -ENOMEM; - --[[linux-2.6.33/find_vma()]] - --[[linux-2.6.33/current(global)]] write = (vma->vm_flags & VM_WRITE) != 0; BUG_ON(addr >= end); BUG_ON(end > vma->vm_end); - --[[linux-2.6.33/VM_WRITE]] - --[[linux-2.6.33/BUG_ON()]] len = DIV_ROUND_UP(end, PAGE_SIZE) - addr/PAGE_SIZE; ret = get_user_pages(current, current->mm, addr, len, write, 0, NULL, NULL); if (ret < 0) return ret; - --[[linux-2.6.33/DIV_ROUND_UP()]] - --[[linux-2.6.33/PAGE_SIZE]] - --[[linux-2.6.33/get_user_pages()]] return ret == len ? 0 : -EFAULT; } *コメント [#d4b4a5cd]