免费注册 查看新帖 |

Chinaunix

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

调用nanosleep后,系统就再也没有反应了,会是啥原因? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-12 09:07 |只看该作者 |倒序浏览
ffffffff7ddcd390 nanosleep (ffffffff7fffd800, 0)
000000010006ae84 mmsg_expired_get_run_cpu_pef (466de890, 0, ffffffff7df02000, 0, 51, ffffffff7b90043 + 3c4
000000010006afb4 mmsg_expired_update_cpu_state (466de890, 0, ffffffffffffffff, fffffffffffffff8, ffffffffffffffe0, ffffffff7fffdc91
) + 10
0000000100067a88 mmsg_expired_msg (0, 1, 2710, 0, 0, 0) + 58
0000000100068f30 mmsg_expired_timeout_func (ffffffff7fffdf50, ffffffff7fffdf50, a, 100220f58, ffffffff7fffdf28, ffffffff7fffde8 +
40
00000001000f74e0 dpl_reactor_handle_events (ffffffff7fffdf50, a, ffffffffffffffff, fffffffffffffff8, 0, ffffffff7fffe019) + 1c8
0000000100069654 mmsg_expired_main (7, 0, ffffffff7fffe4f8, 0, 0, 100069524) + 130
00000001000b9654 active_server_child_startup (ffffffff7fffe380, 7, 0, 0, ff00, 80808080) + ec
00000001000b97a0 dpl_active_server_startup (ffffffff7fffe380, 0, 6, 100220ff0, ffffffff7fffe348, ffffffff7fffe380) + cc
00000001000b97e8 dpl_active_server_run (ffffffff7fffe380, ffffffffffffffff, e, 5, 100069524, 0) + 20
0000000100069950 mmsg_expired_module_main (1003cc140, e, 0, fffffffffffffff8, 4, 0) + 198
00000001000c0cd8 core_server_plus_module_startup (ffffffff7fffec00, 1003c5b30, e, 0, ffffffff7df02000, 0) + 1d0
00000001000c0e60 dpl_core_server_plus_startup (ffffffff7fffec00, 1000c0750, 31, 1000e0c34, ffffffff7dee4000, 1000) + d4
00000001000c0f60 dpl_core_server_plus_run (ffffffff7fffec00, ffffffffffffffff, ffffffff7fffe7f0, 14, 0, 27) + d8
00000001000247d8 mmsg_run (0, 4, 0, 10036f534, ffffffff7dee4000, 1) + 148
00000001000245c4 main (1, ffffffff7ffff6a8, ffffffff7ffff6b8, 100370660, 100000000, ffffffff7df00140) + 3b0
00000001000240bc _start (0, 0, 0, 0, 0, 0) + 7c

论坛徽章:
0
2 [报告]
发表于 2007-06-12 09:35 |只看该作者
x86-64上的? 什么版本的内核? 方便把调用nanosleep的那部分代码贴出来吗?

论坛徽章:
0
3 [报告]
发表于 2007-06-12 10:03 |只看该作者
solaris系统
频繁调用如下代码
        if( (kstat_fd = kstat_open()) == NULL){

                printf(" kstat_open error!\n");

                return -1;

        }



        for( j = 0; j < 2; ++j){

                cpu_num = 0;

                kid= kstat_chain_update(kstat_fd);

                if( kid < 0){

                        printf(" kstat_chain_update error!\n");

                        return -1;

                }

                for( ksp = kstat_fd->kc_chain; ksp != NULL; ksp = ksp->ks_next){

                        if( ksp->ks_flags & KSTAT_FLAG_INVALID)

                                continue;

                                if (strcmp(ksp->ks_module, "cpu_stat") == 0){

                                        cpu_num++;

                                        if( (ksp->ks_type != KSTAT_TYPE_RAW) || \

                                                (ksp->ks_data_size != size_cs) || \

                                                (-1 == kstat_read( kstat_fd, ksp, (void *)&cs))){

                                                        printf(" Could not read cpu_stat.\n");

                                                        return -1;

                                        }

                                        for (i=0; i<CPU_STATES; i++){

                                          cpu[ j][ i]    += (unsigned long long) cs.cpu_sysinfo.cpu[i];

                                        }

                                }

                } //end for( ksp = kstat_fd->kc_chain;

                //usleep(500000);

                usleep(1000000);

        }//end for( j =0

        kstat_close(kstat_fd);
其中的usleep就是nanosleep

论坛徽章:
0
4 [报告]
发表于 2007-06-12 10:10 |只看该作者
为什么usleep就是nanosleep ?不解

论坛徽章:
0
5 [报告]
发表于 2007-06-12 12:34 |只看该作者
不太了解情况:)
usleep是忙等(不再响应?),你那么大数,不会有问题吧?
usleep一般不超过几十吧,如果要长时间延迟应该用其他的阻塞函数吧。不知道太阳系统有什么机制。
比如应该有定时器,或者其他什么的

[ 本帖最后由 ailantian 于 2007-6-12 12:36 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP