LDD高级字符驱动程序操作-异步通知

来源:互联网 发布:分级聚类算法 编辑:程序博客网 时间:2024/04/28 03:02

异步通知:

1,作用:对一个文件描述符能够进行无阻塞操作的时候,发送异步通知到想要的进程,如果为多个文件由于无法辨识某个文件标识符,所以需要使用poll , select ,epoll,所以异步通知是poll,select,epoll的补充技术;

2,异步通知:linux内核实现,通过异步通知标志位设置是否发送异步通知,FASYNC;

  a,当设置文件描述符的异步通知位的时候内核会调用文件描述符对应的模块的异步通知方法fasync(struct file *filp, /*?????*/);设置异步通知,fasync是作为文件描述对应模块的file_operations 异步通知函数指针分量被内核调用的;

  b,当某一操作能够无阻塞执行的时候,文件描述符对应模块会发送异步通知SIGIO给owner进程做相应的无阻塞操作,对于发送操作为;kill_fasync(/*?????*/);

  c,当文件描述符对应模块不使用异步通知时,一定要在release file_operations release函数指针分量对应函数中将其对异步通知的设置删除,也及时从异步通知队列中删除;



3,用户空间:a,设置文件描述符的owner进程pid

                          b,设置异步通知标志位;

                          c,设置异步通知处理函数,void (*signal(int , void (*sig_handle)(int)))(int);

0 0
原创粉丝点击