This shows you the differences between two versions of the page.
so2:laboratoare:lab07:exercitii [2018/04/09 19:37] ionel.ghita |
so2:laboratoare:lab07:exercitii [2018/04/12 11:40] (current) elena.sandulescu [6. [2p] Prelucrarea cererilor din coada la nivel de bio] |
||
---|---|---|---|
Line 103: | Line 103: | ||
===== [10.5p] Exerciții ===== | ===== [10.5p] Exerciții ===== | ||
+ | |||
+ | <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> | ||
==== 1. [1p] Dispozitiv de tip bloc ==== | ==== 1. [1p] Dispozitiv de tip bloc ==== | ||
Line 118: | Line 122: | ||
</note> | </note> | ||
- | Schimbați valoarea macroului ''MY_BLOCK_MAJOR'' la valoarea ''7''. Compilați modulul, copiați-l pe mașina virtuală și încărcați-l în nucleu. Observați că încărcarea eșuează întrucât există deja un alt driver/dispozitiv care are majorul ''7'' înregistrat în nucleu. | + | Schimbați valoarea macroului ''MY_BLOCK_MAJOR'' la valoarea ''254''. Compilați modulul, copiați-l pe mașina virtuală și încărcați-l în nucleu. Observați că încărcarea eșuează întrucât există deja un alt driver/dispozitiv care are majorul ''254'' înregistrat în nucleu. |
Restaurați valoarea ''240'' pentru macroul ''MY_BLOCK_MAJOR''. | Restaurați valoarea ''240'' pentru macroul ''MY_BLOCK_MAJOR''. | ||
Line 264: | Line 268: | ||
Folosiți macrourile [[https://elixir.bootlin.com/linux/v4.15/source/arch/x86/mm/highmem_32.c#L55|kmap_atomic]], respectiv [[https://elixir.bootlin.com/linux/v4.15/source/include/linux/highmem.h#L125|kunmap_atomic]] pentru maparea paginilor fiecărui bio și accesarea bufferelor acestuia. Pentru transferul efectiv, apelați funcția ''my_block_transfer'' implementată la exercițiul anterior. | Folosiți macrourile [[https://elixir.bootlin.com/linux/v4.15/source/arch/x86/mm/highmem_32.c#L55|kmap_atomic]], respectiv [[https://elixir.bootlin.com/linux/v4.15/source/include/linux/highmem.h#L125|kunmap_atomic]] pentru maparea paginilor fiecărui bio și accesarea bufferelor acestuia. Pentru transferul efectiv, apelați funcția ''my_block_transfer'' implementată la exercițiul anterior. | ||
- | Pentru testare folosiți fișierul de test ''ram-disk-test.c''. Îl compilați folosind, pe sistemul fizic, comanda<code> | + | Pentru testare folosiți fișierul de test ''ram-disk-test.c''. |
- | make -f Makefile.test | + | |
</code> | </code> | ||
- | și apoi îl rulați folosind, pe mașina virtuală QEMU, comanda<code> | + | îl rulați folosind, pe mașina virtuală QEMU, comanda<code> |
./ram-disk-test | ./ram-disk-test | ||
</code> | </code> |