Considerations for the successful completion of a receive

If the application requires that the CSM storage be pagefixed, the application must check the BLXEN_TYPE flag in the buffer list entry, ISTBLXEN. If the buffer is pageable, the application can use the IVTCSM REQUEST=FIX_BUFFER macroinstruction to ensure that the storage is pagefixed.

If the CSM storage received is from a data space, the application can gain addressability to the storage by using the ALET that is returned in the buffer list. The application can use the IVTCSM REQUEST=COPY_DATA macroinstruction if it needs to copy the data.

If the application wishes to perform I/O directly from the data space storage, it must build the I/O structures in accordance with the ESAME mode of the machine. When the machine is in ESAME mode, 64-bit I/O structures must be used. When the machine is not in ESAME mode, 31-bit I/O structures must be used.

After processing the data, the application has the following options:
  • Return the storage to CSM using the IVTCSM REQUEST=FREE_BUFFER macroinstruction.
    Note: If a logical image of a buffer has been created on an ASSIGN_BUFFER request, the buffer may not be immediately returned to the pool. CSM determines when all users sharing a CSM buffer have called CSM to return the storage. CSM maintains a use count and when all users, including the original requester, have returned the storage, the buffer is actually returned to the pool. CSM performs this function without explicit application involvement.
  • Use the received data area as the storage area for a subsequent APPCCMD send operation.

    In this case, CSM storage return responsibilities are transferred to a different process. The data must not be altered because the received data area is considered a read-only copy. The original requester of the CSM storage may have a CSM free routine outstanding and is entitled to the return of the storage with the data unaltered.