User Tools

Site Tools


linux-kernel-dev:teste:test-final

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
linux-kernel-dev:teste:test-final [2015/09/10 20:19]
razvan created
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 33: Line 33:
 <note tip> <note tip>
 Trebuie să porniți de la santinela dată de câmpul ''​children''​ al structurii ''​task_struct''​ a procesului ''​init''​. Apoi să continuați parcurgerea în lista de copii folosind câmpul ''​sibling''​ din structurile ''​task_struct''​ ale proceselor copil. Trebuie să porniți de la santinela dată de câmpul ''​children''​ al structurii ''​task_struct''​ a procesului ''​init''​. Apoi să continuați parcurgerea în lista de copii folosind câmpul ''​sibling''​ din structurile ''​task_struct''​ ale proceselor copil.
 +</​note>​
 +
 +<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 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>​
linux-kernel-dev/teste/test-final.1441905540.txt.gz · Last modified: 2015/09/10 20:19 by razvan