[linux] Nepochopitelny(mnou a zatial) problem s kodom v C
peter Fodrek
fodrek na kasr.elf.stuba.sk
Čtvrtek Duben 4 16:01:33 CEST 2002
Vazeny kolegovia mam RH5.1 (driver pre jednu z mojich kariet na riadenie motorov je modul pre jadra 2.0.x a novsi nie je) a velmi divny problem:
rutina ktora sa ma spustat casovacom a ukoncit priebeh testu je nasledovna
void tim(int i)
{
write(2,"uz koncim",9);
stop=1;
}
vo funkcii main je kus kodu
if (argc<2) {cas_prace=10;printf("cas prace=%ld",cas_prace);}
else{cas_prace=(long)atoi(argv[1]);printf("cas_prace=%ld",cas_prace);}
act.sa_handler=tim;
//act.sa_mask=0;
act.sa_restorer=NULL;
act.sa_flags=SA_RESTART;
do{
pomoc=sigaction(SIGALRM,&act,&old);
}while(pomoc!=0);
ktory nastavi cas priebehu testu defualt 10 a prida obsluznu rutinu k SIGALRM
za nou je
itime.it_value.tv_sec=(long)cas_prace;
sprintf(str,"%ld",itime.it_value.tv_sec);
write(2,str,2);
do{
pomoc=setitimer(ITIMER_REAL,&itime,NULL);
}while(pomoc!=0);
starttime=time(NULL);
while (stop==0)
{curtime=time(NULL);
...
....
}
co je nastavenie timer-a,pre ukoncenie testu a
cyklus,v ktorom sa vykonava test rychlosti driver-a (karta ma v LINUX-e odozvu 7,5-8,9ms na rozdiel od NT4.0SP6a, kde je odozva viac ako 300 ms!!!!)...
A teraz ten problem
pri spusteni programu bez parametrov sa test po 10s zastavi,ale pri spusteni s parametrom 10 (a.out 10) sa test nezastavi, pricom sa ani nevykona rutina tim!!!!! Je to o to zaujimavejsie, ze pri oboch pripadoch skor uvedeny kod
sprintf(str,"%ld",itime.it_value.tv_sec);
write(2,str,2);
dava na stderr cislo 10,ako ma....
Neviete mi niekto,prosim, poradit?
Som z toho jelen....
kompilacia ak mate driver
gcc pokus.c -lacs0 -lacs2
Dakujem za kazdu pomoc,mozno som prehliadol nejaky parameter, alebo uz neviem... Nechcem vyhodit casovac, lebo vysledny projekt bude mat kopu casovacov a chcel som si otestovat ich funkcnost...
S pozdravom
Peter Fodrek
P.S. cely kod prilozeny, v cykle printf
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://lists.linux.sk/pipermail/linux/attachments/20020404/4058e467/attachment.html
------------- další část ---------------
Netextová příloha byla odstraněna...
Jméno: Pokus2.c
Typ: application/octet-stream
Velikost: 2733 bytes
Popis: [žádný popis není k dispozici]
Url : http://lists.linux.sk/pipermail/linux/attachments/20020404/4058e467/attachment.obj
Další informace o konferenci linux