응용 프로그램의 변수에 대한 물리주소 구하기
글쓴이: pgh5247 / 작성시간: 월, 2012/05/07 - 2:16오후
리눅스 커널 2.6.35에서 동작할 디바이스 드라이버를 구현하고 있습니다.
응용 프로그램이 malloc해서 사용하는 메모리에 대한 물리주소를 구해서
이를 특정 주소에 write해야 하는 기능인데요...
응용 프로그램에서.
int *a = (int *)malloc(100*sizeof(int));
라고 선언한 후 a를 드라이에 전달해서 모듈에서
printk("[debug] physical address : %x", virt_to_phys(a)); 가로하면 0을 리턴하는데요...
제가 잘못사용하고 있는건지요?
아니면 다른 방식으로 물리주소를 구해야 되는지요?
Forums:
virtual address
a의 값을 kernel로 넘기신거 같은데....
응용프로그램에서의 a의 값은 user mode의 해당 application에서의 virtual address입니다.
kernel mode에서 virt_to_phya()에는 kernel mode에서의 virtual address가 들어가야 겠죠.
app의 공간은 스택이겠죠 그안에서 노는거니까
app의 공간은 스택이겠죠 그안에서 노는거니까
스택이 잡히는 물리주소를 알아서(커널뒤져보시면) +- 하시면 알수있지 않을까 하는 짧은 소견입니다
stack
malloc()은 heap에 할당합니다.
stack이 아닙니다.
댓글 달기