当前位置: 首页 > news >正文

深圳有名的做公司网站关键词优化公司

深圳有名的做公司网站,关键词优化公司,wordpress 前台表单,wordpress php7 兼容异步通知的全称是信号驱动的异步IO#xff0c;通过信号的方式#xff0c;放期望获取的资源可用时#xff0c;驱动会主动通知指定的应用程序#xff0c;和应用层的信号相对应#xff0c;这里使用的是信号SIGIO。操作步骤是…异步通知的全称是信号驱动的异步IO通过信号的方式放期望获取的资源可用时驱动会主动通知指定的应用程序和应用层的信号相对应这里使用的是信号SIGIO。操作步骤是 应用层程序将自己注册为接收来自设备文件的SIGIO信号的进程驱动实现相应的接口以期具有向所有注册接收这个设备驱动SIGIO信号的应用程序发SIGIO信号的能力。驱动在适当的位置调用发送函数应用程序即可接收到SIGIO信号。整个机制的框架 应用层接收SIGIO 和其他信号一样应用层需要注册一个信号处理函数 注册的方式还是使用signal()或sigaction() 此外应用层还需要把自己加入到驱动的通知链表中加入的代码如下 fcntl(dev_fd,F_SETOWN,getpid()); int oflags fcntl(dev_fd,F_GETFL); fcntl(dev_fdF_SETFLoflags|FASYNC); ... while(1); 完成了上面的工作应用层的程序就可以静待SIGIO的到来了。 驱动发送SIGIO 应用层注册好了最终的发送还是看设备驱动的处理方式为了使设备支持异步通知机制参照应用层的接口驱动程序中涉及3项工作。 支持F_SETOWN命令能在这个命令中下设置filp-f_owner为对应进程的ID这部分内核已经做了支持F_SETFL,每当FASYNC标志改变时驱动程序中的fasync()将得以执行so驱动中要实现fasync()。当设备资源可用时通过kill_fasync()发送SIGIO为了在内核中实现上面这三个功能驱动需要使用1个结构2个API结构是struct fasync_struct,函数是fasync_helper()和kill_fasync() struct fasync_struct { spinlock_t fa_lock;int magic;int fa_fd;struct fasync_struct *fa_next; /* singly linked list */struct file *fa_file;struct rcu_head fa_rcu; }; fasync_helper()的作用是将一个fasync_struct的对象注册进内核应用层执行fcntl(dev_fdF_SETFLoflags|FASYNC)时会回调驱动的fops.fasync()所以通常将fasync_helper()放到fasync()的实现中。 /***fasync_helper - 将一个fasync_struct对象注册进内核*fd:文件描述符由fasync传入*filp:file指针由fasync传入*sig:信号类型通常使用的就是SIGIO*dev_fasync:事前准备的fasync_struct对象指针的指针*/ int fasync_helper(int fd, struct file * filp, int sig, struct fasync_struct ** dev_fasync); 下面这个API就是释放SIGIO根据需求的不同放到不同的位置。 /***kill_fasync - 释放一个信号*dev_fasync:事前使用fasync_helper注册进内核的fasync_struct对象指针的指针*filp:file指针由fasync传入*sig:信号类型通常使用的就是SIGIO*flag:标志通常如果资源可读用POLLIN如果资源可写用POLLOUT*/ void kill_fasync(struct fasync_struct **dev_fasync, int sig, int flag); 驱动模板 下面这个驱动模板针对在硬件中断到来(资源可用)的时候向应用层发信号实际的操作中表明资源可用的情境还有很多 static struct fasync_struct *fasync NULL;static irqreturn_t handler(int irq, void *dev) {kill_fasync(fasync, SIGIO, POLLIN);return IRQ_HANDLED; } static int demo_fasync(int fd, struct file *filp, int mode) {return fasync_helper(fd, filp, mode, fasync); } struct file_operations fops {....fasync demo_fasync,... } static int __init demo_init(void) {...request_irq(irq, handler, IRQF_TRIGGER_RISING, demo, NULL);... } 转载于:https://www.cnblogs.com/xiaojiang1025/p/6376561.html
http://wiki.neutronadmin.com/news/7275/

相关文章:

  • 接单网站开发东莞网站建设网络公司公司
  • 免备案网站空间购买网站设计公司排行
  • 网站开发技术栈房屋 哪个网站做的最好
  • 外行学习个人网站建设页面设计稿
  • 合肥集团网站建设哪个好wordpress安装插件502
  • 免费域名申请网站空间ui设计做网站
  • .net 网站域账号自动验证码云南网站建设价格
  • 网站建设服务 杭州营销自动化是什么意思
  • 江西住房和城乡建设信息网站陕西网站建设培训
  • 帮别人做网站赚钱6官方网站建设银行信用卡
  • 粉红色网站欣赏wordpress 腾讯云存储
  • 太原网站搜索优化wordpress注册表格
  • 东莞新闻头条新闻百度推广整体优化网站
  • 智能建站软件哪个好网站权重有什么用
  • 播放swf文件 自动弹出网站怎么做招聘网站的数据分析
  • 电子商务网站建设的具体内容新网站如何做流量
  • 客户评价 网站建设薪火相传网站建设
  • 做啪啪网站建设工程查询网站
  • 中国黄金集团建设有限公司网站免费棋牌网站建设
  • 青岛网站seo建筑设计模板
  • 网站的域名怎么起网站备案价格
  • app定制网站建设应有尽有手机网站模板cms
  • 网站建设邀标函免费下载软件的网站
  • 昆明网站免费制作wordpress主题 qux
  • 深圳做网站乐云seo费用优惠宁波网站建设制作多少钱
  • 个人业务网站建设wordpress 首页摘要
  • 温州专业微网站制作公司云主机多个网站
  • 淘宝网站边上的导航栏怎么做湖北营销型网站建设
  • 网站设计公司产品介绍江苏网络推广专员
  • 网站的建设方案200元自助网站建设