代码拉取完成,页面将自动刷新
同步操作将从 anolis/ras-tools 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2015 Intel Corporation
* Author: Tony Luck
*
* This software may be redistributed and/or modified under the terms of
* the GNU General Public License ("GPL") version 2 only as published by the
* Free Software Foundation.
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
/*
* read /proc/cpuinfo to discover:
* 1) number of cpu sockets
* 2) Number of logical cpus
* 3) Model name of the cpu
* 4) Logical cpu# to apicd mappings
*/
void proc_cpuinfo(int *nsockets, int *ncpus, char *model, int *modelnum, int **apicmap)
{
FILE *fp = fopen("/proc/cpuinfo", "r");
char *p, line[4096];
long apicid, lcpu, s, sockmask = 0;
int i, maxcpus = 4;
*nsockets = 0;
*ncpus = 0;
*apicmap = (int *)calloc(sizeof (int), maxcpus);
if (fp == NULL)
return;
while (fgets(line, sizeof line, fp)) {
if (model[0] == '\0' && strncmp(line, "model name", 10) == 0) {
p = strchr(&line[10], ':');
while (isspace(*++p))
;
strcpy(model, p);
} else if (strncmp(line, "model\t", 6) == 0) {
p = strchr(&line[6], ':');
*modelnum = atoi(p+1);
} else if (strncmp(line, "physical id", 11) == 0) {
(*ncpus)++;
p = strchr(&line[10], ':');
s = strtol(p+1, NULL, 10);
sockmask |= 1 << s;
} else if (strncmp(line, "processor", 9) == 0) {
p = strchr(&line[8], ':');
lcpu = strtol(p+1, NULL, 10);
} else if (strncmp(line, "apicid", 6) == 0) {
p = strchr(&line[5], ':');
apicid = strtol(p+1, NULL, 10);
if (lcpu >= maxcpus) {
maxcpus *= 2;
*apicmap = realloc(*apicmap, maxcpus * sizeof (int));
}
(*apicmap)[lcpu] = apicid;
}
}
for (i = 0; i < 8 * sizeof sockmask; i++)
if (sockmask & (1l << i))
(*nsockets)++;
fclose(fp);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。