首页 > 其他分享 >Kernel之通知链

Kernel之通知链

时间:2023-11-09 16:34:18浏览次数:25  
标签:Kernel 通知 elan ts fb client data notifier


Kernel之通知链
背景
最近在调触摸屏,看代码时偶然看到了通知链相关的代码,加上之前刚好了解了一点通知链相关的东东,所以特此记录下。
在触摸屏驱动中的主要功能就是在开关屏的时候通知TP进行resume和suspend操作,大致的伪代码如下,以我看的elan的TP驱动为例:

C

...
/* 通知链的事件回调函数,收到通知TP进行resume和suspend操作 */
 static int fb_notifier_callback(struct notifier_block *self,
                 unsigned long event, void *data)
 {
     struct fb_event *evdata = data;
     int *blank;
     struct elan_ts_data *ts =
         container_of(self, struct elan_ts_data, fb_notif);    if (evdata && evdata->data && event == FB_EVENT_BLANK && ts &&
         ts->client) {
         blank = evdata->data;
         if (*blank == FB_BLANK_UNBLANK)
             elan_ts_resume(&ts->client->dev);
         else if (*blank == FB_BLANK_POWERDOWN)
             elan_ts_suspend(&ts->client->dev);
     }    return 0;
 }/* 
     在probe函数中注册fb client,而 fb_register_client()函数实现的其实就是通知链注册:
     int fb_register_client(struct notifier_block *nb)
     {
         return blocking_notifier_chain_register(&fb_notifier_list, nb);
     }    在开关屏的时候会调用 fb_notifier_call_chain(FB_EVENT_BLANK, &event) 来触发通知:
     int fb_notifier_call_chain(unsigned long val, void *v)
     {
         return blocking_notifier_call_chain(&fb_notifier_list, val, v);
     }    //drivers/video/fbdev/core/fb_notify.c
 */
 static int elan_ts_probe(...)

作者: Shell

标签:Kernel,通知,elan,ts,fb,client,data,notifier
From: https://blog.51cto.com/winter91/8284457

相关文章

  • openEuler22.03操作系统 Linux内核Kernel 5.10 应该选择哪个版本的mysql安装包下载?
    对于openEuler22.03操作系统和Linux内核Kernel5.10,你应该选择与该操作系统和内核版本兼容的MySQL安装包进行安装。在确定适合的MySQL版本时,你可以考虑以下几点:MySQL官方支持:查看MySQL官方网站中的文档或支持页面,确认其是否支持openEuler22.03操作系统和Kernel5.......
  • Django实战项目-学习任务系统-发送短信通知
    接着上期代码内容,继续完善优化系统功能。本次增加发送短信通知功能,学习任务系统发布的任务,为了更加及时通知到学生用户,再原有发送邮件通知基础上,再加上手机短信通知功能。第一步:开通短信通知服务目前短信通知都是要收费的,本人还没发现免费的短信通知服务,如有网友知道免费资源请......
  • dotnet 探究 SemanticKernel 的 planner 的原理
    在使用SemanticKernel时,我着迷于SemanticKernel强大的plan能力,通过plan功能可以让AI自动调度拼装多个模块实现复杂的功能。我特别好奇SemanticKernel里的planner的原理,好奇底层具体是如何实现的。好在SemanticKernel是完全开源的,通过阅读源代码,我理解了SemanticK......
  • Django实战项目-学习任务系统-发送邮件通知
    接着上期代码内容,继续完善优化系统功能。 本次增加发送邮件通知功能,学习任务系统发布的任务,需要及时通知到学生用户知晓。由于目前智能手机普及,人人都离不开手机,所以手机端接收通知信息更加及时有效。 其中微信使用频率最多,本来想使用微信通知功能,但是经过网上搜集资料测试......
  • OpenHarmony 状态变量更改通知:@Watch 装饰器
    @Watch应用于对状态变量的监听。如果开发者需要关注某个状态变量的值是否改变,可以使用@Watch为状态变量设置回调函数。说明:从APIversion9开始,该装饰器支持在ArkTS卡片中使用。概述@Watch用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。@Watch......
  • kernel-devel下载地址
    https://ftp.sjtu.edu.cn/sites/ftp.scientificlinux.org/linux/scientific/7.9/x86_64/os/Packages/rpm-ivhxxx.rpm#yuminstallgcc#yuminstallgcc-c++......
  • YouTrack 中如何设置邮件通知
    在YouTrack中,默认是不会邮件通知的。你可以为你的账号设置邮件通知。设置的方法为单击用户属性,然后在弹出的小窗口中选择属性选项。设置邮件通知在通知Tab页面中,选择发送邮件的方式,默认这个选项是不选择的。用户可以为自己选择发送邮件的方式。我们这里选择的是HTML。下面就是......
  • YouTrack 中如何设置邮件通知
    在YouTrack中,默认是不会邮件通知的。你可以为你的账号设置邮件通知。设置的方法为单击用户属性,然后在弹出的小窗口中选择属性选项。设置邮件通知在通知Tab页面中,选择发送邮件的方式,默认这个选项是不选择的。用户可以为自己选择发送邮件的方式。我们这里选择的是HTML。下面就是......
  • 为啥面试完都说「回去等通知」?
    1一切皆可能因为确实还不知道确切结果,不到最后一刻,一切皆可能。大部分招聘即使进行到最后一面,也没法当场就有最终结论:有的还需别的领导和专家再讨论判断,有的则需要再走一系列冗长的臭流程就算那些当场就被认为不合适,没通过面试的人,也不能马上就给结论为啥呢?有些企业不会......
  • [运维笔记]内网服务器或设备宕机了怎么及时收到通知并处理
    前言此前公司内网的一台服务器运行着六七个各种各样的后台任务,还跑着几个客户端。之后有一天晚上,公司里断电了,服务器也就停了,因为不是关键业务,所以之后几天谁也没发现,直到一周后才发现服务器没在处理。那怎么在服务器宕机时及时知道呢目前的简单办法:无非在服务器上跑个定时任......