[En-Nut-Discussion] Device driver use patterns
Ralph Mason
ralph.mason at telogis.com
Tue Jun 24 22:36:58 CEST 2003
I noticed a bug in the PPP driver code which got me to thinking how
difficult it is to avoid such a bug using in NutOS.
The basic thing is that when you call write (or NutDeviceWrite or
NutIfWrite) it can return having written less than you asked.
So you need to *every* time you call write have code that checks
eg
void write_my_buffer(FILE* f,u_char* buff, int len){
while ( len ){
int written= _write(f,buff,len);
if (written == len )
break;
buff+=written;
len -= written;
NutThreadYeild();
}
}
Which seems wholly inefficient to me.
The UART driver implement a tx_complete event, so it seems possible to have
a write that you can count on to write all your bytes, rather than having to
use code like the above every time.
Perhaps I missed something obvious here, and this is a non issue.
Ralph
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.491 / Virus Database: 290 - Release Date: 18/06/2003
More information about the En-Nut-Discussion
mailing list