当前位置:  技术问答>linux和unix

关于notification chains的问题

    来源: 互联网  发布时间:2016-09-27

    本文导语:  最近正在看网络代码,书中说内核子系统在初始化时候会注册到自己感兴趣事件的notification chains上。 然后在events发生时候,由notifier_call_chain()函数产生,并遍历所有回调函数,调用此event回调函数来处理事件的变化...

最近正在看网络代码,书中说内核子系统在初始化时候会注册到自己感兴趣事件的notification chains上。

然后在events发生时候,由notifier_call_chain()函数产生,并遍历所有回调函数,调用此event回调函数来处理事件的变化对该子系统的影响。

但是当事件发生的时候,谁来触发调用notifier_call_chain()函数呢?具体是怎么调用的?

|
当事件发生时,由处理事件的驱动负责触发通知链,用的是
 int call_netdevice_notifiers(unsigned long val, struct net_device *dev);

例如ifconfig eth0 up
最终会被网络核心的dev_ifsioc 处理
switch (cmd) {
case SIOCSIFFLAGS: /* Set interface flags */
return dev_change_flags(dev, ifr->ifr_flags);
.....


dev_change_flags 调用 __dev_notify_flags
最后__dev_notify_flags触发事件
void __dev_notify_flags(struct net_device *dev, unsigned int old_flags)
{
unsigned int changes = dev->flags ^ old_flags;

if (changes & IFF_UP) {
if (dev->flags & IFF_UP)
call_netdevice_notifiers(NETDEV_UP, dev);
else
call_netdevice_notifiers(NETDEV_DOWN, dev);
}

if (dev->flags & IFF_UP &&
    (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE)))
call_netdevice_notifiers(NETDEV_CHANGE, dev);
}

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.management类notification的类成员方法: notification定义及介绍
  • HTML iOS Notifications
  • java命名空间javax.management类mbeanservernotification的类成员方法: registration_notification定义及介绍
  • 通知消息和状态栏 JQuery Notification Engine
  • java命名空间javax.management类notification的类成员方法: source定义及介绍
  • jQuery消息提醒插件 jQuery Notification Message
  • java命名空间javax.management类notification的类成员方法: getmessage定义及介绍
  • Notifications4EveryWhere
  • java命名空间javax.management类notification的类成员方法: gettimestamp定义及介绍
  • jQuery消息提示插件 Easy Notification
  • java命名空间javax.management类notification的类成员方法: gettype定义及介绍
  • Android中关于Notification及NotificationManger的详解
  • java命名空间javax.management类notification的类成员方法: settimestamp定义及介绍
  • Notification与NotificationManager详细介绍
  • java命名空间javax.management类notification的类成员方法: getuserdata定义及介绍
  • android notification 的总结分析
  • java命名空间javax.management类notification的类成员方法: setuserdata定义及介绍
  • java命名空间javax.management类notification的类成员方法: tostring定义及介绍
  • java命名空间javax.management类notification的类成员方法: setsequencenumber定义及介绍
  • java命名空间javax.management类mbeanservernotification的类成员方法: unregistration_notification定义及介绍
  • java命名空间javax.management类notification的类成员方法: getsequencenumber定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3