Главная » Ядро Linux » Функции munmap()  и do_munmap(): удаление интервала адресов

0

Функция  do_manmap()  удаляет  интервал  адресов  из  указанного  адресного  пространства процесса.  Эта  функция  объявлена в  файле   <asm/mman.h>  следующим образом.

int do_munmap(struct mm_struct *mm, unsigned long start, size t_len)

Первый  параметр указывает адресное пространство,  из  которого удаляется   интервал  адресов, начинающийся  с  адреса  star t  и  имеющий длину  le n  байт.  В  случае успеха  возвращается нуль, а в случае  ошибки — отрицательное значение.

Системный вызов munmap()

Системный вызов  munmap ()   экспортируется в адресное пространство пользователя,  чтобы   иметь  возможность удалять  интервалы  адресов   из  адресного  пространства.  Эта  функция является комплиментарной к  системному вызову  mmap  ()   и  имеет следующий  прототип.

int munmap(void *start, size_t length)

Данный системный вызов  реализован в виде  очень  простой интерфейсной  оболочки  (wrapper)   функции do_munmap () .

asmlinkage long sys_munmap(unsigned long addr, size_t len)

{

int ret;

struct mm_struct *mm; mm = current->mm; down_write(&mm->mmap_sem);

ret = do_munmap(mm, addr, len);

p_write(&mm->mmap_sem);

return ret;

}

Источник: Лав,  Роберт. Разработка ядра  Linux, 2-е  издание. : Пер.  с англ.  — М.  : ООО  «И.Д.  Вильяме» 2006. — 448 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии