[OSy] pouzitie standardnej kniznice

Martin Decky decky at dsrg.mff.cuni.cz
Tue Oct 16 00:03:43 CEST 2007


Hezky den,

> skusali sme dnes implementovat funkcie s premennym poctom parametrov 
> (printk,...). Chcel by som sa opytat, ci mozme pri programovani pouzivat 
> makra zo suboru stdarg.h (va_start, va_arg, va_end)

Hlavickovy soubor stdarg.h pouzit muzete. Je soucasti cross-compileru a
mapuje va_* funkce na builtin funkce prekladace.

> Dalej by som chcel vediet, ci mozno pouzit 
>   vprintf a jemu podobne zo stdio.h (aj ked stdio.h sa mi nepodarilo 
> naincludovat, co neviem ci je chyba mojho prostredia, alebo jednoducho 
> tento subor pre mips nie je).

Funkce vprintf() urcite neni soucasti builtin funkci prekladace, takze
ani stdio.h neni soucasti hlavickovych souboru cross-compileru
(lib/gcc/mipsel-linux-gnu/4.2.1/include).

_Ciste_teoreticky_ je pochopitelne mozne pouzit v kernelu funkce ze
standardni ceckove knihovny (nebo take libovolne jine knihovny), ale
narazite pri tom na celou radu potizi: tu knihovnu musite mit prelozenou
cross-compilerem pro MIPS (nemuzete tedy rovnou pouzit tu, kterou mate
nativne v systemu), spousta jejich funkci bude mit netrivialni vazby na
system, pro ktery je napsana (tj. bude vyuzivat napr. syscally
linuxoveho jadra), vetsina implementaci libc je ponekud nemalych rozmeru
a neni uplne snadne napsat pro ni korektni linker script, takze se pro
pouziti v jadre moc nehodi, a v neposledni rade muze obsahovat celou
radu chyb, ktere budete zarucene lovit dele, nez trva napsani vlastniho
printf() s par formatovacimi prikazy.

Takze zaverem: Bez pouziti stdlibc se urcite obejdete a jeji pouziti
jeji doporuceno.


M.D.




More information about the NSWI004 mailing list