Message ID | 1437496924-23032-1-git-send-email-bill.fischofer@linaro.org |
---|---|
State | Superseded |
Headers | show |
ping. This needs a review to move to API-NEXT. Thanks. On Tue, Jul 21, 2015 at 11:42 AM, Bill Fischofer <bill.fischofer@linaro.org> 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 <bill.fischofer@linaro.org> > --- > 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 > >
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
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 | 61 ++++++----- platform/linux-generic/include/odp/config.h | 156 ++++++++++++++++++++++++++++ 2 files changed, 192 insertions(+), 25 deletions(-)