我正在研究一个内核模块,我希望通过skb传输一个结构。我可以通过将struct的每个数据元素放在skb中来实现;但是我的问题是:我可以一次性将整个结构放入skb中并将其发送出去吗?
答案 0 :(得分:1)
您只需获取指向整个结构的指针,然后将内容存储到缓冲区。
/* skb_put returns a pointer to the beginning of the data area in the skb*/
unsigned char *skb_data = skb_put(skb, size_of_data);
unsigned char *your_data = (unsigned char *) your_struct;
memcpy(skb_data, your_data, size_of_data);
当然,请确保skb有足够的数据空间,您可以使用skb_tailroom
函数执行此操作。