ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • _IO , _IOR , _IOW , _IORW
    Android 2010. 7. 21. 20:56
    Android Framework 단을 공부를 하던중, binder의 개념이 나왔다.그래서 안드로이드용으로 포팅된 커널단을 확인하였다.
    /drviers/staging/android/binder.h 를 확인했더니, _IOR 형태로 define 문이 보인다.

    include/asm-arm/ioctl.h 에 매크로가 정의 되어있다..

    _IO(type, nr) :: 데이터 전송 없음
    _IOR(type, nr, size) :: 디바이스로 부터 데이터를 읽어옴
    _IOW(type, nr, size) :: 디바이스로 데이터를 전송
    _IORW(type, nr, size) :: 양방향 전송

    ** type
    매직번호. 한개의 번호를 정하고 드라이브 전체에서 이 값을 사용한다.

    ** nr
    순서에 따른(차례로 붙이는) 번호

    ** size
    관련된 데이터의 전송의 크기
    ===========================================================================================================
    내용추가
    위에 나온 _IO,_IOR,_IOW,_IOR 은 모두 매크로 함수이다. 이렇게 매크로 함수를 만드는 이유에는 디바이스 드라이버의 ioctl 함수에서 세번째 인자로 쓰이는 unsigned int cmd 의 변수에서 값을 뽑아 내기 위함이다.

    ret = ioctl(int fd, int request, char *argp)  을 호출하면, 드바이스 드라이버단의 아래 함수.
    int XXX_ioctl(struct inode, struct file * filp, unsigned int cmd, unsigned long arg) 함수가 호출되게 된다.
    그럼 새번째로 넘어왔었던, cmd 에서 비트를 잘라서, 값을 뽑아 낼때 사용할때, 매크로 함수가 사용되는 것이다.

    'Android' 카테고리의 다른 글

    Activity Life Circle (생명주기)  (1) 2010.08.06
    The Java Native Interface  (0) 2010.08.03
    안드로이드 디렉토리 구조  (0) 2010.07.19
    Native Library 따라가보기  (0) 2010.07.15
    ubuntu 9.10 에서 android full source 빌드  (0) 2010.07.14
Designed by Tistory.