기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요. 

현재 mountservice와 vold를 가지고 개발 중에 별 문제는 없습니다만, 

한 가지 의문점이 생겨 아시는 분이 있으시면 공유부탁드리겠습니다. ㅠ.ㅠ


통상적으로 mountservice를 사용 시에 서비스매니저를 통해 아래와 같이 IMountService로 접근합니다.


IMountService service = IMountService.Stub.asInterface(ServiceManager.getService("mount"));

service.xxxxx();


IMountService.Stub.asInterface()는 IMountService.Stub.Proxy()를 반환하게 되는데요.


여기에 정의되어 있는 메쏘드들을 보면 다 IMountService.cpp에 있는 함수들을 원격호출하고 있습니다. 


IMountService.cpp에 정의된 함수들은 다시 Binder IPC를 통해 


IMountService.Stub의 onTransact로 연결되고 


실제로 MountService.java의 메쏘드들이 호출되는 것으로 알고 있습니다. 


궁금한 점은 c++ 쪽에 transaction을 처리하지 않고 IMountService에서 MountService로


바로 연결되는 경우가 있을까요?


현재 안드로이드 ICS 소스 중에 IMountService.java / IMountService.cpp / MountService.java 파일을 보면


IMountService.java에서 transaction 선언하고 분명히 remote.transact()로 날리는데 cpp 파일에는 


해당 transaction처리가 없고 mountservice.java에서 바로 호출되어 처리가 잘 되는 경우가 있어


궁금해서 그렇습니다. 


제가 잘못 이해했을 수도 있으니 지적 부탁드립니다.^^;


민이아빠

2012.05.16 02:49:53
*.192.179.62

웹브라우저가 이상해서...글이 여러 번 등록되었네요.ㅠ.ㅠ 죄송합니다.

관리자

2012.05.16 06:29:11
*.127.19.87

aesop server가 고물이라 좀 그런 경우가 나오나 보네요.

고도리

2012.05.17 10:03:54
*.127.19.87

저도 소스를 함 봐야하나....


binder client(java) -> binder service(java)

                                          |

                                         V

                                native code 


로 동작되는 경우도 있으니, 함 코드를 봐 봐야할 듯 합니다.


위와 같은 경우는 java에서 binder service를 동작시키면서 C++ 코드를 로딩하는 경우일 지도...^^

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인