안녕하세요. 진저그레드 기반 210이라는 타겟머신을 ICS에 포팅하고 있는데요..

커널쪽 포팅하다가 막히는 부분이 생겨서 이렇게 글을 남깁니다.

문제는 adb쪽이 enabling이 안되는 문제인데요. 마운트가 안됐는지 정상적으로 드라이버가 등록이 안된건지 모르겠습니다.

그래서 문제없이 컴파일되는 210 소스대로 ICS에 포팅하려고 합니다.


210소스에서 adb를 초기화해주는 f_adb.c파일을 보면,

static int __init init(void)

{

printk(KERN_INFO "f_adb init\n");

android_register_function(&A); 

return 0;

} //이 함수를 통해 아래 A구조체(임의의이름으로 표시) 내에 멤버함수들이 regestry됩니다.

...

static const struct file_operations A = {

.owner =   THIS_MODULE,

.open =    adb_enable_open,

.release = adb_enable_release,

};

...

로그를 보면 아래 빨간색 부분이 정상적으로 출력되는 것을 보아 호출이 되긴하는데, 

이 멤버함수가 언제 호출되는지 궁금합니다. grep을 통해서도 찾아봤지만 직접호출되는 부분이 없었는데요. 커널에서 자동호출되는 부분도 아닌 거 같습니다.

static int adb_enable_open(struct inode *ip, struct file *fp)

{

if (atomic_inc_return(&adb_enable_excl) != 1) {

atomic_dec(&adb_enable_excl);

return -EBUSY;

}


printk(KERN_INFO "enabling adb\n");

android_enable_function(&_adb_dev->function, 1);


return 0;

}


도움될만한 내용 있으면, 부탁드립니다!