免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2293 | 回复: 0
打印 上一主题 下一主题

求助 linux 下线程优先级的问题 及可抢占内核 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-03 17:58 |只看该作者 |倒序浏览
pthread_attr_t  attr;
        int pocily;
        int ret;   

        pthread_attr_init(&attr);
        if (ret =pthread_attr_setschedpolicy(&attr, SCHED_FIFO)) {
                printf("set ched policy failed --  %s \n", strerror(ret));
                return -1;
        }

        if (pthread_attr_getschedpolicy(&attr, &pocily)) {
                printf("set ched policy failed --  %s \n", strerror(ret));
                return -1;
        }
         
        if (pocily == SCHED_FIFO) {
                printf(" fifo .\n");
        } else if (pocily ==  SCHED_RR) {
                printf(" rr.\n");
        } else if (pocily ==  SCHED_OTHER) {
                printf("other.\n");
        } else {
                printf("unkown.\n");
        }


我想更改一个线程的优先级; 上述代码都在超级用户下运行的,

1.  上面这段代码在我的FC7 (kernel 2.6.21)下面运行, 得到的pocily 不是SCHED_FIFO\SCHED_RR \ SCHED_OTHER中的任何一个,而是一个随机数,(也就是输出"unknown"), 这是为什么?看样子pthread_attr_getschedpolicy没有正常工作,但是调用又没有失败。

2.把这段代码放到 arm-linux 2.6.21intel xscale monahans pxa310 平台下运行,无论用pthread_attr_setschedpolicy怎么设置,最后得到
的pocliy 都是SCHED_OTHER,  然后用 sched_get_priority_max(pocliy) 得到为0;
是不是我这个内核不支持SCHED_FIFO或者SCHED_RR呀? 那我要怎么改呢?
如果要重编内核的话,改内核选项中的哪一项?

3. 是不是在编内核的时候一定得把 Preemptible Kernel (EXPERIMENTAL) 打开,才能支持 SCHED_FIFO 和 SCHED_RR?

我强烈需要更改我程序中一个线程的优先级,先谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP