diff mbox

[API-NEXT] api: config: replace defines with apis

Message ID 1437496924-23032-1-git-send-email-bill.fischofer@linaro.org
State Superseded
Headers show

Commit Message

Bill Fischofer July 21, 2015, 4:42 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                    |  61 ++++++-----
 platform/linux-generic/include/odp/config.h | 156 ++++++++++++++++++++++++++++
 2 files changed, 192 insertions(+), 25 deletions(-)

Comments

Bill Fischofer Aug. 12, 2015, 9:52 p.m. UTC | #1
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 mbox

Patch

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