Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > подскажите по функции определения процессоров...


Автор: quasi 22.9.2007, 17:24
подскажите по ошибкам, плиз....
Код

--- cpu.o ---
cc1: warnings being treated as errors
/usr/src/sys/arch/xen/i386/cpu.c: In function 'cpu_init_first':
/usr/src/sys/arch/xen/i386/cpu.c:213: warning: implicit declaration of function 'lapic_cpu_number'
/usr/src/sys/arch/xen/i386/cpu.c: In function 'cpu_hatch':
/usr/src/sys/arch/xen/i386/cpu.c:689: warning: implicit declaration of function 'lapic_enable'
/usr/src/sys/arch/xen/i386/cpu.c:690: warning: implicit declaration of function 'lapic_initclocks'
/usr/src/sys/arch/xen/i386/cpu.c:701: warning: implicit declaration of function 'lapic_set_lvt'
/usr/src/sys/arch/xen/i386/cpu.c:716: warning: implicit declaration of function 'cc_microset'
/usr/src/sys/arch/xen/i386/cpu.c: In function 'cpu_set_tss_gates':
/usr/src/sys/arch/xen/i386/cpu.c:823: warning: implicit declaration of function 'cpu_init_tss'
/usr/src/sys/arch/xen/i386/cpu.c:827: warning: passing argument 1 of 'setsegment' from incompatible pointer type
/usr/src/sys/arch/xen/i386/cpu.c:828: error: incompatible types in assignment
*** [cpu.o] Error code 1


Код

# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==213'
        int cpunum = lapic_cpu_number();
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==689'
        lapic_enable();
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==690'
        lapic_initclocks();
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==701'
        lapic_set_lvt();
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==716'
                cc_microset(ci);
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==823'
        cpu_init_tss(&ci->ci_ddbipi_tss, ci->ci_ddbipi_stack,
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==827'
            SDT_SYS386TSS, SEL_KPL, 0, 0);
# cat /usr/src/sys/arch/xen/i386/cpu.c |awk 'NR==828'
        ci->ci_gdt[GIPITSS_SEL].sd = sd;

Автор: MAKCim 22.9.2007, 17:29
quasi
какой тип имеет выражение
Цитата

ci->ci_gdt[GIPITSS_SEL].sd = ...

точнее поле sd
а также какой тип у переменной sd?
Цитата

... = sd;

ошибка вполне очевидна
компилятор тебе явно сказал
Цитата

/usr/src/sys/arch/xen/i386/cpu.c:828: error: incompatible types in assignment

т. е несоответствие типов

Автор: Skladnoy 22.9.2007, 21:13
И, кстати, насыпал дикую кучу implicit function declaration warnings. То есть ты вызываешь нигде не объявленную функцию. Могут полезть ошибки на стадии линковки. Может быть не подключен какой-нибудь заголовок

Автор: quasi 23.9.2007, 12:01
Цитата
какой тип имеет выражение

как определить?
Цитата
Может быть не подключен какой-нибудь заголовок

Приаттачил сырец.
MD5 (cpu.c.tgz) = 9286928226634d72b34e48116964fec4
я там только добавил #include <uvm/uvm_extern.h> сам не знаю для чего, нашел в старом

Автор: MAKCim 23.9.2007, 12:41
Цитата(quasi @  23.9.2007,  12:01 Найти цитируемый пост)
как определить?

блин, ну товарищи, так нельзя  smile 
ну как определить?
взять и посмотреть, что за тип у поля ci_gdt объекта ci
далее найти определение ci_gdt и посмотреть тип поля sd
потом сравнить с типом переменной sd

Автор: comcon1 24.9.2007, 12:53
не проще прочитать /proc/cpuinfo, или надо именно так, как в сабже. Или нужно, чтоб работало там, где proc нет?

Автор: quasi 26.9.2007, 09:40
кажись тут опредееляется тип http://fxr.watson.org/fxr/source/arch/xen/i386/cpu.c?v=NETBSD#L806
806 setsegment(&sd, &ci->ci_doubleflt_tss, sizeof(struct i386tss) - 1,

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)