Port-amiga archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: /dev/par0 very slow?
On Sat, Feb 26, 2000 at 11:49:49PM +0100, Ingolf Koch wrote:
> See the attached patch file. This does not speed things
> up significantly but improves readability a bit.
argl *dontusesuchcomplicatedthingsasattachmentsifitislate*
Here we are...
--- par.c.old Fri Aug 6 13:23:14 1999
+++ par.c Fri Feb 25 23:36:05 2000
@@ -510,37 +510,22 @@
/* stuff below here if for interrupt driven output of data thru
the parallel port. */
-int partimeout_pending;
int parsend_pending;
void
parintr(arg)
void *arg;
{
- int s, mask;
+ int s;
- mask = (int)arg;
s = splclock();
#ifdef DEBUG
if (pardebug & PDB_INTERRUPT)
- printf("parintr %s\n", mask ? "FLG" : "tout");
+ printf("parintr\n");
#endif
- /*
- * if invoked from timeout handler, mask will be 0,
- * if from interrupt, it will contain the cia-icr mask,
- * which is != 0
- */
- if (mask) {
- if (partimeout_pending)
- untimeout(parintr, 0);
- if (parsend_pending)
- parsend_pending = 0;
- }
-
- /* either way, there won't be a timeout pending any longer */
- partimeout_pending = 0;
-
+ parsend_pending = 0;
+
wakeup(parintr);
splx(s);
}
@@ -568,9 +553,6 @@
((ciab.pra ^ CIAB_PRA_SEL)
& (CIAB_PRA_SEL|CIAB_PRA_BUSY|CIAB_PRA_POUT)));
#endif
- /* wait a second, and try again */
- timeout(parintr, 0, hz);
- partimeout_pending = 1;
/* this is essentially a flipflop to have us wait for the
first character being transmitted when trying to transmit
the second, etc. */
@@ -578,16 +560,14 @@
/* it's quite important that a parallel putc can be
interrupted, given the possibility to lock a printer
in an offline condition.. */
- if ((error = tsleep(parintr, PCATCH | (PZERO - 1), "parsendch", 0)) > 0)
+ error = tsleep(parintr, PCATCH | (PZERO - 1), "parsendch", hz);
+ if (EWOULDBLOCK == error) error = 0;
+ if (0 < error)
{
#ifdef DEBUG
if (pardebug & PDB_INTERRUPT)
printf ("parsendch interrupted, error = %d\n", error);
#endif
- if (partimeout_pending)
- untimeout(parintr, 0);
-
- partimeout_pending = 0;
}
}
--
Ingolf Koch ICQ#60829470 Beste Kneipe in Jena-Ost
PGP: 0x7B3B5661 213C 828E 0C92 16B5 05D0 4D5B A324 EC04
Home |
Main Index |
Thread Index |
Old Index