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

Octavian Voicu octavian.voicu at gmail.com
Sat Apr 3 07:03:14 EEST 2010


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


More information about the pso mailing list