pte_offset()으로 가상주소에서 물리주소 얻는 커널 프로그래밍에 대하여.
글쓴이: ukyoukyo / 작성시간: 수, 2009/12/02 - 9:27오전
리눅스 커널버전 2.6.XX를 사용하고 있습니다. 우분투, 페도라 둘다 쓰고 있구요.
제목과 같이 가상주소를 물리주소로 변환하는 프로그램을 짜고 있는데요,
(커널 모듈 방식)
pgd_offset(), pmd_offset(), pte_offset() 매크로 함수를 쓰고,
pte 값에 offset을 더하면 물리주소가 된다고 구글링해서 알았습니다.
커널버전 2.6에서는 pte_offset() 함수가 없더군요-_-;
2.4에서는 있던데...
2.6에서는 pte_offset() 기능을 하는 함수가 어떻게 바뀌었는지요?
예제가 있는 site를 알려주셔도 됩니다...
Forums:
pte_offset_map() 쓰세요..
2.6에서는 PTE 페이지가 high memory에 있을 수도 있기 때문에
임시로 매핑해서 접근하도록 pte_offset_map()과 pte_unmap()을
함께 사용하셔야 합니다.
답변 감사합니다.
답변 감사합니다.
mm.h를 열어보니,
pte_offset_map()은 pte_offset_map_lock() 내부에 속해있고,
pte_unmap()은 pte_unmap_unlock() 내부에 속해 있더군요.
굳이, pte_offset_map_lock()과 pte_unmap_unlock()은 사용할 필요없고,
내부에 정의된것만 사용해도 된다는 말씀이신가요?
목적은 단순한 가상주소 -> 물리주소 입니다만...
------------------ System programmer...^^
------------------ System programmer...^^
locking 여부는 주어진
locking 여부는 주어진 상황에 따라 달라질 수 있는 문제인지라
일반적으로 말씀드리기는 힘들 것 같습니다.
말씀하신대로 단순한 주소 변환 시의 참조 만을 위한 것이라면
lockless 버전을 사용해도 괜찮을 듯 싶지만
그 외의 작업이 필요하다면 lock 버전을 이용해야 할 수도 있습니다.
조언 감사합니다.
조언 감사합니다.
F/OSS study 홈페이지도 잘 보고(?)있습니다^^
------------------ System programmer...^^
------------------ System programmer...^^
댓글 달기