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

netfilter中能否使用自旋锁数组啊?

    来源: 互联网  发布时间:2017-01-11

    本文导语:  想在一个netfilter程序里写日志,先把日志写到一个字符串数组中,然后一个内核线程把数组中有数据的单元写到文件中。想设一个自旋锁的数组。每次用spin_trylock_bh来检测数组里哪个数组可以写数据。主要程序如下:...

想在一个netfilter程序里写日志,先把日志写到一个字符串数组中,然后一个内核线程把数组中有数据的单元写到文件中。想设一个自旋锁的数组。每次用spin_trylock_bh来检测数组里哪个数组可以写数据。主要程序如下:但是这段程序总是导致死机。请教:为什么锁不好用:
     coun = 0;
    while((spin_lock_res = spin_trylock_bh(&(buf_lock[coun]))) == 0 || buf_stat[coun] == 1)
    {
        coun++;
        if(coun = MAX_LOG_BUFS_NUM)
        {
           coun = 0;
        }
        if(spin_lock_res == 1)
        {
            spin_unlock_bh(&buf_lock[coun]);
        }
    }


    buf_stat[coun] = 1;

    sprintf(log_buf[coun],"conn %x:%d to %x:%d at %sn",
         m_sconn->cli_ip,m_sconn->cli_port,m_sconn->svr_ip,m_sconn->svr_port,t_str);

    spin_unlock_bh(&buf_lock[coun]);






|

不是我说你啊,这代码也太乱了吧,你都不整理一下阿  。还一个地方少了个等号


  coun = 0;
    
  while()
  {
     coun++;
     if(coun == MAX_LOG_BUFS_NUM)   ///你这里还写漏了一个等号
     {
           coun = 0;
     }
  
     if (spin_trylock_bh(&(buf_lock[coun]) {
        
            if( buf_stat[coun]  ==0) {
                  buf_stat[coun] = 1;
                 sprintf(log_buf[coun],"conn %x:%d to %x:%d at %sn",
                         m_sconn->cli_ip,m_sconn->cli_port,m_sconn->svr_ip,m_sconn->svr_port,t_str);
            }
        
           spin_unlock_bh(&buf_lock[coun]);
     }
  }




    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 在网上看了netfilter资料两天,确认一下关于netfilter程序的几个问题:
  • netfilter 和 IPTABLES 是一回事吗?
  • 有关netfilter编译时出现的一些小错误
  • linux内核桥这一块有一个Netfilter文件夹,是做什么用的?
  • 请问哪里能找到netfilter的connection tracking的实现或源吗分析的相关文章。
  • 请教前辈们关于netfilter/iptables的问题
  • 关于netfilter开发,急
  • netfilter的怪问题
  • 关于使用netfilter,如何把数据送到用户空间?
  • netfilter中可以使用什么同步机制?
  • netfilter里如何获得TCP包的数据?
  • 关于netfilter开发的问题
  • netfilter处理的数据包是什么样的
  • 从netfilter里注册的函数获得的sk_buff的数据包如何重组?
  • 用netfilter钩子函数统计输出包的个数,出错了!
  • 请问连接镜像端口后数据包经过netfilter中hook点NF_IP_PRE_ROUTING时如何操作
  • 我要写一个用来修改packet的模块(就是iptables的插件可以向netfilter中添加一些过滤的规则),需要看那些书,请大侠们指教????
  • 在netfilter中可以用copy_to_user和copy_from_user吗
  • 在netfilter中使用NF_QUEEN把数据交由用户进程处理,碰到倒霉事,郁闷啊。。
  • 菜人netfilter问题,急急急,请高手帮忙 急急急急急急急急急急急急


  • 站内导航:


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

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

    浙ICP备11055608号-3