Книга: Разработка ядра Linux

Функция find_vma_intersection()

Функция find_vma_intersection()

Функция find_vma_intersection() возвращает первую область памяти, которая перекрывается с указанным интервалом адресов. Эта функция определена в файле <linux/mm.h> следующим образом. Это функция с подстановкой тела.

static inline struct vm_area_struct* find_vma_intersection(
 struct mm_struct *mm, unsigned long start_addr,
 unsigned long end_addr) {
 struct vm_area_struct *vma;
 vma = find_vma(mm, start_addr);
 if (vma && end_addr <= vma->vm_start)
  vma = NULL;
 return vma;
}

Первый параметр — адресное пространство, в котором выполняется поиск, параметр start_addr — это первый адрес интервала адресов, а параметр end_addr — последний адрес интервала.

Очевидно, что если функция find_vma() возвращает значение NULL, то это же значение будет возвращать и функция find_vma_intersection(). Если функция find_vma() возвращает существующую область VMA, то функция find_vma_intersection() возвратит ту же область только тогда, когда эта область не начинается после конца данного диапазона адресов. Если область памяти, которая возвращается функцией find_vma(), начинается после последнего адреса из указанного диапазона, то функция find_vma_intersection() возвращает значение NULL.

Оглавление книги


Генерация: 1.359. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз