首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >debian发行版上的RTAI -不确定为什么这个C线程代码(实现了一个简单的计数器)会导致linux崩溃

debian发行版上的RTAI -不确定为什么这个C线程代码(实现了一个简单的计数器)会导致linux崩溃
EN

Stack Overflow用户
提问于 2014-10-18 01:47:56
回答 1查看 65关注 0票数 0

我有这段代码,它实现了一个简单的计数器,并通过thread_code (void *arg)函数中的printk将其写入日志文件,然后通过__init rtcode_init( void )在实时线程中实现它。这是一道考试题。

我不确定为什么代码会导致linux崩溃。是不是因为静态函数,因为如果访问函数的内存地址被多个线程访问,可能会导致争用情况?如果有人能指出代码的错误所在,那就太好了。

代码语言:javascript
复制
#define ARG 0
#define STACK_SIZE 1024
#define PRIORITY RT_SCHED_HIGHEST_PRIORITY
#define USE_FPU 1
#define NOW rt_get_time()
#define PERIOD nano2count(1000000)

/* Store data needed for the thread */
RT_TASK thread_data;

void thread_code(void *arg)
{
   int counter = 0;
   while (1) {
      counter += 1;
      printk("Counter = %d\n",counter);
   }
   return 0;
}

static int __init rtcode_init(void)
{
    rt_set_periodic_mode();
    start_rt_timer(PERIOD);
    rt_task_init(&thread_data, thread_code, ARG, STACK_SIZE, PRIORITY, USE_FPU, NULL);
    rt_task_make_periodic(&thread_data, NOW, PERIOD);
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2014-10-18 01:57:08

这段代码创建了一个具有实时优先级的任务,该任务不断运行。如果您的系统只有一个CPU核心,这将阻止其他任何东西运行,从而使系统不可用。准确地说,我不认为它会“崩溃”,但它会停止对输入的响应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26430633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档