accel: functions to iterate over tasks in a sequence

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I97f011b7eaa7db7e9a9df583aff23321d60bb72f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16378
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Konrad Sztyber 2023-01-18 15:23:22 +01:00 committed by Tomasz Zawadzki
parent 02e8b81bb6
commit 914007c1c6
3 changed files with 33 additions and 0 deletions

View File

@ -236,4 +236,23 @@ bool spdk_accel_alloc_sequence_buf(struct spdk_accel_sequence *seq, void *buf,
struct spdk_memory_domain *domain, void *domain_ctx,
spdk_accel_sequence_get_buf_cb cb_fn, void *cb_ctx);
/**
* Returns the first task remaining to be executed in a given sequence.
*
* \param seq Sequence object.
*
* \return the first remaining task or NULL if all tasks are already completed.
*/
struct spdk_accel_task *spdk_accel_sequence_first_task(struct spdk_accel_sequence *seq);
/**
* Returns the next remaining task that follows a given task in a sequence.
*
* \param task Accel task. This task must be still oustanding (i.e. it wasn't completed through
* `spdk_accel_task_complete()`).
*
* \return the next task or NULL if `task` was the last task in a sequence.
*/
struct spdk_accel_task *spdk_accel_sequence_next_task(struct spdk_accel_task *task);
#endif

View File

@ -1253,6 +1253,18 @@ spdk_accel_alloc_sequence_buf(struct spdk_accel_sequence *seq, void *buf,
return true;
}
struct spdk_accel_task *
spdk_accel_sequence_first_task(struct spdk_accel_sequence *seq)
{
return TAILQ_FIRST(&seq->tasks);
}
struct spdk_accel_task *
spdk_accel_sequence_next_task(struct spdk_accel_task *task)
{
return TAILQ_NEXT(task, seq_link);
}
static inline uint64_t
accel_get_iovlen(struct iovec *iovs, uint32_t iovcnt)
{

View File

@ -43,6 +43,8 @@
spdk_accel_driver_register;
spdk_accel_get_memory_domain;
spdk_accel_alloc_sequence_buf;
spdk_accel_sequence_first_task;
spdk_accel_sequence_next_task;
local: *;
};