2011-10-24 4 views
0

는 내가 일하고 커널 모듈에 정의 된 대기 큐가있다.은 cleanup_module 리눅스 커널

내 cleanup_module에서 스레드 종료를 알리는 변수를 설정 한 다음 sleep_on (& WaitQ)을 cleanup_module의 마지막 줄로 지정합니다. 그런 다음 스레드 루틴에서 wake_up (& WaitQ)은 cleanup_module에 설정된 변수가 true 일 때 호출되고 complete_and_exit는 스레드를 종료합니다.

내 질문입니다. sleep_on (& WaitQ)이 호출 될 때 WaitQ에 추가되는 내용. 모듈 전체입니까, 아니면 스레드가 init_module에서 시작 했습니까?

답변

1

아니요 - 대기열에 추가되는 것은 모듈 제거를 유발 한 "rmmod"프로세서의 스레드 (작업)입니다.

+0

죄송합니다. 나는이 모든 것을 처음 접했으므로 완전히 이해하지 못했습니다. 그래서 제 경우에 sleep_on이 호출 될 때 정의 된 루틴은 여전히 ​​작동하고 있으므로 실제로이 경우에 무엇이 잠 들어 있습니까? – sam

+0

cleanup_module이 호출 된 시스템 호출을 호출 한 "rmmod"유틸리티의 태스크. – gby

+0

ok sleep_on이 루틴을 기다리기 위해 작업을 잠자기 상태로두기 위해 호출됩니다. 루틴은 wake_up (& WaitQ)을 호출하여 작업을 시작하여 작업 수행을 끝내고 스레드 종료를 완료하고 종료 할 수 있음을 알립니다. 이 후에 모듈이 제거됩니다. 이 소리가 맞습니까? – sam