Chinaunix
标题:
网络层hook需要加锁吗?
[打印本页]
作者:
用心学编程
时间:
2012-08-24 15:57
标题:
网络层hook需要加锁吗?
各位好,问个问题:我注册一个设备后在网络层hook,测试发现自己的回调函数的调用比ifconfig统计出来的包数大很多,数量级的差别。不知道是不是回调函数被重复调用了,是否应该加锁呢?应该怎么加呢?请各位指教,对内核不熟~
方式基本是这样的,在注册的时候赋值:
struct packet_type pt;
pt.func = my_hookfunc;
作者:
lenky0401
时间:
2012-08-25 15:22
加锁解决的是互斥问题
你需要再理一下代码 找一下是否有逻辑错误
作者:
myspace21
时间:
2012-08-25 17:25
看数据包是在哪一层被统计的?
作者:
瀚海书香
时间:
2012-08-28 13:20
回复
1#
用心学编程
这个是不需要锁的。
但是你统计的代码,如果通过一个变量来存储的话,最好是用atomic类型。
作者:
用心学编程
时间:
2012-08-29 18:00
瀚海书香 发表于 2012-08-28 13:20
回复 1# 用心学编程
这个是不需要锁的。
但是你统计的代码,如果通过一个变量来存储的话,最好是用atomi ...
就是用的原子计数的。
我的hook函数每调用一次,计数+1。atomic_inc
可是为什么打印出来这个值比用ifconfig查看网卡过的包要多很多呢?
作者:
Godbach
时间:
2012-08-29 22:13
回复
1#
用心学编程
主要看你访问的是什么资源,是否是临界资源。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2