Hello.

Ralph Alvy wrote:
With version 1.2.1, hogthreshold at 2 keeps the CPU at 60% and printing is almost immediate at a timeout value of 10.
Probably the attached patch can
rectify the problem?

--- src/base/dev/misc/lpt.c	2004-06-07 00:14:59.000000000 +0400
+++ src/base/dev/misc/lpt.c	2004-07-16 21:26:10.157433832 +0400
@@ -20,6 +20,7 @@
 #include <sys/wait.h>
 
 #include "emu.h"
+#include "timers.h"
 #include "lpt.h"
 #include "utilities.h"
 #include "dos2linux.h"
@@ -53,11 +54,13 @@
     return 1;
   }
 
+  reset_idle();
+
   switch (HI(ax)) {
   case 0:			/* write char */
     /* p_printf("print character on lpt%d : %c (%d)\n",
 			       LO(dx), LO(ax), LO(ax)); */
-    HI(ax) = (lpt[LO(dx)].fops.write) (LO(dx), LO(ax));
+    HI(ax) = printer_write(LO(dx), LO(ax));
     break;
 
   case 1:			/* init */
@@ -178,12 +181,12 @@
 int
 stub_printer_write(int prnum, int outchar)
 {
-  (lpt[prnum].fops.open) (prnum);
+  printer_open(prnum);
 
   /* from now on, use real write */
   lpt[prnum].fops.write = lpt[prnum].fops.realwrite;
 
-  return ((lpt[prnum].fops.write) (prnum, outchar));
+  return printer_write(prnum, outchar);
 }
 
 int
@@ -234,8 +237,7 @@
   for (loop = 0; loop < NUM_PRINTERS; loop++) {
     p_printf("LPT: closing printer %d (%s)\n", loop,
 	     lpt[loop].dev ? lpt[loop].dev : "<<NODEV>>");
-    if (lpt[loop].fops.close)
-       (lpt[loop].fops.close) (loop);
+    printer_close(loop);
   }
 }
 
@@ -248,9 +250,10 @@
     if (lpt[i].remaining >= 0) {
       p_printf("LPT: doing real tick for %d\n", i);
       if (lpt[i].remaining) {
+        reset_idle();
 	lpt[i].remaining--;
 	if (!lpt[i].remaining)
-	  (lpt[i].fops.flush) (i);
+	  printer_flush(i);
       }
     }
   }
Scanned by evaluation version of Dr.Web antivirus Daemon 
http://drweb.ru/unix/

Reply via email to