5636网吧资讯

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

来源:欣欣时间:2017-08-25 17:40

  最近在网上看到有网友问到了关于Linux系统设备驱动异步通知是什么的问题,相信不少网友都有这样的问题吧!今天我们就来和大家详细说说,在上一篇文章中我们向大家介绍了VM下Linux的网络共享Win文件夹的方法,相信大家肯定都有所了解了吧!下面大家就跟着我们5636网吧联盟的网吧系统栏目一起去看看今天的主题吧!
  关于异步通知,其意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上"中断"地概念,比较准确的称谓是"信号驱动(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系统设备驱动异步通知的相关内容我们就介绍到这里了,大家如果还有什么想知道的地方可以去本站的网吧系统栏目去查找,如果找不到相关内容,可以留言一起讨论,当然如果大家有什么好的资料也可以和我们一起分享哦!

 304
以上内容整理自互联网,如有侵权请与小编联系,QQ: 2850592923。欢迎加入网吧业主交流群:609150654(可加)614859884(可加) 加微信群请添加:wbzz5636
5636增值联盟
上一篇 :Linux系统中如何修改及限制shm的大小 下一篇 :VM下Linux的网络如何共享Win文件夹

相关推荐

5636搜索一下
登录