cpu.c

来自「linux 内核源代码」· C语言 代码 · 共 70 行

C
70
字号
/* -*- linux-c -*- ------------------------------------------------------- * * *   Copyright (C) 1991, 1992 Linus Torvalds *   Copyright 2007 rPath, Inc. - All Rights Reserved * *   This file is part of the Linux kernel, and is made available under *   the terms of the GNU General Public License version 2. * * ----------------------------------------------------------------------- *//* * arch/i386/boot/cpu.c * * Check for obligatory CPU features and abort if the features are not * present. */#include "boot.h"#include "bitops.h"#include <asm/cpufeature.h>static char *cpu_name(int level){	static char buf[6];	if (level == 64) {		return "x86-64";	} else {		sprintf(buf, "i%d86", level);		return buf;	}}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) {		int i, j;		puts("This kernel requires the following features "		     "not present on the CPU:\n");		for (i = 0; i < NCAPINTS; i++) {			u32 e = err_flags[i];			for (j = 0; j < 32; j++) {				if (e & 1)					printf("%d:%d ", i, j);				e >>= 1;			}		}		putchar('\n');		return -1;	} else {		return 0;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?