static void priority_rank(IFM_IF_T *p, int n)
{
int i,j;
for (j = 0; j < n - 1; j++)
{
for (i = 0; i < n - 1 - j; i++)
{
if (p[i]->power_priority< p[i + 1]->power_priority)
{
IFM_IF_T temp = p[i+1];
p[i+1] = p[i];
p[i] = temp;
}
else if (p[i]->power_priority == p[i + 1]->power_priority)
{
if (p[i]->ifindex > p[i + 1]->ifindex)
{
IFM_IF_T temp = p[i+1];
p[i+1] = p[i];
p[i] = temp;
}
}
}
}
}
调取应用:
IFM_IF_T *p;
int num=0;
double total_power_consumption=0;
p=(struct ifm_if_s *)malloc(MOS_PORT_NUM * sizeof(struct ifm_if_s));
memset(p,0,sizeof(struct ifm_if_s) * MOS_PORT_NUM);
struct listnode *node;
IFM_IF_T *pif;
for(ALL_LIST_ELEMENTS_RO(g_ifm_list, node, pif))
{
memcpy(p+num,pif,sizeof(IFM_IF_T));
num++;
}
priority_rank(p,num);