天下网吧 >> 网吧系统 >> 系统优化 >> 正文

Linux系统设备驱动异步通知是什么

2014-5-20网络整理佚名

在天下网吧-网吧系统-网吧天下栏目上一篇文章中,我们看到了:

  • 上一篇文章:

  • 希望对各位网吧网管或者网吧维护,做网吧系统的各位大大有用,那么今天我们一起来看下:Linux系统设备驱动异步通知是什么

      最近在网上看到有网友问到了关于Linux系统设备驱动异步通知是什么的问题,相信不少网友都有这样的问题吧!今天我们就来和大家详细说说,在上一篇文章中我们向大家介绍了VM下Linux的网络共享Win文件夹的方法,相信大家肯定都有所了解了吧!下面大家就跟着我们txwb网吧联盟的网吧系统栏目一起去看看今天的主题吧!
      关于异步通知,其意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上"中断"地概念,比较准确的称谓是"信号驱动(SIGIO)的异步I/O"。
      先看个使用信号驱动的例子,它通过signal(SIGIO,input_handler)对STDIN_FILENO启动信号机制,输入可获得时input_handler被调用,其源代码如下:
      #include<sys/types.h>
      #include<sys/stat.h>
      #include<stdio.h>
      #include<fcntl.h>
      #include<signal.h>
      #include<unistd.h>
      #defineMAX_LEN100
      voidinput_handler(intnum)
      {
      chardata[MAX_LEN];
      intlen;
      //读取并输出STDIN_FILENO上的输入
      len=read(STDIN_FILENO,&data,MAX_LEN);
      data[len]=0;
      printf("inputavailable:%s\n",data);
      }
      main()
      {
      intoflags;
      //启动信号驱动机制
      signal(SIGIO,input_handler);
      fcntl(STDIN_FILENO,F_SETOWN,getpid());
      oflags=fcntl(STDIN_FILENO,F_GETFL);
      fcntl(STDIN_FILENO,F_SETFL,oflags|FASYNC);
      //最后进入一个死循环,程序什么都不干了,只有信号能激发input_handler的运行
      //如果程序中没有这个死循环,会立即执行完毕
      while(1);
      }
      为了使设备支持该机制,我们需要在驱动程序中实现fasync()函数,并在write()函数中当数据被写入时,调用kill_fasync()函数激发一个信号,在这里就不做说明了。
      关于Linux系统设备驱动异步通知的相关内容我们就介绍到这里了,大家如果还有什么想知道的地方可以去本站的网吧系统栏目去查找,如果找不到相关内容,可以留言一起讨论,当然如果大家有什么好的资料也可以和我们一起分享哦!


    好了,关于【Linux系统设备驱动异步通知是什么】这个问题今天就说到这,有些地方说得不是很好,如果你有更好的补充请发表评论或者上网吧论坛提出吧。网吧论坛地址:http://bbs.txwb.com

    如果有下一页,请点击下一页哦,文章还没说完呢。

    本文来源:网络整理 作者:佚名

    声明
    声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
    天下网吧·网吧天下