Есть ли способ проверить, используется ли рассматриваемая страница указанным процессом?
у меня есть указатель на struct page
и struct task_struct
, и я хочу получить логическое значение, обозначающее, находится ли страница в VMA процесса. В настоящее время я застрял в получении виртуального адреса страницы в VMA процесса. Если я получу его, я смогу пройти по pgd
и посмотреть, есть ли он там.
Я пробовал подход, принятый в vma_address()
(на mm/rmap.c
), но при циклическом переключении на mm_struct->mmap
задачи виртуальный адрес, кажется, отличается для каждого vm_area_struct
в списке. Это противоречит find_vma()
(в 'mm / mmap.c`), который сканирует VMA задачи (хотя и выполняет поиск соответствующего rb-дерева), работая с фиксированным адресом, который предоставляется в качестве аргумента.
Итак, как правильно делать такие вещи?