@@ -3758,6 +3758,68 @@ BaseType_t xTaskRemoveFromEventListFromISR( const List_t * const pxEventList ) P
37583758void vTaskRemoveFromUnorderedEventList ( ListItem_t * pxEventListItem ,
37593759 const TickType_t xItemValue ) PRIVILEGED_FUNCTION ;
37603760
3761+ #if ( configQUEUE_DIRECT_TRANSFER == 1 )
3762+
3763+ /*
3764+ * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN
3765+ * INTERFACE FOR THE EXCLUSIVE USE OF THE QUEUE IMPLEMENTATION.
3766+ *
3767+ * Set the direct transfer buffer for the current task.
3768+ * Called when a task is about to block on a queue operation.
3769+ */
3770+ void vTaskSetDirectTransferBuffer ( void * pvBuffer ,
3771+ BaseType_t xPosition ,
3772+ TaskHandle_t xTask ) PRIVILEGED_FUNCTION ;
3773+
3774+ /*
3775+ * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN
3776+ * INTERFACE FOR THE EXCLUSIVE USE OF THE QUEUE IMPLEMENTATION.
3777+ *
3778+ * Clear the direct transfer buffer for a task.
3779+ * @param xTask The task handle
3780+ */
3781+ void vTaskClearDirectTransferBuffer ( TaskHandle_t xTask ) PRIVILEGED_FUNCTION ;
3782+
3783+ /*
3784+ * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN
3785+ * INTERFACE FOR THE EXCLUSIVE USE OF THE QUEUE IMPLEMENTATION.
3786+ *
3787+ * Get the direct transfer buffer pointer from a task.
3788+ * @param xTask The task handle
3789+ * @return The buffer pointer, or NULL if not set
3790+ *
3791+ */
3792+ void * pvTaskGetDirectTransferBuffer ( TaskHandle_t xTask ) PRIVILEGED_FUNCTION ;
3793+
3794+ /*
3795+ * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN
3796+ * INTERFACE FOR THE EXCLUSIVE USE OF THE QUEUE IMPLEMENTATION.
3797+ *
3798+ * Get the direct transfer position from a task.
3799+ * @param xTask The task handle
3800+ * @return The position, or -1 if not set
3801+ *
3802+ */
3803+ BaseType_t xTaskGetDirectTransferPosition ( TaskHandle_t xTask ) PRIVILEGED_FUNCTION ;
3804+
3805+ /*
3806+ * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN
3807+ * INTERFACE FOR THE EXCLUSIVE USE OF THE QUEUE IMPLEMENTATION.
3808+ *
3809+ * Get the highest priority task from an event list if it has armed direct transfer.
3810+ * Checks only the head of the event list (O(1) operation) for deterministic behavior.
3811+ *
3812+ * If the highest priority task hasn't armed direct transfer (e.g., using xQueuePeek()),
3813+ * returns NULL and direct transfer is skipped for this operation. This is acceptable since
3814+ * direct transfer is an optimization, not a requirement.
3815+ *
3816+ * @param pxEventList The event list to check
3817+ * @return Task handle of highest priority task if it has armed transfer, or NULL otherwise
3818+ */
3819+ TaskHandle_t xTaskGetHighestPriorityTaskWithDirectTransferArmed ( const List_t * const pxEventList ) PRIVILEGED_FUNCTION ;
3820+
3821+ #endif /* configQUEUE_DIRECT_TRANSFER */
3822+
37613823/*
37623824 * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY
37633825 * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS
0 commit comments