[pso] [tema2][lin] test - problema cu grep

Andrei Trandafir andreitra1987 at yahoo.com
Sat Apr 3 13:49:31 EEST 2010


Salut,

Acum am dat si eu peste niste probleme in tester, mai exact: nu imi trec primele 3 teste de dupa primul rmmod, mai exact incepand cu:

test(system("cat /proc/ioports | grep \"02f8-02ff : uart16550\" &> /dev/null") != 0, "COM1 I/O ports");

Insa daca adaug un "abort()" in tester inaintea acestei linii si execut comanda de mana, in shell dupa executarea testerului, rezultatul este 1 (deci nu este gasit respectivul sir in cat, ceea ce este corect dpdv al functionarii modulului meu), exact cum spunea si Octavian.

Nu am reusit pana acum sa-mi dau seama de unde apare problema. Any hints or ideas?

Multumesc.

--- On Fri, 4/2/10, Octavian Voicu <octavian.voicu at gmail.com> wrote:

> From: Octavian Voicu <octavian.voicu at gmail.com>
> Subject: Re: [pso] [tema2][lin] test - problema cu grep
> To: "Proiectarea Sistemelor de Operare" <pso at cursuri.cs.pub.ro>
> Date: Friday, April 2, 2010, 9:03 PM
> 2010/4/2 Andrei Dragus <adragus at gmail.com>:
> > Incerc urmatoarele bucati de cod:
> >
> > int x = system("cat /proc/interrupts | grep
> \"3:.*uart16550\" &> /dev/null")
> > ;
> > printf("Got:%d\n",x); //Got: 0
> >
> > int x = system("cat /proc/interrupts | grep
> \"3:.*uart16550\"") ;
> > printf("Got:%d\n",x);// Got:256
> >
> > Apelul system ar trebui sa intoarca !=0, nu exista
> nici o linie in
> > /proc/interrupts care sa semene cu asta.
> > Nu mi-e clar de ce in primul caz returneaza 0, dar e
> sigur ca pica testele
> > din cauza asta.
> 
> Comanda testeaza daca handlerul tau pentru IRQ-urile 4
> (com1) si 3
> (com2) a fost instalat. Trebuie rulata comanda cu modulul
> tau inserat.
> De asemenea, este important ca in modulul tau sa specifici
> corect
> numele modulului care inregistreaza IRQ-ul cand apelezi
> request_irq
> [1] adica sa pasezi MODULE_NAME ca parametrul al 4-lea in
> apelul
> request_irq pentru ambele IRQ-uri.
> 
> Asa cum scrie in enuntul temei, modulul tau trebuie sa fie
> numit uart16550.
> 
> Testul este rulat dupa insmod si apoi inca o data dupa
> rmmod. Comanda
> grep returneaza exit status 0 daca cel putin o linie a fost
> matchuita
> si diferit de zero in caz contrar. Deci in cazul testului
> dupa insmod,
> exit statusul trebuie sa fie 0 (a existat un match -- ai
> inregistrat
> handlerul) si != 0 pentru cel dupa rmmod (n-a existat
> niciun match --
> handlerul a fost deinregistrat).
> 
> Ca o observatie, system ruleaza comanda folosind shell-ul
> (sh -c
> COMANDA). Ghilimelele si apostrofurile pot amandoua fi
> folosite pentru
> a trimite catre comenzi parametrii care au spatii sau alte
> caractere
> speciale. Diferente e ca apostroful ignora cam toate
> metacaracterele,
> pe cand ghilimelele pastreaza semnificatia unora dintre ele
> (de
> exemplu expandarea variabilelelor de mediu folosind sintaxa
> $var). De
> asemenea `> /dev/null 2>&1' si `&>
> /dev/null' sunt sintaxe
> echivalente. Vezi `man bash' pentru mai multe informatii.
> 
> Octavian
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
> 


      


More information about the pso mailing list