[br-KernelNewbies] Chamada a função identify_cpu() da API

Rúben Lício rubenlr em gmail.com
Segunda Abril 2 10:17:40 BRT 2007


Bom dia,

Estou tentando recuperar algumas informações do hardware através da
API do kernel. Utilizo C, Não posso fazer chamadas system de nenhum
tipo, por ser um método menos seguro do que chamar a API diretamente.
Já consegui recuperar informações do HD e da placa de rede. Porém, a
bios e a CPU estou ainda com problemas.
A compilação [1] do arquivo [2], resulta em uma série de erros [3] nos
.h do kernel. As causas que especulo para estes erros [3] são:
- Versões das minhas libs e do gcc estarem em conflito de alguma forma.
- Falta de includes necessários para suprir algumas funcionalidades.
- Pacotes -dev estarem corrompidos
Estou usando o debian etch devidamente atualizado.
Quando estava tentando recuperar informações da bios, tive problemas
similares, No momento não estou com o código usado para testar essa
API.

Gostaria de saber de vocês:
- Existe alguma maneira de recuperar informações da bios e da CPU de
alguma outra forma?
- Alguém sabe como solucionar estes erros? ou tem algum comentário a
fazer a respeito?

Rúben

[1]
gcc -O2 -Wall  -I/usr/include  -c cpu.c -o cpu.o
gcc -Wall  -I/usr/include  -c cpu.c -o cpu.o
gcc -I/usr/include  -c cpu.c -o cpu.o
gcc -O2 -I/usr/include  -c cpu.c -o cpu.o

[2]
#include <asm/processor.h>

int main()
{
	struct cpuinfo_x86 cpuinfo;

	identify_cpu(&cpuinfo);

	return 0;
}

[3]
$ gcc -O2 -I/usr/include  -c cpu.c -o cpu.o
In file included from /usr/include/asm/bitops.h:8,
                 from /usr/include/linux/bitops.h:9,
                 from /usr/include/asm-i486/cpufeature.h:10,
                 from /usr/include/asm/cpufeature.h:8,
                 from /usr/include/asm-i486/processor.h:16,
                 from /usr/include/asm/processor.h:8,
                 from cpu.c:1:
/usr/include/asm-i486/bitops.h:244: error: expected '=', ',', ';',
'asm' or '__attribute__' before 'int'
In file included from /usr/include/asm/system.h:8,
                 from /usr/include/asm-i486/processor.h:18,
                 from /usr/include/asm/processor.h:8,
                 from cpu.c:1:
/usr/include/asm-i486/system.h:306: error: expected declaration
specifiers or '...' before 'u8'
/usr/include/asm-i486/system.h:306: error: expected declaration
specifiers or '...' before 'u8'
/usr/include/asm-i486/system.h:307: error: expected declaration
specifiers or '...' before 'u16'
/usr/include/asm-i486/system.h:307: error: expected declaration
specifiers or '...' before 'u16'
/usr/include/asm-i486/system.h:308: error: expected declaration
specifiers or '...' before 'u32'
/usr/include/asm-i486/system.h:308: error: expected declaration
specifiers or '...' before 'u32'
/usr/include/asm-i486/system.h: In function 'cmpxchg_386':
/usr/include/asm-i486/system.h:315: error: too many arguments to
function 'cmpxchg_386_u8'
/usr/include/asm-i486/system.h:317: error: too many arguments to
function 'cmpxchg_386_u16'
/usr/include/asm-i486/system.h:319: error: too many arguments to
function 'cmpxchg_386_u32'
In file included from /usr/include/linux/cpumask.h:86,
                 from /usr/include/asm-i486/processor.h:22,
                 from /usr/include/asm/processor.h:8,
                 from cpu.c:1:
