对于现在正在研究这个问题的任何人,Android 开发人员实际上将特定模块硬编码到 tc 中,并留下了许多/大部分,包括 prio。如果您从根目录查看位于 AOSP 的/external/iproute2/tc/tc.c (链接到 kitkat)的 tc.c 文件,您会看到它们将特定的 qdisc 类型硬编码到检查中:
#ifdef ANDROID
if (!strcmp(str, "cbq"))
return &cbq_qdisc_util;
else if (!strcmp(str, "htb"))
return &htb_qdisc_util;
else if (!strcmp(str, "ingress"))
return &ingress_qdisc_util;
else {
fprintf(stderr, "Android does not support qdisc '%s'\n", str);
return NULL;
}
#endif
我在 cynaogenmod 上发现了一个提交,它实际上修补了这些文件以恢复剩余的功能,比如 prio。您可以在此处找到该代码提交(下载 diff 以进行修补)。
希望有帮助!