reverse mmap(user space to physical memory)
글쓴이: gnossienne / 작성시간: 목, 2006/02/02 - 10:39오후
mmap을 통해 얻어온 연속적인 physical memory의 user space virtaul address통해 역 다시 physical memory의 address을 알고 싶습니다.
즉 다음과 같은 코드입니다.
fp = open(,,,);
v_addr = mmap(,,,);
여기서 mmap을 통해 얻어온 address은 physical memory입니다. 그런데 v_addr을 값만을 통해 physical memory의 address을 알아오는 방법이 없을까요?
2.6에서는 rmap이라는 것을 통해 알수 있다고 들었는데..
2.4에서는 모든 page을 검토 해야만 알수 있다고 들었습니다.
혹시 상세한 방법이 있을까요?
Forums:
음....글쎄요?
x86이신가요??
우선 아키텍쳐를 아셔야하구요....그래야 해당 시스템이 virtual address를
시퓨에서 직접 만들어주는건지 OS가 소프트웨어적으로 계산해주는건지
알 수 있겠지요. 만약 OS가 직접 계산하는 소프트웨어 address mapping을
사용한다고 해도....그 계산은 아마 커널 영역에서 이루어질겁니다.
굳이 실제 물리주소를 알아야될 이유라도 있으신가요?? (임베디드상황??)
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
video memory에 바로 DMA전송
먼저 X86입니다.
제가 하려고 하는 것은 Framebuffer을 이용해서 video memory에 DMA로 바로 전송하려는 것을 시도 중입니다.
다음과 같습니다.
fd_fb = open(fb); //framebuffer
fd_video = open(video); //framegrabber
v_addr = mmap(fd_fb);
ioctl(fd_video,SET_FB_V_ADDR , v_addr);
여기서 v_addr가 user space의 virtual address인데 kernel 레벨(driver)에서 이 user space address을 가지고 실제 physical address을 알 수 있는지 그리고 상세한 방법을 알고 싶습니다.
Windows에서 이와 같은 방법을 통해서 성공을 했는데. 리눅스 쪽은 많이 부족해서...
그럼 도움 부탁 드립니다.
댓글 달기