[OSy] Vraceni vysledku ze syscallu

Martin Decky decky at dsrg.mff.cuni.cz
Fri Jan 12 09:36:25 CET 2007


Hezky den,

> jak se da vratit vysledek syscallu do uzivatelske
> funkce?

Typicky se k tomu pouziva nejaky registr, vetsinou se voli v0, protoze 
to odpovida zpusobu predavani navratove hodnoty z funkce ve standardni 
ceckove volaci konvenci na MIPSu (takze s tim ma prekladac nejmene prace).

> V pocatku jsme navratovou hodnotu predavali
> pres registr V0 a fungovalo to do aplikovani vsech
> patchu k kernelu kohlto (sirius). Uz pul dne se na to
> nemuzeme prijit. Vyzkousel jsem i registr S0, ale
> nefunguje to taky.

Opravdu nechci byt skaredy, ale bohuzel musim rici, ze jste si asi stale 
jeste neosvojili tu spravnou "metodu" na reseni programatorskych problemu.

Pokud Vam to fungovalo pred aplikovanim tech patchu, tak ty patche 
pravdepodobne neco zmenily ve spojitosti s Vasim kodem. K zjisteni, co 
zmenily, Vam ovsem nepomuze kristalova koule ani tato konference, ale 
jedine to, ze zkratka detailne pochopite, jak funguje ten kod, ktery se 
tech patchu tyka, zjistite, kde je presne problem, a opravite ho.


Ma hypoteza je, ze ty patche nejak opravily obnovovani kontextu po 
obsluze vyjimky, takze navratovou hodnotu, kterou ulozite do registru, 
prepise puvodni hodnota z ulozeneho kontextu (a tudiz musite navratovou 
hodnotu vlozit do struktury s ulozenym kontextem). Na druhou stranu si 
rikam, ze na takovou trivialitu byste jiste prisli sami, takze to bude 
asi neco jineho ..


M.D.



More information about the NSWI004 mailing list