Open
Conversation
Signed-off-by: Mara-Ioana Nicolae<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.
Laboratorul 4
Exercițiul 1
Am înregistrat două porturi cu numele "io port 1" și "io port 2" sub id-urile 0x61 și 0x65 folosind
request_region. Apoi în funcția de exit eliberat resursele folosindrelease_region.Am verificat corectitudinea prin:
Când am dat
rmmodam observat că nu mai apar aceste informații.Exercițiul 2
Am definit funcția
kbd_interrupt_handlerce va juca rolul de interrupt handler. În aceasta vom afișa un mesaj pe care îl vom observa folosind dmesg. Am folositrequest_irq(I8042_KBD_IRQ, kbd_interrupt_handler, IRQF_SHARED, MODULE_NAME, &devs[0])pentru a asocia handlerul definit anterior.În caz de eroare sau atunci când se apelează exit am eliberat resursele.
Exercițiul 3
Am citit valoarea de la
I8042_DATA_REGși am stocat-o în variabilaval(nu este caracter ASCII). Apoi am printat în handler scancode-ul.În handler am stocat scancode-ul și am verificat daca acesta reprezintă o apăsare sau eliberare. Acțiunea reprezintă o apăsare daca valoarea obținută din
scancode & 0x80este 0. Dacă o tastă a fost apăsată atunci se v decodifica caracterul ASCII asociat apoi se vă stoca în buffer.Am verificat corectitudinea prin apăsarea unor taste și verificarea output-ului cu tabelul cerinței.
La apăsarea tastei 'a':
- În cerința exercițiului cred că este o eroare în tabel la linia tastei 'ENTER'Exercițiul 4
În funcția
get_charam implementat funcționalitatea de a returna caracterul de la indexulget_idxdin buffer. Apoi am modificat valoarile dincount(decrementare) șiget_idx(poziția următoare din buffer-ul circular).Într-o buclă dependentă de parametrul formal
size, am citit caracter cu caracter și am transferat conținutul către bufferul din userspace folosindput_user(am avut grija că aceasta operație să nu se afle intre lock și unlock ale spinlock-ului).Exercițiul 5
Am completat funcția
kbd_writeși am adăugat-o pentru operația write în fops. După aceea am completat funcția de reset a bufferului zeroizand conținutul acestuia împreună cu indecșii și dimensiunea acestuia.