pgd_offset_K() 커널함수에 대한 질문입니다.

백철민 2010.06.23 09:10 조회 수 : 9942

486 /* 
487  * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
488  * 
489  * this macro returns the index of the entry in the pgd page which would
490  * control the given virtual address
491  */
492 #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
493    
494 /*
495  * pgd_offset() returns a (pgd_t *)
496  * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
497  */
498 #define pgd_offset(mm, address) ((mm)->pgd + pgd_index((address)))
499 /*
500  * a shortcut which implies the use of the kernel's pgd, instead
501  * of a process's
502  */
503 #define pgd_offset_k(address) pgd_offset(&init_mm, (address))


제 장비에 있는 /usr/src/linux/arch/x86/include/asm/pgtable.h 파일 내용중 일부분입니다.


버전은 우분투 10.04, Linux Linux 2.6.32-22-generic #36-Ubuntu SMP Thu Jun 3 19:31:57 UTC 2010 x86_64 GNU/Linux 입니다.



PML4나 PGD를 구하는 방법이 2가지라고 구글링 해서 알았습니다.


첫번째는 pgd_offset(mm, address)이고,


두번째는 pgd_offset_k(&init_mm, (address))이더군요.


pgd_offset() 함수를 쓸때는 아무런 에러가 안나는데,


pgd_offset_k()함수를 쓰면 디바이스 드라이버 소스를 컴파일할때 아래와 같은 경고가 뜹니다.



WARNING: "init_mm" [/root/hh/hh_dev.ko] undefined!



이상태로 모듈을 insmod할때,


insmod: error inserting 'hh_dev.ko': -1 Unknown symbol in module


라고 뜨구요.




pgd_offset_k()는 virtual address만으로도 page global directory를 구할 수 있다고 해서 시도하고 있는데요,


위와 같은 경고를 없애고 제대로 컴파일, 모듈로드를 하려면 어떻게 해야할까요?





번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22245
118 C 문법을 위반하는 경우가 생긴건지도 모르겠네요...뭐가 이러지?.. [6] 김영일 2010.12.06 7738
117 모듈오류가 나는데 이유가 뭔지 안잡히네요.. [5] 김영일 2010.11.30 14557
116 아직 끼우지 못한 단추가 남았습니다. [6] 박한범 2010.11.30 8218
115 HVM 실험 좀 부탁합니다. [6] 백창우 2010.11.17 6454
114 리눅스에서 armulator 구동하는 방법 김성오 2010.11.08 7660
113 arm에서 mmu 설정 문제... [1] 유대철 2010.11.03 9741
112 멀티프로세서+멀티코어에 대해 궁금한게 있습니다. [14] 박한범 2010.11.01 8789
111 멀티프로세서+멀티코어에 대해 궁금한게 있습니다!? [8] 박한범 2010.10.30 7672
110 리눅스 인터럽트 금지 해제 관련 [9] 홍문화 2010.09.30 11634
109 gcc 디버깅방법 [1] 피승현 2010.09.27 8820
108 컴파일러 최적화 부분에서... [2] 김국진이 2010.09.04 8666
107 특정 라이브러리만 정적링킹하도록... [3] 김경태 2010.08.17 9812
106 8차 스터디 인원 모집에 대해 문의 드립니다. [1] 신창호 2010.08.17 4837
105 address_space 구조체에 대한 질문 [9] 송원준 2010.07.27 9948
104 S3c2440의 USB host 기능 실현에 대한 질문입니다. 이죽송 2010.07.16 9451
103 커널 스터디에 관해 질문드립니다. 김진수 2010.07.16 5119
» pgd_offset_K() 커널함수에 대한 질문입니다. [2] 백철민 2010.06.23 9942
101 커널 스터디에 참여하고 싶은데요.. [1] 박영현 2010.06.22 5516
100 dd명령어 써서 디스크 카피 할 시 신재욱 2010.06.16 7362
99 linux에서partition분할하지 않고 포멧한 경우 신재욱 2010.06.16 6379
XE Login