akp*_*akp 3 c linux kernel-module linux-device-driver linux-kernel
我正在为linux内核编写一个模块,它试图窃取数据包及其相关的sk_buff.这样做我想使用struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask)&然后在丢弃数据包时将返回类型传递给内核.
所以当内核获取有关数据包丢弃的信息时,它会尝试释放sk_buff.这里我的问题是否会影响我新复制的skb及其数据包的指向数据?或者现在我可以玩我的新sk_buff?
或者是否可以使用skb_clone()并使用分组数据部分而不删除旧sk_buff引用的数据,因为它将降低数据包的复制成本.
使用skb_copy将把sk_buff数据包和数据包复制到新内存.当内核释放另一个内核时的含义,副本不会受到影响.
skb_clone另一方面,将sk_buff结构复制到新内存,而不是数据包.释放旧版本时的含义,您的副本也将释放该数据包.
以下是一些链接:
http://docs.blackfin.uclinux.org/kernel/generated/networking/re68.html(skb_clone)
http://oss.org.cn/ossdocs/gnu_linux/kernel-api/r8086.html(skb_copy)