[so2] Deadlock cu wait queue

Paul Olaru olarupaulstelian97 at gmail.com
Sun Apr 12 11:13:50 EEST 2020


Funcția aia de acces la hardware o apelez și din context proces, nu doar
din context întrerupere -- problema pe care încerc să o rezolv astfel este
cea în care nu s-ar declanșa pentru prima dată întreruperea corespunzătoare.

On Sun, Apr 12, 2020, 08:56 Diana Grecu <dianagrecu07 at gmail.com> wrote:

> Esti sigur ca ai nevoie de spinlock-ul acela? Si fiind deja in context
> intrerupere, nu ar trebui sa folosesti unul normal, fara sa mai dai disable
> la intreruperi?
>
> On Sun, Apr 12, 2020, 4:55 AM Paul Olaru via so2 <so2 at cursuri.cs.pub.ro>
> wrote:
>
>> Pentru read, flow-ul meu este ceva similar cu:
>>
>>
>>
>> [cdev]
>>
>> wait_event(&dev->wq_read, !kfifo_is_empty(&dev->fifo_read));
>>
>> kfifo_to_user(...);
>>
>>
>>
>> [interrupt]
>>
>> spin_lock_irqsave (this part can be called from cdev as well)
>>
>> read_reg, kfifo_in, ...
>>
>> spin_unlock_irqrestore()
>>
>> wake_up(&dev->wq_read)
>>
>>
>>
>> Dintr-un motiv sau altul wake_up se întâmplă înainte de wait_event și
>> ajung în situația în care wait_event se blochează ad infinitum.
>>
>> E nevoie de o sincronizare specială? (eventual pe kfifo, who knows)
>>
>>
>>
>> Unele încercări de a rezolva asta mi-au cauzat qemu să dea crash (EIP a
>> ajuns complet random în kernel)
>>
>>
>>
>> On a related note, alte variante ale codului care mai returnează
>> -ERESTARTSYS duc la probleme, anume codul de eroare -512 ajunge
>>
>> în userspace în loc să facă ce m-aș aștepta. Any way to handle that?
>>
>>
>>
>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
>> Windows 10
>>
>>
>> _______________________________________________
>> 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/20200412/1dbc9e96/attachment.html>


More information about the so2 mailing list