c or linux

[공부중] bottomhalf & work queue

'김용환' 2011. 4. 21. 14:49


운영체제에 사용.
interrupt handler 에서 너무 많은 일을 하지 않게 하기 위해서 사용.
즉, 순차적인 구간 중에.. copy 뜨는 부분을 지연하고 싶은 경우가 있다.
이를  bottomhalf라고 한다.

지연하지 않아도 되는 것은 top half 라고 한다.

 linux 2.6에서는 2.4의 bottomhalf 기능을 없애버렸다.

대신 work queue를 쓰면 된다. 우선 순위 높힌 커널 thread로 실행한다.


DECLARE_WORK(work_queue, call_workqueuefunc, NULL);

void call_workqueuefunc(void *data) {
}

workqueeu_interrupt(..) {

   schedule_work(&work_queue);
   wake_up_interruptible(&waitqueue);
}