By comparison with libpvm, message packing in the pvmd is very simple. Messages are handled using struct mesg (shown in Figure ). There are encoders for signed and unsigned integers and strings, which use in the libpvm foo format. Integers occupy four bytes each, with bytes in network order (bits 31..24 followed by bits 23..16, ...). Byte strings are packed as an integer length (including the terminating null for ASCII strings), followed by the data and zero to three null bytes to round the total length to a multiple of four.
Figure: Message storage in pvmd