On 11/28/2014 06:37 AM, Bill Fischofer wrote:
You cannot gracefully destroy a queue without some sort of quiesce function that prohibits further enqueues to the queue while allowing items on the queue to be dequeued until the queue is empty. To position for this, I'd include a check that rejects the destroy attempt if the queue is not empty. It's then up to the caller to ensure that the queue is empty by its own means for v1.0.
There is an issue with quiesce functions. If queue is used by some HW block like pktio or crypto in may not be possible to prevent enqueues. At least on Keystone queue should be detached from HW first (i.e. replaced by another one). This should be coordinated from application side. I've mentioned in the description that behavior is undefined if queue is not empty or used by some HW block.
We have the same issue in buffer pools. We have an odp_buffer_pool_destroy() but unless the application can somehow ensure that the pool is empty the call will fail. We can talk about adding a pool quiesce function to facilitate this post-v1.0.
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
