home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1614 / README
Encoding:
Text File  |  1990-12-28  |  1.9 KB  |  35 lines

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