The generic parport sharing code doesn't directly handle the parallel port hardware. That is done instead by "low-level" parport drivers. The function of a low-level parport driver is to detect parallel ports, register them with the sharing code, and provide a list of access functions for each port.
The most basic access functions that must be provided are ones for examining the status lines, for setting the control lines, and for setting the data lines. There are also access functions for setting the direction of the data lines; normally they are in the "forward" direction (that is, the computer drives them), but some ports allow switching to "reverse" mode (driven by the peripheral). There is an access function for examining the data lines once in reverse mode.