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/
