diff mbox

[API-NEXT,PATCHv3,1/2] api: config: replace defines with apis

Message ID 1444863741-27794-1-git-send-email-bill.fischofer@linaro.org
State Accepted
Commit 02d6e357ca6021df74e3f9259ec30d38c29933ad
Headers show

Commit Message

Bill Fischofer Oct. 14, 2015, 11:02 p.m. UTC
Move platform-specific #defines for limits from the public API to
the platform directory and add public APIs for each of them.

Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
---
 include/odp/api/config.h                    |  63 ++++++-----
 platform/linux-generic/include/odp/config.h | 167 +++++++++++++++++++++++++++-
 2 files changed, 204 insertions(+), 26 deletions(-)

Comments

Savolainen, Petri (Nokia - FI/Espoo) Oct. 15, 2015, 6:47 a.m. UTC | #1
Both patches:

Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>



> -----Original Message-----

> From: lng-odp [mailto:lng-odp-bounces@lists.linaro.org] On Behalf Of EXT

> Bill Fischofer

> Sent: Thursday, October 15, 2015 2:02 AM

> To: lng-odp@lists.linaro.org

> Subject: [lng-odp] [API-NEXT PATCHv3 1/2] api: config: replace defines with

> apis

> 

> Move platform-specific #defines for limits from the public API to

> the platform directory and add public APIs for each of them.

> 

> Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>

> ---

>  include/odp/api/config.h                    |  63 ++++++-----

>  platform/linux-generic/include/odp/config.h | 167

> +++++++++++++++++++++++++++-

>  2 files changed, 204 insertions(+), 26 deletions(-)

> 

> diff --git a/include/odp/api/config.h b/include/odp/api/config.h

> index 295b10d..9cdeb0e 100644

> --- a/include/odp/api/config.h

> +++ b/include/odp/api/config.h

