hrtimer handler에서 sched_setscheduler 호출
글쓴이: whacker / 작성시간: 금, 2011/01/07 - 12:39오후
커널모듈 프로그래밍을 하고 있습니다.
모듈에서 hrtimer를 등록해 그 특정시간마다
모듈에 저장되어있는 특정한 태스크의 우선순위를 높여주고자 합니다.
그래서 hrtimer handler에서
export되어있는 sched_setscheduler 함수를 호출합니다. (유저영역에서 사용하는 sched_setscheduler와 다르게 task_struct를 인자값으로 받습니다.)
그런데 여기서 sched_setscheduler만 수행하게 되면 시스템이 다운되어 버립니다. 제 생각에는 데드락에 빠지는 문제인것 같은데
무엇이 문제를 일으키는지 모르겠습니다.
scheduler(); 함수또한 마찬가지 증상을 발생시키구요
현재 컨텍스트와 관련된 문제인것 같다는 생각이 드는것이
ioctl을 이용하여 유저프로세스가 컨텍스트를 가진상태에서 위 두 함수를 실행하면 문제없이 실행이 됩니다.
제가 무엇을 놓치고 있는것일까요?
Forums:
interrupt context
해당 함수는 interrupt context에서 호출하면 안 됩니다.
workqueue를 이용해 보세요..
아 감사합니다.
혹시 무엇때문에 interrupt context에서 호출하면 안되는지 알수 있을까요?
workqueue를 이용한다고 했을때 이것이 softirq이기 때문에 즉 이것은 kernel context(?)이고
interrupt context가 끝나는 시점에 softirq요청이 있는지 체크하기 때문에 컨텍스트 문제와 응답성 문제를 해결 할 수 있다고 말씀하시는게
맞는건지요? ^^;
spin lock으로 인한 deadlock이 발생할 수 있기 때문인 듯 합니다.
댓글 달기