我的系统使用 Arm cortexa7@1GHz 和来自 CIP 社区的实时补丁集 Linux 4.4.138-rt19:v4.4.138-cip25-rt19
我已经运行了一个 prio-preempt.c 来验证我系统上的优先级抢占。但是我遇到了一个问题:系统可能只运行了少于 27 个创建线程的线程。
关于理论方面,ltp app prio-preempt 创建了 27 个具有不同优先级的 worker_threads,N 个 busy_threads(N:取决于 CPU 的数量,在我的情况下 N = 2)具有高优先级,以及 master_thread(最高优先级)。
将应用程序部署到板上时,threads_running始终低于 27,而create_fifo_thread(worker_thread,i,...)成功创建了 27 个 worker_thread(s)。我在 cortexa15@1.5GHz 上运行了上面相同的程序,问题没有发生。
为了进一步了解,我认为问题可能来自 Linux RT 调度程序在bmutex锁被释放后无法唤醒睡眠线程。
有人对我有同样的问题吗?请分享你的想法。