블럭 모드 질문입니다. (interruptible_sleep_on)
글쓴이: lovejin0309 / 작성시간: 화, 2005/05/31 - 5:23오후
안녕하세요. 디바이스 드라이버를 작성중입니다.
문제가 조금 있네요.
응응 프로그램에서는 무한 루프를 돌면서 read()함수를 호출합니다.
응용 프로그램에서 read()를 호출하면 디바이스 드라이버에서 일련의 동작을 수행하는데, 그 수행이 모두 완료되기 전에 응용프로그램에서 다시 read()를 호출하는 것으로 보입니다.
그래서
디바이스 드라이버의 read()가 시작되면 프로세스의 동작을 일시 중지 시키고 모든 수행이 끝나면(return 할때) 프로세스의 동작을 다시 시작시키도록 해야 할 듯 합니다.
책을 뒤져 보다 보니까
interruptible_sleep_on 이라는 함수를 이용하여 할 수 있다고 하더군요.
디바이스 드라이버의 read()가 시작될 때 프로세스를 일시 중지시키고
처리가 모두 끝나면 프로세스의 동작을 다시 시작해야 하는데
어떤 함수를 이용해야 하나요?
interruptible_sleep_on -> 일시 중지 함수
xxxxxxxxxxxxxxxxxxxxx -> 재시작함 수
부탁 드려요.
(혹시 interruptible_sleep_on을 사용한 다음 return을 사용해서 동작을 끝내면 자동으로 프로세스(app)가 재 동작하는 건지요?
Forums:
wake_up_interruptible()
wake_up_interruptible() 함수를 사용하면 됩니다.
interruptible_sleep_on() 함수가 호출된 시점에서
현재 프로세스는 제어권을 반납하고 sleep 하기 때문에
(wake_up_interruptible() 과 같은 함수에서 프로세스를 깨워줄 때 까지)
이후의 부분들은 실행되지 않습니다.
댓글 달기