在Linux内核中,创建实时kthread的以下方法是不是正确?

Posted

技术标签:

【中文标题】在Linux内核中,创建实时kthread的以下方法是不是正确?【英文标题】:in Linux kernel, is the following way right to create a real-time kthread?在Linux内核中,创建实时kthread的以下方法是否正确? 【发布时间】:2013-04-09 03:47:15 【问题描述】:

在Linux内核中,线程调度是实时的(如SCHED_FIFO)和普通的(SCHED_NORMAL)。

如果我想创建一个实时线程,该怎么做?我猜是这样的:

1,kthread_create

2、给线程一个实时调度器

3、分配实时优先级

这对于实时 kthread 是否合适?

【问题讨论】:

【参考方案1】:

在线程本身中,调用:

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

prio 是您想要的优先级。

【讨论】:

对不起,但我对这个答案很不满意:如何设置 kthread 优先级的 syntax 确实没有回答所述问题。获取实时线程需要 prio 值 1,对于如何在非 GPL 模块中执行此操作,我们没有任何答案(因为 sched_setscheduler() 是 EXPORT_SYMBOL_GPL)。 SCHED_FIFO 调度策略下的所有优先级值都是实时的。

以上是关于在Linux内核中,创建实时kthread的以下方法是不是正确?的主要内容,如果未能解决你的问题,请参考以下文章

如何用kthread实现线程互斥?

RK3399平台开发系列讲解(内核入门篇)1.36Kthreadd线程

在linux内核中,free_irq会把系统置于危险之中吗?

如何将数据传递给 kthread_run

添加内核线程

Linux进程管理 (篇外)内核线程简要介绍