<div dir="ltr"><div>Salut! In momentul in care activez intrerupera de citire imi citeste mereu cu 1 octet mai mult ca in teste. Intreruperea de read o activez in module_init.<br>In intrerupere, in momentul in care citesc un byte din uart in coada read, semnalez faptul ca exista bytes pentru a se face copy_to_user. Folosesc kfifo pt bufere si waiting_queue pt a semnala. Ex de 2 apeluri read succesive:<br>
<br>asteapta in wqueue pana exista cel putin un bte in coada read<br>kfifo_len=1 bytes_read=0 param_size=128<br></div>//intra in intreruperea de read de 128+62 ori<br><div>copy_to_user<br>kfifo_len=63 bytes_read=128 param_size=128<br>
<br>asteapta in wqueuqe<br>kfifo_len=63 bytes_read=0 param_size=62<br>copy_to_user<br>kfifo_len=1 bytes_read=62 param_size=62<br><br></div><div>..unde kfifo_len repr numarul de bytes din kfifo, byte_read cat s-a transmis in userspace, param_size parametrul size din functia read().<br>
</div><div><br></div><div>Are cineva o idee de ce ar intra in handler mereu cu 1 mai mult ca in teste?<br></div></div>