This shows you the differences between two versions of the page.
so2:laboratoare:lab12:exercitii [2018/05/16 13:10] razvan.deaconescu [3. [2p] Adăugare atribute del și add] |
so2:laboratoare:lab12:exercitii [2019/05/20 14:32] (current) razvan.deaconescu [1. [2p] Implementare bus] |
||
---|---|---|---|
Line 103: | Line 103: | ||
===== Completare formular de feedback ===== | ===== Completare formular de feedback ===== | ||
- | Apreciem opinia voastră legată de activitățile cursului de SO2. Ne ajută să îmbunătățim cursul și să facem materia cât mai accesibilă și interesantă. Pentru această vă rugăm să completați [[http://cs.curs.pub.ro/2017/blocks/feedbackacs/stats.php?courseid=144&blockid=2391|formularul de feedback de pe cs.curs.pub.ro]] (trebuie să fiți autentificați și înrolați în cadrul cursului). Vă mulțumim! | + | Apreciem opinia voastră legată de activitățile cursului de SO2. Ne ajută să îmbunătățim cursul și să facem materia cât mai accesibilă și interesantă. Pentru această vă rugăm să completați [[https://acs.curs.pub.ro/2018/course/view.php?id=295|formularul de feedback de pe cs.curs.pub.ro]] (trebuie să fiți autentificați și înrolați în cadrul cursului). Vă mulțumim! |
==== 1. [2p] Implementare bus ==== | ==== 1. [2p] Implementare bus ==== | ||
+ | |||
Analizați conținutul fișierului ''bex.c'', care conține implementarea unui driver de magistrală. Urmăriți comentariile marcate cu ''TODO 1'' pentru a implementa părțile ce lipsesc: înregistrați driverul de magistrală și adăugați un nou device, numit ''root'', cu tipul ''none'' și versiunea ''1''. | Analizați conținutul fișierului ''bex.c'', care conține implementarea unui driver de magistrală. Urmăriți comentariile marcate cu ''TODO 1'' pentru a implementa părțile ce lipsesc: înregistrați driverul de magistrală și adăugați un nou device, numit ''root'', cu tipul ''none'' și versiunea ''1''. | ||
<note tip> | <note tip> | ||
Aruncați o privire pe implementarea funcției ''bex_add_dev()''. | Aruncați o privire pe implementarea funcției ''bex_add_dev()''. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Înregistrarea și deînregistrarea o faceți folosind respectiv funcțiile ''bus_register()'' și ''bus_unregister()''. | ||
</note> | </note> | ||
Line 119: | Line 124: | ||
Adăugați două atribute read-only: ''type'' și ''version''. Urmăriți comentariile marcate cu ''TODO 2''. | Adăugați două atribute read-only: ''type'' și ''version''. Urmăriți comentariile marcate cu ''TODO 2''. | ||
+ | |||
+ | <note tip> | ||
+ | Va trebui să adăugați cele două atribute ''type'' și ''version'' în structura ''bex_dev_attrs'' pe modelul: | ||
+ | <code> | ||
+ | &dev_attr_<insert-attribute-type-here>.attr, | ||
+ | </code> | ||
+ | </note> | ||
Observați că cele două atribute noi sunt vizibile în ''/sys/bus/bex/devices/root''. Verificați conținutul acestor atribute. | Observați că cele două atribute noi sunt vizibile în ''/sys/bus/bex/devices/root''. Verificați conținutul acestor atribute. | ||
Line 136: | Line 148: | ||
==== 3. [2p] Adăugare atribute del și add ==== | ==== 3. [2p] Adăugare atribute del și add ==== | ||
- | Adăugați două atribute write-only, numite ''del'' și ''add''. | + | Adăugați două atribute write-only, numite ''del'' și ''add''. ''del'' așteaptă un nume de device pentru a îl elimina, iar ''add'' așteaptă numele, tipul și versiunea pentru a crea un device nou. Urmăriți comentariile marcate cu ''TODO 3''. |
- | ''del'' așteaptă un nume de device pentru a îl elimina, iar ''add'' așteaptă numele, tipul și versiunea pentru a crea un device noi. Urmăriți comentariile marcate cu ''TODO 3''. | + | |
+ | <note tip> | ||
+ | Va trebui să adăugați atributele ''del'' și ''add'' în structura ''bex_bus_attr'' pe modelul: | ||
+ | <code> | ||
+ | &bus_attr_<insert-attribute-name-here>.attr, | ||
+ | </code> | ||
+ | |||
+ | </note> | ||
<note tip> | <note tip> | ||
Line 190: | Line 209: | ||
==== 5. [1.5p] Înregistrarea unui device bex misc în funcția probe ==== | ==== 5. [1.5p] Înregistrarea unui device bex misc în funcția probe ==== | ||
- | Modificați ''bex.c'' astfel încât operația ''probe'' să eșueze dacă ''version > 1''. Înregistrați device-ul misc în funcția ''bex_misc_probe'' și deînregistrați-l în ''bex_misc_remove''. Urmăriți comentariile marcate cu ''TODO 6''. | + | Modificați ''bex_misc.c'' astfel încât operația ''probe'' să eșueze dacă ''version > 1''. Înregistrați device-ul misc în funcția ''bex_misc_probe()'' și deînregistrați-l în ''bex_misc_remove''. Urmăriți comentariile marcate cu ''TODO 6''. |
<note tip> | <note tip> |