If the code is essentially the same anyway, it might be a good idea just to add a switch in server/serial.c and to the create_serial request to tell the server whether the device is a serial port or a parallel port, then change serial/parallel behaviour depending on that switch. You can also use serial_get_info to return a flag saying that you're dealing with a parallel port if necessary.
It's probably better to avoid duplication of the code unless necessary.
I perhaps worded my original mail badly. The code is the same only as far as I used the same function and variable names (but s/serial/parallel/). The actual functions themselves have some significant differences.
Putting conditions all over the serial stuff doesn't seem the most elegant way of implementing this. But if that's what it will take to get my patch accepted then I'll get onto it.