Initially, use the same default ABI file for all architectures. Default values match those defined in odp-linux implementation to minimize changes in this phase. Removed an unused type definition, documentation of that need to be still removed for API spec. Moved a TM specific define into TM source file.
Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com> --- include/odp/arch/arm32-linux/odp/api/abi/queue.h | 7 +++++ include/odp/arch/arm64-linux/odp/api/abi/queue.h | 7 +++++ include/odp/arch/default/api/abi/queue.h | 34 ++++++++++++++++++++++ include/odp/arch/mips64-linux/odp/api/abi/queue.h | 7 +++++ include/odp/arch/power64-linux/odp/api/abi/queue.h | 7 +++++ include/odp/arch/x86_32-linux/odp/api/abi/queue.h | 7 +++++ include/odp/arch/x86_64-linux/odp/api/abi/queue.h | 7 +++++ platform/Makefile.inc | 6 ++-- .../include/odp/api/plat/queue_types.h | 25 +++++----------- platform/linux-generic/include/odp/api/queue.h | 4 +++ .../include/odp_classification_datamodel.h | 1 - platform/linux-generic/odp_queue.c | 5 ++++ platform/linux-generic/odp_traffic_mngr.c | 5 +++- 13 files changed, 101 insertions(+), 21 deletions(-) create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/default/api/abi/queue.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/queue.h diff --git a/include/odp/arch/arm32-linux/odp/api/abi/queue.h b/include/odp/arch/arm32-linux/odp/api/abi/queue.h new file mode 100644 index 0000000..6027cee --- /dev/null +++ b/include/odp/arch/arm32-linux/odp/api/abi/queue.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/queue.h> diff --git a/include/odp/arch/arm64-linux/odp/api/abi/queue.h b/include/odp/arch/arm64-linux/odp/api/abi/queue.h new file mode 100644 index 0000000..6027cee --- /dev/null +++ b/include/odp/arch/arm64-linux/odp/api/abi/queue.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/queue.h> diff --git a/include/odp/arch/default/api/abi/queue.h b/include/odp/arch/default/api/abi/queue.h new file mode 100644 index 0000000..748e8dc --- /dev/null +++ b/include/odp/arch/default/api/abi/queue.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_ABI_QUEUE_H_ +#define ODP_ABI_QUEUE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +/** @ingroup odp_queue + * @{ + */ + +typedef uintptr_t odp_queue_t; + +#define ODP_QUEUE_INVALID ((odp_queue_t)0) + +#define ODP_QUEUE_NAME_LEN 32 + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/odp/arch/mips64-linux/odp/api/abi/queue.h b/include/odp/arch/mips64-linux/odp/api/abi/queue.h new file mode 100644 index 0000000..6027cee --- /dev/null +++ b/include/odp/arch/mips64-linux/odp/api/abi/queue.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/queue.h> diff --git a/include/odp/arch/power64-linux/odp/api/abi/queue.h b/include/odp/arch/power64-linux/odp/api/abi/queue.h new file mode 100644 index 0000000..6027cee --- /dev/null +++ b/include/odp/arch/power64-linux/odp/api/abi/queue.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/queue.h> diff --git a/include/odp/arch/x86_32-linux/odp/api/abi/queue.h b/include/odp/arch/x86_32-linux/odp/api/abi/queue.h new file mode 100644 index 0000000..6027cee --- /dev/null +++ b/include/odp/arch/x86_32-linux/odp/api/abi/queue.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/queue.h> diff --git a/include/odp/arch/x86_64-linux/odp/api/abi/queue.h b/include/odp/arch/x86_64-linux/odp/api/abi/queue.h new file mode 100644 index 0000000..6027cee --- /dev/null +++ b/include/odp/arch/x86_64-linux/odp/api/abi/queue.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/arch/default/api/abi/queue.h> diff --git a/platform/Makefile.inc b/platform/Makefile.inc index deeebff..3201d33 100644 --- a/platform/Makefile.inc +++ b/platform/Makefile.inc @@ -67,7 +67,8 @@ odpapiabidefaultinclude_HEADERS = \ $(top_srcdir)/include/odp/arch/default/api/abi/crypto.h \ $(top_srcdir)/include/odp/arch/default/api/abi/event.h \ $(top_srcdir)/include/odp/arch/default/api/abi/packet.h \ - $(top_srcdir)/include/odp/arch/default/api/abi/pool.h + $(top_srcdir)/include/odp/arch/default/api/abi/pool.h \ + $(top_srcdir)/include/odp/arch/default/api/abi/queue.h odpapiabiarchincludedir= $(includedir)/odp/arch/@ARCH_ABI@/odp/api/abi odpapiabiarchinclude_HEADERS = \ @@ -76,7 +77,8 @@ odpapiabiarchinclude_HEADERS = \ $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/crypto.h \ $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/event.h \ $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/packet.h \ - $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/pool.h + $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/pool.h \ + $(top_srcdir)/include/odp/arch/@ARCH_ABI@/odp/api/abi/queue.h EXTRA_DIST = \ arch/arm/odp/api/cpu_arch.h \ diff --git a/platform/linux-generic/include/odp/api/plat/queue_types.h b/platform/linux-generic/include/odp/api/plat/queue_types.h index 1569f5d..1561e22 100644 --- a/platform/linux-generic/include/odp/api/plat/queue_types.h +++ b/platform/linux-generic/include/odp/api/plat/queue_types.h @@ -17,39 +17,30 @@ extern "C" { #endif +#include <odp/api/plat/static_inline.h> +#if ODP_ABI_COMPAT == 1 +#include <odp/api/abi/queue.h> +#else + #include <odp/api/std_types.h> #include <odp/api/plat/strong_types.h> -/** @addtogroup odp_queue ODP QUEUE - * Macros and operation on a queue. +/** @ingroup odp_queue * @{ */ typedef ODP_HANDLE_T(odp_queue_t); -typedef ODP_HANDLE_T(odp_queue_group_t); - #define ODP_QUEUE_INVALID _odp_cast_scalar(odp_queue_t, 0) #define ODP_QUEUE_NAME_LEN 32 /** - * @def ODP_QUEUE_TYPE_TM - * Traffic manager queue - * @note Internal to the implementation -- not part of queue type API - */ -#define ODP_QUEUE_TYPE_TM 4 - -/** Get printable format of odp_queue_t */ -static inline uint64_t odp_queue_to_u64(odp_queue_t hdl) -{ - return _odp_pri(hdl); -} - -/** * @} */ +#endif + #ifdef __cplusplus } #endif diff --git a/platform/linux-generic/include/odp/api/queue.h b/platform/linux-generic/include/odp/api/queue.h index a5cf873..adceafb 100644 --- a/platform/linux-generic/include/odp/api/queue.h +++ b/platform/linux-generic/include/odp/api/queue.h @@ -27,6 +27,10 @@ extern "C" { * @{ */ +/* REMOVE FROM API SPEC. Typedef needed only for suppressing Doxygen + * warning. */ +typedef void odp_queue_group_t; + /** * @} */ diff --git a/platform/linux-generic/include/odp_classification_datamodel.h b/platform/linux-generic/include/odp_classification_datamodel.h index 99c1710..c4ecd3a 100644 --- a/platform/linux-generic/include/odp_classification_datamodel.h +++ b/platform/linux-generic/include/odp_classification_datamodel.h @@ -82,7 +82,6 @@ struct cos_s { union cos_u *linked_cos[ODP_PMR_PER_COS_MAX]; /* Chained CoS with PMR*/ uint32_t valid; /* validity Flag */ odp_cls_drop_t drop_policy; /* Associated Drop Policy */ - odp_queue_group_t queue_group; /* Associated Queue Group */ size_t headroom; /* Headroom for this CoS */ odp_spinlock_t lock; /* cos lock */ odp_atomic_u32_t num_rule; /* num of PMRs attached with this CoS */ diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c index aafe567..3975405 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -756,3 +756,8 @@ int sched_cb_queue_empty(uint32_t queue_index) return ret; } + +uint64_t odp_queue_to_u64(odp_queue_t hdl) +{ + return _odp_pri(hdl); +} diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c index 9dc3a86..309f237 100644 --- a/platform/linux-generic/odp_traffic_mngr.c +++ b/platform/linux-generic/odp_traffic_mngr.c @@ -37,6 +37,9 @@ static const pkt_desc_t EMPTY_PKT_DESC = { .word = 0 }; #define MAX_PRIORITIES ODP_TM_MAX_PRIORITIES #define NUM_SHAPER_COLORS ODP_NUM_SHAPER_COLORS +/* Traffic manager queue */ +#define QUEUE_TYPE_TM 4 + static tm_prop_t basic_prop_tbl[MAX_PRIORITIES][NUM_SHAPER_COLORS] = { [0] = { [ODP_TM_SHAPER_GREEN] = { 0, DECR_BOTH }, @@ -3915,7 +3918,7 @@ odp_tm_queue_t odp_tm_queue_create(odp_tm_t odp_tm, tm_queue_obj->pkt = ODP_PACKET_INVALID; odp_ticketlock_init(&tm_wred_node->tm_wred_node_lock); - tm_queue_obj->tm_qentry.s.type = ODP_QUEUE_TYPE_TM; + tm_queue_obj->tm_qentry.s.type = QUEUE_TYPE_TM; tm_queue_obj->tm_qentry.s.enqueue = queue_tm_reenq; tm_queue_obj->tm_qentry.s.enqueue_multi = queue_tm_reenq_multi; -- 2.8.1