diff mbox series

[v6,05/13] dmadev: add device iterator

Message ID 20210924102942.2878051-6-bruce.richardson@intel.com (mailing list archive)
State Superseded
Delegated to: Thomas Monjalon
Headers show
Series add test suite for DMA drivers | expand

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Bruce Richardson Sept. 24, 2021, 10:29 a.m. UTC
Add a function and wrapper macro to iterate over all dma devices.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/dmadev/rte_dmadev.c | 13 +++++++++++++
 lib/dmadev/rte_dmadev.h | 18 ++++++++++++++++++
 lib/dmadev/version.map  |  1 +
 3 files changed, 32 insertions(+)

Comments

Conor Walsh Sept. 24, 2021, 2:52 p.m. UTC | #1
On 24/09/2021 11:29, Bruce Richardson wrote:
> Add a function and wrapper macro to iterate over all dma devices.
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---

<snip>

Reviewed-by: Conor Walsh <conor.walsh@intel.com>
Kevin Laatz Sept. 24, 2021, 3:58 p.m. UTC | #2
On 24/09/2021 11:29, Bruce Richardson wrote:
> Add a function and wrapper macro to iterate over all dma devices.
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>   lib/dmadev/rte_dmadev.c | 13 +++++++++++++
>   lib/dmadev/rte_dmadev.h | 18 ++++++++++++++++++
>   lib/dmadev/version.map  |  1 +
>   3 files changed, 32 insertions(+)
>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
diff mbox series

Patch

diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
index e61116260b..a761fe1a91 100644
--- a/lib/dmadev/rte_dmadev.c
+++ b/lib/dmadev/rte_dmadev.c
@@ -55,6 +55,19 @@  rte_dma_dev_max(size_t dev_max)
 	return 0;
 }
 
+int16_t
+rte_dma_next_dev(int16_t start_dev_id)
+{
+	int16_t dev_id = start_dev_id;
+	while (dev_id < dma_devices_max && rte_dma_devices[dev_id].state == RTE_DMA_DEV_UNUSED)
+		dev_id++;
+
+	if (dev_id < dma_devices_max)
+		return dev_id;
+
+	return -1;
+}
+
 static int
 dma_check_name(const char *name)
 {
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index bdba19b947..04565f8c5b 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -219,6 +219,24 @@  bool rte_dma_is_valid(int16_t dev_id);
 __rte_experimental
 uint16_t rte_dma_count_avail(void);
 
+/**
+ * Iterates over valid dmadev instances.
+ *
+ * @param start_dev_id
+ *   The id of the next possible dmadev.
+ * @return
+ *   Next valid dmadev, UINT16_MAX if there is none.
+ */
+__rte_experimental
+int16_t rte_dma_next_dev(int16_t start_dev_id);
+
+/** Utility macro to iterate over all available dmadevs */
+#define RTE_DMA_FOREACH_DEV(p) \
+	for (p = rte_dma_next_dev(0); \
+	     p != -1; \
+	     p = rte_dma_next_dev(p + 1))
+
+
 /** DMA device support memory-to-memory transfer.
  *
  * @see struct rte_dma_info::dev_capa
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 66420c4ede..0ab570a1be 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -15,6 +15,7 @@  EXPERIMENTAL {
 	rte_dma_get_dev_id;
 	rte_dma_info_get;
 	rte_dma_is_valid;
+	rte_dma_next_dev;
 	rte_dma_start;
 	rte_dma_stats_get;
 	rte_dma_stats_reset;