[so2] [Tema 2] Intrerupere UART

Mititelu Stefan fanx07 at gmail.com
Fri Apr 4 13:48:09 EEST 2014


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.
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:

asteapta in wqueue pana exista cel putin un bte in coada read
kfifo_len=1  bytes_read=0 param_size=128
//intra in intreruperea de read de 128+62 ori
copy_to_user
kfifo_len=63  bytes_read=128 param_size=128

asteapta in wqueuqe
kfifo_len=63  bytes_read=0 param_size=62
copy_to_user
kfifo_len=1  bytes_read=62 param_size=62

..unde kfifo_len repr numarul de bytes din kfifo, byte_read cat s-a
transmis in userspace, param_size parametrul size din functia read().

Are cineva o idee de ce ar intra in handler mereu cu 1 mai mult ca in teste?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20140404/82f67909/attachment.html>


More information about the so2 mailing list