<div dir="ltr">Ah, inteleg. Eu aveam impresia ca ca operatia IOCTL e folosita pentru a schimba optiunea (activez / dezactivez accesul la linie). Banuiesc atunci ca argumentul la ioctl va fi un pointer la struct uart16550_line_info.<br><br>Multumesc!<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 2 Apr 2020 at 14:40, Paul Olaru <<a href="mailto:olarupaulstelian97@gmail.com">olarupaulstelian97@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>Când un cdev e dezactivat îl dezactivezi complet în sensul că nu îi dai register, astfel încât userspace-ul dacă ar crea nodul ar primi -ENODEV. Dacă un char device e dezactivat nu îi mai înregistrezi deloc și nu pui handler la întreruperea corespunzătoare, astfel încât să nu poți primi nimic pentru ce e dezactivat.</div><div dir="auto"><br></div><div dir="auto">Opțiunile sunt disponibile la insmod. Pe baza lor decizi dacă să dai register_chrdev sau nu și dacă bagi handler la întrerupere sau nu. O dată create sau eliminate, resursele pentru portul dezactivat nici măcar nu le vei aloca vreodată (nu se poate schimba opțiunea fără a da rmmod și insmod)</div><div dir="auto"><br></div><div dir="auto">Singura operație de ioctl pe care o văd în cerință e configurarea liniei. Asta nu activează sau dezactivează nimic dpdv software.<br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Apr 2, 2020, 13:55 Alexandru-Cosmin Mihai via so2 <<a href="mailto:so2@cursuri.cs.pub.ro" rel="noreferrer" target="_blank">so2@cursuri.cs.pub.ro</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Salut!<br><br>Am cateva intrebari legate de modul in care opereaza impreuna toate componentele din aceasta tema.<br><br>Din cate inteleg eu, vom avea 2 char device-uri: unul cu minor 0 pentru interuperea asociata COM1 si unul cu minor 1 pentru intreruperea asociata COM2 si fiecare read/write pe fisierul asociat chardevice-ului X, ne va citi / scrie din/in bufferul pentru port-ul X.<br>De asemenea avem 3 optiuni de functionare care activeaza / dezactiveaza cele 2 perechi (intrerupere, cdev).<br><br>Intrebarile mele sunt:<br><br>1) Ce am scris mai sus este corect?<br><br>2) Cand o intrerupere este ignorata, trebuie sa facem unregister si delete pe char device-ul asociat sau este suficient ca in viitor sa nu intoarcem nimic la read si write sau trebuie ne blocam la read si write ?<div><br></div><div>3) IOCTL se comporta la fel pe ambele char device-uri? Pot sa dezactivez o pereche (intrerupere, cdev) apeland ioctl pe celalalt cdev? Daca raspunsul la intrebarea 2) este ca nu facem register si delete pt. cdev, atunci se pot primi comenzi ioctl pe un cdev "dezactivat"?<br><br>Multumesc frumos!</div></div>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii" rel="noreferrer noreferrer noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii</a></blockquote></div></div></div>
</blockquote></div>