예를 들어
호스트 컴퓨터가 있는 상태에서 (리눅스)
usb storage device 를 꽂으면 (storage driver 는 로딩 된 상태로 가정)
제일 최초에 어떻게 커널이 이 device 를 인식하게 되나요?
제가 몇가지 예상을 해봤습니다.
1.usb device 자체에서 host 로 메세지를 보낸다.
2.usb host 에서 주기적으로 탐지 명령어 같은걸 보낸다.
이 두가지 중 하나인 것 같은데
제가 usb 에 대해서 아는 것이 정말 하나도 없는 상태라
device 꽂으면 커널에서 어떻게 인식하고 어떤 루틴이 수행되는지
알려주시면 정말 감사하겠습니다.
작은 정보도 저에겐 큰 도움이 ㅜ_-
감사합니다. 즐거운 주말 보내세요.
--------------------------------------------------
자답입니다.
drivers/usb/core/hub.c 에서 kernel 스레드를 생성하여
hub_thread() 등록하여 돌립니다.
hub_thread() 안의 hub_events() 에서 감지하여
connect_change 변수의 값을 세팅하며
그 후 hub_port_connect_change()함수가 호출되네요.
커널 버젼은 2.6.16
답변 주신분들 감사합니다~!!
저도 usb는 잘 모르는데다, 공부한지도 몇년이 되어서....^^