질문: 가젯 자체에서 호스트 컴퓨터에 가젯이 연결된 시기를 어떻게 감지할 수 있나요?
배경: g_mass_storage
Linux 커널 모듈은 USB OTG 포트를 통해 대용량 저장 장치를 제공하는 데 사용될 수 있습니다. 나는 이것을 사용하여 USB를 통해 Linux와 이 모듈을 실행하는 장치로 파일을 전송할 수 있도록 하고 싶습니다.
불행하게도 이것은 내 모듈에서 직접 지원되지 않으며 클라이언트와 호스트 모두에서 스토리지에 액세스하는 것은 기껏해야 불안정할 가능성이 높습니다. 하지만 USB 호스트가 연결되지 않은 경우에만 저장소에서 읽거나 쓰도록 Linux 시스템(USB 클라이언트)을 제어하면 이 문제를 피할 수 있습니다.
매우 순진한 해결책은 dmesg
출력을 구문 분석하는 것입니다. 적어도 삽입된 시기는 분명하게 알 수 있지만 제거된 시기는 알 수 없습니다.
내 연구에 따르면 /sys/
거기 어딘가에 가젯 상태 플래그가 있는 것으로 나타났습니다.이 체인을 보세요, 하지만 어디에 있는지 잘 모르겠습니다.
대신 가젯을 Linux 시스템에 연결하면 사용할 수 있다는 것을 알지만 udev
모니터 udev
에는 가젯 자체의 상태가 표시되지 않는 것 같습니다.
답변1
/sys/class/udc/YOUR_UDC/state를 살펴보세요.
당신은 또한 볼 수 있습니다https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-udcsysfs API에 대한 자세한 내용.