Estoy tratando de entender cómo funciona mmap. La llamada a nivel de usuario de mmap se ve a continuación.Conexión entre la llamada de usuario de mmap a la llamada al núcleo de mmap
void *mmap(void *addr, size_t len, int prot, int flags,
int fildes, off_t off);
pero mmap nivel del núcleo de un controlador de dispositivo en particular se parece a:
int <device_name>_mmap(struct file*fp, struct vm_area_struct *vma)
Yo también miraba el código fuente, pero no soy capaz de encontrar la conexión entre ellos.
¿Cómo mmap para un dispositivo particular obtiene sus argumentos "struct vm_area_struct * vma"? ¿Puedes ayudarme a entender eso? Aprecio tu ayuda.
en realidad lo hice pero no he podido encontrar la conexión – vindyz
La 'vm_area_struct' contiene la información sobre el rango de direcciones virtuales que se asignará en el proceso de usuario y el desplazamiento en el dispositivo que la aplicación desea asignar. El argumento 'archivo' corresponde al descriptor de archivo en el lado del usuario. –
Ejemplo de módulo kernel mínimo ejecutable: https://stackoverflow.com/questions/10760479/how-to-mmap-a-linux-kernel-buffer-to-user-space/45645732#45645732 –