디바이스 드라이버 sleep + interrupt

읏짜의 이미지

캐릭터 디바이스 드라이버를 만들고 있는데요

디바이스 내 어떤 함수에서 어떤 조건에 sleep을 하고, 인터럽트가 발생하면 깨워주는 동작을 구현하려면 어떤식으로 해야할까요,,?

참고할만한 자료를 못찾아서 참고할 링크만이라도 주시면 감사하겠습니다ㅠㅠ

세벌의 이미지

익명 사용자의 이미지

여러가지 방법이 있는데,,,

https://elixir.bootlin.com/linux/v5.14/source/include/linux/wait.h#L314
wait_event(), wait_event_...() 등, wait_event 류의 함수들이 있습니다.

다른 device driver 들의 구현내용들을 찾아보면 배울것들이 많이 있습니다.

시간은 오래걸리지만, 위 언급된 오렐리닷컴의 문서를 -세번 정도- 정독 하는게 올바른 길이긴 합니다.