Added capability information about maximum number of queues
and queue sizes. Both are defined per queue type, since
plain and scheduled queues may have different implementations
(e.g. one uses HW while the other is SW).

Added queue size parameter, which specifies how large
storage size application requires in minimum.

Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org>
---
 include/odp/api/spec/queue.h | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/include/odp/api/spec/queue.h b/include/odp/api/spec/queue.h
index 7972fea..55b7e44 100644
--- a/include/odp/api/spec/queue.h
+++ b/include/odp/api/spec/queue.h
@@ -100,7 +100,7 @@ typedef enum odp_queue_op_mode_t {
  * Queue capabilities
  */
 typedef struct odp_queue_capability_t {
-       /** Maximum number of event queues */
+       /** Maximum number of event queues of any type */
        uint32_t max_queues;
 
        /** Maximum number of ordered locks per queue */
@@ -112,6 +112,28 @@ typedef struct odp_queue_capability_t {
        /** Number of scheduling priorities */
        unsigned sched_prios;
 
+       /** Plain queue capabilities */
+       struct {
+               /** Maximum number of a plain queues. */
+               uint32_t max_num;
+
+               /** Maximum number of events a plain queue can store
+                 * simultaneously. The value of zero means unlimited. */
+               uint32_t max_size;
+
+       } plain;
+
+       /** Scheduled queue capabilities */
+       struct {
+               /** Maximum number of a scheduled queues. */
+               uint32_t max_num;
+
+               /** Maximum number of events a scheduled queue can store
+                 * simultaneously. The value of zero means unlimited. */
+               uint32_t max_size;
+
+       } sched;
+
 } odp_queue_capability_t;
 
 /**
@@ -165,6 +187,15 @@ typedef struct odp_queue_param_t {
          * The implementation may use this value as a hint for the number of
          * context data bytes to prefetch. Default value is zero (no hint). */
        uint32_t context_len;
+
+       /** Queue size
+         *
+         * The queue must be able to store in minimum this many events
+         * simultaneously. The value must not exceed 'max_size' queue
+         * capability. The value of zero means implementation specific
+         * default size. */
+       uint32_t size;
+
 } odp_queue_param_t;
 
 /**
-- 
2.8.1

Reply via email to