    vma_cache   ,  
  VMA  .  ,  
 ,     vm_end  addr,  ,
     ,    , 
addr. ,         , -
      .  ,  
          
  VMA.

      VMA,     -
  - .      . 
  vma_end       addr,  
   ,     .  
 ,     ,    addr.
   VMA  ,        -
   ,     addr.   
    ,    NULL.

 find_vma_J>rev ()

 find_vma_prev ()    find_vma () ,  -
      VMA,  
  addr.       mm/mmap .   -
   <linux/mm.h>  .

struct vm_area_struct * find_vma_prev(struct mm_struct *mm,
unsigned long addr, struct vm_area_struct **pprev)

 pprev        -
  VMA.

 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 ().  

324                                                                     14