Source code portability is not easy to achieve across Unix platforms. Many variants use completely different and incompatible interfaces. Especially difficult to port is ``system'' code -- that is, code that performs low level operations such as network messaging, system calls, file serving, access to kernel data structures, and of course, kernel resident code itself.