printing on my canon bjc250 was horribly slow. this patch makes printing at acceptible speeds. Notes: Fri Jun 12 12:24:20 EDT 2009 geoff applied a different fix, as discussed. Reference: /n/sources/patch/applied/lpt-speedup Date: Mon Jun 1 21:35:47 CES 2009 Signed-off-by: cinap_lenrek@gmx.de Reviewed-by: geoff --- /sys/src/9/pc/devlpt.c Mon Jun 1 21:35:11 2009 +++ /sys/src/9/pc/devlpt.c Mon Jun 1 21:35:08 2009 @@ -191,14 +191,19 @@ static void outch(int base, int c) { - int status, tries; + int status, tries, spin; + static int maxspin = 0; + spin = 0; for(tries=0;; tries++) { status = inb(base+Qpsr); if(status&Fnotbusy) break; if((status&Fpe)==0 && (status&(Fselect|Fnoerror)) != (Fselect|Fnoerror)) error(Eio); + if(++spin < maxspin) + continue; + maxspin++; if(tries < 10) tsleep(&lptrendez, return0, nil, 1); else { @@ -209,6 +214,8 @@ outb(base+Qdlr, c); outb(base+Qpcr, Finitbar|Fstrobe); outb(base+Qpcr, Finitbar); + if(spin*2 + 16 < maxspin) + maxspin--; } static int