home *** CD-ROM | disk | FTP | other *** search
- This is the source of a parallel port driver for System V/386, rel. 3.2.
-
- It is different from the standard lp(7) driver because it does only raw
- output (while lp(7) uses the termio(4) line discipline), and it does not use
- interrupts. It assumes that the printer has an internal buffer, so that the
- most efficient style of communication is to pump characters as fast as
- possible until the buffer fills, then sleep for a relatively long period
- when it signals not ready, and try again thereafter.
-
- This implies that no interrupt processing is done, which has the advantages
- of simplicity and low overhead, and, perhaps most importantly, of not using
- one of the scarce interurpt lines of the ISA bus.
-
- Output is done entirely in the top half og the driver, and therefore not
- inside a critical region. This could mean that on a very busy system the
- pumping could be interrupted by task switching. This, if important, can be
- easily obviated, by turning the pumping loop into a critical region; if this
- is done it becomes important to limit the number of characters pumped in one
- go, by having two loops, the outer one that runs until busy is signaled, the
- inner one for a fixed number of characters, and put only the inner one in
- the critical region.
-
- This driver was originally written by Mike Grenier in 1989; Piercarlo Grandi
- in 1990 substantially recoded and repackaged it.
-
- As it stands it is especially designed for a stock System V/386 rel. 3.2
- system, e.g. ESIX, especially inasmuch installation is concerned. It should
- be sufficient to say 'make install' to install it, and then you should say
- 'idconfig' and 'idmkunix' to rebuild the kernel.
-
- It is so simple that it should port very quickly to other flavours of Unix;
- the only thing that may not be portable is the reference to a kernel
- procedure called 'tenmicrosec()' in pp.c, which does a busy loop of 10
- microseconds. It is fairly easy to roll your own, of course.
-