[so2] Deadlock cu wait queue

Diana Grecu dianagrecu07 at gmail.com
Sun Apr 12 08:56:21 EEST 2020


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/1286bdb8/attachment-0001.html>


More information about the so2 mailing list