staticvoid show_cap_strs(u32 *err_flags)
{ int i, j; constunsignedchar *msg_strs = (constunsignedchar *)x86_cap_strs; for (i = 0; i < NCAPINTS; i++) {
u32 e = err_flags[i]; for (j = 0; j < 32; j++) { if (msg_strs[0] < i ||
(msg_strs[0] == i && msg_strs[1] < j)) { /* Skip to the next string */
msg_strs += 2; while (*msg_strs++)
;
} if (e & 1) { if (msg_strs[0] == i &&
msg_strs[1] == j &&
msg_strs[2])
printf("%s ", msg_strs+2); else
printf("%d:%d ", i, j);
}
e >>= 1;
}
}
}
int validate_cpu(void)
{
u32 *err_flags; int cpu_level, req_level;
check_cpu(&cpu_level, &req_level, &err_flags);
if (cpu_level < req_level) {
printf("This kernel requires an %s CPU, ",
cpu_name(req_level));
printf("but only detected an %s CPU.\n",
cpu_name(cpu_level)); return -1;
}
if (err_flags) {
puts("This kernel requires the following features " "not present on the CPU:\n");
show_cap_strs(err_flags);
putchar('\n'); return -1;
} elseif (check_knl_erratum()) { return -1;
} else { return 0;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.