Open
Conversation
Signed-off-by: Mara-Ioana Nicolae <maraioana9967@gmail.com>
Signed-off-by: Mara <maraioana9967@gmail.com>
Signed-off-by: Mara <maraioana9967@gmail.com>
Signed-off-by: Mara <maraioana9967@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Laborator 7
Exercițiul 1
Am înregistrat block device-ul folosind
register_blkdevcuMY_BLOCK_MAJORvaloarea240. Observăm rezultatul prin comanda:Modificând valoarea majorului cu 7, observăm că inserarea modulului eșuează.
Exercițiul 2
Am instanțiat un
block deviceși în funcția ce se ocupa de tratarea request-urilor am afișat diverse informații ale structuriirq. În cazul în care request-ul nu vine de la file system, acesta va fi ignorat.Exercițiul 3
Apelând funcția
my_block_transfervom verifica dacă prin variabiladirse indică direcția de scriere sau citire. În cazul în care aceasta are valoarea0(citire) se vor copialenbytes din zona de memorie,dev->dataînbuffer, altfel în cazul unei scrieri se va face operația inversă.Exercițiul 4
Am deschis block device-ul după numele/path-ul acestuia folosind
blkdev_get_by_path. Apoi am completat câmpurile structuriibio:REQ_OP_READ)Structura completată a fost submisa către subsistemul I/O pentru asociere cu funcția
submit_bio_waitavând garanția că procesarea structurii a fost finalizata la finalul apelului. După aceea am afișat primii trei bytes din buffer.Observăm că outputul este cel așteptat:
❗ În laborator, în ultimul paragraf al secțiunii Initialize a struct bio structure este un typo: "the size of the bufer."
Exercițiul 5
Asemănător cu exercițiul anterior, de această dată am setat direcția pe
REQ_OP_WRITEîn cazul în care parametrul formaldirindică o scriere.Exercițiul 6
Spre deosebire de implementarea trecută, acum se iterează prin toalitatea segmentelor structurii
bio. Pentru fiecare buffer se va apelamy_block_transfercare va efectua operația de citire/scriere în funcție de valoarea variabileidir.