[so2] [Tema 2] Optiuni, chardevice-uri si IOCTL

Alexandru-Cosmin Mihai alexcosmin.mihai at gmail.com
Thu Apr 2 15:00:51 EEST 2020


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.

Multumesc!

On Thu, 2 Apr 2020 at 14:40, Paul Olaru <olarupaulstelian97 at gmail.com>
wrote:

> 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.
>
> 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)
>
> Singura operație de ioctl pe care o văd în cerință e configurarea liniei.
> Asta nu activează sau dezactivează nimic dpdv software.
>
> On Thu, Apr 2, 2020, 13:55 Alexandru-Cosmin Mihai via so2 <
> so2 at cursuri.cs.pub.ro> wrote:
>
>> Salut!
>>
>> Am cateva intrebari legate de modul in care opereaza impreuna toate
>> componentele din aceasta tema.
>>
>> 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.
>> De asemenea avem 3 optiuni de functionare care activeaza / dezactiveaza
>> cele 2 perechi (intrerupere, cdev).
>>
>> Intrebarile mele sunt:
>>
>> 1) Ce am scris mai sus este corect?
>>
>> 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 ?
>>
>> 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"?
>>
>> Multumesc frumos!
>> _______________________________________________
>> http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20200402/88ea22bd/attachment.html>


More information about the so2 mailing list