driver ring buffer overrun and printf usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi ,

In my embedded linux-arm target , in a userspace thread , i am reading
hid events over usb-hiddev interface (/dev/hiddev) .

basically what i do  is this :

read_thread(){
while(1){
ret = read( "/dev/hiddev" , user_buffer , bytes_to_read);
printf("bytes received =%d" , ret ) ;  // (printf prints debug message
to serial console  );
}
}

now whenever i use the printf statement in read thread ,  kernel space
ring buffer  in usb-hid driver is overrun frequently , which results
in loss of data send by usb device .
if i remove printf in read thread , no overruns are reported in
usb-hid driver . that means if  printf is used , application
read_thread is not able to
read data in time which leads to driver ring buffer overrun .

does this behaviour of printf points to some problem in embedded
linux's  scheduler  ( printf prints data to debug serial port , and
consecutive read() calls in  read_thread() are  scheduled lately due
to that ) ?

do the actual implementation of printf  involves any kind of sleeps ?

kindly share necessary insight wrt above printf usage and driver ring
buffer overrun .

regards
Amit Nagal

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux