@@ -177,7 +177,10 @@ typedef uint8 *CFE_SB_MsgPayloadPtr_t;
177177**
178178** Software Zero Copy handle used in many SB APIs
179179*/
180- typedef cpuaddr CFE_SB_ZeroCopyHandle_t ;
180+ typedef struct
181+ {
182+ struct CFE_SB_BufferD * BufDscPtr ; /* abstract descriptor reference (internal use) */
183+ } CFE_SB_ZeroCopyHandle_t ;
181184
182185/** \brief Quality Of Service Type Definition
183186**
@@ -739,14 +742,14 @@ CFE_SB_Buffer_t *CFE_SB_ZeroCopyGetPtr(size_t MsgSize,
739742** pointer returned by a call to #CFE_SB_ZeroCopyGetPtr,
740743** but never used in a call to #CFE_SB_TransmitBuffer.
741744**
742- ** \param[in] BufferHandle This must be the handle supplied with the pointer
743- ** when #CFE_SB_ZeroCopyGetPtr was called.
745+ ** \param[in] ZeroCopyHandle This must be the handle supplied with the pointer
746+ ** when #CFE_SB_ZeroCopyGetPtr was called.
744747**
745748** \return Execution status, see \ref CFEReturnCodes
746749** \retval #CFE_SUCCESS \copybrief CFE_SUCCESS
747750** \retval #CFE_SB_BUFFER_INVALID \copybrief CFE_SB_BUFFER_INVALID
748751**/
749- CFE_Status_t CFE_SB_ZeroCopyReleasePtr (CFE_SB_Buffer_t * Ptr2Release , CFE_SB_ZeroCopyHandle_t BufferHandle );
752+ CFE_Status_t CFE_SB_ZeroCopyReleasePtr (CFE_SB_Buffer_t * Ptr2Release , CFE_SB_ZeroCopyHandle_t ZeroCopyHandle );
750753
751754/*****************************************************************************/
752755/**
@@ -762,14 +765,19 @@ CFE_Status_t CFE_SB_ZeroCopyReleasePtr(CFE_SB_Buffer_t *Ptr2Release, CFE_SB_Zero
762765** performance in high-rate, high-volume software bus traffic.
763766**
764767** \par Assumptions, External Events, and Notes:
765- ** -# The pointer returned by #CFE_SB_ZeroCopyGetPtr is only good for
766- ** one call to #CFE_SB_TransmitBuffer.
767- ** -# Callers must not use the same SB message buffer for multiple sends.
768+ ** -# A handle returned by #CFE_SB_ZeroCopyGetPtr is "consumed" by
769+ ** a _successful_ call to #CFE_SB_TransmitBuffer.
770+ ** -# If this function returns CFE_SUCCESS, this indicates the zero copy handle is
771+ ** now owned by software bus, and is no longer owned by the calling application,
772+ ** and should not be re-used.
773+ ** -# Howver if this function fails (returns any error status) it does not change
774+ ** the state of the buffer at all, meaning the calling application still owns it.
775+ ** (a failure means the buffer is left in the same state it was before the call).
768776** -# Applications should be written as if #CFE_SB_ZeroCopyGetPtr is
769- ** equivalent to a \c malloc() and #CFE_SB_TransmitBuffer is equivalent
770- ** to a \c free().
777+ ** equivalent to a \c malloc() and a successful call to #CFE_SB_TransmitBuffer
778+ ** is equivalent to a \c free().
771779** -# Applications must not de-reference the message pointer (for reading
772- ** or writing) after the call to #CFE_SB_TransmitBuffer.
780+ ** or writing) after a successful call to #CFE_SB_TransmitBuffer.
773781** -# This function will increment and apply the internally tracked
774782** sequence counter if set to do so.
775783**
0 commit comments