2011-11-09 3 views
2

나는 리눅스 커널 모듈의 대기열에 task_struct을 어떻게 추가하는지 궁금했다. 예를 들어 WaitQueue에 작업이라는 task_struct을 추가하려면이 기능을 수행하기 위해 어떤 기능을 사용할 수 있습니까?대기열에 추가하기

대기열에 현재 모듈을 추가하는 방법을 알고 있지만 다른 실행중인 프로세스를 대기열에 추가하고 싶습니다. 예를 들어, vi가 실행 중이었던 경우 대기 대기열에 추가해야합니다.

+0

'항목'이 무엇인지 이해할 수 없다는 의문을 분명히해야합니다. 사용하려고하는 API와 수행하려는 API에 대해 언급하십시오. –

+0

기본적으로 대기열에 task_struct를 추가하는 방법을 알아야합니다. – steve

답변

3

대기 큐에서 wait_event*() 기능을 사용하여 현재 작업 블록을 만들 수 있습니다. this tutorial, '6.2.2. 단순한 잠 '.

+0

ok, 대기 때문에 대기중인 대기열이 내 모듈에 정의되어 있습니다. 'wait_event_timeout (wait, somecondition, 30 * HZ)'(30 초가 지나면 깨우는 과정이 필요하다.)와 같이 호출하면된다. 이 대기열에 추가 할 특정 작업이 무엇인지 어떻게 알 수 있습니까? – steve

+0

'wait_event *()'를 호출하는 작업, 즉 'current' 작업 만 차단합니다. 즉, 해당 대기열에서 작업을 잠자기 상태로 만들려면 실행 컨텍스트를 확보해야합니다. 가장 표준적인 방법은'/ proc' 또는'/ sys' 파일을 구현하고 프로그램이 그것을 열거 나 읽고 쓸 수있게하는 것입니다. –

관련 문제