в ядре Linux, правильный ли способ создать kthread в реальном времени?

В ядре Linux расписание потоков бывает как в реальном времени (например, SCHED_FIFO), так и в обычном (SCHED_NORMAL).

Если я хочу создать поток в реальном времени, как это сделать? Я думаю, как:

1, kthread_create

2, дайте потоку планировщик в реальном времени

3, назначьте приоритет в реальном времени

Подходит ли это для kthread в реальном времени?


person Bill Wang    schedule 16.04.2013    source источник


Ответы (1)


В самом потоке вызовите:

struct sched_param param = { .sched_priority = prio };
sched_setscheduler(current, SCHED_FIFO, &param);

где prio — желаемый приоритет.

person caf    schedule 17.04.2013
comment
Извините, но меня очень не впечатлил этот ответ: синтаксис того, как установить приоритет kthread, действительно не отвечает на поставленный вопрос. Для получения потока реального времени требуется значение prio, равное 1, и у нас нет здесь ответа на вопрос, как это сделать в модулях, не подпадающих под GPL (поскольку sched_setscheduler() — это EXPORT_SYMBOL_GPL). - person duanev; 02.09.2016
comment
Все значения приоритета в рамках политики планирования SCHED_FIFO задаются в режиме реального времени. - person caf; 27.04.2017