Just for my information, why do we need this?

On 07/21/2015 06:42 PM, Bill Fischofer wrote:
> Please ignore this.  Resubmitting with proper API-NEXT tag.
>
> On Tue, Jul 21, 2015 at 11:40 AM, Bill Fischofer <[email protected] 
> <mailto:[email protected]>> wrote:
>
>     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 <[email protected] 
> <mailto:[email protected]>>
>     ---
>      include/odp/api/config.h                    |  61 ++++++-----
>      platform/linux-generic/include/odp/config.h | 156 
> ++++++++++++++++++++++++++++
>      2 files changed, 192 insertions(+), 25 deletions(-)
>
>     diff --git a/include/odp/api/config.h b/include/odp/api/config.h
>     index b5c8fdd..a57c76b 100644
>     --- a/include/odp/api/config.h
>     +++ b/include/odp/api/config.h
>     @@ -19,50 +19,58 @@ extern "C" {
>      #endif
>
>      /** @defgroup odp_config ODP CONFIG
>     - *  Macro for maximum number of resources in ODP.
>     + *  Platform-specific configuration limits.
>       *  @{
>       */
>
>      /**
>       * Maximum number of threads
>     + * @return The maximum number of threads supported by this platform
>       */
>     -#define ODP_CONFIG_MAX_THREADS  128
>     +int odp_config_max_threads(void);
>
>      /**
>       * 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);
>
>      /**
>       * 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);
>
>      /**
>       * 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
>     @@ -72,11 +80,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
>     @@ -84,10 +90,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
>     @@ -95,8 +102,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
>     @@ -104,28 +113,30 @@ 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
>       *
>       * This defines the maximum number of bytes that can be stored into a 
> packet
>     - * (maximum return value of odp_packet_buf_len()). Attempts to allocate
>     + * (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)
>     + * @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..016397e 100644
>     --- a/platform/linux-generic/include/odp/config.h
>     +++ b/platform/linux-generic/include/odp/config.h
>     @@ -17,6 +17,162 @@
>      extern "C" {
>      #endif
>
>     +/**
>     + * Maximum number of threads
>     + */
>     +#define ODP_CONFIG_MAX_THREADS 128
>     +static inline int odp_config_max_threads(void)
>     +{
>     +       return ODP_CONFIG_MAX_THREADS;
>     +}
>     +
>     +/**
>     + * 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 scheduling priorities
>     + */
>     +#define ODP_CONFIG_SCHED_PRIOS 8
>     +static inline int odp_config_sched_prios(void)
>     +{
>     +       return ODP_CONFIG_SCHED_PRIOS;
>     +}
>     +
>     +/**
>     + * 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
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to