This shows you the differences between two versions of the page.
so2:laboratoare:lab04:exercitii [2018/03/13 14:53] ionel.ghita [Extra] |
so2:laboratoare:lab04:exercitii [2019/03/12 21:54] (current) constantin.ghioc [1. [2p] Înregistrarea unui dispozitiv de tip caracter] |
||
---|---|---|---|
Line 83: | Line 83: | ||
</code> | </code> | ||
</note> | </note> | ||
+ | |||
+ | ===== Exerciții ===== | ||
<note warning> | <note warning> | ||
Line 92: | Line 94: | ||
</note> | </note> | ||
+ | <note important> | ||
+ | Înainte de începerea rezolvării laboratorului, rulați comanda ''%%git pull --rebase%%'' in directorul ''~/so2/linux'', pentru a obține ultima versiune a scheletului de laborator. | ||
+ | </note> | ||
===== [0.5p] Intro ===== | ===== [0.5p] Intro ===== | ||
Line 103: | Line 108: | ||
<note tip> | <note tip> | ||
- | La căutarea simbolurilor în [[https://elixir.bootlin.com/linux/v4.15/source|LXR]], asiguraţi-vă că selectaţi aceeaşi versiune de kernel ca cea din laborator(4.15). | + | La căutarea simbolurilor în [[https://elixir.bootlin.com/linux/v4.15/source|LXR]], asiguraţi-vă că selectaţi aceeaşi versiune de kernel ca cea din laborator (4.19). |
Pentru cscope, folosiți comanda '':cs f g //nume//'' pentru căutarea definiţiilor şi comanda '':cs f s //nume//'' pentru căutarea simbolurilor. Pentru mai multe informaţii despre comenzile disponibile folosiţi comanda '':help cscope''. | Pentru cscope, folosiți comanda '':cs f g //nume//'' pentru căutarea definiţiilor şi comanda '':cs f s //nume//'' pentru căutarea simbolurilor. Pentru mai multe informaţii despre comenzile disponibile folosiţi comanda '':help cscope''. | ||
Line 110: | Line 115: | ||
===== [10.5p] Character Device Driver ===== | ===== [10.5p] Character Device Driver ===== | ||
- | ==== 1. [1p] Înregistrarea unui dispozitiv de tip caracter ==== | + | ==== 1. [2p] Înregistrarea unui dispozitiv de tip caracter ==== |
Driver-ul va controla un singur dispozitiv cu majorul ''MY_MAJOR'' și minorul ''MY_MINOR ''(macro-urile definite în fișierul ''kernel/so2_cdev.c'') Ca prim pas, va trebui să creați fișierul de tip caracter ''/dev/so2_cdev'' folosind utilitarul ''mknod''. | Driver-ul va controla un singur dispozitiv cu majorul ''MY_MAJOR'' și minorul ''MY_MINOR ''(macro-urile definite în fișierul ''kernel/so2_cdev.c'') Ca prim pas, va trebui să creați fișierul de tip caracter ''/dev/so2_cdev'' folosind utilitarul ''mknod''. | ||
Line 127: | Line 132: | ||
</note> | </note> | ||
- | Afișati, folosind macro-ul ''LOG_LEVEL'', un mesaj după operațiile de înregistrare, respectiv deînregistrare, care să confirme realizarea cu succes a acestora. | + | Afișati, folosind ''pr_info'', un mesaj după operațiile de înregistrare, respectiv deînregistrare, care să confirme realizarea cu succes a acestora. |
Încărcați apoi modulul în kernel<code> | Încărcați apoi modulul în kernel<code> | ||
Line 249: | Line 254: | ||
</note> | </note> | ||
- | ==== 7. [2p] Operație de tip ''ioctl''. ==== | + | ==== 7. [1p] Operație de tip ''ioctl''. ==== |
Pentru acest exercițiu dorim să adăugăm operația ioctl ''MY_IOCTL_PRINT'' care să afișeze mesajul dat de macro-ul ''IOCTL_MESSAGE'' din driver. Urmăriți comentariile marcate cu ''TODO 6''. | Pentru acest exercițiu dorim să adăugăm operația ioctl ''MY_IOCTL_PRINT'' care să afișeze mesajul dat de macro-ul ''IOCTL_MESSAGE'' din driver. Urmăriți comentariile marcate cu ''TODO 6''. |