> @@ -19,55 +19,65 @@ extern "C" {

>  #endif

> 

>  /** @defgroup odp_config ODP CONFIG

> - *  Macro for maximum number of resources in ODP.

> + *  Platform-specific configuration limits.

>   *  @{

>   */

> 

>  /**

>   * Maximum number of pools

> + * @return The maximum number of pools supported by this platform

>   */

> -#define ODP_CONFIG_POOLS        16

> +int odp_config_pools(void);

> 

>  /**

>   * Maximum number of queues

> + * @return The maximum number of queues supported by this platform

>   */

> -#define ODP_CONFIG_QUEUES       1024

> +int odp_config_queues(void);

> 

>  /**

>   * Maximum number of ordered locks per queue

> + * @return The maximum number of ordered locks per queue supported by

> + * this platform.

>   */

> -#define ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE  2

> +int odp_config_max_ordered_locks_per_queue(void);

> 

>  /**

>   * Number of scheduling priorities

> + * @return The number of scheduling priorities supported by this platform

>   */

> -#define ODP_CONFIG_SCHED_PRIOS  8

> +int odp_config_sched_prios(void);

> 

>  /**

>   * Number of scheduling groups

> + * @return Number of scheduling groups supported by this platofmr

>   */

> -#define ODP_CONFIG_SCHED_GRPS  16

> +int odp_config_sched_grps(void);

> 

>  /**

>   * Maximum number of packet IO resources

> + * @return The maximum number of packet I/O resources supported by this

> + * platform

>   */

> -#define ODP_CONFIG_PKTIO_ENTRIES 64

> +int odp_config_pktio_entries(void);

> 

>  /**

>   * Minimum buffer alignment

>   *

> - * This defines the minimum supported buffer alignment. Requests for

> values

> - * below this will be rounded up to this value.

> + * @return The minimum buffer alignment supported by this platform

> + * @note Requests for values below this will be rounded up to this value.

>   */

> -#define ODP_CONFIG_BUFFER_ALIGN_MIN 16

> +int odp_config_buffer_align_min(void);

> 

>  /**

>   * Maximum buffer alignment

>   *

>   * This defines the maximum supported buffer alignment. Requests for

> values

>   * above this will fail.

> + *

> + * @return The maximum buffer alignment supported by this platform.

>   */

> -#define ODP_CONFIG_BUFFER_ALIGN_MAX (4*1024)

> +int odp_config_buffer_align_max(void);

> 

>  /**

>   * Default packet headroom

> @@ -77,11 +87,9 @@ extern "C" {

>   * allocated packets. Implementations may reserve a larger than minimum

> headroom

>   * size e.g. due to HW or a protocol specific alignment requirement.

>   *

> - * @internal In linux-generic implementation:

> - * The default value (66) allows a 1500-byte packet to be received into a

> single

> - * segment with Ethernet offset alignment and room for some header

> expansion.

> + * @return Default packet headroom in bytes

>   */

> -#define ODP_CONFIG_PACKET_HEADROOM 66

> +int odp_config_packet_headroom(void);

> 

>  /**

>   * Default packet tailroom

> @@ -89,10 +97,11 @@ extern "C" {

>   * This defines the minimum number of tailroom bytes that newly created

> packets

>   * have by default. The default apply to both ODP packet input and user

>   * allocated packets. Implementations are free to add to this as desired

> - * without restriction. Note that most implementations will automatically

> - * consider any unused portion of the last segment of a packet as tailroom

> + * without restriction.

> + *

> + * @return The default packet tailroom in bytes

>   */

> -#define ODP_CONFIG_PACKET_TAILROOM 0

> +int odp_config_packet_tailroom(void);

> 

>  /**

>   * Minimum packet segment length

> @@ -100,8 +109,10 @@ extern "C" {

>   * This defines the minimum packet segment buffer length in bytes. The

> user

>   * defined segment length (seg_len in odp_pool_param_t) will be rounded up

> into

>   * this value.

> + *

> + * @return The minimum packet seg_len supported by this platform

>   */

> -#define ODP_CONFIG_PACKET_SEG_LEN_MIN (1598)

> +int odp_config_packet_seg_len_min(void);

> 

>  /**

>   * Maximum packet segment length

> @@ -109,8 +120,10 @@ extern "C" {

>   * This defines the maximum packet segment buffer length in bytes. The

> user

>   * defined segment length (seg_len in odp_pool_param_t) must not be larger

> than

>   * this.

> + *

> + * @return The maximum packet seg_len supported by this platform

>   */

> -#define ODP_CONFIG_PACKET_SEG_LEN_MAX (64*1024)

> +int odp_config_packet_seg_len_max(void);

> 

>  /**

>   * Maximum packet buffer length

> @@ -120,17 +133,17 @@ extern "C" {

>   * (including default head- and tailrooms) or extend packets to sizes

> larger

>   * than this limit will fail.

>   *

> - * @internal In linux-generic implementation:

> - * - The value MUST be an integral number of segments

> - * - The value SHOULD be large enough to accommodate jumbo packets (9K)

> + * @return The maximum packet buffer length supported by this platform

>   */

> -#define ODP_CONFIG_PACKET_BUF_LEN_MAX (ODP_CONFIG_PACKET_SEG_LEN_MIN*6)

> +int odp_config_packet_buf_len_max(void);

> 

>  /** Maximum number of shared memory blocks.

>   *

>   * This the the number of separate SHM areas that can be reserved

> concurrently

> + *

> + * @return The maximum number of shm areas supported by this platform

>   */

> -#define ODP_CONFIG_SHM_BLOCKS (ODP_CONFIG_POOLS + 48)

> +int odp_config_shm_blocks(void);

> 

>  /**

>   * @}

> diff --git a/platform/linux-generic/include/odp/config.h b/platform/linux-

> generic/include/odp/config.h

> index 6fecd38..a130e68 100644

> --- a/platform/linux-generic/include/odp/config.h

> +++ b/platform/linux-generic/include/odp/config.h

> @@ -1,4 +1,4 @@

> -/* Copyright (c) 2013, Linaro Limited

> +/* Copyright (c) 2015, Linaro Limited

>   * All rights reserved.

>   *

>   * SPDX-License-Identifier:     BSD-3-Clause

> @@ -17,6 +17,171 @@

>  extern "C" {

>  #endif

> 

> +/**

> + * Maximum number of pools

> + */

> +#define ODP_CONFIG_POOLS 16

> +static inline int odp_config_pools(void)

> +{

> +	return ODP_CONFIG_POOLS;

> +}

> +

> +/**

> + * Maximum number of queues

> + */

> +#define ODP_CONFIG_QUEUES 1024

> +static inline int odp_config_queues(void)

> +{

> +	return ODP_CONFIG_QUEUES;

> +}

> +

> +/**

> + * Number of ordered locks per queue

> + */

> +#define ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE 2

> +static inline int odp_config_max_ordered_locks_per_queue(void)

> +{

> +	return ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE;

> +}

> +

> +/**

> + * Number of scheduling priorities

> + */

> +#define ODP_CONFIG_SCHED_PRIOS 8

> +static inline int odp_config_sched_prios(void)

> +{

> +	return ODP_CONFIG_SCHED_PRIOS;

> +}

> +

> +/**

> + * Number of scheduling groups

> + */

> +#define ODP_CONFIG_SCHED_GRPS 16

> +static inline int odp_config_sched_grps(void)

> +{

> +	return ODP_CONFIG_SCHED_GRPS;

> +}

> +

> +/**

> + * Maximum number of packet IO resources

> + */

> +#define ODP_CONFIG_PKTIO_ENTRIES 64

> +static inline int odp_config_pktio_entries(void)

> +{

> +	return ODP_CONFIG_PKTIO_ENTRIES;

> +}

> +

> +/**

> + * Minimum buffer alignment

> + *

> + * This defines the minimum supported buffer alignment. Requests for

> values

> + * below this will be rounded up to this value.

> + */

> +#define ODP_CONFIG_BUFFER_ALIGN_MIN 16

> +static inline int odp_config_buffer_align_min(void)

> +{

> +	return ODP_CONFIG_BUFFER_ALIGN_MIN;

> +}

> +

> +/**

> + * Maximum buffer alignment

> + *

> + * This defines the maximum supported buffer alignment. Requests for

> values

> + * above this will fail.

> + */

> +#define ODP_CONFIG_BUFFER_ALIGN_MAX (4 * 1024)

> +static inline int odp_config_buffer_align_max(void)

> +{

> +	return ODP_CONFIG_BUFFER_ALIGN_MAX;

> +}

> +

> +/**

> + * Default packet headroom

> + *

> + * This defines the minimum number of headroom bytes that newly created

> packets

> + * have by default. The default apply to both ODP packet input and user

> + * allocated packets. Implementations may reserve a larger than minimum

> headroom

> + * size e.g. due to HW or a protocol specific alignment requirement.

> + *

> + * @internal In linux-generic implementation:

> + * The default value (66) allows a 1500-byte packet to be received into a

> single

> + * segment with Ethernet offset alignment and room for some header

> expansion.

> + */

> +#define ODP_CONFIG_PACKET_HEADROOM 66

> +static inline int odp_config_packet_headroom(void)

> +{

> +	return ODP_CONFIG_PACKET_HEADROOM;

> +}

> +

> +/**

> + * Default packet tailroom

> + *

> + * This defines the minimum number of tailroom bytes that newly created

> packets

> + * have by default. The default apply to both ODP packet input and user

> + * allocated packets. Implementations are free to add to this as desired

> + * without restriction. Note that most implementations will automatically

> + * consider any unused portion of the last segment of a packet as tailroom

> + */

> +#define ODP_CONFIG_PACKET_TAILROOM 0

> +static inline int odp_config_packet_tailroom(void)

> +{

> +	return ODP_CONFIG_PACKET_TAILROOM;

> +}

> +

> +/**

> + * Minimum packet segment length

> + *

> + * This defines the minimum packet segment buffer length in bytes. The

> user

> + * defined segment length (seg_len in odp_pool_param_t) will be rounded up

> into

> + * this value.

> + */

> +#define ODP_CONFIG_PACKET_SEG_LEN_MIN 1598

> +static inline int odp_config_packet_seg_len_min(void)

> +{

> +	return ODP_CONFIG_PACKET_SEG_LEN_MIN;

> +}

> +

> +/**

> + * Maximum packet segment length

> + *

> + * This defines the maximum packet segment buffer length in bytes. The

> user

> + * defined segment length (seg_len in odp_pool_param_t) must not be larger

> than

> + * this.

> + */

> +#define ODP_CONFIG_PACKET_SEG_LEN_MAX (64 * 1024)

> +static inline int odp_config_packet_seg_len_max(void)

> +{

> +	return ODP_CONFIG_PACKET_SEG_LEN_MAX;

> +}

> +

> +/**

> + * Maximum packet buffer length

> + *

> + * This defines the maximum number of bytes that can be stored into a

> packet

> + * (maximum return value of odp_packet_buf_len(void)). Attempts to

> allocate

> + * (including default head- and tailrooms) or extend packets to sizes

> larger

> + * than this limit will fail.

> + *

> + * @internal In linux-generic implementation:

> + * - The value MUST be an integral number of segments

> + * - The value SHOULD be large enough to accommodate jumbo packets (9K)

> + */

> +#define ODP_CONFIG_PACKET_BUF_LEN_MAX (ODP_CONFIG_PACKET_SEG_LEN_MIN * 6)

> +static inline int odp_config_packet_buf_len_max(void)

> +{

> +	return ODP_CONFIG_PACKET_BUF_LEN_MAX;

> +}

> +

> +/** Maximum number of shared memory blocks.

> + *

> + * This the the number of separate SHM areas that can be reserved

> concurrently

> + */

> +#define ODP_CONFIG_SHM_BLOCKS (ODP_CONFIG_POOLS + 48)

> +static inline int odp_config_shm_blocks(void)

> +{

> +	return ODP_CONFIG_SHM_BLOCKS;

> +}

> +

>  #include <odp/api/config.h>

> 

>  #ifdef __cplusplus

> --

> 2.1.4

> 

> _______________________________________________

> lng-odp mailing list

> lng-odp@lists.linaro.org

> https://lists.linaro.org/mailman/listinfo/lng-odp
Maxim Uvarov Oct. 16, 2015, 11:25 a.m. UTC | #2
Merged,
Maxim.

On 10/15/2015 09:47, Savolainen, Petri (Nokia - FI/Espoo) wrote:
> Both patches:
>
> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
>
>
>> -----Original Message-----
>> From: lng-odp [mailto:lng-odp-bounces@lists.linaro.org] On Behalf Of EXT
>> Bill Fischofer
>> Sent: Thursday, October 15, 2015 2:02 AM
>> To: lng-odp@lists.linaro.org
>> Subject: [lng-odp] [API-NEXT PATCHv3 1/2] api: config: replace defines with
>> apis
>>
>> Move platform-specific #defines for limits from the public API to
>> the platform directory and add public APIs for each of them.
>>
>> Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
>> ---
>>   include/odp/api/config.h                    |  63 ++++++-----
>>   platform/linux-generic/include/odp/config.h | 167
>> +++++++++++++++++++++++++++-
>>   2 files changed, 204 insertions(+), 26 deletions(-)
>>
>> diff --git a/include/odp/api/config.h b/include/odp/api/config.h
>> index 295b10d..9cdeb0e 100644
>> --- a/include/odp/api/config.h
>> +++ b/include/odp/api/config.h
>> @@ -19,55 +19,65 @@ extern "C" {
>>   #endif
>>
>>   /** @defgroup odp_config ODP CONFIG
>> - *  Macro for maximum number of resources in ODP.
>> + *  Platform-specific configuration limits.
>>    *  @{
>>    */
>>
>>   /**
>>    * Maximum number of pools
>> + * @return The maximum number of pools supported by this platform
>>    */
>> -#define ODP_CONFIG_POOLS        16
>> +int odp_config_pools(void);
>>
>>   /**
>>    * Maximum number of queues
>> + * @return The maximum number of queues supported by this platform
>>    */
>> -#define ODP_CONFIG_QUEUES       1024
>> +int odp_config_queues(void);
>>
>>   /**
>>    * Maximum number of ordered locks per queue
>> + * @return The maximum number of ordered locks per queue supported by
>> + * this platform.
>>    */
>> -#define ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE  2
>> +int odp_config_max_ordered_locks_per_queue(void);
>>
>>   /**
>>    * Number of scheduling priorities
>> + * @return The number of scheduling priorities supported by this platform
>>    */
>> -#define ODP_CONFIG_SCHED_PRIOS  8
>> +int odp_config_sched_prios(void);
>>
>>   /**
>>    * Number of scheduling groups
>> + * @return Number of scheduling groups supported by this platofmr
>>    */
>> -#define ODP_CONFIG_SCHED_GRPS  16
>> +int odp_config_sched_grps(void);
>>
>>   /**
>>    * Maximum number of packet IO resources
>> + * @return The maximum number of packet I/O resources supported by this
>> + * platform
>>    */
>> -#define ODP_CONFIG_PKTIO_ENTRIES 64
>> +int odp_config_pktio_entries(void);
>>
>>   /**
>>    * Minimum buffer alignment
>>    *
>> - * This defines the minimum supported buffer alignment. Requests for
>> values
>> - * below this will be rounded up to this value.
>> + * @return The minimum buffer alignment supported by this platform
>> + * @note Requests for values below this will be rounded up to this value.
>>    */
>> -#define ODP_CONFIG_BUFFER_ALIGN_MIN 16
>> +int odp_config_buffer_align_min(void);
>>
>>   /**
>>    * Maximum buffer alignment
>>    *
>>    * This defines the maximum supported buffer alignment. Requests for
>> values
>>    * above this will fail.
>> + *
>> + * @return The maximum buffer alignment supported by this platform.
>>    */
>> -#define ODP_CONFIG_BUFFER_ALIGN_MAX (4*1024)
>> +int odp_config_buffer_align_max(void);
>>
>>   /**
>>    * Default packet headroom
>> @@ -77,11 +87,9 @@ extern "C" {
>>    * allocated packets. Implementations may reserve a larger than minimum
>> headroom
>>    * size e.g. due to HW or a protocol specific alignment requirement.
>>    *
>> - * @internal In linux-generic implementation:
>> - * The default value (66) allows a 1500-byte packet to be received into a
>> single
>> - * segment with Ethernet offset alignment and room for some header
>> expansion.
>> + * @return Default packet headroom in bytes
>>    */
>> -#define ODP_CONFIG_PACKET_HEADROOM 66
>> +int odp_config_packet_headroom(void);
>>
>>   /**
>>    * Default packet tailroom
>> @@ -89,10 +97,11 @@ extern "C" {
>>    * This defines the minimum number of tailroom bytes that newly created
>> packets
>>    * have by default. The default apply to both ODP packet input and user
>>    * allocated packets. Implementations are free to add to this as desired
>> - * without restriction. Note that most implementations will automatically
>> - * consider any unused portion of the last segment of a packet as tailroom
>> + * without restriction.
>> + *
>> + * @return The default packet tailroom in bytes
>>    */
>> -#define ODP_CONFIG_PACKET_TAILROOM 0
>> +int odp_config_packet_tailroom(void);
>>
>>   /**
>>    * Minimum packet segment length
>> @@ -100,8 +109,10 @@ extern "C" {
>>    * This defines the minimum packet segment buffer length in bytes. The
>> user
>>    * defined segment length (seg_len in odp_pool_param_t) will be rounded up
>> into
>>    * this value.
>> + *
>> + * @return The minimum packet seg_len supported by this platform
>>    */
>> -#define ODP_CONFIG_PACKET_SEG_LEN_MIN (1598)
>> +int odp_config_packet_seg_len_min(void);
>>
>>   /**
>>    * Maximum packet segment length
>> @@ -109,8 +120,10 @@ extern "C" {
>>    * This defines the maximum packet segment buffer length in bytes. The
>> user
>>    * defined segment length (seg_len in odp_pool_param_t) must not be larger
>> than
>>    * this.
>> + *
>> + * @return The maximum packet seg_len supported by this platform
>>    */
>> -#define ODP_CONFIG_PACKET_SEG_LEN_MAX (64*1024)
>> +int odp_config_packet_seg_len_max(void);
>>
>>   /**
>>    * Maximum packet buffer length
>> @@ -120,17 +133,17 @@ extern "C" {
>>    * (including default head- and tailrooms) or extend packets to sizes
>> larger
>>    * than this limit will fail.
>>    *
>> - * @internal In linux-generic implementation:
>> - * - The value MUST be an integral number of segments
>> - * - The value SHOULD be large enough to accommodate jumbo packets (9K)
>> + * @return The maximum packet buffer length supported by this platform
>>    */
>> -#define ODP_CONFIG_PACKET_BUF_LEN_MAX (ODP_CONFIG_PACKET_SEG_LEN_MIN*6)
>> +int odp_config_packet_buf_len_max(void);
>>
>>   /** Maximum number of shared memory blocks.
>>    *
>>    * This the the number of separate SHM areas that can be reserved
>> concurrently
>> + *
>> + * @return The maximum number of shm areas supported by this platform
>>    */
>> -#define ODP_CONFIG_SHM_BLOCKS (ODP_CONFIG_POOLS + 48)
>> +int odp_config_shm_blocks(void);
>>
>>   /**
>>    * @}
>> diff --git a/platform/linux-generic/include/odp/config.h b/platform/linux-
>> generic/include/odp/config.h
>> index 6fecd38..a130e68 100644
>> --- a/platform/linux-generic/include/odp/config.h
>> +++ b/platform/linux-generic/include/odp/config.h
>> @@ -1,4 +1,4 @@
>> -/* Copyright (c) 2013, Linaro Limited
>> +/* Copyright (c) 2015, Linaro Limited
>>    * All rights reserved.
>>    *
>>    * SPDX-License-Identifier:     BSD-3-Clause
>> @@ -17,6 +17,171 @@
>>   extern "C" {
>>   #endif
>>
>> +/**
>> + * Maximum number of pools
>> + */
>> +#define ODP_CONFIG_POOLS 16
>> +static inline int odp_config_pools(void)
>> +{
>> +	return ODP_CONFIG_POOLS;
>> +}
>> +
>> +/**
>> + * Maximum number of queues
>> + */
>> +#define ODP_CONFIG_QUEUES 1024
>> +static inline int odp_config_queues(void)
>> +{
>> +	return ODP_CONFIG_QUEUES;
>> +}
>> +
>> +/**
>> + * Number of ordered locks per queue
>> + */
>> +#define ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE 2
>> +static inline int odp_config_max_ordered_locks_per_queue(void)
>> +{
>> +	return ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE;
>> +}
>> +
>> +/**
>> + * Number of scheduling priorities
>> + */
>> +#define ODP_CONFIG_SCHED_PRIOS 8
>> +static inline int odp_config_sched_prios(void)
>> +{
>> +	return ODP_CONFIG_SCHED_PRIOS;
>> +}
>> +
>> +/**
>> + * Number of scheduling groups
>> + */
>> +#define ODP_CONFIG_SCHED_GRPS 16
>> +static inline int odp_config_sched_grps(void)
>> +{
>> +	return ODP_CONFIG_SCHED_GRPS;
>> +}
>> +
>> +/**
>> + * Maximum number of packet IO resources
>> + */
>> +#define ODP_CONFIG_PKTIO_ENTRIES 64
>> +static inline int odp_config_pktio_entries(void)
>> +{
>> +	return ODP_CONFIG_PKTIO_ENTRIES;
>> +}
>> +
>> +/**
>> + * Minimum buffer alignment
>> + *
>> + * This defines the minimum supported buffer alignment. Requests for
>> values
>> + * below this will be rounded up to this value.
>> + */
>> +#define ODP_CONFIG_BUFFER_ALIGN_MIN 16
>> +static inline int odp_config_buffer_align_min(void)
>> +{
>> +	return ODP_CONFIG_BUFFER_ALIGN_MIN;
>> +}
>> +
>> +/**
>> + * Maximum buffer alignment
>> + *
>> + * This defines the maximum supported buffer alignment. Requests for
>> values
>> + * above this will fail.
>> + */
>> +#define ODP_CONFIG_BUFFER_ALIGN_MAX (4 * 1024)
>> +static inline int odp_config_buffer_align_max(void)
>> +{
>> +	return ODP_CONFIG_BUFFER_ALIGN_MAX;
>> +}
>> +
>> +/**
>> + * Default packet headroom
>> + *
>> + * This defines the minimum number of headroom bytes that newly created
>> packets
>> + * have by default. The default apply to both ODP packet input and user
>> + * allocated packets. Implementations may reserve a larger than minimum
>> headroom
>> + * size e.g. due to HW or a protocol specific alignment requirement.
>> + *
>> + * @internal In linux-generic implementation:
>> + * The default value (66) allows a 1500-byte packet to be received into a
>> single
>> + * segment with Ethernet offset alignment and room for some header
>> expansion.
>> + */
>> +#define ODP_CONFIG_PACKET_HEADROOM 66
>> +static inline int odp_config_packet_headroom(void)
>> +{
>> +	return ODP_CONFIG_PACKET_HEADROOM;
>> +}
>> +
>> +/**
>> + * Default packet tailroom
>> + *
>> + * This defines the minimum number of tailroom bytes that newly created
>> packets
>> + * have by default. The default apply to both ODP packet input and user
>> + * allocated packets. Implementations are free to add to this as desired
>> + * without restriction. Note that most implementations will automatically
>> + * consider any unused portion of the last segment of a packet as tailroom
>> + */
>> +#define ODP_CONFIG_PACKET_TAILROOM 0
>> +static inline int odp_config_packet_tailroom(void)
>> +{
>> +	return ODP_CONFIG_PACKET_TAILROOM;
>> +}
>> +
>> +/**
>> + * Minimum packet segment length
>> + *
>> + * This defines the minimum packet segment buffer length in bytes. The
>> user
>> + * defined segment length (seg_len in odp_pool_param_t) will be rounded up
>> into
>> + * this value.
>> + */
>> +#define ODP_CONFIG_PACKET_SEG_LEN_MIN 1598
>> +static inline int odp_config_packet_seg_len_min(void)
>> +{
>> +	return ODP_CONFIG_PACKET_SEG_LEN_MIN;
>> +}
>> +
>> +/**
>> + * Maximum packet segment length
>> + *
>> + * This defines the maximum packet segment buffer length in bytes. The
>> user
>> + * defined segment length (seg_len in odp_pool_param_t) must not be larger
>> than
>> + * this.
>> + */
>> +#define ODP_CONFIG_PACKET_SEG_LEN_MAX (64 * 1024)
>> +static inline int odp_config_packet_seg_len_max(void)
>> +{
>> +	return ODP_CONFIG_PACKET_SEG_LEN_MAX;
>> +}
>> +
>> +/**
>> + * Maximum packet buffer length
>> + *
>> + * This defines the maximum number of bytes that can be stored into a
>> packet
>> + * (maximum return value of odp_packet_buf_len(void)). Attempts to
>> allocate
>> + * (including default head- and tailrooms) or extend packets to sizes
>> larger
>> + * than this limit will fail.
>> + *
>> + * @internal In linux-generic implementation:
>> + * - The value MUST be an integral number of segments
>> + * - The value SHOULD be large enough to accommodate jumbo packets (9K)
>> + */
>> +#define ODP_CONFIG_PACKET_BUF_LEN_MAX (ODP_CONFIG_PACKET_SEG_LEN_MIN * 6)
>> +static inline int odp_config_packet_buf_len_max(void)
>> +{
>> +	return ODP_CONFIG_PACKET_BUF_LEN_MAX;
>> +}
>> +
>> +/** Maximum number of shared memory blocks.
>> + *
>> + * This the the number of separate SHM areas that can be reserved
>> concurrently
>> + */
>> +#define ODP_CONFIG_SHM_BLOCKS (ODP_CONFIG_POOLS + 48)
>> +static inline int odp_config_shm_blocks(void)
>> +{
>> +	return ODP_CONFIG_SHM_BLOCKS;
>> +}
>> +
>>   #include <odp/api/config.h>
>>
>>   #ifdef __cplusplus
>> --
>> 2.1.4
>>
>> _______________________________________________
>> lng-odp mailing list
>> lng-odp@lists.linaro.org
>> https://lists.linaro.org/mailman/listinfo/lng-odp
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lng-odp
diff mbox

Patch

diff --git a/include/odp/api/config.h b/include/odp/api/config.h
index 295b10d..9cdeb0e 100644
--- a/include/odp/api/config.h
+++ b/include/odp/api/config.h
@@ -19,55 +19,65 @@  extern "C" {
 #endif
 
 /** @defgroup odp_config ODP CONFIG
- *  Macro for maximum number of resources in ODP.
+ *  Platform-specific configuration limits.
  *  @{
  */
 
 /**
  * Maximum number of pools
+ * @return The maximum number of pools supported by this platform
  */
-#define ODP_CONFIG_POOLS        16
+int odp_config_pools(void);
 
 /**
  * Maximum number of queues
+ * @return The maximum number of queues supported by this platform
  */
-#define ODP_CONFIG_QUEUES       1024
+int odp_config_queues(void);
 
 /**
  * Maximum number of ordered locks per queue
+ * @return The maximum number of ordered locks per queue supported by
+ * this platform.
  */
-#define ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE  2
+int odp_config_max_ordered_locks_per_queue(void);
 
 /**
  * Number of scheduling priorities
+ * @return The number of scheduling priorities supported by this platform
  */
-#define ODP_CONFIG_SCHED_PRIOS  8
+int odp_config_sched_prios(void);
 
 /**
  * Number of scheduling groups
+ * @return Number of scheduling groups supported by this platofmr
  */
-#define ODP_CONFIG_SCHED_GRPS  16
+int odp_config_sched_grps(void);
 
 /**
  * Maximum number of packet IO resources
+ * @return The maximum number of packet I/O resources supported by this
+ * platform
  */
-#define ODP_CONFIG_PKTIO_ENTRIES 64
+int odp_config_pktio_entries(void);
 
 /**
  * Minimum buffer alignment
  *
- * This defines the minimum supported buffer alignment. Requests for values
- * below this will be rounded up to this value.
+ * @return The minimum buffer alignment supported by this platform
+ * @note Requests for values below this will be rounded up to this value.
  */
-#define ODP_CONFIG_BUFFER_ALIGN_MIN 16
+int odp_config_buffer_align_min(void);
 
 /**
  * Maximum buffer alignment
  *
  * This defines the maximum supported buffer alignment. Requests for values
  * above this will fail.
+ *
+ * @return The maximum buffer alignment supported by this platform.
  */
-#define ODP_CONFIG_BUFFER_ALIGN_MAX (4*1024)
+int odp_config_buffer_align_max(void);
 
 /**
  * Default packet headroom
@@ -77,11 +87,9 @@  extern "C" {
  * allocated packets. Implementations may reserve a larger than minimum headroom
  * size e.g. due to HW or a protocol specific alignment requirement.
  *
- * @internal In linux-generic implementation:
- * The default value (66) allows a 1500-byte packet to be received into a single
- * segment with Ethernet offset alignment and room for some header expansion.
+ * @return Default packet headroom in bytes
  */
-#define ODP_CONFIG_PACKET_HEADROOM 66
+int odp_config_packet_headroom(void);
 
 /**
  * Default packet tailroom
@@ -89,10 +97,11 @@  extern "C" {
  * This defines the minimum number of tailroom bytes that newly created packets
  * have by default. The default apply to both ODP packet input and user
  * allocated packets. Implementations are free to add to this as desired
- * without restriction. Note that most implementations will automatically
- * consider any unused portion of the last segment of a packet as tailroom
+ * without restriction.
+ *
+ * @return The default packet tailroom in bytes
  */
-#define ODP_CONFIG_PACKET_TAILROOM 0
+int odp_config_packet_tailroom(void);
 
 /**
  * Minimum packet segment length
@@ -100,8 +109,10 @@  extern "C" {
  * This defines the minimum packet segment buffer length in bytes. The user
  * defined segment length (seg_len in odp_pool_param_t) will be rounded up into
  * this value.
+ *
+ * @return The minimum packet seg_len supported by this platform
  */
-#define ODP_CONFIG_PACKET_SEG_LEN_MIN (1598)
+int odp_config_packet_seg_len_min(void);
 
 /**
  * Maximum packet segment length
@@ -109,8 +120,10 @@  extern "C" {
  * This defines the maximum packet segment buffer length in bytes. The user
  * defined segment length (seg_len in odp_pool_param_t) must not be larger than
  * this.
+ *
+ * @return The maximum packet seg_len supported by this platform
  */
-#define ODP_CONFIG_PACKET_SEG_LEN_MAX (64*1024)
+int odp_config_packet_seg_len_max(void);
 
 /**
  * Maximum packet buffer length
@@ -120,17 +133,17 @@  extern "C" {
  * (including default head- and tailrooms) or extend packets to sizes larger
  * than this limit will fail.
  *
- * @internal In linux-generic implementation:
- * - The value MUST be an integral number of segments
- * - The value SHOULD be large enough to accommodate jumbo packets (9K)
+ * @return The maximum packet buffer length supported by this platform
  */
-#define ODP_CONFIG_PACKET_BUF_LEN_MAX (ODP_CONFIG_PACKET_SEG_LEN_MIN*6)
+int odp_config_packet_buf_len_max(void);
 
 /** Maximum number of shared memory blocks.
  *
  * This the the number of separate SHM areas that can be reserved concurrently
+ *
+ * @return The maximum number of shm areas supported by this platform
  */
-#define ODP_CONFIG_SHM_BLOCKS (ODP_CONFIG_POOLS + 48)
+int odp_config_shm_blocks(void);
 
 /**
  * @}
diff --git a/platform/linux-generic/include/odp/config.h b/platform/linux-generic/include/odp/config.h
index 6fecd38..a130e68 100644
--- a/platform/linux-generic/include/odp/config.h
+++ b/platform/linux-generic/include/odp/config.h
@@ -1,4 +1,4 @@ 
-/* Copyright (c) 2013, Linaro Limited
+/* Copyright (c) 2015, Linaro Limited
  * All rights reserved.
  *
  * SPDX-License-Identifier:     BSD-3-Clause
@@ -17,6 +17,171 @@ 
 extern "C" {
 #endif
 
+/**
+ * Maximum number of pools
+ */
+#define ODP_CONFIG_POOLS 16
+static inline int odp_config_pools(void)
+{
+	return ODP_CONFIG_POOLS;
+}
+
+/**
+ * Maximum number of queues
+ */
+#define ODP_CONFIG_QUEUES 1024
+static inline int odp_config_queues(void)
+{
+	return ODP_CONFIG_QUEUES;
+}
+
+/**
+ * Number of ordered locks per queue
+ */
+#define ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE 2
+static inline int odp_config_max_ordered_locks_per_queue(void)
+{
+	return ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE;
+}
+
+/**
+ * Number of scheduling priorities
+ */
+#define ODP_CONFIG_SCHED_PRIOS 8
+static inline int odp_config_sched_prios(void)
+{
+	return ODP_CONFIG_SCHED_PRIOS;
+}
+
+/**
+ * Number of scheduling groups
+ */
+#define ODP_CONFIG_SCHED_GRPS 16
+static inline int odp_config_sched_grps(void)
+{
+	return ODP_CONFIG_SCHED_GRPS;
+}
+
+/**
+ * Maximum number of packet IO resources
+ */
+#define ODP_CONFIG_PKTIO_ENTRIES 64
+static inline int odp_config_pktio_entries(void)
+{
+	return ODP_CONFIG_PKTIO_ENTRIES;
+}
+
+/**
+ * Minimum buffer alignment
+ *
+ * This defines the minimum supported buffer alignment. Requests for values
+ * below this will be rounded up to this value.
+ */
+#define ODP_CONFIG_BUFFER_ALIGN_MIN 16
+static inline int odp_config_buffer_align_min(void)
+{
+	return ODP_CONFIG_BUFFER_ALIGN_MIN;
+}
+
+/**
+ * Maximum buffer alignment
+ *
+ * This defines the maximum supported buffer alignment. Requests for values
+ * above this will fail.
+ */
+#define ODP_CONFIG_BUFFER_ALIGN_MAX (4 * 1024)
+static inline int odp_config_buffer_align_max(void)
+{
+	return ODP_CONFIG_BUFFER_ALIGN_MAX;
+}
+
+/**
+ * Default packet headroom
+ *
+ * This defines the minimum number of headroom bytes that newly created packets
+ * have by default. The default apply to both ODP packet input and user
+ * allocated packets. Implementations may reserve a larger than minimum headroom
+ * size e.g. due to HW or a protocol specific alignment requirement.
+ *
+ * @internal In linux-generic implementation:
+ * The default value (66) allows a 1500-byte packet to be received into a single
+ * segment with Ethernet offset alignment and room for some header expansion.
+ */
+#define ODP_CONFIG_PACKET_HEADROOM 66
+static inline int odp_config_packet_headroom(void)
+{
+	return ODP_CONFIG_PACKET_HEADROOM;
+}
+
+/**
+ * Default packet tailroom
+ *
+ * This defines the minimum number of tailroom bytes that newly created packets
+ * have by default. The default apply to both ODP packet input and user
+ * allocated packets. Implementations are free to add to this as desired
+ * without restriction. Note that most implementations will automatically
+ * consider any unused portion of the last segment of a packet as tailroom
+ */
+#define ODP_CONFIG_PACKET_TAILROOM 0
+static inline int odp_config_packet_tailroom(void)
+{
+	return ODP_CONFIG_PACKET_TAILROOM;
+}
+
+/**
+ * Minimum packet segment length
+ *
+ * This defines the minimum packet segment buffer length in bytes. The user
+ * defined segment length (seg_len in odp_pool_param_t) will be rounded up into
+ * this value.
+ */
+#define ODP_CONFIG_PACKET_SEG_LEN_MIN 1598
+static inline int odp_config_packet_seg_len_min(void)
+{
+	return ODP_CONFIG_PACKET_SEG_LEN_MIN;
+}
+
+/**
+ * Maximum packet segment length
+ *
+ * This defines the maximum packet segment buffer length in bytes. The user
+ * defined segment length (seg_len in odp_pool_param_t) must not be larger than
+ * this.
+ */
+#define ODP_CONFIG_PACKET_SEG_LEN_MAX (64 * 1024)
+static inline int odp_config_packet_seg_len_max(void)
+{
+	return ODP_CONFIG_PACKET_SEG_LEN_MAX;
+}
+
+/**
+ * Maximum packet buffer length
+ *
+ * This defines the maximum number of bytes that can be stored into a packet
+ * (maximum return value of odp_packet_buf_len(void)). Attempts to allocate
+ * (including default head- and tailrooms) or extend packets to sizes larger
+ * than this limit will fail.
+ *
+ * @internal In linux-generic implementation:
+ * - The value MUST be an integral number of segments
+ * - The value SHOULD be large enough to accommodate jumbo packets (9K)
+ */
+#define ODP_CONFIG_PACKET_BUF_LEN_MAX (ODP_CONFIG_PACKET_SEG_LEN_MIN * 6)
+static inline int odp_config_packet_buf_len_max(void)
+{
+	return ODP_CONFIG_PACKET_BUF_LEN_MAX;
+}
+
+/** Maximum number of shared memory blocks.
+ *
+ * This the the number of separate SHM areas that can be reserved concurrently
+ */
+#define ODP_CONFIG_SHM_BLOCKS (ODP_CONFIG_POOLS + 48)
+static inline int odp_config_shm_blocks(void)
+{
+	return ODP_CONFIG_SHM_BLOCKS;
+}
+
 #include <odp/api/config.h>
 
 #ifdef __cplusplus