Small change as noted below.
On 12 April 2017 at 10:19, Bill Fischofer <[email protected]> wrote: > Based on today's ARCH call, this seems to be a good approach, with > some slight wording clarification (noted below) > > On Mon, Apr 3, 2017 at 5:11 AM, Petri Savolainen > <[email protected]> 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 <[email protected]> >> --- >> include/odp/api/spec/queue.h | 35 ++++++++++++++++++++++++++++++++++- >> 1 file changed, 34 insertions(+), 1 deletion(-) >> >> diff --git a/include/odp/api/spec/queue.h b/include/odp/api/spec/queue.h >> index 7972fea..9c83322 100644 >> --- a/include/odp/api/spec/queue.h >> +++ b/include/odp/api/spec/queue.h >> @@ -100,7 +100,9 @@ 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. Use this in addition >> to >> + * queue type specific 'max_num', if both queue types are used >> + * simultaneously. */ >> uint32_t max_queues; > > These fields tell the application how many queues it is guaranteed to > be able to create, hence this is really a minimum number, not a > maximum number. An application may in fact be able to create more, but > it's guaranteed to be able to create at least this number. So I > suggest the following rename/rewording to clarify this point. > > /** Minimum guaranteed number of event queues of any > type. Use this in addition to > * queue type specific 'min_num', if both queue types are > used simultaneously */ > uint32_t min_queues; > >> >> /** Maximum number of ordered locks per queue */ >> @@ -112,6 +114,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; > > /** Minimum guaranteed number of plain queues that > may be created in this ODP instance */ > uint32_t min_num; > >> + >> + /** Maximum number of events a plain queue can store >> + * simultaneously. The value of zero means unlimited. */ >> + uint32_t max_size; Can we change the wording to say "The value of zero means limited only by available resources" or "The value of zero means limited only by available memory" This will make it consistent/similar with wordings in other files (for ex: pool capabilities) >> + >> + } plain; >> + >> + /** Scheduled queue capabilities */ >> + struct { >> + /** Maximum number of a scheduled queues. */ >> + uint32_t max_num; > > /** Minimum guaranteed number of scheduled queues > that may be created in this ODP instance */ > uint32_t min_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 +189,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 at 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 >>
