Reference Guide
ZCOM Tables and Data Structures
Data Buffer Pool
Chapter 3 111
These pointers are used to link all the free blocks within the memory
pool, to form a circular list. The free queue contains the initial pointer to
the first and last free block. The value in the pointer is the address of the
buffer flag (i.e., the address of the next block pointer in the block).
BFLEN - Buffer length in bytes (data portion)
This field contains the usable memory size (in bytes) within the buffer.
The usable area of a buffer is indicated by its location, BFDATA, and its
size, BFLEN.
BFLINK - Pointer to the next buffer on queue
This is the buffer linkage to the next buffer in the chain. It contains the
address of the first field (i.e., BFFLAG) of the next buffer. If this is the
last buffer on the list, it contains NULL.
BFDATA - Pointer to the buffer data area
This field contains the memory address where the message header
resides within the current buffer. This memory address is set up such
that the message data, which follows the message header, will be aligned
properly depending on its uses (e.g. for inbound DMA, it must be on a
64-byte boundary). Usually, a buffer will have unused area before and
after the message. In case of buffer for inbound DMA operation, the
sufficient unused area is allocated to satisfy the DMA operation without
overflow into the next buffer.
This field is set up by the ZCOM subsystem when a buffer is allocated
from the buffer pool and will not be modified until the buffer is released
to the buffer pool.
BFRESP - Pointer to response record
This field is valid only when the buffer is associated with a
send-and-wait operation. It contains the address of the response record
for the waiting program. On completion of such a request, the LDM uses
this field to locate the response record, where the return status is placed.
For other types of operation, this field contains invalid data.