The model implementation uses the packing and unpacking functions described in Section Pack and unpack and the nonblocking communication functions described in Section Nonblocking communication . Each entry contains a communication request handle that identifies a pending nonblocking send, a pointer to the next entry and the packed message data. The entries are stored in successive locations in the buffer.
Free space is available between the queue tail and the queue head.
A buffered send call results in the execution of the following code. Compute the number, n, of bytes needed to store an entry for the new message. If space is not found then raise buffer overflow error.