On Fri, Mar 31, 2017 at 6:46 AM, Petri Savolainen
<petri.savolai...@linaro.org> wrote:
> 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 */

The documentation note that a value of zero means unlimited should be
included here, however this does raise a question of how we deal with
implementations where the max number of event queues is fixed (HW
limit) but the number of plain queues is unlimited since they are just
malloc'd.  Given this possibility, does a consolidated max_queues
value even make any sense since applications would always need to
double-check the individual queue type limits anyway?

>         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

grammar: at minimum

> +         * 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