当前位置:  技术问答>linux和unix

为什么在scheduler中使用printk就死机???

    来源: 互联网  发布时间:2016-08-23

    本文导语:  本帖最后由 piaopiaolanghua 于 2010-04-30 16:49:35 编辑 我在task_struct中增加了group_flag 标记位,使用系统调用设置了group_flag=1。 在内核中,进程切换的时候输出调试信息: printk("[MYINFO][STOP ]n");  //为什么么加上这句就死机...

本帖最后由 piaopiaolanghua 于 2010-04-30 16:49:35 编辑
我在task_struct中增加了group_flag 标记位,使用系统调用设置了group_flag=1。
在内核中,进程切换的时候输出调试信息:
printk("[MYINFO][STOP ]n");  //为什么么加上这句就死机,注释掉就没问题了。


死机的现象是,输出了两句“[MYINFO][STOP ]”之后,
cpu占有率就接近100%了,用户界面就没响应了。

是不是那个位置不能使用printk呢,还是引起死锁,或者其他什么原因呢?
我使用的内核是2.6.20.21。

希望大家多给指点指点啦:-),要是你也碰到那就最好,没碰到过的,给点建议也好!


schuler()函数中修改的地方如下:


switch_tasks:
if (next == rq->idle)
schedstat_inc(rq, sched_goidle);
prefetch(next);
prefetch_stack(next);
clear_tsk_need_resched(prev);
rcu_qsctr_inc(task_cpu(prev));

update_cpu_clock(prev, rq, now);

prev->sleep_avg -= run_time;
if ((long)prev->sleep_avg sleep_avg = 0;
prev->timestamp = prev->last_ran = now;

sched_info_switch(prev, next);
if (likely(prev != next)) {
next->timestamp = next->last_ran = now;
rq->nr_switches++;
rq->curr = next;
++*switch_count;

/* ===================[Added]===================== */

if ((prev->group_flag == 1) {
//printk("[MYINFO][%d][STOP ] at %lldn", prev->pid, now);
printk("[MYINFO][STOP ]n"); //为什么么加上这句就死机
}

/* ===================[Added]===================== */

prepare_task_switch(rq, next);
prev = context_switch(rq, prev, next);
barrier();
                  
                 // 省略了……


用户态调用如下:

#include 

/*
#define __NR_get_group_id 320
#define __NR_set_group_id 321
#define __NR_get_group_flag 322
#define __NR_set_group_flag 323
#define __NR_testcall 324
*/

int main()
{
syscall(323, getpid());

int i;
for(i = 0; i 

    
 
 

您可能感兴趣的文章:

  • Cocos2d-x Schedule定时器的使用实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util类timer的类成员方法: schedule定义及介绍
  • node-schedule
  • java命名空间java.util.concurrent类scheduledthreadpoolexecutor的类成员方法: schedule定义及介绍
  • DS Scheduler
  • java命名空间java.util.concurrent接口scheduledexecutorservice的类成员方法: schedule定义及介绍
  • 有人对linux scheduler有研究的?
  • tasklet_schedule疑问
  • RedHat7.2环境下schedule怎么设置!
  • Resource Scheduler
  • 员工工作日程系统 Employee Scheduler
  • 画出schedule()的实现流程图
  • linux 2.6.35.4 内核中已没有netif_rx_schedule()函数,那替代函数是啥?
  • Java任务调度 Fulcrum Scheduler
  • 任务调度分配器 taobao-pamirs-schedule
  • 关于中断处理的问题:为什么schedule()后不直接跳到进程执行?而要再判断一次?
  • 如果有三个线程在Waiting(Ready to Run)状态,其优先级分别为5,6,7,当Thread scheduler调度时,那个先运行?
  • 大虾留步,“BUG: scheduling while atomic:” 是怎么回事啊?
  • Another question about process schedule and signal process
  • node-schedule iis7站长之家
  • MySQL Event Scheduler(事件调度器)
  • MySQL计划任务(事件调度器) Event Scheduler介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3