그거 시스템콜 래퍼(wrapper) 함수라, 바디는 봐봤자 쓸모 없고(기억엔 걍 define 되어있었던 것 같기도.. -_-), 드라이버 소스 어딘가 정의가 있을 텐데 이름이 아마 ioctl 앞뒤로 뭔가 붙어 있을 겁니다요. 소스 인사이트로는 파악할 길이 없지요.
워미.(115.23)2011-08-20 17:01
둘다 눌러봐
∫ 2t dt=t²+c(bab2min)2011-08-20 17:02
저 위는 안드로이드 소스라서 extern 으로 돼있는 __ioctl 이 검색해도 안나오네요 대신 ioctl 인자 값으로 돼있는 SNDRV_PCM_IOCTL_START 가 커널소스 뒤져보니 나오네요 그런데 시스템콜 래퍼 함수가 뭔가요? ^^;
영광굴비(116.42)2011-08-20 17:06
대게 시스템 함수로 알려져 있고(차이는 좀 있습니다), 단순하게 시스템 콜 번호랑 파라미터를 레지스터에 저장하고 인터럽트 0x80번을 걸어서 트랩에 빠집니다. 해당 인터럽트 서비스 루틴은 일단 커널 모드로 스위칭 하고(요 때 문맥 교환 발생), 레지스터에 있는 시스템 콜 번호를 이용해 해당 루틴을 수행하게 되는데, 요 경우엔 sys_ioctl() 일테고, 실질적인 코드는 드라이버의 xxx_ioctl() 함수에 연결됩니다. 고로 그 함수가 뭘 하는 지 알려면 xxx_ioctl() 함수를 봐야 합니다요. 도움이 될랑가 모르겠지만, 참고자료요. http://sexysweetie.tistory.com/22
그거 시스템콜 래퍼(wrapper) 함수라, 바디는 봐봤자 쓸모 없고(기억엔 걍 define 되어있었던 것 같기도.. -_-), 드라이버 소스 어딘가 정의가 있을 텐데 이름이 아마 ioctl 앞뒤로 뭔가 붙어 있을 겁니다요. 소스 인사이트로는 파악할 길이 없지요.
둘다 눌러봐
저 위는 안드로이드 소스라서 extern 으로 돼있는 __ioctl 이 검색해도 안나오네요 대신 ioctl 인자 값으로 돼있는 SNDRV_PCM_IOCTL_START 가 커널소스 뒤져보니 나오네요 그런데 시스템콜 래퍼 함수가 뭔가요? ^^;
대게 시스템 함수로 알려져 있고(차이는 좀 있습니다), 단순하게 시스템 콜 번호랑 파라미터를 레지스터에 저장하고 인터럽트 0x80번을 걸어서 트랩에 빠집니다. 해당 인터럽트 서비스 루틴은 일단 커널 모드로 스위칭 하고(요 때 문맥 교환 발생), 레지스터에 있는 시스템 콜 번호를 이용해 해당 루틴을 수행하게 되는데, 요 경우엔 sys_ioctl() 일테고, 실질적인 코드는 드라이버의 xxx_ioctl() 함수에 연결됩니다. 고로 그 함수가 뭘 하는 지 알려면 xxx_ioctl() 함수를 봐야 합니다요. 도움이 될랑가 모르겠지만, 참고자료요.
http://sexysweetie.tistory.com/22
조금 복잡하지만 감사합니다 ^^