mmap 작동 방법을 이해하려고합니다. mmap의 사용자 수준 호출은 다음과 같습니다. 나는 또한 소스 코드를보고mmap 사용자 호출과 mmap 커널 호출 사이의 연결
int <device_name>_mmap(struct file*fp, struct vm_area_struct *vma)
하지만 난 사이에서 연결을 찾을 수 없습니다 이니 같은 특정 장치 드라이버에 대한
void *mmap(void *addr, size_t len, int prot, int flags,
int fildes, off_t off);
하지만 커널 레벨의 mmap 보인다.
특정 장치에 대한 mmap은 "struct vm_area_struct * vma"인수를 어떻게 받습니까? 이해해 주시겠습니까? 당신의 도움을 주셔서 감사합니다.
실제로 접속을 찾을 수는 없지만 연결을 찾을 수 없습니다. – vindyz
'vm_area_struct'는 사용자 프로세스에 맵핑 될 가상 주소 범위와 어플리케이션이 맵핑하려는 디바이스의 오프 B에 대한 정보를 포함합니다. 'file' 인수는 사용자 측의 파일 기술자에 대응합니다. –
최소한의 실행 가능한 커널 모듈 예제 : https://stackoverflow.com/questions/10760479/how-to-mmap-a-linux-kernel-buffer-to-user-space/45645732#45645732 –