ZCOM Tables and Data Structures

Data Buffer Pool

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.

Chapter 3

111