任桥伟《我是USB》usb_parse_confiuratiion中一小段代码的疑问
关于LINUX配置描述符usb_parse_confiuratiion中一小段代码的疑问
本人模拟出内核usb_parse_confiuratiion函数中一小段代码如下:
static void Main(string[] args)   
        {            
             int[] ms;
             ms = new int[20];
             int[] nalts;
             nalts= new int[20];
             int[] inum;    
             inum=new int []{1,2,3,6,5,4,8,9,7,10};
           int i,n,p;
           n=0;
           p=0;
           do while (p < 10)
               {
                   for (i = 0; i < n; ++i)
                   {
                       if (ms[i] == inum[p])
                           break;
                   }
                   if (i < n)
                   {
                       ++nalts[i];
                   }
                   else
                   {
                       ms[n] = inum[p];
                       nalts[n] = 1;
                       ++n;
                   }
                   p++;
               } while (p < 10);
         }
     }
其中inum[p]表示不断收到的接口号,书上说ms[n]返回的是由接口序列号组成的数组,对应的nalts[n]是由各个接口号中的设置数组成的数组,但本人调试后发现ms[n]返回是不断收到的接口号,nalts[n]返回的全是1,(内核地址:drivers/usb/core/config.c中原代码如下:
for (i = 0; i < n; ++i) {
                 if (inums[i] == inum)
                     break;
             }
             if (i < n) {
                 if (nalts[i] < 255)
                     ++nalts[i];
             } else if (n < USB_MAXINTERFACES) {
                 inums[n] = inum;
                 nalts[n] = 1;
                 ++n;
             }
求高人指点,为什么nalts[n]返回的全是1?此例来自任桥伟《我是USB》110页
------解决方案--------------------
因为你碰到的每个interface都只有一个setting