上の答えは正解です ここで完成させましょう
static inline char rt_tos2priority(u8 tos)
{
return ip_tos2prio[IPTOS_TOS(tos)>>1];
}
ここで、IPTOS_TOS はマクロで、「tos」値と 0x1E の AND を取ります
したがって、TOS を 0xFF として指定すると、上記の return ステートメントは次のようになります。
return ip_tos2prio[(0x1E & 0xFF)>>1];
さらに計算すると、(0x1E & 0xFF) は 0x1E に等しく、(0x1E >> 1) から 0x0F が得られます。これは 10 進数で 15 です。上記の return ステートメントは次と等しいと言えます
return ip_tos2prio[15];
「ip_tos2prio」は、このように事前定義された配列です
const __u8 ip_tos2prio[16]={0,0,0,0,2,2,2,2,6,6,6,4,4,4,4};
ここで、それぞれの値には意味があります。0->BESTEFFORT、2->BULK、4->INTERACTIVE BULK、6 ->INTERACTIVE。
return ステートメントに戻ると、ip_tos2prio配列の 15 番目の要素である 4 が返されます。