Chinaunix首页 | 论坛 | 博客
  • 博客访问: 271425
  • 博文数量: 84
  • 博客积分: 3186
  • 博客等级: 中校
  • 技术积分: 852
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-15 15:46
文章分类

全部博文(84)

文章存档

2015年(1)

2014年(12)

2011年(29)

2010年(42)

分类: LINUX

2010-11-14 22:15:57

    周末忙了两天,计划补一下进度,预期的又遇到了新的问题。在计划面前,无奈的事情多了,也就习以为常了。首先是wifi和3g的协调工作,然后是wifi与有线网络的动态切换,一看上去,都是再简单不过的事情,可真正做起来,通与不通,差别很小。
    ping网关总是不通,strace的结果是recv总是返回ERESTARTSYS,受到信号ALARM的影响,不知道信号的源在何处。
    查了一下大体的意思,ERESTARTSYS是驱动和信号处理函数之间api的一部分,只是在驱动层使用,不涉及到用户态程序使用。
    驱动需要等待,并被特定的信号所唤醒(等待的事件),它会取消收到的系统调用,以运行信号处理函数(就像在执行阻塞操作时按ctlt-c来进行中断),内核使用ERESTARTSYS作为一个magic值,即信号处理函数结束之后,会自动重新运行系统调用。如果系统调用不能被重新运行,实际的返回值为EINTR。
    明天继续。什么时候停下脚步,听一下天空大地的声音。
    God bless you!
阅读(2293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~