[OSy] Kompilovanie testov
Ondrej Palkovsky
ondrap at penguin.cz
Fri Nov 5 10:41:26 CET 2004
Taky mi prijde optimalizace -O2 pomerne drasticka. Vcera jsem hledal bug,
a s nejvyssi pravdepodobnosti se mi nasledujici kod:
timer_start(&tmr);
current->state = TS_SLEEP;
while (!expired) {
schedule();
current->state = TS_SLEEP;
}
current->state = TS_RUN;
prelozil na:
timer_start(&tmr);
while (!expired) {
current->state = TS_SLEEP;
schedule();
}
current->state = TS_RUN;
Jeste jsem si to v asm neoveroval, ale mam 90% podezreni, ze to tak je.
Reseni je deklarovat current->state jako 'volatile', pripadne zmenit
poradi volani funkci. Samozrejme pri pouziti -O3 optimalizace vse
fungovalo OK (a pri vlozeni par instrukci kamkoliv take, naprosto
nedebugovatelna chyba). A test condvar1 pri -O3 dobehne 2x rychleji nez
pri -O2, coz uz nechapu vubec :-/
Ondrej Palkovsky
On Fri, 5 Nov 2004, Jozef Misutka wrote:
> pre skupiny, ktore by mohli mat podobny problem som zisitil, ze problem bol
> v Makefile, kde testy pouzivaju optimalizaciu -02, ktoru ja nepouzivam.
> Printf mame portnuty z linuxu + trosku zmeneny. Velmi som asseblerovsky
> vypis neskumal, ale som si vsimol, ze ten znak sa tam niekde naloaduje, ale
> pravdepodobne sa "nestihne" vypisat..
More information about the NSWI004
mailing list