도와주세요!!
글 수 15,339
2006.11.05 01:00:26 (*.123.65.219)
12602
리눅스 커널에서 메모리 관련해서 다루어야 하는데요,
arm 패치가 된 embedded linux 에서는 high memory를 지원하지 않아서,
이 경우에는 vmalloc과 kmalloc으로 메모리 할당을 했을 때 어떤 차이가
있는지 찾아보고 있는데, 정확한 답을 찾기가 어려워서 이렇게 부탁드립니다.
vmalloc 으로 메모리 할당을 하면 high memory 에 주소 할당이 되고,
kmalloc으로 메모리 할당을 하면 low memory 영역에 주소 할당이
이루어지는 것으로 압니다.
그래서, vmalloc 으로 메모리 할당된 포인터 변수에 있는 값을,
kmalloc으로 메모리 할당된 포인터 변수에 복사하기 위해서는
일단 vmalloc 으로 할당된 주소값을 page 와 offset 으로 바꾸고
이를 다시 kmap_atomic 함수를 이용하여 low memory 영역의
주소로 바꾸어야 하는 것으로 압니다.
1) 그런데, arm 패치된 embedded linux 에서는 high memory를 지원하지
않기 때문에 vmalloc 으로 메모리 할당 시 kmalloc과 같이 low memory
영역에 주소 할당이 되는지 알려주세요.
2) 그리고, 같은 low memory 영역에 주소 할당이 일어나더라도 vmalloc으로
할당된 메모리는 연속되어 있지 않기 때문에 여전히 page 와 offset으로
바꾼 후 처리를 해줘야 합니까? high memory 가 지원되지 않기 때문에
kmap_atomic과 같은 함수도 없는데 page와 offset에서 어떻게 주소값을
알 수 있습니까?
고맙습니다.
arm 패치가 된 embedded linux 에서는 high memory를 지원하지 않아서,
이 경우에는 vmalloc과 kmalloc으로 메모리 할당을 했을 때 어떤 차이가
있는지 찾아보고 있는데, 정확한 답을 찾기가 어려워서 이렇게 부탁드립니다.
vmalloc 으로 메모리 할당을 하면 high memory 에 주소 할당이 되고,
kmalloc으로 메모리 할당을 하면 low memory 영역에 주소 할당이
이루어지는 것으로 압니다.
그래서, vmalloc 으로 메모리 할당된 포인터 변수에 있는 값을,
kmalloc으로 메모리 할당된 포인터 변수에 복사하기 위해서는
일단 vmalloc 으로 할당된 주소값을 page 와 offset 으로 바꾸고
이를 다시 kmap_atomic 함수를 이용하여 low memory 영역의
주소로 바꾸어야 하는 것으로 압니다.
1) 그런데, arm 패치된 embedded linux 에서는 high memory를 지원하지
않기 때문에 vmalloc 으로 메모리 할당 시 kmalloc과 같이 low memory
영역에 주소 할당이 되는지 알려주세요.
2) 그리고, 같은 low memory 영역에 주소 할당이 일어나더라도 vmalloc으로
할당된 메모리는 연속되어 있지 않기 때문에 여전히 page 와 offset으로
바꾼 후 처리를 해줘야 합니까? high memory 가 지원되지 않기 때문에
kmap_atomic과 같은 함수도 없는데 page와 offset에서 어떻게 주소값을
알 수 있습니까?
고맙습니다.