/usr/include/linux/bitmap.h: In function 'bitmap_zero':
/usr/include/linux/bitmap.h:131: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h:131: error: (Each undeclared identifier is
reported only once
/usr/include/linux/bitmap.h:131: error: for each function it appears in.)
/usr/include/linux/bitmap.h: In function 'bitmap_fill':
/usr/include/linux/bitmap.h:146: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_copy':
/usr/include/linux/bitmap.h:152: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_and':
/usr/include/linux/bitmap.h:163: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_or':
/usr/include/linux/bitmap.h:172: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_xor':
/usr/include/linux/bitmap.h:181: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_andnot':
/usr/include/linux/bitmap.h:190: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_complement':
/usr/include/linux/bitmap.h:199: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_equal':
/usr/include/linux/bitmap.h:208: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_intersects':
/usr/include/linux/bitmap.h:217: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_subset':
/usr/include/linux/bitmap.h:226: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_empty':
/usr/include/linux/bitmap.h:234: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_full':
/usr/include/linux/bitmap.h:242: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_weight':
/usr/include/linux/bitmap.h:250: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_shift_right':
/usr/include/linux/bitmap.h:258: error: 'BITS_PER_LONG' undeclared
(first use in this function)
/usr/include/linux/bitmap.h: In function 'bitmap_shift_left':
/usr/include/linux/bitmap.h:267: error: 'BITS_PER_LONG' undeclared
(first use in this function)
In file included from /usr/include/asm-i486/processor.h:22,
                 from /usr/include/asm/processor.h:8,
                 from cpu.c:1:
/usr/include/linux/cpumask.h: At top level:
/usr/include/linux/cpumask.h:88: error: expected
specifier-qualifier-list before 'DECLARE_BITMAP'
/usr/include/linux/cpumask.h: In function '__cpu_set':
/usr/include/linux/cpumask.h:94: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpu_clear':
/usr/include/linux/cpumask.h:100: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_setall':
/usr/include/linux/cpumask.h:106: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_clear':
/usr/include/linux/cpumask.h:112: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpu_test_and_set':
/usr/include/linux/cpumask.h:121: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_and':
/usr/include/linux/cpumask.h:128: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:128: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:128: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_or':
/usr/include/linux/cpumask.h:135: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:135: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:135: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_xor':
/usr/include/linux/cpumask.h:142: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:142: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:142: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_andnot':
/usr/include/linux/cpumask.h:150: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:150: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:150: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_complement':
/usr/include/linux/cpumask.h:157: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:157: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_equal':
/usr/include/linux/cpumask.h:164: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:164: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_intersects':
/usr/include/linux/cpumask.h:171: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:171: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_subset':
/usr/include/linux/cpumask.h:178: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:178: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_empty':
/usr/include/linux/cpumask.h:184: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_full':
/usr/include/linux/cpumask.h:190: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_weight':
/usr/include/linux/cpumask.h:196: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_shift_right':
/usr/include/linux/cpumask.h:204: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:204: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_shift_left':
/usr/include/linux/cpumask.h:212: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:212: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpumask_scnprintf':
/usr/include/linux/cpumask.h:273: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpumask_parse':
/usr/include/linux/cpumask.h:281: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpulist_scnprintf':
/usr/include/linux/cpumask.h:289: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpulist_parse':
/usr/include/linux/cpumask.h:295: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpu_remap':
/usr/include/linux/cpumask.h:303: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:303: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h: In function '__cpus_remap':
/usr/include/linux/cpumask.h:311: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:311: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:311: error: 'cpumask_t' has no member named 'bits'
/usr/include/linux/cpumask.h:311: error: 'cpumask_t' has no member named 'bits'
In file included from /usr/include/asm/processor.h:8,
                 from cpu.c:1:
/usr/include/asm-i486/processor.h: At top level:
/usr/include/asm-i486/processor.h:80: error:
'CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)
/usr/include/asm-i486/processor.h:80: error: requested alignment is
not a constant


Mais detalhes sobre a lista de discussão Kernelnewbies