inline assembler v C
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Čtvrtek Listopad 22 02:21:49 CET 2001
On Wed, 21 Nov 2001, Michal Ludvig wrote:
> >>extern inline void nop(void)
> >>{ __asm__ __volatile__ ("nop"); }
> > Proc ji mate extern?
>
> Protoze je tak definovana v headeru v kernelu. Konkretne se jedna o
> funkci prefetch() z linux/include/asm/processor.h, kterou pouziva
> copy_{to,from}_user() v modulu, ktery pisu. Kdyz ten modul prelozim a
> chci ho zavest, tak insmod krici, ze pry "unresolved symbol prefetch".
> Je pravda, ze bez extern to chodi (divne - vzdyt jsou ve stejnem
> souboru), ale prepisovat headery kernelu se mi nechce.
Aha. A co zkusit kompilovat s -Ox, kde x>=2 (nebo tak nejak).
Mam dojem, ze potiz spociva v tom, ze bez zapnutych optimalizaci gcc
neinlajnuje, ale extern u inline zase inhibuje vytvoreni out-of-line
kodu, takze tam v konecnem dusledku definice te funkce chybi.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux