저의 질문은 다음과 같구요 ...
INIT_DELAYED_WORK_DEFERRABLE(&di->monitor_work, battery_work);
schedule_delayed_work(&di->monitor_work, 0);
디바이스드라이버내에서 워크큐 관련 내용인데요
위의 구문이 디바이스드라이버내에서 어떤 작업이 진행되게 하는지 이해가 안 가는데 자세히 설명 좀 부탁드립니다 ...
고도리님의 답변은 다음과 같읍니다 ...
workqueue를 공부하려면 interrupt의 bottom half를 공부하셔야 합니다.
workqueue는 bottom half mechanism으로 탄생되기는 했지만, 특성상 여러 용도로 사용을 하고 근래에는 timer
대신에 많이 사용을 합니다.
어떤 event 발생시 잠시 기다렸다 worker thread가 관련된 함수를 실행시켜준다라고 생각하시면 됩니다.
schedule_work관련 함수들이 관련된 함수를 실행시키는 함수입니다.
그럼 여기서 한가지 질문 입니다 ...
위에서 battery_work 함수는 타이머의 일정주기 마다 계속 실행된다는 의미 인지요 ?
타이머의 주기는 위의 질문에서 어디쯤에서 타이머 세팅을 하는지 알수 있을까요 ?
어떤 event 발생시 잠시 기다렸다 worker thread가 관련된 함수를 실행시켜준다라고 생각하시면 됩니다.
이 부분이 잘 이해가 안가는데요 ... 실제 구현 예를 들어주시면서 좀 더 알기쉽고 자세한 설명 부탁드립니다 ...