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
