This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux-kernel-dev:teste:test-final [2015/09/10 21:15] razvan [Afișarea informațiilor despre procesele copil] |
linux-kernel-dev:teste:test-final [2015/09/11 12:56] (current) razvan [Afișarea informațiilor despre procesele copil] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Test de evaluare finală ====== | ====== Test de evaluare finală ====== | ||
- | Pentru testul final, vă recomandăm să folosiți arhiva de suport a testului. | + | Pentru testul final, vă recomandăm să folosiți [[http://koala.cs.pub.ro/training/res/linux-kernel-dev/tests/final-test.zip|arhiva de suport a testului]]. |
===== Controlare timer prin ioctl ===== | ===== Controlare timer prin ioctl ===== | ||
Line 7: | Line 7: | ||
Creați un modul de kernel care folosește un apel ''ioctl()'' pentru a comanda pornirea și respectiv oprirea unui timer care afișează un mesaj la fiecare ''5'' secunde. În momentul în care modulul este scos din kernel, timer-ul se închide. | Creați un modul de kernel care folosește un apel ''ioctl()'' pentru a comanda pornirea și respectiv oprirea unui timer care afișează un mesaj la fiecare ''5'' secunde. În momentul în care modulul este scos din kernel, timer-ul se închide. | ||
- | Porniți de la arhiva de suport a testului. În directorul ''ioctl-timer/'', în fișierul ''include/util.h'' sunt definite cele două comenzi ioctl pentru pornirea respectiv oprirea timer-ului. Este implementată componenta de test din user space în directorul ''user/''. Implementarea modulului o veți face în directorul ''kernel/'' pornind de la scheletul de acolo. Numele așteptat pentru dispozitiv este ''/dev/ioctl_timer'' cu majorul ''42'' și minorul ''0''. | + | Porniți de la [[http://koala.cs.pub.ro/training/res/linux-kernel-dev/tests/final-test.zip|arhiva de suport a testului]]. În directorul ''ioctl-timer/'', în fișierul ''include/util.h'' sunt definite cele două comenzi ioctl pentru pornirea respectiv oprirea timer-ului. Este implementată componenta de test din user space în directorul ''user/''. Implementarea modulului o veți face în directorul ''kernel/'' pornind de la scheletul de acolo. Numele așteptat pentru dispozitiv este ''/dev/ioctl_timer'' cu majorul ''42'' și minorul ''0''. |
<note tip> | <note tip> | ||
Line 16: | Line 16: | ||
Pentru timere puteți folosi structura ''timer_list''. Informații despre timere găsiți în codul sursă în directorul ''include/linux/timer.h''. | Pentru timere puteți folosi structura ''timer_list''. Informații despre timere găsiți în codul sursă în directorul ''include/linux/timer.h''. | ||
- | Alte informații utile [[http://ocw.cs.pub.ro/courses/so2/laboratoare/lab06|aici]]. | + | Alte informații utile [[http://ocw.cs.pub.ro/courses/so2/laboratoare/lab06#timere|aici]]. |
</note> | </note> | ||
Line 25: | Line 25: | ||
Creați un modul de kernel care afișează, pentru fiecare dintre procesele copil ale procesului init zonele sale de memorie. | Creați un modul de kernel care afișează, pentru fiecare dintre procesele copil ale procesului init zonele sale de memorie. | ||
- | Porniți de la arhiva de suport a testului. În directorul ''info-children/'' aveți un schelet de implementare în care este deja obținut pointer-ul la procesul ''init'' din kernel space. | + | Porniți de la [[http://koala.cs.pub.ro/training/res/linux-kernel-dev/tests/final-test.zip|arhiva de suport a testului]]. În directorul ''info-children/'' aveți un schelet de implementare în care este deja obținut pointer-ul la procesul ''init'' din kernel space. |
<note tip> | <note tip> | ||
Line 36: | Line 36: | ||
<note tip> | <note tip> | ||
- | Pentru parcurgerea listei de copii puteți folosi macro-ul ''list_for_each_entry()'' **sau** macro-urile ''list_for_each'' și ''list_entry''. | + | Pentru parcurgerea listei de copii puteți folosi macro-ul ''list_for_each_entry()'' **sau** macro-urile ''list_for_each()'' și ''list_entry()''. |
Pentru parcurgerea listei de zone de memorie, folosiți câmpul ''vm_next'' din structura ''vm_area_struct'' și opriți-vă când ajungeți cu pointer-ul iterator la ''NULL''. | Pentru parcurgerea listei de zone de memorie, folosiți câmpul ''vm_next'' din structura ''vm_area_struct'' și opriți-vă când ajungeți cu pointer-ul iterator la ''NULL''. | ||
</note> | </note> |