在pdk下面cppi/cppi_desc.h中定义了QMSS的描述符定义:
typedef struct{
....
}Cppi_HostDesc;
typedef struct{
....
}Cppi_MonolithicDesc;
typedef union{
Cppi_HostDesc *ptrHostDesc;
Cppi_MonolithicDesc *ptrMonoDesc;
}Cppi_Desc;
对于Cppi_Desc union为什么里面是指针呢? LLD的代码里面很多定义描述符是使用 Cppi_Desc * pCppiDesc; 然后调用 pCppiDesc = (Cppi_Desc*)Qmss_queuePop(queue); 来获得描述符指针,但这个 pCppiDesc 是指向union的指针,该union才是描述符指针,虽然代码里面都是直接使用强制转换从一种指针转换成(Cppi_HostDesc*)或(Cppi_MonolithicDesc*), 没有问题,但我觉得这里对Cppi_Desc的定义有点不妥,应该改成下面这样。
typedef union{
Cppi_HostDesc ptrHostDesc;
Cppi_MonolithicDesc ptrMonoDesc;
}Cppi_Desc;
不知道我的理解是否正确,还请各位工程师答疑。谢谢.