Связь между вызовом пользователя mmap и вызовом ядра mmap

Я пытаюсь понять, как работает mmap. Вызов mmap на уровне пользователя выглядит следующим образом.

void *mmap(void *addr, size_t len, int prot, int flags,
       int fildes, off_t off); 

но mmap на уровне ядра для конкретного драйвера устройства выглядит так:

int <device_name>_mmap(struct file*fp, struct vm_area_struct *vma)

Я также просмотрел исходный код, но не смог найти связь между ними.

Как mmap для конкретного устройства получает свои аргументы «struct vm_area_struct *vma»? Не могли бы вы помочь мне понять это? Ценю вашу помощь.

7
задан caf 21 March 2012 в 03:06
поделиться