任何人都可以确认VxWorks 7上M_PKT_HDR的布局。我编写了以下代码来转储我收到的M_BLK,但看起来好像没有正确对齐。
LOCAL void mBlkPktHdr_Show(M_PKT_HDR * mPktHdr)
{
printf("\trcvif:0x%x\n",mPktHdr->rcvif);
printf("\tlen:0x%x\n",mPktHdr->len);
printf("\theader:0x%p\n",mPktHdr->header);
printf("\tcsum_flags:0x%x\n",mPktHdr->csum_flags);
printf("\tcsum_data:0x%x\n",mPktHdr->csum_data);
printf("\taux:0x%p\n",mPktHdr->aux);
printf("\tqnum:0x%x\n",mPktHdr->qnum);
printf("\tvlan:0x%x\n",mPktHdr->vlan);
printf("\taltq_hdr:0x%p\n",mPktHdr->altq_hdr);
}
当我运行此命令时,我会得到这样的结果
rcvif:0x0
len:0x0
header:0x4a
csum_flags:0x3200
csum_data:0xffff
aux:0xc0000
qnum:0x0
vlan:0x0
altq_hdr:0x0
最让我吃惊的是标头下的值实际上是长度,还有aux下的值,我希望是vlan,因为它最终是vlan标签,但这也许是实现END驱动程序的方式。不幸的是,DKM im构建正在VxWorks 7上运行,但是我只能从v6.6左右访问头文件,甚至还有些不完整。