Sharing a buffer between kernel-space and user-space
ION memory allocator 관련 글은 LWN 를 번역한 The Android ION memory allocator 참조.
이번에는 user-space 에서 할당한 메모리를 kernel driver 에서 공유하여 write 를 하고 user에서 write 한 데이터가 잘 들어가 있는지 확인하는 수준(?)으로 진행한다.
% 모바일이나 특정 브라우저에서는 syntex highlight 가 지원이 안되어 textbox 에 소스가 나올 수도 있음.
Scenario
1. User 에서 ion("/dev/ion")을 open ==> alloc ==> share 순으로 진행하여 공유할 ion buffer 를 생성 및 공유 준비
2. User application 에서 공유하려는 kernel driver("/dev/vion_dev")를 open : 여기서 vion_dev 는 내가 만든 device driver 이다.
3. User 에서 만들어진 shared_fd 를 vion_dev driver 로 전달.
4. Kernel driver 에서 받은 shared_fd 를 이용해 import 하여 메모리를 공유할 준비.
5. User 영역에서 특정 string("ion buffer test magic string") 을 vion_dev driver 에 write 를 요청
6. Kernel driver 에서 shared buffer 에 magic string을 write
7. User 에서 mmap 으로 shared buffer 의 내용 확인.
먼저 User application을 살펴 보면,
아래의 ion_XXX interface 들은 https://android.googlesource.com/platform/system/core/+/android-4.1.2_r1/libion/ion.c 를 살펴 보면 내용을 볼 수 있다.
- User-space application
주석을 참조하고 Android ION 에 대한 내용의 글을 보면 이해가 쉬울 듯 한데..
- Kernel-space driver
참고 할 정도의 code는 되지 않을까? ^^
'Linux Kernel Study' 카테고리의 다른 글
[번역] Anatomy of a Program in Memory (0) | 2013.04.05 |
---|---|
[번역] The Kernel Boot Process - 32bit X86 (2) | 2013.04.01 |
[LWN] The Android ION memory allocator - 번역 (0) | 2013.03.25 |
[번역] How Computers Boot Up (0) | 2013.03.13 |
lists.infradead.org Mailing Lists (0) | 2011.09.28 |