diff --git a/doc/implementers-guide/implementers-guide.adoc b/doc/implementers-guide/implementers-guide.adoc
index 0e2edc0c..b6ecf3cc 100644
--- a/doc/implementers-guide/implementers-guide.adoc
+++ b/doc/implementers-guide/implementers-guide.adoc
@@ -639,12 +639,6 @@ that an application that tries to pass a variable of type `odp_packet_t` to
 an API that expects an argument of type `odp_queue_t`, for example, will result
 in a compilation error rather than some difficult to debug runtime failure.
 
-The *odp-linux* reference implementation defines all ODP abstract types strongly
-using a set of utility macros contained in
-`platform/linux-generic/include/odp/api/plat/strong_types.h`. These macros
-can be used or modified as desired by other implementations to achieve strong
-typing of their typedefs.
-
 === Typedef approaches
 ODP abstract types serve two distinct purposes that each implementation must
 consider. First, they shield applications from implementation internals, thus
diff --git a/example/time/time_global_test.c b/example/time/time_global_test.c
index dd339499..b6be4f17 100644
--- a/example/time/time_global_test.c
+++ b/example/time/time_global_test.c
@@ -5,6 +5,7 @@
  */
 
 #include <inttypes.h>
+#include <string.h>
 
 #include <odp_api.h>
 #include <example_debug.h>
diff --git a/example/traffic_mgmt/odp_traffic_mgmt.c b/example/traffic_mgmt/odp_traffic_mgmt.c
index c83b6152..e56832c5 100644
--- a/example/traffic_mgmt/odp_traffic_mgmt.c
+++ b/example/traffic_mgmt/odp_traffic_mgmt.c
@@ -10,6 +10,7 @@
 
 #include <unistd.h>
 #include <signal.h>
+#include <string.h>
 #include <inttypes.h>
 #include <sys/resource.h>
 #include <execinfo.h>
diff --git a/helper/test/odpthreads.c b/helper/test/odpthreads.c
index 4bb3c3b6..2009d3e3 100644
--- a/helper/test/odpthreads.c
+++ b/helper/test/odpthreads.c
@@ -12,6 +12,7 @@
 
 #include <unistd.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include <odph_debug.h>
 #include <odp_api.h>
diff --git a/helper/test/table.c b/helper/test/table.c
index 3b74b225..09b71cbe 100644
--- a/helper/test/table.c
+++ b/helper/test/table.c
@@ -9,6 +9,8 @@
 #include <../odph_lineartable.h>
 #include <odp_api.h>
 
+#include <string.h>
+
 /**
  * Address Resolution Protocol (ARP)
  * Description: Once a route has been identified for an IP packet (so the
diff --git a/helper/threads.c b/helper/threads.c
index fe5d2bde..1bfc735f 100644
--- a/helper/threads.c
+++ b/helper/threads.c
@@ -9,6 +9,8 @@
 #endif
 #include <sched.h>
 #include <unistd.h>
+#include <stdbool.h>
+#include <string.h>
 #include <sys/wait.h>
 #include <sys/prctl.h>
 #include <sys/syscall.h>
diff --git a/include/odp/api/spec/atomic.h b/include/odp/api/spec/atomic.h
index 408829df..d201d5bb 100644
--- a/include/odp/api/spec/atomic.h
+++ b/include/odp/api/spec/atomic.h
@@ -74,7 +74,10 @@ extern "C" {
  * @param atom    Pointer to atomic variable
  * @param val     Value to initialize the variable with
  */
-void odp_atomic_init_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_init_u32(odp_atomic_u32_t *atom, uint32_t val)
+{
+	__atomic_store_n(&atom->v, val, __ATOMIC_RELAXED);
+}
 
 /**
  * Load value of atomic uint32 variable
@@ -83,7 +86,10 @@ void odp_atomic_init_u32(odp_atomic_u32_t *atom, uint32_t val);
  *
  * @return Value of the variable
  */
-uint32_t odp_atomic_load_u32(odp_atomic_u32_t *atom);
+static inline uint32_t odp_atomic_load_u32(odp_atomic_u32_t *atom)
+{
+	return __atomic_load_n(&atom->v, __ATOMIC_RELAXED);
+}
 
 /**
  * Store value to atomic uint32 variable
@@ -91,7 +97,10 @@ uint32_t odp_atomic_load_u32(odp_atomic_u32_t *atom);
  * @param atom    Pointer to atomic variable
  * @param val     Value to store in the variable
  */
-void odp_atomic_store_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_store_u32(odp_atomic_u32_t *atom, uint32_t val)
+{
+	__atomic_store_n(&atom->v, val, __ATOMIC_RELAXED);
+}
 
 /**
  * Fetch and add to atomic uint32 variable
@@ -101,7 +110,11 @@ void odp_atomic_store_u32(odp_atomic_u32_t *atom, uint32_t val);
  *
  * @return Value of the variable before the addition
  */
-uint32_t odp_atomic_fetch_add_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline uint32_t odp_atomic_fetch_add_u32(odp_atomic_u32_t *atom,
+						uint32_t val)
+{
+	return __atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
+}
 
 /**
  * Add to atomic uint32 variable
@@ -109,7 +122,10 @@ uint32_t odp_atomic_fetch_add_u32(odp_atomic_u32_t *atom, uint32_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be added to the variable
  */
-void odp_atomic_add_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_add_u32(odp_atomic_u32_t *atom, uint32_t val)
+{
+	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
+}
 
 /**
  * Fetch and subtract from atomic uint32 variable
@@ -119,7 +135,11 @@ void odp_atomic_add_u32(odp_atomic_u32_t *atom, uint32_t val);
  *
  * @return Value of the variable before the subtraction
  */
-uint32_t odp_atomic_fetch_sub_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline uint32_t odp_atomic_fetch_sub_u32(odp_atomic_u32_t *atom,
+						uint32_t val)
+{
+	return __atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
+}
 
 /**
  * Subtract from atomic uint32 variable
@@ -127,7 +147,10 @@ uint32_t odp_atomic_fetch_sub_u32(odp_atomic_u32_t *atom, uint32_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be subtracted from the variable
  */
-void odp_atomic_sub_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_sub_u32(odp_atomic_u32_t *atom, uint32_t val)
+{
+	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
+}
 
 /**
  * Fetch and increment atomic uint32 variable
@@ -136,14 +159,20 @@ void odp_atomic_sub_u32(odp_atomic_u32_t *atom, uint32_t val);
  *
  * @return Value of the variable before the increment
  */
-uint32_t odp_atomic_fetch_inc_u32(odp_atomic_u32_t *atom);
+static inline uint32_t odp_atomic_fetch_inc_u32(odp_atomic_u32_t *atom)
+{
+	return __atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
+}
 
 /**
  * Increment atomic uint32 variable
  *
  * @param atom    Pointer to atomic variable
  */
-void odp_atomic_inc_u32(odp_atomic_u32_t *atom);
+static inline void odp_atomic_inc_u32(odp_atomic_u32_t *atom)
+{
+	(void)__atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
+}
 
 /**
  * Fetch and decrement atomic uint32 variable
@@ -152,36 +181,20 @@ void odp_atomic_inc_u32(odp_atomic_u32_t *atom);
  *
  * @return Value of the variable before the subtraction
  */
-uint32_t odp_atomic_fetch_dec_u32(odp_atomic_u32_t *atom);
+static inline uint32_t odp_atomic_fetch_dec_u32(odp_atomic_u32_t *atom)
+{
+	return __atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
+}
 
 /**
  * Decrement atomic uint32 variable
  *
  * @param atom    Pointer to atomic variable
  */
-void odp_atomic_dec_u32(odp_atomic_u32_t *atom);
-
-/**
- * Update maximum value of atomic uint32 variable
- *
- * Compares value of atomic variable to the new maximum value. If the new value
- * is greater than the current value, writes the new value into the variable.
- *
- * @param atom    Pointer to atomic variable
- * @param new_max New maximum value to be written into the atomic variable
- */
-void odp_atomic_max_u32(odp_atomic_u32_t *atom, uint32_t new_max);
-
-/**
- * Update minimum value of atomic uint32 variable
- *
- * Compares value of atomic variable to the new minimum value. If the new value
- * is less than the current value, writes the new value into the variable.
- *
- * @param atom    Pointer to atomic variable
- * @param new_min New minimum value to be written into the atomic variable
- */
-void odp_atomic_min_u32(odp_atomic_u32_t *atom, uint32_t new_min);
+static inline void odp_atomic_dec_u32(odp_atomic_u32_t *atom)
+{
+	(void)__atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
+}
 
 /**
  * Compare and swap atomic uint32 variable
@@ -199,8 +212,14 @@ void odp_atomic_min_u32(odp_atomic_u32_t *atom, uint32_t new_min);
  * @return 0 on failure, !0 on success
  *
  */
-int odp_atomic_cas_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
-		       uint32_t new_val);
+static inline int odp_atomic_cas_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
+				     uint32_t new_val)
+{
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_RELAXED,
+					   __ATOMIC_RELAXED);
+}
 
 /**
  * Exchange value of atomic uint32 variable
@@ -213,13 +232,95 @@ int odp_atomic_cas_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
  *
  * @return Value of the variable before the operation
  */
-uint32_t odp_atomic_xchg_u32(odp_atomic_u32_t *atom, uint32_t new_val);
+static inline uint32_t odp_atomic_xchg_u32(odp_atomic_u32_t *atom,
+					   uint32_t new_val)
+{
+	return __atomic_exchange_n(&atom->v, new_val, __ATOMIC_RELAXED);
+}
+
+/**
+ * Update maximum value of atomic uint32 variable
+ *
+ * Compares value of atomic variable to the new maximum value. If the new value
+ * is greater than the current value, writes the new value into the variable.
+ *
+ * @param atom    Pointer to atomic variable
+ * @param new_max New maximum value to be written into the atomic variable
+ */
+static inline void odp_atomic_max_u32(odp_atomic_u32_t *atom, uint32_t new_max)
+{
+	uint32_t old_val;
+
+	old_val = odp_atomic_load_u32(atom);
+
+	while (new_max > old_val) {
+		if (odp_atomic_cas_u32(atom, &old_val, new_max))
+			break;
+	}
+}
+
+/**
+ * Update minimum value of atomic uint32 variable
+ *
+ * Compares value of atomic variable to the new minimum value. If the new value
+ * is less than the current value, writes the new value into the variable.
+ *
+ * @param atom    Pointer to atomic variable
+ * @param new_min New minimum value to be written into the atomic variable
+ */
+static inline void odp_atomic_min_u32(odp_atomic_u32_t *atom, uint32_t new_min)
+{
+	uint32_t old_val;
+
+	old_val = odp_atomic_load_u32(atom);
+
+	while (new_min < old_val) {
+		if (odp_atomic_cas_u32(atom, &old_val, new_min))
+			break;
+	}
+}
 
 /*
  * 64-bit operations in RELAXED memory ordering
  * --------------------------------------------
  */
 
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+
+/**
+ * @internal
+ * CAS operation expression for the ATOMIC_OP macro
+ */
+#define ATOMIC_CAS_OP(ret_ptr, old_val, new_val) \
+({ \
+	if (atom->v == (old_val)) { \
+		atom->v = (new_val); \
+		*(ret_ptr) = 1; \
+	} else { \
+		*(ret_ptr) = 0; \
+	} \
+})
+
+/**
+ * @internal
+ * Helper macro for lock-based atomic operations on 64-bit integers
+ * @param[in,out] atom Pointer to the 64-bit atomic variable
+ * @param expr Expression used update the variable.
+ * @return The old value of the variable.
+ */
+#define ATOMIC_OP(atom, expr) \
+({ \
+	uint64_t _old_val; \
+	/* Loop while lock is already taken, stop when lock becomes clear */ \
+	while (__atomic_test_and_set(&(atom)->lock, __ATOMIC_ACQUIRE)) \
+		(void)0; \
+	_old_val = (atom)->v; \
+	(expr); /* Perform whatever update is desired */ \
+	__atomic_clear(&(atom)->lock, __ATOMIC_RELEASE); \
+	_old_val; /* Return old value */ \
+})
+#endif
+
 /**
  * Initialize atomic uint64 variable
  *
@@ -230,7 +331,13 @@ uint32_t odp_atomic_xchg_u32(odp_atomic_u32_t *atom, uint32_t new_val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to initialize the variable with
  */
-void odp_atomic_init_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_init_u64(odp_atomic_u64_t *atom, uint64_t val)
+{
+	atom->v = val;
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	__atomic_clear(&atom->lock, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Load value of atomic uint64 variable
@@ -239,7 +346,14 @@ void odp_atomic_init_u64(odp_atomic_u64_t *atom, uint64_t val);
  *
  * @return Value of the variable
  */
-uint64_t odp_atomic_load_u64(odp_atomic_u64_t *atom);
+static inline uint64_t odp_atomic_load_u64(odp_atomic_u64_t *atom)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, (void)0);
+#else
+	return __atomic_load_n(&atom->v, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Store value to atomic uint64 variable
@@ -247,7 +361,14 @@ uint64_t odp_atomic_load_u64(odp_atomic_u64_t *atom);
  * @param atom    Pointer to atomic variable
  * @param val     Value to store in the variable
  */
-void odp_atomic_store_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_store_u64(odp_atomic_u64_t *atom, uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v = val);
+#else
+	__atomic_store_n(&atom->v, val, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Fetch and add to atomic uint64 variable
@@ -257,7 +378,15 @@ void odp_atomic_store_u64(odp_atomic_u64_t *atom, uint64_t val);
  *
  * @return Value of the variable before the addition
  */
-uint64_t odp_atomic_fetch_add_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline uint64_t odp_atomic_fetch_add_u64(odp_atomic_u64_t *atom,
+						uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, atom->v += val);
+#else
+	return __atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Add to atomic uint64 variable
@@ -265,7 +394,14 @@ uint64_t odp_atomic_fetch_add_u64(odp_atomic_u64_t *atom, uint64_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be added to the variable
  */
-void odp_atomic_add_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_add_u64(odp_atomic_u64_t *atom, uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v += val);
+#else
+	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Fetch and subtract from atomic uint64 variable
@@ -275,7 +411,15 @@ void odp_atomic_add_u64(odp_atomic_u64_t *atom, uint64_t val);
  *
  * @return Value of the variable before the subtraction
  */
-uint64_t odp_atomic_fetch_sub_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline uint64_t odp_atomic_fetch_sub_u64(odp_atomic_u64_t *atom,
+						uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, atom->v -= val);
+#else
+	return __atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Subtract from atomic uint64 variable
@@ -283,7 +427,14 @@ uint64_t odp_atomic_fetch_sub_u64(odp_atomic_u64_t *atom, uint64_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be subtracted from the variable
  */
-void odp_atomic_sub_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_sub_u64(odp_atomic_u64_t *atom, uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v -= val);
+#else
+	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Fetch and increment atomic uint64 variable
@@ -292,14 +443,28 @@ void odp_atomic_sub_u64(odp_atomic_u64_t *atom, uint64_t val);
  *
  * @return Value of the variable before the increment
  */
-uint64_t odp_atomic_fetch_inc_u64(odp_atomic_u64_t *atom);
+static inline uint64_t odp_atomic_fetch_inc_u64(odp_atomic_u64_t *atom)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, atom->v++);
+#else
+	return __atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Increment atomic uint64 variable
  *
  * @param atom    Pointer to atomic variable
  */
-void odp_atomic_inc_u64(odp_atomic_u64_t *atom);
+static inline void odp_atomic_inc_u64(odp_atomic_u64_t *atom)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v++);
+#else
+	(void)__atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Fetch and decrement atomic uint64 variable
@@ -308,36 +473,28 @@ void odp_atomic_inc_u64(odp_atomic_u64_t *atom);
  *
  * @return Value of the variable before the decrement
  */
-uint64_t odp_atomic_fetch_dec_u64(odp_atomic_u64_t *atom);
+static inline uint64_t odp_atomic_fetch_dec_u64(odp_atomic_u64_t *atom)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, atom->v--);
+#else
+	return __atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Decrement atomic uint64 variable
  *
  * @param atom    Pointer to atomic variable
  */
-void odp_atomic_dec_u64(odp_atomic_u64_t *atom);
-
-/**
- * Update maximum value of atomic uint64 variable
- *
- * Compares value of atomic variable to the new maximum value. If the new value
- * is greater than the current value, writes the new value into the variable.
- *
- * @param atom    Pointer to atomic variable
- * @param new_max New maximum value to be written into the atomic variable
- */
-void odp_atomic_max_u64(odp_atomic_u64_t *atom, uint64_t new_max);
-
-/**
- * Update minimum value of atomic uint64 variable
- *
- * Compares value of atomic variable to the new minimum value. If the new value
- * is less than the current value, writes the new value into the variable.
- *
- * @param atom    Pointer to atomic variable
- * @param new_min New minimum value to be written into the atomic variable
- */
-void odp_atomic_min_u64(odp_atomic_u64_t *atom, uint64_t new_min);
+static inline void odp_atomic_dec_u64(odp_atomic_u64_t *atom)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v--);
+#else
+	(void)__atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Compare and swap atomic uint64 variable
@@ -354,8 +511,20 @@ void odp_atomic_min_u64(odp_atomic_u64_t *atom, uint64_t new_min);
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
-		       uint64_t new_val);
+static inline int odp_atomic_cas_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
+				     uint64_t new_val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	int ret;
+	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
+	return ret;
+#else
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_RELAXED,
+					   __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Exchange value of atomic uint64 variable
@@ -368,7 +537,57 @@ int odp_atomic_cas_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
  *
  * @return Value of the variable before the operation
  */
-uint64_t odp_atomic_xchg_u64(odp_atomic_u64_t *atom, uint64_t new_val);
+static inline uint64_t odp_atomic_xchg_u64(odp_atomic_u64_t *atom,
+					   uint64_t new_val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, atom->v = new_val);
+#else
+	return __atomic_exchange_n(&atom->v, new_val, __ATOMIC_RELAXED);
+#endif
+}
+
+/**
+ * Update maximum value of atomic uint64 variable
+ *
+ * Compares value of atomic variable to the new maximum value. If the new value
+ * is greater than the current value, writes the new value into the variable.
+ *
+ * @param atom    Pointer to atomic variable
+ * @param new_max New maximum value to be written into the atomic variable
+ */
+static inline void odp_atomic_max_u64(odp_atomic_u64_t *atom, uint64_t new_max)
+{
+	uint64_t old_val;
+
+	old_val = odp_atomic_load_u64(atom);
+
+	while (new_max > old_val) {
+		if (odp_atomic_cas_u64(atom, &old_val, new_max))
+			break;
+	}
+}
+
+/**
+ * Update minimum value of atomic uint64 variable
+ *
+ * Compares value of atomic variable to the new minimum value. If the new value
+ * is less than the current value, writes the new value into the variable.
+ *
+ * @param atom    Pointer to atomic variable
+ * @param new_min New minimum value to be written into the atomic variable
+ */
+static inline void odp_atomic_min_u64(odp_atomic_u64_t *atom, uint64_t new_min)
+{
+	uint64_t old_val;
+
+	old_val = odp_atomic_load_u64(atom);
+
+	while (new_min < old_val) {
+		if (odp_atomic_cas_u64(atom, &old_val, new_min))
+			break;
+	}
+}
 
 /*
  * 32-bit operations in non-RELAXED memory ordering
@@ -385,7 +604,10 @@ uint64_t odp_atomic_xchg_u64(odp_atomic_u64_t *atom, uint64_t new_val);
  *
  * @return Value of the variable
  */
-uint32_t odp_atomic_load_acq_u32(odp_atomic_u32_t *atom);
+static inline uint32_t odp_atomic_load_acq_u32(odp_atomic_u32_t *atom)
+{
+	return __atomic_load_n(&atom->v, __ATOMIC_ACQUIRE);
+}
 
 /**
  * Store value to atomic uint32 variable using RELEASE memory ordering
@@ -396,7 +618,11 @@ uint32_t odp_atomic_load_acq_u32(odp_atomic_u32_t *atom);
  * @param atom    Pointer to atomic variable
  * @param val     Value to store in the variable
  */
-void odp_atomic_store_rel_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_store_rel_u32(odp_atomic_u32_t *atom,
+					    uint32_t val)
+{
+	__atomic_store_n(&atom->v, val, __ATOMIC_RELEASE);
+}
 
 /**
  * Add to atomic uint32 variable using RELEASE memory ordering
@@ -407,7 +633,10 @@ void odp_atomic_store_rel_u32(odp_atomic_u32_t *atom, uint32_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be added to the variable
  */
-void odp_atomic_add_rel_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_add_rel_u32(odp_atomic_u32_t *atom, uint32_t val)
+{
+	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELEASE);
+}
 
 /**
  * Subtract from atomic uint32 variable using RELEASE memory ordering
@@ -418,7 +647,10 @@ void odp_atomic_add_rel_u32(odp_atomic_u32_t *atom, uint32_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be subtracted from the variable
  */
-void odp_atomic_sub_rel_u32(odp_atomic_u32_t *atom, uint32_t val);
+static inline void odp_atomic_sub_rel_u32(odp_atomic_u32_t *atom, uint32_t val)
+{
+	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELEASE);
+}
 
 /**
  * Compare and swap atomic uint32 variable using ACQUIRE memory ordering
@@ -433,8 +665,14 @@ void odp_atomic_sub_rel_u32(odp_atomic_u32_t *atom, uint32_t val);
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_acq_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
-			   uint32_t new_val);
+static inline int odp_atomic_cas_acq_u32(odp_atomic_u32_t *atom,
+					 uint32_t *old_val, uint32_t new_val)
+{
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_ACQUIRE,
+					   __ATOMIC_RELAXED);
+}
 
 /**
  * Compare and swap atomic uint32 variable using RELEASE memory ordering
@@ -449,8 +687,14 @@ int odp_atomic_cas_acq_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_rel_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
-			   uint32_t new_val);
+static inline  int odp_atomic_cas_rel_u32(odp_atomic_u32_t *atom,
+					  uint32_t *old_val, uint32_t new_val)
+{
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_RELEASE,
+					   __ATOMIC_RELAXED);
+}
 
 /**
  * Compare and swap atomic uint32 variable using ACQUIRE-and-RELEASE memory
@@ -466,8 +710,15 @@ int odp_atomic_cas_rel_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_acq_rel_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
-			       uint32_t new_val);
+static inline int odp_atomic_cas_acq_rel_u32(odp_atomic_u32_t *atom,
+					     uint32_t *old_val,
+					     uint32_t new_val)
+{
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_ACQ_REL,
+					   __ATOMIC_RELAXED);
+}
 
 /*
  * 64-bit operations in non-RELAXED memory ordering
@@ -484,7 +735,14 @@ int odp_atomic_cas_acq_rel_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
  *
  * @return Value of the variable
  */
-uint64_t odp_atomic_load_acq_u64(odp_atomic_u64_t *atom);
+static inline uint64_t odp_atomic_load_acq_u64(odp_atomic_u64_t *atom)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	return ATOMIC_OP(atom, (void)0);
+#else
+	return __atomic_load_n(&atom->v, __ATOMIC_ACQUIRE);
+#endif
+}
 
 /**
  * Store value to atomic uint64 variable using RELEASE memory ordering
@@ -495,7 +753,15 @@ uint64_t odp_atomic_load_acq_u64(odp_atomic_u64_t *atom);
  * @param atom    Pointer to atomic variable
  * @param val     Value to store in the variable
  */
-void odp_atomic_store_rel_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_store_rel_u64(odp_atomic_u64_t *atom,
+					    uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v = val);
+#else
+	__atomic_store_n(&atom->v, val, __ATOMIC_RELEASE);
+#endif
+}
 
 /**
  * Add to atomic uint64 variable using RELEASE memory ordering
@@ -506,7 +772,14 @@ void odp_atomic_store_rel_u64(odp_atomic_u64_t *atom, uint64_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be added to the variable
  */
-void odp_atomic_add_rel_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_add_rel_u64(odp_atomic_u64_t *atom, uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v += val);
+#else
+	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELEASE);
+#endif
+}
 
 /**
  * Subtract from atomic uint64 variable using RELEASE memory ordering
@@ -517,7 +790,14 @@ void odp_atomic_add_rel_u64(odp_atomic_u64_t *atom, uint64_t val);
  * @param atom    Pointer to atomic variable
  * @param val     Value to be subtracted from the variable
  */
-void odp_atomic_sub_rel_u64(odp_atomic_u64_t *atom, uint64_t val);
+static inline void odp_atomic_sub_rel_u64(odp_atomic_u64_t *atom, uint64_t val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	(void)ATOMIC_OP(atom, atom->v -= val);
+#else
+	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELEASE);
+#endif
+}
 
 /**
  * Compare and swap atomic uint64 variable using ACQUIRE memory ordering
@@ -532,8 +812,20 @@ void odp_atomic_sub_rel_u64(odp_atomic_u64_t *atom, uint64_t val);
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_acq_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
-			   uint64_t new_val);
+static inline int odp_atomic_cas_acq_u64(odp_atomic_u64_t *atom,
+					 uint64_t *old_val, uint64_t new_val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	int ret;
+	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
+	return ret;
+#else
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_ACQUIRE,
+					   __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Compare and swap atomic uint64 variable using RELEASE memory ordering
@@ -548,8 +840,20 @@ int odp_atomic_cas_acq_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_rel_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
-			   uint64_t new_val);
+static inline int odp_atomic_cas_rel_u64(odp_atomic_u64_t *atom,
+					 uint64_t *old_val, uint64_t new_val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	int ret;
+	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
+	return ret;
+#else
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_RELEASE,
+					   __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Compare and swap atomic uint64 variable using ACQUIRE-and-RELEASE memory
@@ -565,8 +869,21 @@ int odp_atomic_cas_rel_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
  *
  * @return 0 on failure, !0 on success
  */
-int odp_atomic_cas_acq_rel_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
-			       uint64_t new_val);
+static inline int odp_atomic_cas_acq_rel_u64(odp_atomic_u64_t *atom,
+					     uint64_t *old_val,
+					     uint64_t new_val)
+{
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	int ret;
+	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
+	return ret;
+#else
+	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+					   0 /* strong */,
+					   __ATOMIC_ACQ_REL,
+					   __ATOMIC_RELAXED);
+#endif
+}
 
 /**
  * Atomic operations
diff --git a/include/odp/api/spec/buffer.h b/include/odp/api/spec/buffer.h
index 94829b32..8430eae7 100644
--- a/include/odp/api/spec/buffer.h
+++ b/include/odp/api/spec/buffer.h
@@ -159,7 +159,10 @@ void odp_buffer_print(odp_buffer_t buf);
  * to enable applications to generate a printable value that represents
  * an odp_buffer_t handle.
  */
-uint64_t odp_buffer_to_u64(odp_buffer_t hdl);
+static inline uint64_t odp_buffer_to_u64(odp_buffer_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/byteorder.h b/include/odp/api/spec/byteorder.h
index 2899adbe..36e26da0 100644
--- a/include/odp/api/spec/byteorder.h
+++ b/include/odp/api/spec/byteorder.h
@@ -24,6 +24,18 @@ extern "C" {
  *  @{
  */
 
+#ifndef __BYTE_ORDER__
+#error __BYTE_ORDER not defined!
+#endif
+
+#ifndef __ORDER_BIG_ENDIAN__
+#error __BIG_ENDIAN not defined!
+#endif
+
+#ifndef __ORDER_LITTLE_ENDIAN__
+#error __LITTLE_ENDIAN not defined!
+#endif
+
 /**
  * @def ODP_BIG_ENDIAN
  * Big endian byte order
@@ -44,6 +56,22 @@ extern "C" {
  * Selected bitfield order
  */
 
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+	#define ODP_LITTLE_ENDIAN           1
+	#define ODP_BIG_ENDIAN              0
+	#define ODP_BYTE_ORDER              ODP_LITTLE_ENDIAN
+	#define ODP_LITTLE_ENDIAN_BITFIELD  1
+	#define ODP_BIG_ENDIAN_BITFIELD     0
+	#define ODP_BITFIELD_ORDER          ODP_LITTLE_ENDIAN_BITFIELD
+#else
+	#define ODP_LITTLE_ENDIAN           0
+	#define ODP_BIG_ENDIAN              1
+	#define	ODP_BYTE_ORDER              ODP_BIG_ENDIAN
+	#define ODP_LITTLE_ENDIAN_BITFIELD  0
+	#define ODP_BIG_ENDIAN_BITFIELD     1
+	#define ODP_BITFIELD_ORDER          ODP_BIG_ENDIAN_BITFIELD
+#endif
+
 /**
  * @typedef odp_u16le_t
  * unsigned 16bit little endian
@@ -79,21 +107,42 @@ extern "C" {
  * @param be16  big endian 16bit
  * @return  cpu native uint16_t
  */
-uint16_t odp_be_to_cpu_16(odp_u16be_t be16);
+static inline uint16_t odp_be_to_cpu_16(odp_u16be_t be16)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return __odp_builtin_bswap16((__odp_force uint16_t)be16);
+#else
+	return (__odp_force uint16_t)be16;
+#endif
+}
 
 /**
  * Convert 32bit big endian to cpu native uint32_t
  * @param be32  big endian 32bit
  * @return  cpu native uint32_t
  */
-uint32_t odp_be_to_cpu_32(odp_u32be_t be32);
+static inline uint32_t odp_be_to_cpu_32(odp_u32be_t be32)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return __builtin_bswap32((__odp_force uint32_t)be32);
+#else
+	return (__odp_force uint32_t)be32;
+#endif
+}
 
 /**
  * Convert 64bit big endian to cpu native uint64_t
  * @param be64  big endian 64bit
  * @return  cpu native uint64_t
  */
-uint64_t odp_be_to_cpu_64(odp_u64be_t be64);
+static inline uint64_t odp_be_to_cpu_64(odp_u64be_t be64)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return __builtin_bswap64((__odp_force uint64_t)be64);
+#else
+	return (__odp_force uint64_t)be64;
+#endif
+}
 
 
 /*
@@ -105,22 +154,42 @@ uint64_t odp_be_to_cpu_64(odp_u64be_t be64);
  * @param cpu16  uint16_t in cpu native format
  * @return  big endian 16bit
  */
-odp_u16be_t odp_cpu_to_be_16(uint16_t cpu16);
+static inline odp_u16be_t odp_cpu_to_be_16(uint16_t cpu16)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force odp_u16be_t)__odp_builtin_bswap16(cpu16);
+#else
+	return (__odp_force odp_u16be_t)cpu16;
+#endif
+}
 
 /**
  * Convert cpu native uint32_t to 32bit big endian
  * @param cpu32  uint32_t in cpu native format
  * @return  big endian 32bit
  */
-odp_u32be_t odp_cpu_to_be_32(uint32_t cpu32);
+static inline odp_u32be_t odp_cpu_to_be_32(uint32_t cpu32)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force odp_u32be_t)__builtin_bswap32(cpu32);
+#else
+	return (__odp_force odp_u32be_t)cpu32;
+#endif
+}
 
 /**
  * Convert cpu native uint64_t to 64bit big endian
  * @param cpu64  uint64_t in cpu native format
  * @return  big endian 64bit
  */
-odp_u64be_t odp_cpu_to_be_64(uint64_t cpu64);
-
+static inline odp_u64be_t odp_cpu_to_be_64(uint64_t cpu64)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force odp_u64be_t)__builtin_bswap64(cpu64);
+#else
+	return (__odp_force odp_u64be_t)cpu64;
+#endif
+}
 
 /*
  * Little Endian -> CPU byte order:
@@ -131,22 +200,42 @@ odp_u64be_t odp_cpu_to_be_64(uint64_t cpu64);
  * @param le16  little endian 16bit
  * @return  cpu native uint16_t
  */
-uint16_t odp_le_to_cpu_16(odp_u16le_t le16);
+static inline uint16_t odp_le_to_cpu_16(odp_u16le_t le16)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force uint16_t)le16;
+#else
+	return __odp_builtin_bswap16((__odp_force uint16_t)le16);
+#endif
+}
 
 /**
  * Convert 32bit little endian to cpu native uint32_t
  * @param le32  little endian 32bit
  * @return  cpu native uint32_t
  */
-uint32_t odp_le_to_cpu_32(odp_u32le_t le32);
+static inline uint32_t odp_le_to_cpu_32(odp_u32le_t le32)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force uint32_t)le32;
+#else
+	return __builtin_bswap32((__odp_force uint32_t)le32);
+#endif
+}
 
 /**
  * Convert 64bit little endian to cpu native uint64_t
  * @param le64  little endian 64bit
  * @return  cpu native uint64_t
  */
-uint64_t odp_le_to_cpu_64(odp_u64le_t le64);
-
+static inline uint64_t odp_le_to_cpu_64(odp_u64le_t le64)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force uint64_t)le64;
+#else
+	return __builtin_bswap64((__odp_force uint64_t)le64);
+#endif
+}
 
 /*
  * CPU byte order -> Little Endian:
@@ -157,21 +246,42 @@ uint64_t odp_le_to_cpu_64(odp_u64le_t le64);
  * @param cpu16  uint16_t in cpu native format
  * @return  little endian 16bit
  */
-odp_u16le_t odp_cpu_to_le_16(uint16_t cpu16);
+static inline odp_u16le_t odp_cpu_to_le_16(uint16_t cpu16)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force odp_u16le_t)cpu16;
+#else
+	return (__odp_force odp_u16le_t)__odp_builtin_bswap16(cpu16);
+#endif
+}
 
 /**
  * Convert cpu native uint32_t to 32bit little endian
  * @param cpu32  uint32_t in cpu native format
  * @return  little endian 32bit
  */
-odp_u32le_t odp_cpu_to_le_32(uint32_t cpu32);
+static inline odp_u32le_t odp_cpu_to_le_32(uint32_t cpu32)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force odp_u32le_t)cpu32;
+#else
+	return (__odp_force odp_u32le_t)__builtin_bswap32(cpu32);
+#endif
+}
 
 /**
  * Convert cpu native uint64_t to 64bit little endian
  * @param cpu64  uint64_t in cpu native format
  * @return  little endian 64bit
  */
-odp_u64le_t odp_cpu_to_le_64(uint64_t cpu64);
+static inline odp_u64le_t odp_cpu_to_le_64(uint64_t cpu64)
+{
+#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
+	return (__odp_force odp_u64le_t)cpu64;
+#else
+	return (__odp_force odp_u64le_t)__builtin_bswap64(cpu64);
+#endif
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/classification.h b/include/odp/api/spec/classification.h
index 0e1addd6..344737ec 100644
--- a/include/odp/api/spec/classification.h
+++ b/include/odp/api/spec/classification.h
@@ -478,7 +478,10 @@ odp_pool_t odp_cls_cos_pool(odp_cos_t cos_id);
  * to enable applications to generate a printable value that represents
  * an odp_cos_t handle.
  */
-uint64_t odp_cos_to_u64(odp_cos_t hdl);
+static inline uint64_t odp_cos_to_u64(odp_cos_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * Get printable value for an odp_pmr_t
@@ -491,7 +494,10 @@ uint64_t odp_cos_to_u64(odp_cos_t hdl);
  * to enable applications to generate a printable value that represents
  * an odp_pmr_t handle.
  */
-uint64_t odp_pmr_to_u64(odp_pmr_t hdl);
+static inline uint64_t odp_pmr_to_u64(odp_pmr_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/cpu.h b/include/odp/api/spec/cpu.h
index 0f47e479..8d672d07 100644
--- a/include/odp/api/spec/cpu.h
+++ b/include/odp/api/spec/cpu.h
@@ -19,8 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-
 /** @defgroup odp_cpu ODP CPU
  *  @{
  */
@@ -167,7 +165,24 @@ uint64_t odp_cpu_cycles_resolution(void);
  * pause within the loop may save energy and improve system performance as
  * CPU polling frequency is reduced.
  */
-void odp_cpu_pause(void);
+static inline void odp_cpu_pause(void)
+{
+#if defined(__x86_64__)
+#ifdef __SSE2__
+	__asm volatile("pause");
+#else
+	__asm volatile("rep; nop");
+#endif
+#elif defined(__mips64__)
+	__asm volatile("nop");
+	__asm volatile("nop");
+	__asm volatile("nop");
+	__asm volatile("nop");
+	__asm volatile("nop");
+#else
+	/* .. */
+#endif
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h
index 9855bf98..9b702e35 100644
--- a/include/odp/api/spec/crypto.h
+++ b/include/odp/api/spec/crypto.h
@@ -640,7 +640,10 @@ void odp_crypto_compl_result(odp_crypto_compl_t completion_event,
  * to enable applications to generate a printable value that represents
  * an odp_crypto_session_t handle.
  */
-uint64_t odp_crypto_session_to_u64(odp_crypto_session_t hdl);
+static inline uint64_t odp_crypto_session_to_u64(odp_crypto_session_t hdl)
+{
+	return (uint64_t)hdl;
+}
 
 /**
  * Get printable value for an odp_crypto_compl_t
@@ -653,7 +656,10 @@ uint64_t odp_crypto_session_to_u64(odp_crypto_session_t hdl);
  * to enable applications to generate a printable value that represents
  * an odp_crypto_compl_t handle.
  */
-uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl);
+static inline uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * Initialize crypto session parameters
diff --git a/include/odp/api/spec/debug.h b/include/odp/api/spec/debug.h
index b3b170f3..da49ef1e 100644
--- a/include/odp/api/spec/debug.h
+++ b/include/odp/api/spec/debug.h
@@ -27,6 +27,27 @@ extern "C" {
  *
  * @param msg  Compile time error message to be displayed if cond is false
  */
+#if defined(__GNUC__) && !defined(__clang__)
+
+#if __GNUC__ < 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ < 6))
+
+/**
+ * @internal _Static_assert was only added in GCC 4.6. Provide a weak replacement
+ * for previous versions.
+ */
+#define _Static_assert(e, s) (extern int (*static_assert_checker(void)) \
+	[sizeof(struct { unsigned int error_if_negative:(e) ? 1 : -1; })])
+
+#endif
+
+#endif
+
+/**
+ * @internal Compile time assertion macro. Fails compilation and outputs 'msg'
+ * if condition 'cond' is false. Macro definition is empty when compiler is not
+ * supported or the compiler does not support static assertion.
+ */
+#define ODP_STATIC_ASSERT(cond, msg)  _Static_assert(cond, msg)
 
 #ifdef __cplusplus
 }
diff --git a/include/odp/api/spec/event.h b/include/odp/api/spec/event.h
index fdfa52d1..26b21669 100644
--- a/include/odp/api/spec/event.h
+++ b/include/odp/api/spec/event.h
@@ -37,10 +37,13 @@ extern "C" {
 
 /**
  * @typedef odp_event_type_t
- * ODP event types:
- * ODP_EVENT_BUFFER, ODP_EVENT_PACKET, ODP_EVENT_TIMEOUT,
- * ODP_EVENT_CRYPTO_COMPL
  */
+typedef enum odp_event_type_t {
+	ODP_EVENT_BUFFER       = 1,
+	ODP_EVENT_PACKET       = 2,
+	ODP_EVENT_TIMEOUT      = 3,
+	ODP_EVENT_CRYPTO_COMPL = 4,
+} odp_event_type_t;
 
 /**
  * Get event type
@@ -62,7 +65,10 @@ odp_event_type_t odp_event_type(odp_event_t event);
  * to enable applications to generate a printable value that represents
  * an odp_event_t handle.
  */
-uint64_t odp_event_to_u64(odp_event_t hdl);
+static inline uint64_t odp_event_to_u64(odp_event_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * Free event
diff --git a/include/odp/api/spec/hash.h b/include/odp/api/spec/hash.h
index 66b740e2..07e7d36a 100644
--- a/include/odp/api/spec/hash.h
+++ b/include/odp/api/spec/hash.h
@@ -18,8 +18,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-
 /** @defgroup odp_hash ODP HASH FUNCTIONS
  *  ODP Hash functions
  *  @{
diff --git a/include/odp/api/spec/init.h b/include/odp/api/spec/init.h
index 154cdf8f..54936401 100644
--- a/include/odp/api/spec/init.h
+++ b/include/odp/api/spec/init.h
@@ -27,11 +27,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-#include <odp/api/hints.h>
-#include <odp/api/thread.h>
-#include <odp/api/cpumask.h>
-
 /** @defgroup odp_initialization ODP INITIALIZATION
  *  Initialisation operations.
  *  @{
diff --git a/include/odp/api/spec/packet.h b/include/odp/api/spec/packet.h
index 4a86ebad..000d74ce 100644
--- a/include/odp/api/spec/packet.h
+++ b/include/odp/api/spec/packet.h
@@ -19,8 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/time.h>
-
 /** @defgroup odp_packet ODP PACKET
  *  Operations on a packet.
  *  @{
@@ -55,6 +53,13 @@ extern "C" {
   * @typedef odp_packet_color_t
   * Color of packet for shaper/drop processing
   */
+typedef enum {
+	ODP_PACKET_GREEN = 0,
+	ODP_PACKET_YELLOW = 1,
+	ODP_PACKET_RED = 2,
+	ODP_PACKET_ALL_COLORS = 3,
+} odp_packet_color_t;
+#define ODP_NUM_PACKET_COLORS 3
 
  /**
   * @def ODP_PACKET_GREEN
@@ -1384,7 +1389,10 @@ int odp_packet_is_valid(odp_packet_t pkt);
  * to enable applications to generate a printable value that represents
  * an odp_packet_t handle.
  */
-uint64_t odp_packet_to_u64(odp_packet_t hdl);
+static inline uint64_t odp_packet_to_u64(odp_packet_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * Get printable value for an odp_packet_seg_t
@@ -1397,7 +1405,10 @@ uint64_t odp_packet_to_u64(odp_packet_t hdl);
  * to enable applications to generate a printable value that represents
  * an odp_packet_seg_t handle.
  */
-uint64_t odp_packet_seg_to_u64(odp_packet_seg_t hdl);
+static inline uint64_t odp_packet_seg_to_u64(odp_packet_seg_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/packet_flags.h b/include/odp/api/spec/packet_flags.h
index 377b75ba..c58d8b8c 100644
--- a/include/odp/api/spec/packet_flags.h
+++ b/include/odp/api/spec/packet_flags.h
@@ -19,9 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-#include <odp/api/packet.h>
-
 /** @addtogroup odp_packet
  *  Boolean operations on a packet.
  *  @{
diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index 85cd6d18..00eafaa4 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -19,10 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/packet_io_stats.h>
-#include <odp/api/queue.h>
-#include <odp/api/time.h>
-
 /** @defgroup odp_packet_io ODP PACKET IO
  *  Operations on a packet Input/Output interface.
  *
@@ -48,11 +44,19 @@ extern "C" {
  * @typedef odp_pktin_queue_t
  * Direct packet input queue handle
  */
+typedef struct odp_pktin_queue_t {
+	odp_pktio_t pktio; /**< pktio handle */
+	int index;         /**< pktio queue index */
+} odp_pktin_queue_t;
 
 /**
  * @typedef odp_pktout_queue_t
  * Direct packet output queue handle
  */
+typedef struct odp_pktout_queue_t {
+	odp_pktio_t pktio; /**< pktio handle */
+	int index;         /**< pktio queue index */
+} odp_pktout_queue_t;
 
 /**
  * @def ODP_PKTIO_INVALID
@@ -64,16 +68,19 @@ extern "C" {
  * Minimum size of output buffer for odp_pktio_mac_addr()
  * Actual MAC address sizes may be different.
  */
+#define ODP_PKTIO_MACADDR_MAXSIZE 16
 
 /**
  * @def ODP_PKTIN_NO_WAIT
  * Do not wait on packet input
  */
+#define ODP_PKTIN_NO_WAIT 0
 
 /**
  * @def ODP_PKTIN_WAIT
  * Wait infinitely on packet input
  */
+#define ODP_PKTIN_WAIT    UINT64_MAX
 
 /**
  * Packet input mode
@@ -957,7 +964,10 @@ int odp_pktio_index(odp_pktio_t pktio);
  * to enable applications to generate a printable value that represents
  * an odp_pktio_t handle.
  */
-uint64_t odp_pktio_to_u64(odp_pktio_t pktio);
+static inline uint64_t odp_pktio_to_u64(odp_pktio_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * Initialize pktio params
diff --git a/include/odp/api/spec/packet_io_stats.h b/include/odp/api/spec/packet_io_stats.h
index 299ecd0e..1f12693d 100644
--- a/include/odp/api/spec/packet_io_stats.h
+++ b/include/odp/api/spec/packet_io_stats.h
@@ -23,90 +23,6 @@ extern "C" {
  */
 
 /**
- * Packet IO statistics
- *
- * Packet IO statistics counters follow RFCs for Management Information Base
- * (MIB)for use with network management protocols in the Internet community:
- * https://tools.ietf.org/html/rfc3635
- * https://tools.ietf.org/html/rfc2863
- * https://tools.ietf.org/html/rfc2819
- */
-typedef struct odp_pktio_stats_t {
-	/**
-	 * The number of octets in valid MAC frames received on this interface,
-	 * including the MAC header and FCS. See ifHCInOctets counter
-	 * description in RFC 3635 for details.
-	 */
-	uint64_t in_octets;
-
-	/**
-	 * The number of packets, delivered by this sub-layer to a higher
-	 * (sub-)layer, which were not addressed to a multicast or broadcast
-	 * address at this sub-layer. See ifHCInUcastPkts in RFC 2863, RFC 3635.
-	 */
-	uint64_t in_ucast_pkts;
-
-	/**
-	 * The number of inbound packets which were chosen to be discarded
-	 * even though no errors had been detected to prevent their being
-	 * deliverable to a higher-layer protocol.  One possible reason for
-	 * discarding such a packet could be to free up buffer space.
-	 * See ifInDiscards in RFC 2863.
-	 */
-	uint64_t in_discards;
-
-	/**
-	 * The sum for this interface of AlignmentErrors, FCSErrors, FrameTooLongs,
-	 * InternalMacReceiveErrors. See ifInErrors in RFC 3635.
-	 */
-	uint64_t in_errors;
-
-	/**
-	 * For packet-oriented interfaces, the number of packets received via
-	 * the interface which were discarded because of an unknown or
-	 * unsupported protocol.  For character-oriented or fixed-length
-	 * interfaces that support protocol multiplexing the number of
-	 * transmission units received via the interface which were discarded
-	 * because of an unknown or unsupported protocol.  For any interface
-	 * that does not support protocol multiplexing, this counter will always
-	 * be 0. See ifInUnknownProtos in RFC 2863, RFC 3635.
-	 */
-	uint64_t in_unknown_protos;
-
-	/**
-	 * The number of octets transmitted in valid MAC frames on this
-	 * interface, including the MAC header and FCS.  This does include
-	 * the number of octets in valid MAC Control frames transmitted on
-	 * this interface. See ifHCOutOctets in RFC 3635.
-	 */
-	uint64_t out_octets;
-
-	/**
-	 * The total number of packets that higher-level protocols requested
-	 * be transmitted, and which were not addressed to a multicast or
-	 * broadcast address at this sub-layer, including those that were
-	 * discarded or not sent. does not include MAC Control frames.
-	 * See ifHCOutUcastPkts RFC 2863, 3635.
-	 */
-	uint64_t out_ucast_pkts;
-
-	/**
-	 * The number of outbound packets which were chosen to be discarded
-	 * even though no errors had been detected to prevent their being
-	 * transmitted.  One possible reason for discarding such a packet could
-	 * be to free up buffer space.  See  OutDiscards in  RFC 2863.
-	 */
-	uint64_t out_discards;
-
-	/**
-	 * The sum for this interface of SQETestErrors, LateCollisions,
-	 * ExcessiveCollisions, InternalMacTransmitErrors and
-	 * CarrierSenseErrors. See ifOutErrors in RFC 3635.
-	 */
-	uint64_t out_errors;
-} odp_pktio_stats_t;
-
-/**
  * Get statistics for pktio handle
  *
  * @param	pktio	 Packet IO handle
diff --git a/include/odp/api/spec/pool.h b/include/odp/api/spec/pool.h
index c0de195a..9d9e0227 100644
--- a/include/odp/api/spec/pool.h
+++ b/include/odp/api/spec/pool.h
@@ -19,8 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-
 /** @defgroup odp_pool ODP POOL
  *  Operations on a pool.
  *  @{
diff --git a/include/odp/api/spec/queue.h b/include/odp/api/spec/queue.h
index 7972feac..b5045392 100644
--- a/include/odp/api/spec/queue.h
+++ b/include/odp/api/spec/queue.h
@@ -19,9 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/schedule_types.h>
-#include <odp/api/event.h>
-
 /** @defgroup odp_queue ODP QUEUE
  *  Macros and operation on a queue.
  *  @{
@@ -66,6 +63,13 @@ typedef enum odp_queue_type_t {
 } odp_queue_type_t;
 
 /**
+ * @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
+
+/**
  * Queue operation mode
  */
 typedef enum odp_queue_op_mode_t {
@@ -372,7 +376,10 @@ int odp_queue_lock_count(odp_queue_t queue);
  * to enable applications to generate a printable value that represents
  * an odp_queue_t handle.
  */
-uint64_t odp_queue_to_u64(odp_queue_t hdl);
+static inline uint64_t odp_queue_to_u64(odp_queue_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * Initialize queue params
diff --git a/include/odp/api/spec/schedule.h b/include/odp/api/spec/schedule.h
index 8244746d..ae58d738 100644
--- a/include/odp/api/spec/schedule.h
+++ b/include/odp/api/spec/schedule.h
@@ -19,12 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-#include <odp/api/event.h>
-#include <odp/api/queue.h>
-#include <odp/api/schedule_types.h>
-#include <odp/api/thrmask.h>
-
 /** @defgroup odp_scheduler ODP SCHEDULER
  *  Operations on the scheduler.
  *  @{
@@ -34,11 +28,13 @@ extern "C" {
  * @def ODP_SCHED_WAIT
  * Wait infinitely
  */
+#define ODP_SCHED_WAIT    UINT64_MAX
 
 /**
  * @def ODP_SCHED_NO_WAIT
  * Do not wait
  */
+#define ODP_SCHED_NO_WAIT 0
 
 /**
  * @def ODP_SCHED_GROUP_NAME_LEN
@@ -54,16 +50,19 @@ extern "C" {
  * @def ODP_SCHED_GROUP_ALL
  * Predefined scheduler group of all threads
  */
+#define ODP_SCHED_GROUP_ALL 0
 
 /**
  * @def ODP_SCHED_GROUP_WORKER
  * Predefined scheduler group of all worker threads
  */
+#define ODP_SCHED_GROUP_WORKER 1
 
 /**
  * @def ODP_SCHED_GROUP_CONTROL
  * Predefined scheduler group of all control threads
  */
+#define ODP_SCHED_GROUP_CONTROL 2
 
 /**
  * Schedule wait time
diff --git a/include/odp/api/spec/schedule_types.h b/include/odp/api/spec/schedule_types.h
index 8a4e42c6..5081b0e7 100644
--- a/include/odp/api/spec/schedule_types.h
+++ b/include/odp/api/spec/schedule_types.h
@@ -31,16 +31,19 @@ extern "C" {
  * @def ODP_SCHED_PRIO_HIGHEST
  * Highest scheduling priority
  */
+#define ODP_SCHED_PRIO_HIGHEST 0
 
 /**
  * @def ODP_SCHED_PRIO_NORMAL
  * Normal scheduling priority
  */
+#define ODP_SCHED_PRIO_NORMAL 4
 
 /**
  * @def ODP_SCHED_PRIO_LOWEST
  * Lowest scheduling priority
  */
+#define ODP_SCHED_PRIO_LOWEST 7
 
 /**
  * @def ODP_SCHED_PRIO_DEFAULT
@@ -48,6 +51,7 @@ extern "C" {
  * level - throughput, load balancing and synchronization features are more
  * important than priority scheduling.
  */
+#define ODP_SCHED_PRIO_DEFAULT ODP_SCHED_PRIO_NORMAL
 
 /**
  * @typedef odp_schedule_sync_t
@@ -64,6 +68,7 @@ extern "C" {
  * for concurrent processing. Application is responsible for queue context
  * synchronization and event ordering (SW synchronization).
  */
+#define ODP_SCHED_SYNC_PARALLEL 0
 
 /**
  * @def ODP_SCHED_SYNC_ATOMIC
@@ -80,6 +85,7 @@ extern "C" {
  * context. User may allow the scheduler to release the context earlier than
  * that by calling odp_schedule_release_atomic().
  */
+#define ODP_SCHED_SYNC_ATOMIC 1
 
 /**
  * @def ODP_SCHED_SYNC_ORDERED
@@ -106,6 +112,7 @@ extern "C" {
  * reordering and are skipped at this time (but can be ordered again within
  * another context).
  */
+#define ODP_SCHED_SYNC_ORDERED 2
 
 /**
  * @typedef odp_schedule_group_t
@@ -113,43 +120,6 @@ extern "C" {
  */
 
 /**
- * @def ODP_SCHED_GROUP_ALL
- * Group of all threads. All active worker and control threads belong to this
- * group. The group is automatically updated when new threads enter or old
- * threads exit ODP.
- */
-
-/**
- * @def ODP_SCHED_GROUP_WORKER
- * Group of all worker threads. All active worker threads belong to this
- * group. The group is automatically updated when new worker threads enter or
- * old threads exit ODP.
- */
-
-/** Scheduler parameters */
-typedef	struct odp_schedule_param_t {
-	/** Priority level
-	  *
-	  * Default value is ODP_SCHED_PRIO_DEFAULT. */
-	odp_schedule_prio_t  prio;
-
-	/** Synchronization method
-	  *
-	  * Default value is ODP_SCHED_SYNC_PARALLEL. */
-	odp_schedule_sync_t  sync;
-
-	/** Thread group
-	  *
-	  * Default value is ODP_SCHED_GROUP_ALL. */
-	odp_schedule_group_t group;
-
-	/** Ordered lock count for this queue
-	  *
-	  * Default value is 0. */
-	unsigned lock_count;
-} odp_schedule_param_t;
-
-/**
  * @}
  */
 
diff --git a/include/odp/api/spec/shared_memory.h b/include/odp/api/spec/shared_memory.h
index 1a9c1299..e67ca77f 100644
--- a/include/odp/api/spec/shared_memory.h
+++ b/include/odp/api/spec/shared_memory.h
@@ -14,7 +14,6 @@
 #ifndef ODP_API_SHARED_MEMORY_H_
 #define ODP_API_SHARED_MEMORY_H_
 #include <odp/visibility_begin.h>
-#include <odp/api/init.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -215,7 +214,10 @@ void odp_shm_print_all(void);
  * to enable applications to generate a printable value that represents
  * an odp_shm_t handle.
  */
-uint64_t odp_shm_to_u64(odp_shm_t hdl);
+static inline uint64_t odp_shm_to_u64(odp_shm_t hdl)
+{
+	return _odp_pri(hdl);
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/std_clib.h b/include/odp/api/spec/std_clib.h
index 33e9db53..e7758cbd 100644
--- a/include/odp/api/spec/std_clib.h
+++ b/include/odp/api/spec/std_clib.h
@@ -14,6 +14,8 @@
 #define ODP_API_STD_CLIB_H_
 #include <odp/visibility_begin.h>
 
+#include <string.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -38,7 +40,10 @@ extern "C" {
  *
  * @return 'dst' address
  */
-void *odp_memcpy(void *dst, const void *src, size_t num);
+static inline void *odp_memcpy(void *dst, const void *src, size_t num)
+{
+	return memcpy(dst, src, num);
+}
 
 /**
  * Memset
@@ -52,7 +57,10 @@ void *odp_memcpy(void *dst, const void *src, size_t num);
  *
  * @return 'ptr' address
  */
-void *odp_memset(void *ptr, int value, size_t num);
+static inline void *odp_memset(void *ptr, int value, size_t num)
+{
+	return memset(ptr, value, num);
+}
 
 /**
  * Memcmp
@@ -70,7 +78,10 @@ void *odp_memset(void *ptr, int value, size_t num);
  * @retval >0 when the contents of memory blocks do not match, and
  *            block 'ptr1' is greater than block 'ptr2'
  */
-int odp_memcmp(const void *ptr1, const void *ptr2, size_t num);
+static inline int odp_memcmp(const void *ptr1, const void *ptr2, size_t num)
+{
+	return memcmp(ptr1, ptr2, num);
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/std_types.h b/include/odp/api/spec/std_types.h
index ec6a6df6..eef294a2 100644
--- a/include/odp/api/spec/std_types.h
+++ b/include/odp/api/spec/std_types.h
@@ -30,6 +30,7 @@ extern "C" {
  * regardless which compiler is used as this facilities interoperability
  * between e.g. different compilers.
  */
+typedef int odp_bool_t;
 
 /**
  * @}
diff --git a/include/odp/api/spec/sync.h b/include/odp/api/spec/sync.h
index 6f87db55..2d1d472d 100644
--- a/include/odp/api/spec/sync.h
+++ b/include/odp/api/spec/sync.h
@@ -50,7 +50,10 @@ extern "C" {
  *
  * @see odp_mb_acquire()
  */
-void odp_mb_release(void);
+static inline void odp_mb_release(void)
+{
+	__atomic_thread_fence(__ATOMIC_RELEASE);
+}
 
 /**
  * Memory barrier for acquire operations
@@ -66,7 +69,10 @@ void odp_mb_release(void);
  *
  * @see odp_mb_release()
  */
-void odp_mb_acquire(void);
+static inline void odp_mb_acquire(void)
+{
+	__atomic_thread_fence(__ATOMIC_ACQUIRE);
+}
 
 /**
  * Full memory barrier
@@ -77,7 +83,10 @@ void odp_mb_acquire(void);
  *
  * This call is not needed when using ODP defined synchronization mechanisms.
  */
-void odp_mb_full(void);
+static inline void odp_mb_full(void)
+{
+	__atomic_thread_fence(__ATOMIC_SEQ_CST);
+}
 
 /**
  * @}
diff --git a/include/odp/api/spec/thrmask.h b/include/odp/api/spec/thrmask.h
index 3986769a..9608119f 100644
--- a/include/odp/api/spec/thrmask.h
+++ b/include/odp/api/spec/thrmask.h
@@ -18,8 +18,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-
 /** @addtogroup odp_thread
  *  Thread mask operations.
  *  @{
diff --git a/include/odp/api/spec/time.h b/include/odp/api/spec/time.h
index fcc94c98..97e93c68 100644
--- a/include/odp/api/spec/time.h
+++ b/include/odp/api/spec/time.h
@@ -40,6 +40,7 @@ extern "C" {
  * @def ODP_TIME_NULL
  * Zero time stamp
  */
+#define ODP_TIME_NULL ((odp_time_t){0, 0})
 
 /**
  * Current local time
diff --git a/include/odp/api/spec/traffic_mngr.h b/include/odp/api/spec/traffic_mngr.h
index 71198bbd..6e2b903a 100644
--- a/include/odp/api/spec/traffic_mngr.h
+++ b/include/odp/api/spec/traffic_mngr.h
@@ -12,9 +12,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-#include <odp/api/packet_io.h>
-
 /**
  * @file
  *
@@ -47,12 +44,14 @@ extern "C" {
  * The maximum number of TM systems that may be created.  On some platforms
  * this might be much more limited to as little as one hardware TM system.
  */
+#define ODP_TM_MAX_NUM_SYSTEMS   64
 
 /**
  * @def ODP_TM_MAX_PRIORITIES
  * The largest range of priorities that any TM system can support.  All strict
  * priority values MUST in the range 0..ODP_TM_MAX_PRIORITIES-1.
  */
+#define ODP_TM_MAX_PRIORITIES  16
 
 /**
  * @def ODP_TM_MAX_LEVELS
@@ -61,61 +60,72 @@ extern "C" {
  * Smaller tm_node levels are associated with tm_nodes closer to the TM system
  * egress.
  */
+#define ODP_TM_MAX_LEVELS  8
 
 /**
  * @def ODP_TM_MIN_SCHED_WEIGHT
  * The smallest SCHED weight is 1 (i.e. 0 is not a legal WFQ/WRR value).
  */
+#define ODP_TM_MIN_SCHED_WEIGHT  1
 
 /**
  * @def ODP_TM_MAX_SCHED_WEIGHT
  * The largest weight any TM system can support (at least from a configuration
  * standpoint).  A given TM system could have a smaller value.
  */
+#define ODP_TM_MAX_SCHED_WEIGHT  255
 
 /**
  * @def ODP_TM_MAX_TM_QUEUES
  * The largest number of tm_queues that can handled by any one TM system.
  */
+#define ODP_TM_MAX_TM_QUEUES  (16 * 1024 * 1024)
 
 /**
  * @def ODP_TM_MAX_NUM_OUTPUTS
  * The largest number of outputs that can be configured for any one TM system.
  */
+#define ODP_TM_MAX_NUM_OUTPUTS  256
 
 /**
  * @def ODP_TM_MAX_NUM_TM_NODES
  * The largest number of tm_nodes that can be in existence for any one TM
  * system.
  */
+#define ODP_TM_MAX_NUM_TM_NODES  (1024 * 1024)
 
 /**
  * @def ODP_TM_MAX_TM_NODE_FANIN
  * The largest number of fan-in "inputs" that can be simultaneously connected
  * to a single tm_node.
  */
+#define ODP_TM_MAX_TM_NODE_FANIN  (1024 * 1024)
 
 /**
  * @def ODP_TM_MIN_SHAPER_BW
  * The largest amount of bandwidth that any shaper's peak or commit rate can
  * be set to. It is in units of 1000 bytes/second.
  */
+#define ODP_TM_MIN_SHAPER_BW  1
 
 /**
  * @def ODP_TM_MAX_SHAPER_BW
  * The largest amount of bandwidth that any shaper's peak or commit rate can
  * be set to. It is in units of 1000 bytes/second.
  */
+#define ODP_TM_MAX_SHAPER_BW  12500000
 
 /**
  * @def ODP_NUM_SHAPER_COLORS
  * The number of enumeration values defined in the odp_tm_shaper_color_t type.
  */
+#define ODP_NUM_SHAPER_COLORS  3
 
 /**
  * @def ODP_TM_INVALID_PRIORITY
  * Used to indicate an invalid priority value.
  */
+#define ODP_TM_INVALID_PRIORITY  255
 
 /**
  * @typedef odp_tm_percent_t
@@ -126,6 +136,7 @@ extern "C" {
  * in any event will never be larger than 500% (i.e. it MUST be capped at
  * 50000).
  */
+typedef uint16_t odp_tm_percent_t;
 
 /**
  * @typedef odp_tm_t
@@ -188,6 +199,7 @@ extern "C" {
  * Constant that is used to refer to the egress/root node of the TM subsystem's
  * tree/hierarchy of nodes.
  */
+#define ODP_TM_ROOT  ((odp_tm_handle_t)-1)
 
 /** Per Level Capabilities
  *
diff --git a/include/odp_api.h b/include/odp_api.h
index ec7fcd2e..31355e69 100644
--- a/include/odp_api.h
+++ b/include/odp_api.h
@@ -18,45 +18,288 @@
 extern "C" {
 #endif
 
-#include <odp/api/version.h>
-#include <odp/api/std_types.h>
-#include <odp/api/compiler.h>
-#include <odp/api/align.h>
-#include <odp/api/hash.h>
-#include <odp/api/hints.h>
-#include <odp/api/debug.h>
-#include <odp/api/byteorder.h>
-#include <odp/api/cpu.h>
-#include <odp/api/cpumask.h>
-#include <odp/api/barrier.h>
-#include <odp/api/spinlock.h>
-#include <odp/api/atomic.h>
-#include <odp/api/init.h>
-#include <odp/api/system_info.h>
-#include <odp/api/thread.h>
-#include <odp/api/shared_memory.h>
-#include <odp/api/buffer.h>
-#include <odp/api/pool.h>
-#include <odp/api/queue.h>
-#include <odp/api/ticketlock.h>
-#include <odp/api/time.h>
-#include <odp/api/timer.h>
-#include <odp/api/schedule.h>
-#include <odp/api/sync.h>
-#include <odp/api/packet.h>
-#include <odp/api/packet_flags.h>
-#include <odp/api/packet_io.h>
-#include <odp/api/crypto.h>
-#include <odp/api/classification.h>
-#include <odp/api/rwlock.h>
-#include <odp/api/event.h>
-#include <odp/api/random.h>
-#include <odp/api/errno.h>
-#include <odp/api/thrmask.h>
-#include <odp/api/traffic_mngr.h>
-#include <odp/api/spinlock_recursive.h>
-#include <odp/api/rwlock_recursive.h>
-#include <odp/api/std_clib.h>
+#define _GNU_SOURCE
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#define ODP_HANDLE_T(obj) struct obj##_T* obj;
+
+/** Get value of an ODP handle */
+#define _odp_typeval(handle) ((uint32_t)(uintptr_t)(handle))
+
+/** Get printable value of an ODP handle */
+#define _odp_pri(handle) ((uint64_t)_odp_typeval(handle))
+
+/** Convert a scalar to a typed handle */
+#define _odp_cast_scalar(type, val) ((type)(uintptr_t)(val))
+
+/*
+ * Types, handles, #defines are defined here to avoid circular dependencies
+ * in the API header files that include the function declarations.
+ */
+
+#define ODP_THREAD_COUNT_MAX 128
+
+#if defined __OCTEON__
+#define _ODP_CACHE_LINE_SIZE 128
+#else
+#define _ODP_CACHE_LINE_SIZE 64
+#endif
+
+#ifdef __GNUC__
+
+#define ODP_ALIGNED(x) __attribute__((__aligned__(x)))
+
+#define ODP_PACKED __attribute__((__packed__))
+
+#define ODP_OFFSETOF(type, member) __builtin_offsetof(type, member)
+
+#define ODP_FIELD_SIZEOF(type, member) sizeof(((type *)0)->member)
+
+#else
+#error Please add support for your compiler in odp_api.h
+#endif
+
+#define ODP_CACHE_LINE_SIZE _ODP_CACHE_LINE_SIZE
+
+#define ODP_PAGE_SIZE       4096
+
+#define ODP_ALIGNED_CACHE   ODP_ALIGNED(ODP_CACHE_LINE_SIZE)
+
+#define ODP_ALIGNED_PAGE    ODP_ALIGNED(ODP_PAGE_SIZE)
+
+typedef struct  {
+	uint64_t v; /**< Actual storage for the atomic variable */
+#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
+	/* Some architectures do not support lock-free operations on 64-bit
+	 * data types. We use a spin lock to ensure atomicity. */
+	char lock; /**< Spin lock (if needed) used to ensure atomic access */
+#endif
+} odp_atomic_u64_t __attribute__((aligned(sizeof(uint64_t))));
+
+typedef struct {
+	uint32_t v; /**< Actual storage for the atomic variable */
+} odp_atomic_u32_t __attribute__((aligned(sizeof(uint32_t))));
+
+struct odp_barrier_s {
+	uint32_t         count;  /**< Thread count */
+	odp_atomic_u32_t bar;    /**< Barrier counter */
+};
+typedef struct odp_barrier_s odp_barrier_t;
+
+typedef ODP_HANDLE_T(odp_buffer_t);
+
+#ifdef __CHECKER__
+#define __odp_bitwise	__attribute__((bitwise))
+#define __odp_force     __attribute__((force))
+#else
+#define __odp_bitwise
+#define __odp_force
+#endif
+
+typedef uint16_t __odp_bitwise	odp_u16le_t;
+typedef uint16_t __odp_bitwise	odp_u16be_t;
+
+typedef uint32_t __odp_bitwise	odp_u32le_t;
+typedef uint32_t __odp_bitwise	odp_u32be_t;
+
+typedef uint64_t __odp_bitwise	odp_u64le_t;
+typedef uint64_t __odp_bitwise	odp_u64be_t;
+
+typedef uint16_t __odp_bitwise  odp_u16sum_t;
+typedef uint32_t __odp_bitwise  odp_u32sum_t;
+
+typedef ODP_HANDLE_T(odp_cos_t);
+typedef uint16_t odp_cos_flow_set_t;
+
+#define ODP_CPUMASK_SIZE 1024
+#define ODP_CPUMASK_STR_SIZE ((ODP_CPUMASK_SIZE + 3) / 4 + 3)
+typedef struct odp_cpumask_t {
+	uint8_t _u8[ODP_CPUMASK_SIZE / 8];
+} odp_cpumask_t __attribute__((aligned(8)));
+
+typedef ODP_HANDLE_T(odp_crypto_compl_t);
+typedef uint64_t odp_crypto_session_t;
+typedef ODP_HANDLE_T(odp_event_t);
+typedef ODP_HANDLE_T(odp_flowsig_t);
+typedef uint64_t odp_instance_t;
+typedef ODP_HANDLE_T(odp_packet_t);
+
+typedef struct odp_pktio_stats_t {
+	uint64_t in_octets;
+	uint64_t in_ucast_pkts;
+	uint64_t in_discards;
+	uint64_t in_errors;
+	uint64_t in_unknown_protos;
+	uint64_t out_octets;
+	uint64_t out_ucast_pkts;
+	uint64_t out_discards;
+	uint64_t out_errors;
+} odp_pktio_stats_t;
+
+typedef uint8_t odp_packet_seg_t;
+typedef ODP_HANDLE_T(odp_pktio_t);
+typedef struct odp_platform_init_t {
+	int ipc_ns; /**< Name space for ipc shared objects. */
+} odp_platform_init_t;
+typedef ODP_HANDLE_T(odp_pmr_t);
+typedef ODP_HANDLE_T(odp_pool_t);
+typedef ODP_HANDLE_T(odp_queue_t);
+typedef ODP_HANDLE_T(odp_queue_group_t);
+
+struct odp_rwlock_s {
+	odp_atomic_u32_t cnt; /**< lock count
+				0 lock not taken
+				-1 write lock taken
+				>0 read lock(s) taken */
+};
+typedef struct odp_rwlock_s odp_rwlock_t;
+
+struct odp_rwlock_recursive_s {
+	odp_rwlock_t lock;                     /**< the lock */
+	int wr_owner;                          /**< write owner thread */
+	uint32_t wr_cnt;                       /**< write recursion count */
+	uint8_t  rd_cnt[ODP_THREAD_COUNT_MAX]; /**< read recursion count */
+};
+typedef struct odp_rwlock_recursive_s odp_rwlock_recursive_t;
+
+typedef int odp_schedule_prio_t;
+typedef int odp_schedule_sync_t;
+typedef int odp_schedule_group_t;
+
+/** Scheduler parameters */
+typedef	struct odp_schedule_param_t {
+	/** Priority level
+	  *
+	  * Default value is ODP_SCHED_PRIO_DEFAULT. */
+	odp_schedule_prio_t  prio;
+
+	/** Synchronization method
+	  *
+	  * Default value is ODP_SCHED_SYNC_PARALLEL. */
+	odp_schedule_sync_t  sync;
+
+	/** Thread group
+	  *
+	  * Default value is ODP_SCHED_GROUP_ALL. */
+	odp_schedule_group_t group;
+
+	/** Ordered lock count for this queue
+	  *
+	  * Default value is 0. */
+	unsigned lock_count;
+} odp_schedule_param_t;
+
+typedef ODP_HANDLE_T(odp_shm_t);
+
+struct odp_spinlock_s {
+	char lock;  /**< lock flag, should match odp_atomic_flag_t */
+};
+typedef struct odp_spinlock_s odp_spinlock_t;
+
+struct odp_spinlock_recursive_s {
+	odp_spinlock_t lock; /**< the lock */
+	int owner;           /**< thread owning the lock */
+	uint32_t cnt;        /**< recursion count */
+};
+typedef struct odp_spinlock_recursive_s odp_spinlock_recursive_t;
+
+#define ODP_THRMASK_STR_SIZE ODP_CPUMASK_STR_SIZE
+typedef struct odp_thrmask_t {
+	odp_cpumask_t m;
+} odp_thrmask_t;
+
+struct odp_ticketlock_s {
+	odp_atomic_u32_t  next_ticket; /**< Next ticket */
+	odp_atomic_u32_t  cur_ticket;  /**< Current ticket */
+};
+typedef struct odp_ticketlock_s odp_ticketlock_t;
+
+typedef ODP_HANDLE_T(odp_timeout_t);
+typedef ODP_HANDLE_T(odp_timer_t);
+struct odp_timer_pool_s;
+typedef struct odp_timer_pool_s *odp_timer_pool_t;
+typedef struct odp_time_t {
+	int64_t tv_sec;      /**< @internal Seconds */
+	int64_t tv_nsec;     /**< @internal Nanoseconds */
+} odp_time_t;
+typedef uint64_t odp_tm_handle_t;
+typedef odp_tm_handle_t odp_tm_t;
+typedef odp_tm_handle_t odp_tm_queue_t;
+typedef odp_tm_handle_t odp_tm_node_t;
+typedef odp_tm_handle_t odp_tm_shaper_t;
+typedef odp_tm_handle_t odp_tm_sched_t;
+typedef odp_tm_handle_t odp_tm_threshold_t;
+typedef odp_tm_handle_t odp_tm_wred_t;
+
+#define ODP_BUFFER_INVALID _odp_cast_scalar(odp_buffer_t, 0xffffffff)
+#define ODP_COS_INVALID  _odp_cast_scalar(odp_cos_t, ~0)
+#define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL)
+#define ODP_EVENT_INVALID _odp_cast_scalar(odp_event_t, 0xffffffff)
+#define ODP_PACKET_INVALID _odp_cast_scalar(odp_packet_t, 0xffffffff)
+#define ODP_PACKET_OFFSET_INVALID (0x0fffffff)
+#define ODP_PACKET_SEG_INVALID ((odp_packet_seg_t)-1)
+#define ODP_PKTIO_INVALID _odp_cast_scalar(odp_pktio_t, 0)
+#define ODP_PMR_INVAL _odp_cast_scalar(odp_pmr_t, ~0)
+#define ODP_POOL_INVALID _odp_cast_scalar(odp_pool_t, 0xffffffff)
+#define ODP_QUEUE_INVALID  _odp_cast_scalar(odp_queue_t, 0)
+#define ODP_SCHED_GROUP_INVALID -1
+#define ODP_SHM_INVALID _odp_cast_scalar(odp_shm_t, 0)
+#define ODP_SHM_NULL ODP_SHM_INVALID
+#define ODP_TIMEOUT_INVALID  _odp_cast_scalar(odp_timeout_t, 0xffffffff)
+#define ODP_TIMER_INVALID _odp_cast_scalar(odp_timer_t, 0xffffffff)
+#define ODP_TIMER_POOL_INVALID NULL
+#define ODP_TM_INVALID  0
+
+#define ODP_COS_NAME_LEN 32
+#define ODP_POOL_NAME_LEN  32
+#define ODP_QUEUE_NAME_LEN 32
+#define ODP_SCHED_GROUP_NAME_LEN 32
+#define ODP_SHM_NAME_LEN 32
+#define ODP_TIMER_POOL_NAME_LEN  32
+
+#include <odp/api/spec/version.h>
+#include <odp/api/spec/std_types.h>
+#include <odp/api/spec/compiler.h>
+#include <odp/api/spec/align.h>
+#include <odp/api/spec/thread.h>
+#include <odp/api/spec/hash.h>
+#include <odp/api/spec/hints.h>
+#include <odp/api/spec/debug.h>
+#include <odp/api/spec/byteorder.h>
+#include <odp/api/spec/cpu.h>
+#include <odp/api/spec/cpumask.h>
+#include <odp/api/spec/barrier.h>
+#include <odp/api/spec/spinlock.h>
+#include <odp/api/spec/atomic.h>
+#include <odp/api/spec/init.h>
+#include <odp/api/spec/system_info.h>
+#include <odp/api/spec/shared_memory.h>
+#include <odp/api/spec/buffer.h>
+#include <odp/api/spec/pool.h>
+#include <odp/api/spec/queue.h>
+#include <odp/api/spec/ticketlock.h>
+#include <odp/api/spec/time.h>
+#include <odp/api/spec/timer.h>
+#include <odp/api/spec/schedule.h>
+#include <odp/api/spec/schedule_types.h>
+#include <odp/api/spec/sync.h>
+#include <odp/api/spec/packet.h>
+#include <odp/api/spec/packet_flags.h>
+#include <odp/api/spec/packet_io.h>
+#include <odp/api/spec/packet_io_stats.h>
+#include <odp/api/spec/crypto.h>
+#include <odp/api/spec/classification.h>
+#include <odp/api/spec/rwlock.h>
+#include <odp/api/spec/event.h>
+#include <odp/api/spec/random.h>
+#include <odp/api/spec/errno.h>
+#include <odp/api/spec/thrmask.h>
+#include <odp/api/spec/traffic_mngr.h>
+#include <odp/api/spec/spinlock_recursive.h>
+#include <odp/api/spec/rwlock_recursive.h>
+#include <odp/api/spec/std_clib.h>
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index 0bc98427..0b4fe652 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -20,85 +20,8 @@ odpinclude_HEADERS = \
 
 odpapiincludedir= $(includedir)/odp/api
 odpapiinclude_HEADERS = \
-		  $(srcdir)/include/odp/api/align.h \
-		  $(srcdir)/include/odp/api/atomic.h \
-		  $(srcdir)/include/odp/api/barrier.h \
-		  $(srcdir)/include/odp/api/buffer.h \
-		  $(srcdir)/include/odp/api/byteorder.h \
-		  $(srcdir)/include/odp/api/classification.h \
-		  $(srcdir)/include/odp/api/compiler.h \
-		  $(srcdir)/include/odp/api/cpu.h \
-		  $(srcdir)/include/odp/api/cpumask.h \
-		  $(srcdir)/include/odp/api/crypto.h \
-		  $(srcdir)/include/odp/api/debug.h \
-		  $(srcdir)/include/odp/api/errno.h \
-		  $(srcdir)/include/odp/api/event.h \
-		  $(srcdir)/include/odp/api/hash.h \
-		  $(srcdir)/include/odp/api/hints.h \
-		  $(srcdir)/include/odp/api/init.h \
-		  $(srcdir)/include/odp/api/packet_flags.h \
-		  $(srcdir)/include/odp/api/packet.h \
-		  $(srcdir)/include/odp/api/packet_io.h \
-		  $(srcdir)/include/odp/api/packet_io_stats.h \
-		  $(srcdir)/include/odp/api/pool.h \
-		  $(srcdir)/include/odp/api/queue.h \
-		  $(srcdir)/include/odp/api/random.h \
-		  $(srcdir)/include/odp/api/rwlock.h \
-		  $(srcdir)/include/odp/api/rwlock_recursive.h \
-		  $(srcdir)/include/odp/api/schedule.h \
-		  $(srcdir)/include/odp/api/schedule_types.h \
-		  $(srcdir)/include/odp/api/shared_memory.h \
-		  $(srcdir)/include/odp/api/spinlock.h \
-		  $(srcdir)/include/odp/api/spinlock_recursive.h \
-		  $(srcdir)/include/odp/api/std_clib.h \
-		  $(srcdir)/include/odp/api/std_types.h \
-		  $(srcdir)/include/odp/api/sync.h \
-		  $(srcdir)/include/odp/api/system_info.h \
-		  $(srcdir)/include/odp/api/thread.h \
-		  $(srcdir)/include/odp/api/thrmask.h \
-		  $(srcdir)/include/odp/api/ticketlock.h \
-		  $(srcdir)/include/odp/api/time.h \
-		  $(srcdir)/include/odp/api/timer.h \
-		  $(srcdir)/include/odp/api/traffic_mngr.h \
-		  $(srcdir)/include/odp/api/version.h \
 		  $(srcdir)/arch/@ARCH_DIR@/odp/api/cpu_arch.h
 
-odpapiplatincludedir= $(includedir)/odp/api/plat
-odpapiplatinclude_HEADERS = \
-		  $(builddir)/include/odp/api/plat/static_inline.h \
-		  $(srcdir)/include/odp/api/plat/atomic_inlines.h \
-		  $(srcdir)/include/odp/api/plat/atomic_types.h \
-		  $(srcdir)/include/odp/api/plat/barrier_types.h \
-		  $(srcdir)/include/odp/api/plat/buffer_types.h \
-		  $(srcdir)/include/odp/api/plat/byteorder_inlines.h \
-		  $(srcdir)/include/odp/api/plat/byteorder_types.h \
-		  $(srcdir)/include/odp/api/plat/classification_types.h \
-		  $(srcdir)/include/odp/api/plat/cpumask_types.h \
-		  $(srcdir)/include/odp/api/plat/crypto_types.h \
-		  $(srcdir)/include/odp/api/plat/event_types.h \
-		  $(srcdir)/include/odp/api/plat/init_types.h \
-		  $(srcdir)/include/odp/api/plat/packet_types.h \
-		  $(srcdir)/include/odp/api/plat/packet_io_types.h \
-		  $(srcdir)/include/odp/api/plat/pool_types.h \
-		  $(srcdir)/include/odp/api/plat/queue_types.h \
-		  $(srcdir)/include/odp/api/plat/rwlock_types.h \
-		  $(srcdir)/include/odp/api/plat/rwlock_recursive_types.h \
-		  $(srcdir)/include/odp/api/plat/schedule_types.h \
-		  $(srcdir)/include/odp/api/plat/shared_memory_types.h \
-		  $(srcdir)/include/odp/api/plat/spinlock_types.h \
-		  $(srcdir)/include/odp/api/plat/spinlock_recursive_types.h \
-		  $(srcdir)/include/odp/api/plat/std_clib_inlines.h \
-		  $(srcdir)/include/odp/api/plat/strong_types.h \
-		  $(srcdir)/include/odp/api/plat/sync_inlines.h \
-		  $(srcdir)/include/odp/api/plat/thread_types.h \
-		  $(srcdir)/include/odp/api/plat/thrmask_types.h \
-		  $(srcdir)/include/odp/api/plat/ticketlock_inlines.h \
-		  $(srcdir)/include/odp/api/plat/ticketlock_types.h \
-		  $(srcdir)/include/odp/api/plat/time_types.h \
-		  $(srcdir)/include/odp/api/plat/timer_types.h \
-		  $(srcdir)/include/odp/api/plat/traffic_mngr_types.h \
-		  $(srcdir)/include/odp/api/plat/version_types.h
-
 odpdrvincludedir = $(includedir)/odp/drv
 odpdrvinclude_HEADERS = \
 		  $(srcdir)/include/odp/drv/compiler.h
@@ -137,9 +60,11 @@ noinst_HEADERS = \
 		  ${srcdir}/include/odp_schedule_if.h \
 		  ${srcdir}/include/odp_sorted_list_internal.h \
 		  ${srcdir}/include/odp_shm_internal.h \
+		  ${srcdir}/include/odp_ticketlock_internal.h \
 		  ${srcdir}/include/odp_timer_internal.h \
 		  ${srcdir}/include/odp_timer_wheel_internal.h \
 		  ${srcdir}/include/odp_traffic_mngr_internal.h \
+		  ${srcdir}/include/odp_version_internal.h \
 		  ${srcdir}/include/protocols/eth.h \
 		  ${srcdir}/include/protocols/ip.h \
 		  ${srcdir}/include/protocols/ipsec.h \
@@ -154,7 +79,6 @@ __LIB__libodp_linux_la_SOURCES = \
 			   odp_atomic.c \
 			   odp_barrier.c \
 			   odp_buffer.c \
-			   odp_byteorder.c \
 			   odp_classification.c \
 			   odp_cpu.c \
 			   odp_cpumask.c \
@@ -193,8 +117,6 @@ __LIB__libodp_linux_la_SOURCES = \
 			   odp_sorted_list.c \
 			   odp_spinlock.c \
 			   odp_spinlock_recursive.c \
-			   odp_std_clib.c \
-			   odp_sync.c \
 			   odp_system_info.c \
 			   odp_thread.c \
 			   odp_thrmask.c \
diff --git a/platform/linux-generic/_fdserver.c b/platform/linux-generic/_fdserver.c
index 9aed7a9f..47a5b389 100644
--- a/platform/linux-generic/_fdserver.c
+++ b/platform/linux-generic/_fdserver.c
@@ -36,8 +36,10 @@
  * process and get converted both when registered or looked up.
  */
 
+#define _GNU_SOURCE
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
-#include <odp/api/spinlock.h>
 #include <odp_internal.h>
 #include <odp_debug_internal.h>
 #include <_fdserver_internal.h>
diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c
index f8898346..e10ab146 100644
--- a/platform/linux-generic/_ishm.c
+++ b/platform/linux-generic/_ishm.c
@@ -45,13 +45,12 @@
  * memory:
  *  _odp_ishm_reserve(), _odp_ishm_free*() and _odp_ishm_lookup*()...
  */
+
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 #include <odp_config_internal.h>
 #include <odp_internal.h>
-#include <odp/api/spinlock.h>
-#include <odp/api/align.h>
-#include <odp/api/system_info.h>
-#include <odp/api/debug.h>
 #include <odp_shm_internal.h>
 #include <odp_debug_internal.h>
 #include <odp_align_internal.h>
diff --git a/platform/linux-generic/_ishmphy.c b/platform/linux-generic/_ishmphy.c
index 2b2d1007..bbead5e1 100644
--- a/platform/linux-generic/_ishmphy.c
+++ b/platform/linux-generic/_ishmphy.c
@@ -8,12 +8,11 @@
  * This file handles the lower end of the ishm memory allocator:
  * It performs the physical mappings.
  */
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 #include <odp_config_internal.h>
 #include <odp_internal.h>
-#include <odp/api/align.h>
-#include <odp/api/system_info.h>
-#include <odp/api/debug.h>
 #include <odp_debug_internal.h>
 #include <odp_align_internal.h>
 #include <_ishm_internal.h>
diff --git a/platform/linux-generic/arch/arm/odp/api/cpu_arch.h b/platform/linux-generic/arch/arm/odp/api/cpu_arch.h
index 22b1da2d..048e19b3 100644
--- a/platform/linux-generic/arch/arm/odp/api/cpu_arch.h
+++ b/platform/linux-generic/arch/arm/odp/api/cpu_arch.h
@@ -11,12 +11,6 @@
 extern "C" {
 #endif
 
-#define _ODP_CACHE_LINE_SIZE 64
-
-static inline void odp_cpu_pause(void)
-{
-}
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/arch/arm/odp_cpu_arch.c b/platform/linux-generic/arch/arm/odp_cpu_arch.c
index 2ac223e0..a678e62a 100644
--- a/platform/linux-generic/arch/arm/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/arm/odp_cpu_arch.c
@@ -9,9 +9,6 @@
 #include <stdlib.h>
 #include <time.h>
 
-#include <odp/api/cpu.h>
-#include <odp/api/hints.h>
-#include <odp/api/system_info.h>
 #include <odp_debug_internal.h>
 
 #define GIGA 1000000000
diff --git a/platform/linux-generic/arch/default/odp/api/cpu_arch.h b/platform/linux-generic/arch/default/odp/api/cpu_arch.h
index 22b1da2d..048e19b3 100644
--- a/platform/linux-generic/arch/default/odp/api/cpu_arch.h
+++ b/platform/linux-generic/arch/default/odp/api/cpu_arch.h
@@ -11,12 +11,6 @@
 extern "C" {
 #endif
 
-#define _ODP_CACHE_LINE_SIZE 64
-
-static inline void odp_cpu_pause(void)
-{
-}
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/arch/default/odp_cpu_arch.c b/platform/linux-generic/arch/default/odp_cpu_arch.c
index 2ac223e0..88903ae8 100644
--- a/platform/linux-generic/arch/default/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/default/odp_cpu_arch.c
@@ -4,14 +4,13 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <stdlib.h>
 #include <time.h>
 
-#include <odp/api/cpu.h>
-#include <odp/api/hints.h>
-#include <odp/api/system_info.h>
 #include <odp_debug_internal.h>
 
 #define GIGA 1000000000
diff --git a/platform/linux-generic/arch/default/odp_sysinfo_parse.c b/platform/linux-generic/arch/default/odp_sysinfo_parse.c
index 53e2aaea..393d8893 100644
--- a/platform/linux-generic/arch/default/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/default/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_internal.h>
 #include <odp_debug_internal.h>
 #include <string.h>
diff --git a/platform/linux-generic/arch/mips64/odp/api/cpu_arch.h b/platform/linux-generic/arch/mips64/odp/api/cpu_arch.h
index 3582b129..3bfa0dcd 100644
--- a/platform/linux-generic/arch/mips64/odp/api/cpu_arch.h
+++ b/platform/linux-generic/arch/mips64/odp/api/cpu_arch.h
@@ -11,12 +11,6 @@
 extern "C" {
 #endif
 
-#if defined __OCTEON__
-#define _ODP_CACHE_LINE_SIZE 128
-#else
-#error Please add support for your arch in cpu_arch.h
-#endif
-
 static inline void odp_cpu_pause(void)
 {
 	__asm__ __volatile__ ("nop");
diff --git a/platform/linux-generic/arch/mips64/odp_cpu_arch.c b/platform/linux-generic/arch/mips64/odp_cpu_arch.c
index 646acf9c..efbffd94 100644
--- a/platform/linux-generic/arch/mips64/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/mips64/odp_cpu_arch.c
@@ -4,9 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/cpu.h>
-#include <odp/api/hints.h>
-#include <odp/api/system_info.h>
+#include <odp_api.h>
 
 uint64_t odp_cpu_cycles(void)
 {
diff --git a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
index 407264b7..e0e0125d 100644
--- a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_internal.h>
 #include <string.h>
 
diff --git a/platform/linux-generic/arch/powerpc/odp/api/cpu_arch.h b/platform/linux-generic/arch/powerpc/odp/api/cpu_arch.h
index 22b1da2d..048e19b3 100644
--- a/platform/linux-generic/arch/powerpc/odp/api/cpu_arch.h
+++ b/platform/linux-generic/arch/powerpc/odp/api/cpu_arch.h
@@ -11,12 +11,6 @@
 extern "C" {
 #endif
 
-#define _ODP_CACHE_LINE_SIZE 64
-
-static inline void odp_cpu_pause(void)
-{
-}
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/arch/powerpc/odp_cpu_arch.c b/platform/linux-generic/arch/powerpc/odp_cpu_arch.c
index 2ac223e0..88903ae8 100644
--- a/platform/linux-generic/arch/powerpc/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/powerpc/odp_cpu_arch.c
@@ -4,14 +4,13 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <stdlib.h>
 #include <time.h>
 
-#include <odp/api/cpu.h>
-#include <odp/api/hints.h>
-#include <odp/api/system_info.h>
 #include <odp_debug_internal.h>
 
 #define GIGA 1000000000
diff --git a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
index 3b88d55b..b62653fe 100644
--- a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_internal.h>
 #include <string.h>
 
diff --git a/platform/linux-generic/arch/x86/odp/api/cpu_arch.h b/platform/linux-generic/arch/x86/odp/api/cpu_arch.h
index 44e6b30e..048e19b3 100644
--- a/platform/linux-generic/arch/x86/odp/api/cpu_arch.h
+++ b/platform/linux-generic/arch/x86/odp/api/cpu_arch.h
@@ -11,17 +11,6 @@
 extern "C" {
 #endif
 
-#define _ODP_CACHE_LINE_SIZE 64
-
-static inline void odp_cpu_pause(void)
-{
-#ifdef __SSE2__
-	__asm__ __volatile__ ("pause");
-#else
-	__asm__ __volatile__ ("rep; nop");
-#endif
-}
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/arch/x86/odp_cpu_arch.c b/platform/linux-generic/arch/x86/odp_cpu_arch.c
index c8cf27b6..e69fea36 100644
--- a/platform/linux-generic/arch/x86/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/x86/odp_cpu_arch.c
@@ -3,7 +3,8 @@
  *
  * SPDX-License-Identifier:     BSD-3-Clause
  */
-#include <odp/api/cpu.h>
+
+#include <odp_api.h>
 
 uint64_t odp_cpu_cycles(void)
 {
diff --git a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
index 96127ec6..186b7c11 100644
--- a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_internal.h>
 #include <string.h>
 
diff --git a/platform/linux-generic/include/odp/api/align.h b/platform/linux-generic/include/odp/api/align.h
deleted file mode 100644
index c238b80a..00000000
--- a/platform/linux-generic/include/odp/api/align.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:	BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP alignments
- */
-
-#ifndef ODP_PLAT_ALIGN_H_
-#define ODP_PLAT_ALIGN_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/cpu_arch.h>
-
-/** @ingroup odp_compiler_optim
- *  @{
- */
-
-#ifdef __GNUC__
-
-#define ODP_ALIGNED(x) __attribute__((__aligned__(x)))
-
-#define ODP_PACKED __attribute__((__packed__))
-
-#define ODP_OFFSETOF(type, member) __builtin_offsetof(type, member)
-
-#define ODP_FIELD_SIZEOF(type, member) sizeof(((type *)0)->member)
-
-#else
-#error Non-gcc compatible compiler
-#endif
-
-#define ODP_CACHE_LINE_SIZE _ODP_CACHE_LINE_SIZE
-
-#define ODP_PAGE_SIZE       4096
-
-#define ODP_ALIGNED_CACHE   ODP_ALIGNED(ODP_CACHE_LINE_SIZE)
-
-#define ODP_ALIGNED_PAGE    ODP_ALIGNED(ODP_PAGE_SIZE)
-
-/**
- * @}
- */
-
-#include <odp/api/spec/align.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/atomic.h b/platform/linux-generic/include/odp/api/atomic.h
deleted file mode 100644
index 7886cb4e..00000000
--- a/platform/linux-generic/include/odp/api/atomic.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP atomic operations
- */
-
-#ifndef ODP_PLAT_ATOMIC_H_
-#define ODP_PLAT_ATOMIC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/align.h>
-#include <odp/api/plat/atomic_types.h>
-
-/** @ingroup odp_atomic
- *  @{
- */
-
-#include <odp/api/plat/static_inline.h>
-#if ODP_ABI_COMPAT == 0
-#include <odp/api/plat/atomic_inlines.h>
-#endif
-
-/**
- * @}
- */
-
-#include <odp/api/spec/atomic.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/barrier.h b/platform/linux-generic/include/odp/api/barrier.h
deleted file mode 100644
index ab1b7756..00000000
--- a/platform/linux-generic/include/odp/api/barrier.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP execution barriers
- */
-
-#ifndef ODP_PLAT_BARRIER_H_
-#define ODP_PLAT_BARRIER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/atomic.h>
-#include <odp/api/plat/shared_memory_types.h>
-#include <odp/api/plat/barrier_types.h>
-
-#include <odp/api/spec/barrier.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/buffer.h b/platform/linux-generic/include/odp/api/buffer.h
deleted file mode 100644
index 81dbf128..00000000
--- a/platform/linux-generic/include/odp/api/buffer.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP buffer descriptor
- */
-
-#ifndef ODP_PLAT_BUFFER_H_
-#define ODP_PLAT_BUFFER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/event_types.h>
-#include <odp/api/plat/buffer_types.h>
-#include <odp/api/plat/pool_types.h>
-
-/** @ingroup odp_buffer
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/buffer.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/byteorder.h b/platform/linux-generic/include/odp/api/byteorder.h
deleted file mode 100644
index ec3d0eef..00000000
--- a/platform/linux-generic/include/odp/api/byteorder.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP byteorder
- */
-
-#ifndef ODP_PLAT_BYTEORDER_H_
-#define ODP_PLAT_BYTEORDER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/byteorder_types.h>
-#include <odp/api/compiler.h>
-
-/** @ingroup odp_compiler_optim
- *  @{
- */
-
-#include <odp/api/plat/static_inline.h>
-#if ODP_ABI_COMPAT == 0
-#include <odp/api/plat/byteorder_inlines.h>
-#endif
-
-/**
- * @}
- */
-
-#include <odp/api/spec/byteorder.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/classification.h b/platform/linux-generic/include/odp/api/classification.h
deleted file mode 100644
index 0bec38be..00000000
--- a/platform/linux-generic/include/odp/api/classification.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP classification descriptor
- */
-
-#ifndef ODP_PLAT_CLASSIFY_H_
-#define ODP_PLAT_CLASSIFY_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/pool_types.h>
-#include <odp/api/plat/classification_types.h>
-#include <odp/api/plat/packet_types.h>
-#include <odp/api/plat/packet_io_types.h>
-#include <odp/api/plat/queue_types.h>
-
-/** @ingroup odp_classification
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/classification.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/compiler.h b/platform/linux-generic/include/odp/api/compiler.h
deleted file mode 100644
index 5249d5d6..00000000
--- a/platform/linux-generic/include/odp/api/compiler.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * Compiler related
- */
-
-#ifndef ODP_PLAT_COMPILER_H_
-#define ODP_PLAT_COMPILER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_compiler_optim
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/compiler.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/cpu.h b/platform/linux-generic/include/odp/api/cpu.h
deleted file mode 100644
index d49c782b..00000000
--- a/platform/linux-generic/include/odp/api/cpu.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP CPU
- */
-
-#ifndef ODP_PLAT_CPU_H_
-#define ODP_PLAT_CPU_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/cpu_arch.h>
-
-#include <odp/api/spec/cpu.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/cpumask.h b/platform/linux-generic/include/odp/api/cpumask.h
deleted file mode 100644
index 325ea52e..00000000
--- a/platform/linux-generic/include/odp/api/cpumask.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP CPU masks and enumeration
- */
-
-#ifndef ODP_PLAT_CPUMASK_H_
-#define ODP_PLAT_CPUMASK_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/cpumask_types.h>
-
-#include <odp/api/spec/cpumask.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/crypto.h b/platform/linux-generic/include/odp/api/crypto.h
deleted file mode 100644
index 4f65932a..00000000
--- a/platform/linux-generic/include/odp/api/crypto.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP crypto
- */
-
-#ifndef ODP_PLAT_CRYPTO_H_
-#define ODP_PLAT_CRYPTO_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/packet_types.h>
-#include <odp/api/plat/crypto_types.h>
-#include <odp/api/plat/buffer_types.h>
-#include <odp/api/plat/pool_types.h>
-#include <odp/api/queue.h>
-
-/** @ingroup odp_crypto
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/crypto.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/debug.h b/platform/linux-generic/include/odp/api/debug.h
deleted file mode 100644
index 7db14339..00000000
--- a/platform/linux-generic/include/odp/api/debug.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP debug
- */
-
-#ifndef ODP_PLAT_DEBUG_H_
-#define ODP_PLAT_DEBUG_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/spec/debug.h>
-
-#if defined(__GNUC__) && !defined(__clang__)
-
-#if __GNUC__ < 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ < 6))
-
-/**
- * @internal _Static_assert was only added in GCC 4.6. Provide a weak replacement
- * for previous versions.
- */
-#define _Static_assert(e, s) (extern int (*static_assert_checker(void)) \
-	[sizeof(struct { unsigned int error_if_negative:(e) ? 1 : -1; })])
-
-#endif
-
-#endif
-
-/**
- * @internal Compile time assertion macro. Fails compilation and outputs 'msg'
- * if condition 'cond' is false. Macro definition is empty when compiler is not
- * supported or the compiler does not support static assertion.
- */
-#define ODP_STATIC_ASSERT(cond, msg)  _Static_assert(cond, msg)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/errno.h b/platform/linux-generic/include/odp/api/errno.h
deleted file mode 100644
index f70d84df..00000000
--- a/platform/linux-generic/include/odp/api/errno.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:	BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP errno API
- */
-
-#ifndef ODP_PLAT_ERRNO_H_
-#define ODP_PLAT_ERRNO_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#include <odp/api/spec/errno.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/event.h b/platform/linux-generic/include/odp/api/event.h
deleted file mode 100644
index 55931b62..00000000
--- a/platform/linux-generic/include/odp/api/event.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP event
- */
-
-#ifndef ODP_PLAT_EVENT_H_
-#define ODP_PLAT_EVENT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/event_types.h>
-
-/** @ingroup odp_event
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/event.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/hash.h b/platform/linux-generic/include/odp/api/hash.h
deleted file mode 100644
index 332029ed..00000000
--- a/platform/linux-generic/include/odp/api/hash.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP Hash function
- */
-
-#ifndef ODP_PLAT_HASH_H_
-#define ODP_PLAT_HASH_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_hash
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/hash.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/hints.h b/platform/linux-generic/include/odp/api/hints.h
deleted file mode 100644
index 3ba1ba95..00000000
--- a/platform/linux-generic/include/odp/api/hints.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP compiler hints
- */
-
-#ifndef ODP_PLAT_HINTS_H_
-#define ODP_PLAT_HINTS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_compiler_optim
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/hints.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/init.h b/platform/linux-generic/include/odp/api/init.h
deleted file mode 100644
index 1d9f59a6..00000000
--- a/platform/linux-generic/include/odp/api/init.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP initialization.
- */
-
-#ifndef ODP_PLAT_INIT_H_
-#define ODP_PLAT_INIT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/init_types.h>
-
-/** @ingroup odp_initialization
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/init.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/packet.h b/platform/linux-generic/include/odp/api/packet.h
deleted file mode 100644
index ebbeaf1b..00000000
--- a/platform/linux-generic/include/odp/api/packet.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP packet descriptor
- */
-
-#ifndef ODP_PLAT_PACKET_H_
-#define ODP_PLAT_PACKET_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/event_types.h>
-#include <odp/api/plat/packet_io_types.h>
-#include <odp/api/plat/packet_types.h>
-#include <odp/api/plat/buffer_types.h>
-#include <odp/api/plat/pool_types.h>
-
-/** @ingroup odp_packet
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/packet.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/packet_flags.h b/platform/linux-generic/include/odp/api/packet_flags.h
deleted file mode 100644
index 467f5b1d..00000000
--- a/platform/linux-generic/include/odp/api/packet_flags.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP packet flags
- */
-
-#ifndef ODP_PLAT_PACKET_FLAGS_H_
-#define ODP_PLAT_PACKET_FLAGS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_packet
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/packet_flags.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/packet_io.h b/platform/linux-generic/include/odp/api/packet_io.h
deleted file mode 100644
index 76c7dfed..00000000
--- a/platform/linux-generic/include/odp/api/packet_io.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP Packet IO
- */
-
-#ifndef ODP_PLAT_PACKET_IO_H_
-#define ODP_PLAT_PACKET_IO_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/pool_types.h>
-#include <odp/api/plat/classification_types.h>
-#include <odp/api/plat/packet_types.h>
-#include <odp/api/plat/packet_io_types.h>
-#include <odp/api/plat/queue_types.h>
-
-/** @ingroup odp_packet_io
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/packet_io.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/packet_io_stats.h b/platform/linux-generic/include/odp/api/packet_io_stats.h
deleted file mode 100644
index a9cd9535..00000000
--- a/platform/linux-generic/include/odp/api/packet_io_stats.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP packet IO stats
- */
-
-#ifndef ODP_PLAT_PACKET_IO_STATS_H_
-#define ODP_PLAT_PACKET_IO_STATS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/spec/packet_io_stats.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/atomic_inlines.h b/platform/linux-generic/include/odp/api/plat/atomic_inlines.h
deleted file mode 100644
index 4471f2ec..00000000
--- a/platform/linux-generic/include/odp/api/plat/atomic_inlines.h
+++ /dev/null
@@ -1,385 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP Atomic inline functions
- */
-
-#ifndef _ODP_PLAT_ATOMIC_INLINES_H_
-#define _ODP_PLAT_ATOMIC_INLINES_H_
-
-_STATIC void odp_atomic_init_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	__atomic_store_n(&atom->v, val, __ATOMIC_RELAXED);
-}
-
-_STATIC uint32_t odp_atomic_load_u32(odp_atomic_u32_t *atom)
-{
-	return __atomic_load_n(&atom->v, __ATOMIC_RELAXED);
-}
-
-_STATIC void odp_atomic_store_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	__atomic_store_n(&atom->v, val, __ATOMIC_RELAXED);
-}
-
-_STATIC uint32_t odp_atomic_fetch_add_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	return __atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
-}
-
-_STATIC void odp_atomic_add_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
-}
-
-_STATIC uint32_t odp_atomic_fetch_sub_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	return __atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
-}
-
-_STATIC void odp_atomic_sub_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
-}
-
-_STATIC uint32_t odp_atomic_fetch_inc_u32(odp_atomic_u32_t *atom)
-{
-	return __atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
-}
-
-_STATIC void odp_atomic_inc_u32(odp_atomic_u32_t *atom)
-{
-	(void)__atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
-}
-
-_STATIC uint32_t odp_atomic_fetch_dec_u32(odp_atomic_u32_t *atom)
-{
-	return __atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
-}
-
-_STATIC void odp_atomic_dec_u32(odp_atomic_u32_t *atom)
-{
-	(void)__atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
-}
-
-_STATIC int odp_atomic_cas_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
-			       uint32_t new_val)
-{
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_RELAXED,
-					   __ATOMIC_RELAXED);
-}
-
-_STATIC uint32_t odp_atomic_xchg_u32(odp_atomic_u32_t *atom, uint32_t new_val)
-{
-	return __atomic_exchange_n(&atom->v, new_val, __ATOMIC_RELAXED);
-}
-
-_STATIC void odp_atomic_max_u32(odp_atomic_u32_t *atom, uint32_t new_max)
-{
-	uint32_t old_val;
-
-	old_val = odp_atomic_load_u32(atom);
-
-	while (new_max > old_val) {
-		if (odp_atomic_cas_u32(atom, &old_val, new_max))
-			break;
-	}
-}
-
-_STATIC void odp_atomic_min_u32(odp_atomic_u32_t *atom, uint32_t new_min)
-{
-	uint32_t old_val;
-
-	old_val = odp_atomic_load_u32(atom);
-
-	while (new_min < old_val) {
-		if (odp_atomic_cas_u32(atom, &old_val, new_min))
-			break;
-	}
-}
-
-_STATIC void odp_atomic_init_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-	atom->v = val;
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	__atomic_clear(&atom->lock, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC uint64_t odp_atomic_load_u64(odp_atomic_u64_t *atom)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, (void)0);
-#else
-	return __atomic_load_n(&atom->v, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC void odp_atomic_store_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v = val);
-#else
-	__atomic_store_n(&atom->v, val, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC uint64_t odp_atomic_fetch_add_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, atom->v += val);
-#else
-	return __atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC void odp_atomic_add_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v += val);
-#else
-	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC uint64_t odp_atomic_fetch_sub_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, atom->v -= val);
-#else
-	return __atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC void odp_atomic_sub_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v -= val);
-#else
-	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC uint64_t odp_atomic_fetch_inc_u64(odp_atomic_u64_t *atom)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, atom->v++);
-#else
-	return __atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC void odp_atomic_inc_u64(odp_atomic_u64_t *atom)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v++);
-#else
-	(void)__atomic_fetch_add(&atom->v, 1, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC uint64_t odp_atomic_fetch_dec_u64(odp_atomic_u64_t *atom)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, atom->v--);
-#else
-	return __atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC void odp_atomic_dec_u64(odp_atomic_u64_t *atom)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v--);
-#else
-	(void)__atomic_fetch_sub(&atom->v, 1, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC int odp_atomic_cas_u64(odp_atomic_u64_t *atom, uint64_t *old_val,
-			       uint64_t new_val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	int ret;
-	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
-	return ret;
-#else
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_RELAXED,
-					   __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC uint64_t odp_atomic_xchg_u64(odp_atomic_u64_t *atom, uint64_t new_val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, atom->v = new_val);
-#else
-	return __atomic_exchange_n(&atom->v, new_val, __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC void odp_atomic_max_u64(odp_atomic_u64_t *atom, uint64_t new_max)
-{
-	uint64_t old_val;
-
-	old_val = odp_atomic_load_u64(atom);
-
-	while (new_max > old_val) {
-		if (odp_atomic_cas_u64(atom, &old_val, new_max))
-			break;
-	}
-}
-
-_STATIC void odp_atomic_min_u64(odp_atomic_u64_t *atom, uint64_t new_min)
-{
-	uint64_t old_val;
-
-	old_val = odp_atomic_load_u64(atom);
-
-	while (new_min < old_val) {
-		if (odp_atomic_cas_u64(atom, &old_val, new_min))
-			break;
-	}
-}
-
-_STATIC uint32_t odp_atomic_load_acq_u32(odp_atomic_u32_t *atom)
-{
-	return __atomic_load_n(&atom->v, __ATOMIC_ACQUIRE);
-}
-
-_STATIC void odp_atomic_store_rel_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	__atomic_store_n(&atom->v, val, __ATOMIC_RELEASE);
-}
-
-_STATIC void odp_atomic_add_rel_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELEASE);
-}
-
-_STATIC void odp_atomic_sub_rel_u32(odp_atomic_u32_t *atom, uint32_t val)
-{
-	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELEASE);
-}
-
-_STATIC int odp_atomic_cas_acq_u32(odp_atomic_u32_t *atom,
-				   uint32_t *old_val, uint32_t new_val)
-{
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_ACQUIRE,
-					   __ATOMIC_RELAXED);
-}
-
-_STATIC int odp_atomic_cas_rel_u32(odp_atomic_u32_t *atom,
-				   uint32_t *old_val, uint32_t new_val)
-{
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_RELEASE,
-					   __ATOMIC_RELAXED);
-}
-
-_STATIC int odp_atomic_cas_acq_rel_u32(odp_atomic_u32_t *atom,
-				       uint32_t *old_val,
-				       uint32_t new_val)
-{
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_ACQ_REL,
-					   __ATOMIC_RELAXED);
-}
-
-_STATIC uint64_t odp_atomic_load_acq_u64(odp_atomic_u64_t *atom)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	return ATOMIC_OP(atom, (void)0);
-#else
-	return __atomic_load_n(&atom->v, __ATOMIC_ACQUIRE);
-#endif
-}
-
-_STATIC void odp_atomic_store_rel_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v = val);
-#else
-	__atomic_store_n(&atom->v, val, __ATOMIC_RELEASE);
-#endif
-}
-
-_STATIC void odp_atomic_add_rel_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v += val);
-#else
-	(void)__atomic_fetch_add(&atom->v, val, __ATOMIC_RELEASE);
-#endif
-}
-
-_STATIC void odp_atomic_sub_rel_u64(odp_atomic_u64_t *atom, uint64_t val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	(void)ATOMIC_OP(atom, atom->v -= val);
-#else
-	(void)__atomic_fetch_sub(&atom->v, val, __ATOMIC_RELEASE);
-#endif
-}
-
-_STATIC int odp_atomic_cas_acq_u64(odp_atomic_u64_t *atom,
-				   uint64_t *old_val, uint64_t new_val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	int ret;
-	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
-	return ret;
-#else
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_ACQUIRE,
-					   __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC int odp_atomic_cas_rel_u64(odp_atomic_u64_t *atom,
-				   uint64_t *old_val, uint64_t new_val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	int ret;
-	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
-	return ret;
-#else
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_RELEASE,
-					   __ATOMIC_RELAXED);
-#endif
-}
-
-_STATIC int odp_atomic_cas_acq_rel_u64(odp_atomic_u64_t *atom,
-				       uint64_t *old_val,
-				       uint64_t new_val)
-{
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	int ret;
-	*old_val = ATOMIC_OP(atom, ATOMIC_CAS_OP(&ret, *old_val, new_val));
-	return ret;
-#else
-	return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
-					   0 /* strong */,
-					   __ATOMIC_ACQ_REL,
-					   __ATOMIC_RELAXED);
-#endif
-}
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/atomic_types.h b/platform/linux-generic/include/odp/api/plat/atomic_types.h
deleted file mode 100644
index a674ac99..00000000
--- a/platform/linux-generic/include/odp/api/plat/atomic_types.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP atomic operations
- */
-
-#ifndef ODP_ATOMIC_TYPES_H_
-#define ODP_ATOMIC_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/align.h>
-
-/**
- * @internal
- * Atomic 64-bit unsigned integer
- */
-struct odp_atomic_u64_s {
-	uint64_t v; /**< Actual storage for the atomic variable */
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-	/* Some architectures do not support lock-free operations on 64-bit
-	 * data types. We use a spin lock to ensure atomicity. */
-	char lock; /**< Spin lock (if needed) used to ensure atomic access */
-#endif
-} ODP_ALIGNED(sizeof(uint64_t)); /* Enforce alignement! */
-
-/**
- * @internal
- * Atomic 32-bit unsigned integer
- */
-struct odp_atomic_u32_s {
-	uint32_t v; /**< Actual storage for the atomic variable */
-} ODP_ALIGNED(sizeof(uint32_t)); /* Enforce alignement! */
-
-#if __GCC_ATOMIC_LLONG_LOCK_FREE < 2
-
-/**
- * @internal
- * CAS operation expression for the ATOMIC_OP macro
- */
-#define ATOMIC_CAS_OP(ret_ptr, old_val, new_val) \
-({ \
-	if (atom->v == (old_val)) { \
-		atom->v = (new_val); \
-		*(ret_ptr) = 1; \
-	} else { \
-		*(ret_ptr) = 0; \
-	} \
-})
-
-/**
- * @internal
- * Helper macro for lock-based atomic operations on 64-bit integers
- * @param[in,out] atom Pointer to the 64-bit atomic variable
- * @param expr Expression used update the variable.
- * @return The old value of the variable.
- */
-#define ATOMIC_OP(atom, expr) \
-({ \
-	uint64_t _old_val; \
-	/* Loop while lock is already taken, stop when lock becomes clear */ \
-	while (__atomic_test_and_set(&(atom)->lock, __ATOMIC_ACQUIRE)) \
-		(void)0; \
-	_old_val = (atom)->v; \
-	(expr); /* Perform whatever update is desired */ \
-	__atomic_clear(&(atom)->lock, __ATOMIC_RELEASE); \
-	_old_val; /* Return old value */ \
-})
-#endif
-
-typedef struct odp_atomic_u64_s odp_atomic_u64_t;
-
-typedef struct odp_atomic_u32_s odp_atomic_u32_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/barrier_types.h b/platform/linux-generic/include/odp/api/plat/barrier_types.h
deleted file mode 100644
index 00b383cc..00000000
--- a/platform/linux-generic/include/odp/api/plat/barrier_types.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP barrier
- */
-
-#ifndef ODP_BARRIER_TYPES_H_
-#define ODP_BARRIER_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/atomic.h>
-
-/**
- * @internal
- * ODP thread synchronization barrier
- */
-struct odp_barrier_s {
-	uint32_t         count;  /**< Thread count */
-	odp_atomic_u32_t bar;    /**< Barrier counter */
-};
-
-typedef struct odp_barrier_s odp_barrier_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/buffer_types.h b/platform/linux-generic/include/odp/api/plat/buffer_types.h
deleted file mode 100644
index 344121b6..00000000
--- a/platform/linux-generic/include/odp/api/plat/buffer_types.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP buffer descriptor
- */
-
-#ifndef ODP_BUFFER_TYPES_H_
-#define ODP_BUFFER_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** ODP buffer */
-typedef ODP_HANDLE_T(odp_buffer_t);
-
-/** Invalid buffer */
-#define ODP_BUFFER_INVALID _odp_cast_scalar(odp_buffer_t, 0xffffffff)
-
-/** ODP buffer segment */
-typedef ODP_HANDLE_T(odp_buffer_seg_t);
-
-/** Invalid segment */
-#define ODP_SEGMENT_INVALID ((odp_buffer_seg_t)ODP_BUFFER_INVALID)
-
-/** Get printable format of odp_buffer_t */
-static inline uint64_t odp_buffer_to_u64(odp_buffer_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/byteorder_inlines.h b/platform/linux-generic/include/odp/api/plat/byteorder_inlines.h
deleted file mode 100644
index c91a3b18..00000000
--- a/platform/linux-generic/include/odp/api/plat/byteorder_inlines.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP byteorder
- */
-
-#ifndef ODP_PLAT_BYTEORDER_INLINES_H_
-#define ODP_PLAT_BYTEORDER_INLINES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_compiler_optim
- *  @{
- */
-
-_STATIC uint16_t odp_be_to_cpu_16(odp_u16be_t be16)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return __odp_builtin_bswap16((__odp_force uint16_t)be16);
-#else
-	return (__odp_force uint16_t)be16;
-#endif
-}
-
-_STATIC uint32_t odp_be_to_cpu_32(odp_u32be_t be32)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return __builtin_bswap32((__odp_force uint32_t)be32);
-#else
-	return (__odp_force uint32_t)be32;
-#endif
-}
-
-_STATIC uint64_t odp_be_to_cpu_64(odp_u64be_t be64)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return __builtin_bswap64((__odp_force uint64_t)be64);
-#else
-	return (__odp_force uint64_t)be64;
-#endif
-}
-
-_STATIC odp_u16be_t odp_cpu_to_be_16(uint16_t cpu16)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force odp_u16be_t)__odp_builtin_bswap16(cpu16);
-#else
-	return (__odp_force odp_u16be_t)cpu16;
-#endif
-}
-
-_STATIC odp_u32be_t odp_cpu_to_be_32(uint32_t cpu32)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force odp_u32be_t)__builtin_bswap32(cpu32);
-#else
-	return (__odp_force odp_u32be_t)cpu32;
-#endif
-}
-
-_STATIC odp_u64be_t odp_cpu_to_be_64(uint64_t cpu64)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force odp_u64be_t)__builtin_bswap64(cpu64);
-#else
-	return (__odp_force odp_u64be_t)cpu64;
-#endif
-}
-
-_STATIC uint16_t odp_le_to_cpu_16(odp_u16le_t le16)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force uint16_t)le16;
-#else
-	return __odp_builtin_bswap16((__odp_force uint16_t)le16);
-#endif
-}
-
-_STATIC uint32_t odp_le_to_cpu_32(odp_u32le_t le32)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force uint32_t)le32;
-#else
-	return __builtin_bswap32((__odp_force uint32_t)le32);
-#endif
-}
-
-_STATIC uint64_t odp_le_to_cpu_64(odp_u64le_t le64)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force uint64_t)le64;
-#else
-	return __builtin_bswap64((__odp_force uint64_t)le64);
-#endif
-}
-
-_STATIC odp_u16le_t odp_cpu_to_le_16(uint16_t cpu16)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force odp_u16le_t)cpu16;
-#else
-	return (__odp_force odp_u16le_t)__odp_builtin_bswap16(cpu16);
-#endif
-}
-
-_STATIC odp_u32le_t odp_cpu_to_le_32(uint32_t cpu32)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force odp_u32le_t)cpu32;
-#else
-	return (__odp_force odp_u32le_t)__builtin_bswap32(cpu32);
-#endif
-}
-
-_STATIC odp_u64le_t odp_cpu_to_le_64(uint64_t cpu64)
-{
-#if ODP_BYTE_ORDER == ODP_LITTLE_ENDIAN
-	return (__odp_force odp_u64le_t)cpu64;
-#else
-	return (__odp_force odp_u64le_t)__builtin_bswap64(cpu64);
-#endif
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/byteorder_types.h b/platform/linux-generic/include/odp/api/plat/byteorder_types.h
deleted file mode 100644
index 09235b53..00000000
--- a/platform/linux-generic/include/odp/api/plat/byteorder_types.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP byteorder
- */
-
-#ifndef ODP_BYTEORDER_TYPES_H_
-#define ODP_BYTEORDER_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __BYTE_ORDER__
-#error __BYTE_ORDER not defined!
-#endif
-
-#ifndef __ORDER_BIG_ENDIAN__
-#error __BIG_ENDIAN not defined!
-#endif
-
-#ifndef __ORDER_LITTLE_ENDIAN__
-#error __LITTLE_ENDIAN not defined!
-#endif
-
-
-/* for use with type checkers such as sparse */
-#ifdef __CHECKER__
-/** @internal bitwise attribute */
-#define __odp_bitwise	__attribute__((bitwise))
-/** @internal force attribute */
-#define __odp_force     __attribute__((force))
-#else
-/** @internal bitwise attribute */
-#define __odp_bitwise
-/** @internal force attribute */
-#define __odp_force
-#endif
-
-
-/** @addtogroup odp_compiler_optim
- *  @{
- */
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-	#define ODP_LITTLE_ENDIAN           1
-	#define ODP_BIG_ENDIAN              0
-	#define ODP_BYTE_ORDER              ODP_LITTLE_ENDIAN
-	#define ODP_LITTLE_ENDIAN_BITFIELD  1
-	#define ODP_BIG_ENDIAN_BITFIELD     0
-	#define ODP_BITFIELD_ORDER          ODP_LITTLE_ENDIAN_BITFIELD
-#else
-	#define ODP_LITTLE_ENDIAN           0
-	#define ODP_BIG_ENDIAN              1
-	#define	ODP_BYTE_ORDER              ODP_BIG_ENDIAN
-	#define ODP_LITTLE_ENDIAN_BITFIELD  0
-	#define ODP_BIG_ENDIAN_BITFIELD     1
-	#define ODP_BITFIELD_ORDER          ODP_BIG_ENDIAN_BITFIELD
-#endif
-
-typedef uint16_t __odp_bitwise	odp_u16le_t;
-typedef uint16_t __odp_bitwise	odp_u16be_t;
-
-typedef uint32_t __odp_bitwise	odp_u32le_t;
-typedef uint32_t __odp_bitwise	odp_u32be_t;
-
-typedef uint64_t __odp_bitwise	odp_u64le_t;
-typedef uint64_t __odp_bitwise	odp_u64be_t;
-
-typedef uint16_t __odp_bitwise  odp_u16sum_t;
-typedef uint32_t __odp_bitwise  odp_u32sum_t;
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/classification_types.h b/platform/linux-generic/include/odp/api/plat/classification_types.h
deleted file mode 100644
index 2093f54a..00000000
--- a/platform/linux-generic/include/odp/api/plat/classification_types.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP classification descriptor
- */
-
-#ifndef ODP_CLASSIFY_TYPES_H_
-#define ODP_CLASSIFY_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_classification
- *  @{
- */
-
-typedef ODP_HANDLE_T(odp_cos_t);
-typedef ODP_HANDLE_T(odp_flowsig_t);
-
-#define ODP_COS_INVALID  _odp_cast_scalar(odp_cos_t, ~0)
-#define ODP_COS_NAME_LEN 32
-
-typedef uint16_t odp_cos_flow_set_t;
-
-typedef ODP_HANDLE_T(odp_pmr_t);
-#define ODP_PMR_INVAL _odp_cast_scalar(odp_pmr_t, ~0)
-
-/** Get printable format of odp_cos_t */
-static inline uint64_t odp_cos_to_u64(odp_cos_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/** Get printable format of odp_pmr_t */
-static inline uint64_t odp_pmr_to_u64(odp_pmr_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/cpumask_types.h b/platform/linux-generic/include/odp/api/plat/cpumask_types.h
deleted file mode 100644
index c2727a46..00000000
--- a/platform/linux-generic/include/odp/api/plat/cpumask_types.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP CPU masks and enumeration
- */
-
-#ifndef ODP_CPUMASK_TYPES_H_
-#define ODP_CPUMASK_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_cpumask
- *  @{
- */
-
-#include <odp/api/std_types.h>
-#include <odp/api/align.h>
-
-#define ODP_CPUMASK_SIZE 1024
-
-#define ODP_CPUMASK_STR_SIZE ((ODP_CPUMASK_SIZE + 3) / 4 + 3)
-
-/**
- * CPU mask
- *
- * Don't access directly, use access functions.
- */
-typedef struct odp_cpumask_t {
-	/** @private CPU mask storage
-	  *
-	  * This is private to the implementation.
-	  * Don't access directly, use access functions.
-	  */
-	uint8_t _u8[ODP_CPUMASK_SIZE / 8];
-} odp_cpumask_t ODP_ALIGNED(8);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/crypto_types.h b/platform/linux-generic/include/odp/api/plat/crypto_types.h
deleted file mode 100644
index 0cbbce8b..00000000
--- a/platform/linux-generic/include/odp/api/plat/crypto_types.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP crypto
- */
-
-#ifndef ODP_CRYPTO_TYPES_H_
-#define ODP_CRYPTO_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_crypto
- *  @{
- */
-
-#define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL)
-
-typedef uint64_t odp_crypto_session_t;
-typedef ODP_HANDLE_T(odp_crypto_compl_t);
-
-/** Get printable format of odp_crypto_session_t */
-static inline uint64_t odp_crypto_session_to_u64(odp_crypto_session_t hdl)
-{
-	return (uint64_t)hdl;
-}
-
-/** Get printable format of odp_crypto_compl_t_t */
-static inline uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/event_types.h b/platform/linux-generic/include/odp/api/plat/event_types.h
deleted file mode 100644
index 9ca0fb80..00000000
--- a/platform/linux-generic/include/odp/api/plat/event_types.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP event
- */
-
-#ifndef ODP_EVENT_TYPES_H_
-#define ODP_EVENT_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** @defgroup odp_event ODP EVENT
- *  Operations on an event.
- *  @{
- */
-
-typedef ODP_HANDLE_T(odp_event_t);
-
-#define ODP_EVENT_INVALID _odp_cast_scalar(odp_event_t, 0xffffffff)
-
-/**
- * Event types
- */
-typedef enum odp_event_type_t {
-	ODP_EVENT_BUFFER       = 1,
-	ODP_EVENT_PACKET       = 2,
-	ODP_EVENT_TIMEOUT      = 3,
-	ODP_EVENT_CRYPTO_COMPL = 4,
-} odp_event_type_t;
-
-/** Get printable format of odp_event_t */
-static inline uint64_t odp_event_to_u64(odp_event_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/init_types.h b/platform/linux-generic/include/odp/api/plat/init_types.h
deleted file mode 100644
index 888b04a7..00000000
--- a/platform/linux-generic/include/odp/api/plat/init_types.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP initialization.
- */
-
-#ifndef ODP_INIT_TYPES_H_
-#define ODP_INIT_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-
-typedef uint64_t odp_instance_t;
-
-/**
- * @internal platform specific data
- */
-typedef struct odp_platform_init_t {
-	int ipc_ns; /**< Name space for ipc shared objects. */
-} odp_platform_init_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/packet_io_types.h b/platform/linux-generic/include/odp/api/plat/packet_io_types.h
deleted file mode 100644
index 5a45321f..00000000
--- a/platform/linux-generic/include/odp/api/plat/packet_io_types.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP Packet IO
- */
-
-#ifndef ODP_PACKET_IO_TYPES_H_
-#define ODP_PACKET_IO_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_packet_io
- *  Operations on a packet.
- *  @{
- */
-
-typedef ODP_HANDLE_T(odp_pktio_t);
-
-/** @internal */
-typedef struct odp_pktin_queue_t {
-	odp_pktio_t pktio; /**< @internal pktio handle */
-	int index;         /**< @internal pktio queue index */
-} odp_pktin_queue_t;
-
-/** @internal */
-typedef struct odp_pktout_queue_t {
-	odp_pktio_t pktio; /**< @internal pktio handle */
-	int index;         /**< @internal pktio queue index */
-} odp_pktout_queue_t;
-
-#define ODP_PKTIO_INVALID _odp_cast_scalar(odp_pktio_t, 0)
-
-#define ODP_PKTIO_MACADDR_MAXSIZE 16
-
-#define ODP_PKTIN_NO_WAIT 0
-#define ODP_PKTIN_WAIT    UINT64_MAX
-
-/** Get printable format of odp_pktio_t */
-static inline uint64_t odp_pktio_to_u64(odp_pktio_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/packet_types.h b/platform/linux-generic/include/odp/api/plat/packet_types.h
deleted file mode 100644
index 864494d4..00000000
--- a/platform/linux-generic/include/odp/api/plat/packet_types.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP packet descriptor
- */
-
-#ifndef ODP_PACKET_TYPES_H_
-#define ODP_PACKET_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_packet ODP PACKET
- *  Operations on a packet.
- *  @{
- */
-
-typedef ODP_HANDLE_T(odp_packet_t);
-
-#define ODP_PACKET_INVALID _odp_cast_scalar(odp_packet_t, 0xffffffff)
-
-#define ODP_PACKET_OFFSET_INVALID (0x0fffffff)
-
-/* A packet segment handle stores a small index. Strong type handles are
- * pointers, which would be wasteful in this case. */
-typedef uint8_t odp_packet_seg_t;
-
-#define ODP_PACKET_SEG_INVALID ((odp_packet_seg_t)-1)
-
-/** odp_packet_color_t assigns names to the various pkt "colors" */
-typedef enum {
-	ODP_PACKET_GREEN = 0,
-	ODP_PACKET_YELLOW = 1,
-	ODP_PACKET_RED = 2,
-	ODP_PACKET_ALL_COLORS = 3,
-} odp_packet_color_t;
-
-/** Sets the maximum number of pkt "colors" */
-#define ODP_NUM_PACKET_COLORS 3
-
-/** Get printable format of odp_packet_t */
-static inline uint64_t odp_packet_to_u64(odp_packet_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/** Get printable format of odp_packet_seg_t */
-static inline uint64_t odp_packet_seg_to_u64(odp_packet_seg_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/pool_types.h b/platform/linux-generic/include/odp/api/plat/pool_types.h
deleted file mode 100644
index 6baff092..00000000
--- a/platform/linux-generic/include/odp/api/plat/pool_types.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP pool
- */
-
-#ifndef ODP_POOL_TYPES_H_
-#define ODP_POOL_TYPES_H_
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-#include <odp/api/plat/event_types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_buffer
- *  Operations on a pool.
- *  @{
- */
-
-typedef ODP_HANDLE_T(odp_pool_t);
-
-#define ODP_POOL_INVALID _odp_cast_scalar(odp_pool_t, 0xffffffff)
-
-#define ODP_POOL_NAME_LEN  32
-
-/**
- * Pool type
- */
-typedef enum odp_pool_type_t {
-	ODP_POOL_BUFFER  = ODP_EVENT_BUFFER,
-	ODP_POOL_PACKET  = ODP_EVENT_PACKET,
-	ODP_POOL_TIMEOUT = ODP_EVENT_TIMEOUT,
-} odp_pool_type_t;
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/queue_types.h b/platform/linux-generic/include/odp/api/plat/queue_types.h
deleted file mode 100644
index 1569f5d6..00000000
--- a/platform/linux-generic/include/odp/api/plat/queue_types.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP queue
- */
-
-#ifndef ODP_QUEUE_TYPES_H_
-#define ODP_QUEUE_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_queue ODP QUEUE
- *  Macros and operation on a 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);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/rwlock_recursive_types.h b/platform/linux-generic/include/odp/api/plat/rwlock_recursive_types.h
deleted file mode 100644
index 36f9204a..00000000
--- a/platform/linux-generic/include/odp/api/plat/rwlock_recursive_types.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP recursive read/write lock
- */
-
-#ifndef ODP_RWLOCK_RECURSIVE_TYPES_H_
-#define ODP_RWLOCK_RECURSIVE_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/rwlock.h>
-#include <odp/api/std_types.h>
-#include <odp/api/thread.h>
-
-/** @internal */
-struct odp_rwlock_recursive_s {
-	odp_rwlock_t lock;                     /**< the lock */
-	int wr_owner;                          /**< write owner thread */
-	uint32_t wr_cnt;                       /**< write recursion count */
-	uint8_t  rd_cnt[ODP_THREAD_COUNT_MAX]; /**< read recursion count */
-};
-
-typedef struct odp_rwlock_recursive_s odp_rwlock_recursive_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/rwlock_types.h b/platform/linux-generic/include/odp/api/plat/rwlock_types.h
deleted file mode 100644
index f7dc0449..00000000
--- a/platform/linux-generic/include/odp/api/plat/rwlock_types.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP rwlock
- */
-
-#ifndef ODP_RWLOCK_TYPES_H_
-#define ODP_RWLOCK_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/atomic.h>
-
-/** @internal */
-struct odp_rwlock_s {
-	odp_atomic_u32_t cnt; /**< lock count
-				0 lock not taken
-				-1 write lock taken
-				>0 read lock(s) taken */
-};
-
-typedef struct odp_rwlock_s odp_rwlock_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/schedule_types.h b/platform/linux-generic/include/odp/api/plat/schedule_types.h
deleted file mode 100644
index 535fd6d0..00000000
--- a/platform/linux-generic/include/odp/api/plat/schedule_types.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP schedule
- */
-
-#ifndef ODP_SCHEDULE_TYPES_H_
-#define ODP_SCHEDULE_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_scheduler
- *  @{
- */
-
-#define ODP_SCHED_WAIT     UINT64_MAX
-#define ODP_SCHED_NO_WAIT  0
-
-typedef int odp_schedule_prio_t;
-
-#define ODP_SCHED_PRIO_HIGHEST  0
-
-#define ODP_SCHED_PRIO_NORMAL   4
-
-#define ODP_SCHED_PRIO_LOWEST   7
-
-#define ODP_SCHED_PRIO_DEFAULT  ODP_SCHED_PRIO_NORMAL
-
-typedef int odp_schedule_sync_t;
-
-#define ODP_SCHED_SYNC_PARALLEL 0
-#define ODP_SCHED_SYNC_ATOMIC   1
-#define ODP_SCHED_SYNC_ORDERED  2
-
-typedef int odp_schedule_group_t;
-
-/* These must be kept in sync with thread_globals_t in odp_thread.c */
-#define ODP_SCHED_GROUP_INVALID -1
-#define ODP_SCHED_GROUP_ALL     0
-#define ODP_SCHED_GROUP_WORKER  1
-#define ODP_SCHED_GROUP_CONTROL 2
-
-#define ODP_SCHED_GROUP_NAME_LEN 32
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/shared_memory_types.h b/platform/linux-generic/include/odp/api/plat/shared_memory_types.h
deleted file mode 100644
index afa0bf9c..00000000
--- a/platform/linux-generic/include/odp/api/plat/shared_memory_types.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP shared memory
- */
-
-#ifndef ODP_SHARED_MEMORY_TYPES_H_
-#define ODP_SHARED_MEMORY_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_shared_memory ODP SHARED MEMORY
- *  Operations on shared memory.
- *  @{
- */
-
-typedef ODP_HANDLE_T(odp_shm_t);
-
-#define ODP_SHM_INVALID _odp_cast_scalar(odp_shm_t, 0)
-#define ODP_SHM_NULL ODP_SHM_INVALID
-
-#define ODP_SHM_NAME_LEN 32
-
-/** Get printable format of odp_shm_t */
-static inline uint64_t odp_shm_to_u64(odp_shm_t hdl)
-{
-	return _odp_pri(hdl);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/spinlock_recursive_types.h b/platform/linux-generic/include/odp/api/plat/spinlock_recursive_types.h
deleted file mode 100644
index c5a1adff..00000000
--- a/platform/linux-generic/include/odp/api/plat/spinlock_recursive_types.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP recursive spinlock
- */
-
-#ifndef ODP_SPINLOCK_RECURSIVE_TYPES_H_
-#define ODP_SPINLOCK_RECURSIVE_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/spinlock.h>
-#include <odp/api/std_types.h>
-
-/** @internal */
-struct odp_spinlock_recursive_s {
-	odp_spinlock_t lock; /**< the lock */
-	int owner;           /**< thread owning the lock */
-	uint32_t cnt;        /**< recursion count */
-};
-
-typedef struct odp_spinlock_recursive_s odp_spinlock_recursive_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/spinlock_types.h b/platform/linux-generic/include/odp/api/plat/spinlock_types.h
deleted file mode 100644
index f38ece6a..00000000
--- a/platform/linux-generic/include/odp/api/plat/spinlock_types.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP spinlock
- */
-
-#ifndef ODP_SPINLOCK_TYPES_H_
-#define ODP_SPINLOCK_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-
-/** @internal */
-struct odp_spinlock_s {
-	char lock;  /**< lock flag, should match odp_atomic_flag_t */
-};
-
-typedef struct odp_spinlock_s odp_spinlock_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/static_inline.h.in b/platform/linux-generic/include/odp/api/plat/static_inline.h.in
deleted file mode 100644
index 4562a225..00000000
--- a/platform/linux-generic/include/odp/api/plat/static_inline.h.in
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-/**
- * @file
- *
- * Macro for static inline functions
- */
-
-#ifndef ODP_PLAT_STATIC_INLINE_H_
-#define ODP_PLAT_STATIC_INLINE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @internal
- * @def ODP_ABI_COMPAT
- * Control ABI compatibility
- */
-
-/**
- * @internal
- * @def _STATIC
- * Control conditional static inline expansions for ABI compatibility
- */
-#if @ODP_ABI_COMPAT@
-#define ODP_ABI_COMPAT 1
-#define _STATIC
-#else
-#define ODP_ABI_COMPAT 0
-#define _STATIC static inline
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/std_clib_inlines.h b/platform/linux-generic/include/odp/api/plat/std_clib_inlines.h
deleted file mode 100644
index 2e833e41..00000000
--- a/platform/linux-generic/include/odp/api/plat/std_clib_inlines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#ifndef ODP_PLAT_STD_CLIB_INLINE_H_
-#define ODP_PLAT_STD_CLIB_INLINE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/spec/std_types.h>
-#include <string.h>
-
-_STATIC void *odp_memcpy(void *dst, const void *src, size_t num)
-{
-	return memcpy(dst, src, num);
-}
-
-_STATIC void *odp_memset(void *ptr, int value, size_t num)
-{
-	return memset(ptr, value, num);
-}
-
-_STATIC int odp_memcmp(const void *ptr1, const void *ptr2, size_t num)
-{
-	return memcmp(ptr1, ptr2, num);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/strong_types.h b/platform/linux-generic/include/odp/api/plat/strong_types.h
deleted file mode 100644
index a53d7635..00000000
--- a/platform/linux-generic/include/odp/api/plat/strong_types.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP Strong Types. Common macros for implementing strong typing
- * for ODP abstract data types
- */
-
-#ifndef STRONG_TYPES_H_
-#define STRONG_TYPES_H_
-
-/** Use strong typing for ODP types */
-#ifdef __cplusplus
-#define ODP_HANDLE_T(type) struct _##type { uint8_t unused_dummy_var; } *type
-#else
-#define odp_handle_t struct { uint8_t unused_dummy_var; } *
-/** C/C++ helper macro for strong typing */
-#define ODP_HANDLE_T(type) odp_handle_t type
-#endif
-
-/** Internal macro to get value of an ODP handle */
-#define _odp_typeval(handle) ((uint32_t)(uintptr_t)(handle))
-
-/** Internal macro to get printable value of an ODP handle */
-#define _odp_pri(handle) ((uint64_t)_odp_typeval(handle))
-
-/** Internal macro to convert a scalar to a typed handle */
-#define _odp_cast_scalar(type, val) ((type)(uintptr_t)(val))
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/sync_inlines.h b/platform/linux-generic/include/odp/api/plat/sync_inlines.h
deleted file mode 100644
index 245c7502..00000000
--- a/platform/linux-generic/include/odp/api/plat/sync_inlines.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP synchronisation inlines
- */
-
-#ifndef ODP_PLAT_SYNC_INLINE_H_
-#define ODP_PLAT_SYNC_INLINE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_barrier
- *  @{
- */
-
-_STATIC void odp_mb_release(void)
-{
-	__atomic_thread_fence(__ATOMIC_RELEASE);
-}
-
-_STATIC void odp_mb_acquire(void)
-{
-	__atomic_thread_fence(__ATOMIC_ACQUIRE);
-}
-
-_STATIC void odp_mb_full(void)
-{
-	__atomic_thread_fence(__ATOMIC_SEQ_CST);
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/thread_types.h b/platform/linux-generic/include/odp/api/plat/thread_types.h
deleted file mode 100644
index 33af4598..00000000
--- a/platform/linux-generic/include/odp/api/plat/thread_types.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP thread
- */
-
-#ifndef ODP_THREAD_TYPES_H_
-#define ODP_THREAD_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_thread
- *  @{
- */
-
-#define ODP_THREAD_COUNT_MAX 128
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/thrmask_types.h b/platform/linux-generic/include/odp/api/plat/thrmask_types.h
deleted file mode 100644
index 5d93890c..00000000
--- a/platform/linux-generic/include/odp/api/plat/thrmask_types.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP thread masks
- */
-
-#ifndef ODP_THRMASK_TYPES_H_
-#define ODP_THRMASK_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_thread
- *  @{
- */
-
-#include <odp/api/cpumask.h>
-
-/**
- * Minimum size of output buffer for odp_thrmask_to_str()
- */
-#define ODP_THRMASK_STR_SIZE ODP_CPUMASK_STR_SIZE
-
-/**
- * Thread mask
- *
- * Don't access directly, use access functions.
- */
-typedef struct odp_thrmask_t {
-	odp_cpumask_t m; /**< @private Mask*/
-} odp_thrmask_t;
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/ticketlock_types.h b/platform/linux-generic/include/odp/api/plat/ticketlock_types.h
deleted file mode 100644
index 81d479d6..00000000
--- a/platform/linux-generic/include/odp/api/plat/ticketlock_types.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP ticketlock
- */
-
-#ifndef ODP_TICKETLOCK_TYPES_H_
-#define ODP_TICKETLOCK_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/atomic.h>
-
-/** @internal */
-struct odp_ticketlock_s {
-	odp_atomic_u32_t  next_ticket; /**< Next ticket */
-	odp_atomic_u32_t  cur_ticket;  /**< Current ticket */
-};
-
-typedef struct odp_ticketlock_s odp_ticketlock_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/time_types.h b/platform/linux-generic/include/odp/api/plat/time_types.h
deleted file mode 100644
index 4847f3b1..00000000
--- a/platform/linux-generic/include/odp/api/plat/time_types.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP time service
- */
-
-#ifndef ODP_TIME_TYPES_H_
-#define ODP_TIME_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @addtogroup odp_time
- *  @{
- **/
-
-/**
- * @internal Time structure used to isolate odp-linux implementation from
- * the linux timespec structure, which is dependent on POSIX extension level.
- */
-typedef struct odp_time_t {
-	int64_t tv_sec;      /**< @internal Seconds */
-	int64_t tv_nsec;     /**< @internal Nanoseconds */
-} odp_time_t;
-
-#define ODP_TIME_NULL ((odp_time_t){0, 0})
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/timer_types.h b/platform/linux-generic/include/odp/api/plat/timer_types.h
deleted file mode 100644
index 8821bed6..00000000
--- a/platform/linux-generic/include/odp/api/plat/timer_types.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP timer service
- */
-
-#ifndef ODP_TIMER_TYPES_H_
-#define ODP_TIMER_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_timer
- *  @{
- **/
-
-struct odp_timer_pool_s; /**< Forward declaration */
-
-typedef struct odp_timer_pool_s *odp_timer_pool_t;
-
-#define ODP_TIMER_POOL_INVALID NULL
-
-#define ODP_TIMER_POOL_NAME_LEN  32
-
-typedef ODP_HANDLE_T(odp_timer_t);
-
-#define ODP_TIMER_INVALID _odp_cast_scalar(odp_timer_t, 0xffffffff)
-
-typedef ODP_HANDLE_T(odp_timeout_t);
-
-#define ODP_TIMEOUT_INVALID  _odp_cast_scalar(odp_timeout_t, 0xffffffff)
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/traffic_mngr_types.h b/platform/linux-generic/include/odp/api/plat/traffic_mngr_types.h
deleted file mode 100644
index b766afec..00000000
--- a/platform/linux-generic/include/odp/api/plat/traffic_mngr_types.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP traffic mngr
- */
-
-#ifndef ODP_TRAFFIC_MNGR_TYPES_H_
-#define ODP_TRAFFIC_MNGR_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/strong_types.h>
-
-/** @addtogroup odp_traffic_mngr
- *  Macros and operations on a TM system.
- *  @{
- */
-
-/** The ODP_TM_MAX_NUM_SYSTEMS constant specifies the maximum number of TM
- * systems that may be created.  On some platforms this might be much more
- * limited to as little as one hardware TM system.
- */
-#define ODP_TM_MAX_NUM_SYSTEMS   64
-
-/** The ODP_TM_MAX_PRIORITIES constant specifies the largest range of
- * priorities that any TM system can support.  All strict priority values MUST
- * in the range 0..ODP_TM_MAX_PRIORITIES-1.
- */
-#define ODP_TM_MAX_PRIORITIES  16
-
-/** The ODP_TM MAX_LEVELS constant specifies the largest range of
- * tm_node levels that any TM system can support.  Hence all tm_node level
- * values MUST be in the range 0..ODP_TM_MAX_LEVELS-1.  Smaller tm_node
- * levels are associated with tm_nodes closer to the TM system egress.
- */
-#define ODP_TM_MAX_LEVELS  8
-
-/**
- * The smallest SCHED weight is 1 (i.e. 0 is not a legal WFQ/WRR value).
- */
-#define ODP_TM_MIN_SCHED_WEIGHT  1
-
-/** The ODP_TM_MAX_SCHED_WEIGHT constant is the largest weight any TM system
- * can support (at least from a configuration standpoint).  A given TM system
- * could have a smaller value.
- */
-#define ODP_TM_MAX_SCHED_WEIGHT  255
-
-/** The ODP_TM_MAX_TM_QUEUES constant is the largest number of tm_queues
- * that can handled by any one TM system.
- */
-#define ODP_TM_MAX_TM_QUEUES  (16 * 1024 * 1024)
-
-/** The ODP_TM_MAX_NUM_OUTPUTS constant is the largest number of outputs that
- * can be configured for any one TM system.
- */
-#define ODP_TM_MAX_NUM_OUTPUTS  256
-
-/** The ODP_TM_MAX_NUM_TM_NODES constant is the largest number of tm_nodes that
- * can be in existence for any one TM system.
- */
-#define ODP_TM_MAX_NUM_TM_NODES  (1024 * 1024)
-
-/** The ODP_TM_MAX_TM_NODE_FANIN constant is the largest number of fan-in
- * "inputs" that can be simultaneously connected to a single tm_node.
- * *TBD* Does this need to be as large as ODP_TM_MAX_TM_QUEUES? *TBD*
- */
-#define ODP_TM_MAX_TM_NODE_FANIN  (1024 * 1024)
-
-/** The ODP_TM_MIN_SHAPER_BW constant is the smallest amount of bandwidth that
- * can a shaper's peak or commit rate can be set to.  It is in units of
- * 1000 bytes/second so that it and the ODP_TM_MAX_SHAPER_BW can both fit in
- * 32 bits.
- */
-#define ODP_TM_MIN_SHAPER_BW  1
-
-/** The ODP_TM_MAX_SHAPER_BW constant is the largest amound of bandwidth that
- * any shaper's peak or commit rate can be set to.  It is in units of
- * 1000 bytes/second so that it and the ODP_TM_MIN_SHAPER_BW can both fit in
- * 32 bits.
- */
-#define ODP_TM_MAX_SHAPER_BW  12500000
-
-/** The ODP_NUM_SHAPER_COLORS constant just counts the number of enumeration
- * values defined in the odp_tm_shaper_color_t type.
- */
-#define ODP_NUM_SHAPER_COLORS  3
-
-/** The INVALID_PRIORITY constant is used when one needs to indicate an
- * invalid priority value.
- */
-#define ODP_TM_INVALID_PRIORITY  255
-
-/** The odp_tm_percent_t type is used when specifying fields that are
- * percentages.  It is a fixed point integer whose units are 1/100 of a
- * percent.  Hence 100% is represented as the integer value 10000.  Note
- * that because it is often used as a ratio of the current queue value and
- * maximum queue threshold, it can be > 100%, but in any event will never
- * be larger than 500% (i.e. it MUST be capped at 50000).
- */
-typedef uint16_t odp_tm_percent_t;
-
-/** The odp_tm_handle_t type is a generic type that can stand for any of the
- * other ODP_TM handle types.
- */
-typedef uint64_t odp_tm_handle_t;
-
-/** Each odp_tm_t value represents a specific TM system.  Almost all
- * functions in this API require a odp_tm_t value - either directly
- * as a function parameter or indirectly by having another ODP TM handle value
- * as a function parameter.
- */
-typedef odp_tm_handle_t odp_tm_t;
-
-/** Each odp_tm_queue_t value is an opaque ODP handle representing a specific
- * tm_queue within a specific TM system.
- */
-typedef odp_tm_handle_t odp_tm_queue_t;
-
-/** Each odp_tm_node_t value is an opaque ODP handle representing a specific
- * tm_node within a specific TM system.
- */
-typedef odp_tm_handle_t odp_tm_node_t;
-
-/** Each odp_tm_shaper_t value is an opaque ODP handle representing a specific
- * shaper profile usable across all TM systems described by this API.  A given
- * shaper profile can then be attached to any tm_queue or tm_node.
- */
-typedef odp_tm_handle_t odp_tm_shaper_t;
-
-/** Each odp_tm_sched_t value is an opaque ODP handle representing a specific
- * tm_node scheduler profile usable across all TM systems described by this
- * API.  A given tm_node scheduler profile can then be attached to any tm_node.
- */
-typedef odp_tm_handle_t odp_tm_sched_t;
-
-/** Each odp_tm_threshold_t value is an opaque ODP handle representing a
- * specific queue threshold profile usable across all TM systems described by
- * this API.  A given queue threshold profile can then be attached to any
- * tm_queue or tm_node.
- */
-typedef odp_tm_handle_t odp_tm_threshold_t;
-
-/** Each odp_tm_wred_t value is an opaque ODP handle representing a specific
- * WRED profile usable across all TM systems described by this API.  A given
- * WRED profile can then be attached to any tm_queue or tm_node.
- */
-typedef odp_tm_handle_t odp_tm_wred_t;
-
-/** The ODP_TM_INVALID constant can be used with any ODP TM handle type and
- * indicates that this value does NOT represent a valid TM object.
- */
-#define ODP_TM_INVALID  0
-
-/**
- * @def ODP_TM_ROOT
- * Constant that is used to refer to the egress/root node of the TM subsystem's
- * tree/hierarchy of nodes.
- */
-#define ODP_TM_ROOT  ((odp_tm_handle_t)-1)
-
-/** Get printable format of odp_queue_t */
-static inline uint64_t odp_tm_handle_to_u64(odp_tm_handle_t hdl)
-{
-	return hdl;
-}
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/plat/version_types.h b/platform/linux-generic/include/odp/api/plat/version_types.h
deleted file mode 100644
index e3327eb3..00000000
--- a/platform/linux-generic/include/odp/api/plat/version_types.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#ifndef ODP_VERSION_TYPESH_
-#define ODP_VERSION_TYPESH_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @internal Version string expand */
-#define ODP_VERSION_STR_EXPAND(x)  #x
-
-/** @internal Version to string */
-#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
-
-/** @internal API version string */
-#define ODP_VERSION_API_STR \
-ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
-ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
-ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/pool.h b/platform/linux-generic/include/odp/api/pool.h
deleted file mode 100644
index d712b650..00000000
--- a/platform/linux-generic/include/odp/api/pool.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP pool
- */
-
-#ifndef ODP_PLAT_POOL_H_
-#define ODP_PLAT_POOL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_buffer
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/plat/pool_types.h>
-#include <odp/api/plat/shared_memory_types.h>
-#include <odp/api/plat/event_types.h>
-#include <odp/api/spec/pool.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/queue.h b/platform/linux-generic/include/odp/api/queue.h
deleted file mode 100644
index a5cf8734..00000000
--- a/platform/linux-generic/include/odp/api/queue.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP queue
- */
-
-#ifndef ODP_PLAT_QUEUE_H_
-#define ODP_PLAT_QUEUE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/event_types.h>
-#include <odp/api/plat/queue_types.h>
-#include <odp/api/plat/buffer_types.h>
-#include <odp/api/plat/pool_types.h>
-
-/** @ingroup odp_queue
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/queue.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/random.h b/platform/linux-generic/include/odp/api/random.h
deleted file mode 100644
index c8529b3f..00000000
--- a/platform/linux-generic/include/odp/api/random.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP random number API
- */
-
-#ifndef ODP_PLAT_RANDOM_H_
-#define ODP_PLAT_RANDOM_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_random ODP RANDOM
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/random.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/rwlock.h b/platform/linux-generic/include/odp/api/rwlock.h
deleted file mode 100644
index 4a86173f..00000000
--- a/platform/linux-generic/include/odp/api/rwlock.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP RW Locks
- */
-
-#ifndef ODP_PLAT_RWLOCK_H_
-#define ODP_PLAT_RWLOCK_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/rwlock_types.h>
-
-#include <odp/api/spec/rwlock.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ODP_RWLOCK_H_ */
diff --git a/platform/linux-generic/include/odp/api/rwlock_recursive.h b/platform/linux-generic/include/odp/api/rwlock_recursive.h
deleted file mode 100644
index 4a081532..00000000
--- a/platform/linux-generic/include/odp/api/rwlock_recursive.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP resursive read/write lock
- */
-
-#ifndef ODP_PLAT_RWLOCK_RECURSIVE_H_
-#define ODP_PLAT_RWLOCK_RECURSIVE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/rwlock_recursive_types.h>
-
-#include <odp/api/spec/rwlock_recursive.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/schedule.h b/platform/linux-generic/include/odp/api/schedule.h
deleted file mode 100644
index 00264851..00000000
--- a/platform/linux-generic/include/odp/api/schedule.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP schedule
- */
-
-#ifndef ODP_PLAT_SCHEDULE_H_
-#define ODP_PLAT_SCHEDULE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/schedule_types.h>
-
-/** @ingroup odp_scheduler
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/schedule.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/schedule_types.h b/platform/linux-generic/include/odp/api/schedule_types.h
deleted file mode 100644
index 536007d6..00000000
--- a/platform/linux-generic/include/odp/api/schedule_types.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP schedule
- */
-
-#ifndef ODP_PLAT_SCHEDULE_TYPES_H_
-#define ODP_PLAT_SCHEDULE_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/schedule_types.h>
-
-#include <odp/api/spec/schedule_types.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/shared_memory.h b/platform/linux-generic/include/odp/api/shared_memory.h
deleted file mode 100644
index affc290e..00000000
--- a/platform/linux-generic/include/odp/api/shared_memory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2013-2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP shared memory
- */
-
-#ifndef ODP_PLAT_SHARED_MEMORY_H_
-#define ODP_PLAT_SHARED_MEMORY_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/shared_memory_types.h>
-
-/** @ingroup odp_shared_memory
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/shared_memory.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/spinlock.h b/platform/linux-generic/include/odp/api/spinlock.h
deleted file mode 100644
index 830f4edd..00000000
--- a/platform/linux-generic/include/odp/api/spinlock.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP spinlock
- */
-
-#ifndef ODP_PLAT_SPINLOCK_H_
-#define ODP_PLAT_SPINLOCK_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/spinlock_types.h>
-
-#include <odp/api/spec/spinlock.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/spinlock_recursive.h b/platform/linux-generic/include/odp/api/spinlock_recursive.h
deleted file mode 100644
index d97b0173..00000000
--- a/platform/linux-generic/include/odp/api/spinlock_recursive.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP resursive spinlock
- */
-
-#ifndef ODP_PLAT_SPINLOCK_RECURSIVE_H_
-#define ODP_PLAT_SPINLOCK_RECURSIVE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/spinlock_recursive_types.h>
-
-#include <odp/api/spec/spinlock_recursive.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/std_clib.h b/platform/linux-generic/include/odp/api/std_clib.h
deleted file mode 100644
index fea47254..00000000
--- a/platform/linux-generic/include/odp/api/std_clib.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#ifndef ODP_PLAT_STD_CLIB_H_
-#define ODP_PLAT_STD_CLIB_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/spec/std_types.h>
-#include <string.h>
-
-#include <odp/api/plat/static_inline.h>
-#if ODP_ABI_COMPAT == 0
-#include <odp/api/plat/std_clib_inlines.h>
-#endif
-
-#include <odp/api/spec/std_clib.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/std_types.h b/platform/linux-generic/include/odp/api/std_types.h
deleted file mode 100644
index b61f33f4..00000000
--- a/platform/linux-generic/include/odp/api/std_types.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * Standard C language types and definitions for ODP.
- */
-
-#ifndef ODP_PLAT_STD_TYPES_H_
-#define ODP_PLAT_STD_TYPES_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* uint64_t, uint32_t, etc */
-#include <stdint.h>
-
-/* true and false for odp_bool_t */
-#include <stdbool.h>
-
-/** @addtogroup odp_system ODP SYSTEM
- *  @{
- */
-
-typedef int odp_bool_t;
-
-/**
- * @}
- */
-
-#include <odp/api/spec/std_types.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/sync.h b/platform/linux-generic/include/odp/api/sync.h
deleted file mode 100644
index e1afcc72..00000000
--- a/platform/linux-generic/include/odp/api/sync.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP synchronisation
- */
-
-#ifndef ODP_PLAT_SYNC_H_
-#define ODP_PLAT_SYNC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_barrier
- *  @{
- */
-
-#include <odp/api/plat/static_inline.h>
-#if ODP_ABI_COMPAT == 0
-#include <odp/api/plat/sync_inlines.h>
-#endif
-
-/**
- * @}
- */
-
-#include <odp/api/spec/sync.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/system_info.h b/platform/linux-generic/include/odp/api/system_info.h
deleted file mode 100644
index 36ddc814..00000000
--- a/platform/linux-generic/include/odp/api/system_info.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP system information
- */
-
-#ifndef ODP_PLAT_SYSTEM_INFO_H_
-#define ODP_PLAT_SYSTEM_INFO_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-
-
-#include <odp/api/spec/system_info.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/thread.h b/platform/linux-generic/include/odp/api/thread.h
deleted file mode 100644
index c54abc89..00000000
--- a/platform/linux-generic/include/odp/api/thread.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP thread API
- */
-
-#ifndef ODP_PLAT_THREAD_H_
-#define ODP_PLAT_THREAD_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/thread_types.h>
-
-#include <odp/api/spec/thread.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/thrmask.h b/platform/linux-generic/include/odp/api/thrmask.h
deleted file mode 100644
index b1c20777..00000000
--- a/platform/linux-generic/include/odp/api/thrmask.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP thread masks
- */
-
-#ifndef ODP_PLAT_THRMASK_H_
-#define ODP_PLAT_THRMASK_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/thrmask_types.h>
-
-/** @ingroup odp_thread
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/thrmask.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/ticketlock.h b/platform/linux-generic/include/odp/api/ticketlock.h
deleted file mode 100644
index 85be4bc5..00000000
--- a/platform/linux-generic/include/odp/api/ticketlock.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP ticketlock
- */
-
-#ifndef ODP_PLAT_TICKETLOCK_H_
-#define ODP_PLAT_TICKETLOCK_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/ticketlock_types.h>
-
-#include <odp/api/spec/ticketlock.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/time.h b/platform/linux-generic/include/odp/api/time.h
deleted file mode 100644
index 8d1c33e6..00000000
--- a/platform/linux-generic/include/odp/api/time.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP time
- */
-
-#ifndef ODP_PLAT_TIME_H_
-#define ODP_PLAT_TIME_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-
-
-
-#include <odp/api/plat/time_types.h>
-#include <odp/api/spec/time.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/timer.h b/platform/linux-generic/include/odp/api/timer.h
deleted file mode 100644
index 1450727f..00000000
--- a/platform/linux-generic/include/odp/api/timer.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP timer service
- */
-
-#ifndef ODP_PLAT_TIMER_H_
-#define ODP_PLAT_TIMER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/std_types.h>
-#include <odp/api/plat/event_types.h>
-#include <odp/api/plat/pool_types.h>
-#include <odp/api/plat/queue_types.h>
-#include <odp/api/plat/timer_types.h>
-
-/** @ingroup odp_timer
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/spec/timer.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/traffic_mngr.h b/platform/linux-generic/include/odp/api/traffic_mngr.h
deleted file mode 100644
index 3e6f5fbb..00000000
--- a/platform/linux-generic/include/odp/api/traffic_mngr.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP Traffic manager
- */
-
-#ifndef ODP_PLAT_TRAFFIC_MNGR_H_
-#define ODP_PLAT_TRAFFIC_MNGR_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @ingroup odp_traffic_mngr
- *  @{
- */
-
-/**
- * @}
- */
-
-#include <odp/api/plat/traffic_mngr_types.h>
-#include <odp/api/spec/traffic_mngr.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/api/version.h b/platform/linux-generic/include/odp/api/version.h
deleted file mode 100644
index fc4ea586..00000000
--- a/platform/linux-generic/include/odp/api/version.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP version
- */
-
-#ifndef ODP_PLAT_VERSION_H_
-#define ODP_PLAT_VERSION_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/api/plat/version_types.h>
-#include <odp/api/spec/version.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp_align_internal.h b/platform/linux-generic/include/odp_align_internal.h
index 61ff200c..4fae910f 100644
--- a/platform/linux-generic/include/odp_align_internal.h
+++ b/platform/linux-generic/include/odp_align_internal.h
@@ -17,7 +17,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/align.h>
 #include <stdint.h>
 
 /* Macros to calculate ODP_ROUNDUP_POWER2_U32() in five rounds of shift
diff --git a/platform/linux-generic/include/odp_atomic_internal.h b/platform/linux-generic/include/odp_atomic_internal.h
index dca2175c..ff1d9b4b 100644
--- a/platform/linux-generic/include/odp_atomic_internal.h
+++ b/platform/linux-generic/include/odp_atomic_internal.h
@@ -16,10 +16,6 @@
 #ifndef ODP_ATOMIC_INTERNAL_H_
 #define ODP_ATOMIC_INTERNAL_H_
 
-#include <odp/api/std_types.h>
-#include <odp/api/align.h>
-#include <odp/api/hints.h>
-#include <odp/api/atomic.h>
 #include <stdbool.h>
 
 #ifdef __cplusplus
diff --git a/platform/linux-generic/include/odp_buffer_internal.h b/platform/linux-generic/include/odp_buffer_internal.h
index 076abe96..9bb55621 100644
--- a/platform/linux-generic/include/odp_buffer_internal.h
+++ b/platform/linux-generic/include/odp_buffer_internal.h
@@ -18,17 +18,8 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-#include <odp/api/atomic.h>
-#include <odp/api/pool.h>
-#include <odp/api/buffer.h>
-#include <odp/api/debug.h>
-#include <odp/api/align.h>
 #include <odp_align_internal.h>
 #include <odp_config_internal.h>
-#include <odp/api/byteorder.h>
-#include <odp/api/thread.h>
-#include <odp/api/event.h>
 #include <odp_forward_typedefs_internal.h>
 #include <odp_schedule_if.h>
 #include <stddef.h>
diff --git a/platform/linux-generic/include/odp_classification_datamodel.h b/platform/linux-generic/include/odp_classification_datamodel.h
index f6393ee7..d108c184 100644
--- a/platform/linux-generic/include/odp_classification_datamodel.h
+++ b/platform/linux-generic/include/odp_classification_datamodel.h
@@ -19,8 +19,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/spinlock.h>
-#include <odp/api/classification.h>
 #include <odp_pool_internal.h>
 #include <odp_packet_internal.h>
 #include <odp_packet_io_internal.h>
diff --git a/platform/linux-generic/include/odp_classification_inlines.h b/platform/linux-generic/include/odp_classification_inlines.h
index b839197a..01a2ad3b 100644
--- a/platform/linux-generic/include/odp_classification_inlines.h
+++ b/platform/linux-generic/include/odp_classification_inlines.h
@@ -18,7 +18,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/debug.h>
 #include <protocols/eth.h>
 #include <protocols/ip.h>
 #include <protocols/ipsec.h>
diff --git a/platform/linux-generic/include/odp_classification_internal.h b/platform/linux-generic/include/odp_classification_internal.h
index 78eaac90..e06efcb9 100644
--- a/platform/linux-generic/include/odp_classification_internal.h
+++ b/platform/linux-generic/include/odp_classification_internal.h
@@ -19,10 +19,7 @@
 extern "C" {
 #endif
 
-#include <odp/api/classification.h>
-#include <odp/api/queue.h>
 #include <odp_packet_internal.h>
-#include <odp/api/packet_io.h>
 #include <odp_packet_io_internal.h>
 #include <odp_classification_datamodel.h>
 
diff --git a/platform/linux-generic/include/odp_debug_internal.h b/platform/linux-generic/include/odp_debug_internal.h
index 02ae87a9..6d443881 100644
--- a/platform/linux-generic/include/odp_debug_internal.h
+++ b/platform/linux-generic/include/odp_debug_internal.h
@@ -18,8 +18,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <odp/api/debug.h>
 #include <odp_internal.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h
index b313b1fe..e10fe7bf 100644
--- a/platform/linux-generic/include/odp_internal.h
+++ b/platform/linux-generic/include/odp_internal.h
@@ -17,9 +17,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/init.h>
-#include <odp/api/cpumask.h>
-#include <odp/api/thread.h>
 #include <stdio.h>
 #include <sys/types.h>
 
diff --git a/platform/linux-generic/include/odp_packet_dpdk.h b/platform/linux-generic/include/odp_packet_dpdk.h
index 4d7e0fc4..961a28f0 100644
--- a/platform/linux-generic/include/odp_packet_dpdk.h
+++ b/platform/linux-generic/include/odp_packet_dpdk.h
@@ -7,10 +7,6 @@
 #ifndef ODP_PACKET_DPDK_H
 #define ODP_PACKET_DPDK_H
 
-#include <odp/api/packet_io.h>
-#include <odp/api/pool.h>
-#include <odp/api/ticketlock.h>
-
 #include <net/if.h>
 
 #ifdef ODP_PKTIO_DPDK
diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h
index e6e9d744..0f334fe7 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -17,14 +17,9 @@
 extern "C" {
 #endif
 
-#include <odp/api/align.h>
-#include <odp/api/debug.h>
 #include <odp_buffer_internal.h>
 #include <odp_pool_internal.h>
 #include <odp_buffer_inlines.h>
-#include <odp/api/packet.h>
-#include <odp/api/packet_io.h>
-#include <odp/api/crypto.h>
 #include <odp_crypto_internal.h>
 
 /** Minimum segment length expected by packet_parse_common() */
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index 89bb6f3a..a086c043 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -18,15 +18,12 @@
 extern "C" {
 #endif
 
-#include <odp/api/spinlock.h>
-#include <odp/api/ticketlock.h>
 #include <odp_classification_datamodel.h>
 #include <odp_align_internal.h>
 #include <odp_debug_internal.h>
 #include <odp_packet_io_ring_internal.h>
 
 #include <odp_config_internal.h>
-#include <odp/api/hints.h>
 #include <net/if.h>
 
 #define PKTIO_MAX_QUEUES 64
diff --git a/platform/linux-generic/include/odp_packet_io_ipc_internal.h b/platform/linux-generic/include/odp_packet_io_ipc_internal.h
index 7cd29488..60390f54 100644
--- a/platform/linux-generic/include/odp_packet_io_ipc_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_ipc_internal.h
@@ -4,12 +4,9 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/packet_io.h>
 #include <odp_packet_io_internal.h>
-#include <odp/api/packet.h>
 #include <odp_packet_internal.h>
 #include <odp_internal.h>
-#include <odp/api/shared_memory.h>
 
 #include <string.h>
 #include <unistd.h>
diff --git a/platform/linux-generic/include/odp_packet_io_ring_internal.h b/platform/linux-generic/include/odp_packet_io_ring_internal.h
index d044f931..374e164a 100644
--- a/platform/linux-generic/include/odp_packet_io_ring_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_ring_internal.h
@@ -96,9 +96,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/std_types.h>
-#include <odp/api/hints.h>
-#include <odp/api/atomic.h>
 #include <errno.h>
 #include <sys/queue.h>
 #include <odp_debug_internal.h>
diff --git a/platform/linux-generic/include/odp_packet_netmap.h b/platform/linux-generic/include/odp_packet_netmap.h
index a6f68d56..f14faf2c 100644
--- a/platform/linux-generic/include/odp_packet_netmap.h
+++ b/platform/linux-generic/include/odp_packet_netmap.h
@@ -7,11 +7,6 @@
 #ifndef ODP_PACKET_NETMAP_H
 #define ODP_PACKET_NETMAP_H
 
-#include <odp/api/align.h>
-#include <odp/api/debug.h>
-#include <odp/api/packet_io.h>
-#include <odp/api/pool.h>
-#include <odp/api/ticketlock.h>
 #include <odp_align_internal.h>
 
 #include <linux/if_ether.h>
diff --git a/platform/linux-generic/include/odp_packet_socket.h b/platform/linux-generic/include/odp_packet_socket.h
index dbfc9f1f..081fd431 100644
--- a/platform/linux-generic/include/odp_packet_socket.h
+++ b/platform/linux-generic/include/odp_packet_socket.h
@@ -14,13 +14,6 @@
 #include <string.h>
 #include <stddef.h>
 
-#include <odp/api/align.h>
-#include <odp/api/buffer.h>
-#include <odp/api/debug.h>
-#include <odp/api/pool.h>
-#include <odp/api/packet.h>
-#include <odp/api/packet_io.h>
-
 #include <linux/version.h>
 
 /*
diff --git a/platform/linux-generic/include/odp_packet_tap.h b/platform/linux-generic/include/odp_packet_tap.h
index a90bfbce..5350cf24 100644
--- a/platform/linux-generic/include/odp_packet_tap.h
+++ b/platform/linux-generic/include/odp_packet_tap.h
@@ -7,8 +7,6 @@
 #ifndef ODP_PACKET_TAP_H_
 #define ODP_PACKET_TAP_H_
 
-#include <odp/api/pool.h>
-
 typedef struct {
 	int fd;				/**< file descriptor for tap interface*/
 	int skfd;			/**< socket descriptor */
diff --git a/platform/linux-generic/include/odp_pool_internal.h b/platform/linux-generic/include/odp_pool_internal.h
index b0805ac3..068c9933 100644
--- a/platform/linux-generic/include/odp_pool_internal.h
+++ b/platform/linux-generic/include/odp_pool_internal.h
@@ -18,9 +18,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/shared_memory.h>
-#include <odp/api/ticketlock.h>
-
 #include <odp_buffer_internal.h>
 #include <odp_config_internal.h>
 #include <odp_ring_internal.h>
diff --git a/platform/linux-generic/include/odp_queue_internal.h b/platform/linux-generic/include/odp_queue_internal.h
index 560f826e..98c3eaa3 100644
--- a/platform/linux-generic/include/odp_queue_internal.h
+++ b/platform/linux-generic/include/odp_queue_internal.h
@@ -18,15 +18,10 @@
 extern "C" {
 #endif
 
-#include <odp/api/queue.h>
 #include <odp_forward_typedefs_internal.h>
 #include <odp_schedule_if.h>
 #include <odp_buffer_internal.h>
 #include <odp_align_internal.h>
-#include <odp/api/packet_io.h>
-#include <odp/api/align.h>
-#include <odp/api/hints.h>
-#include <odp/api/ticketlock.h>
 #include <odp_config_internal.h>
 
 #define QUEUE_MULTI_MAX CONFIG_BURST_SIZE
diff --git a/platform/linux-generic/include/odp_ring_internal.h b/platform/linux-generic/include/odp_ring_internal.h
index 55fedeb3..986c335e 100644
--- a/platform/linux-generic/include/odp_ring_internal.h
+++ b/platform/linux-generic/include/odp_ring_internal.h
@@ -11,8 +11,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/atomic.h>
-#include <odp/api/hints.h>
 #include <odp_align_internal.h>
 
 /* Ring empty, not a valid data value. */
diff --git a/platform/linux-generic/include/odp_schedule_if.h b/platform/linux-generic/include/odp_schedule_if.h
index 6c2b0501..28ceb6d3 100644
--- a/platform/linux-generic/include/odp_schedule_if.h
+++ b/platform/linux-generic/include/odp_schedule_if.h
@@ -11,9 +11,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/queue.h>
-#include <odp/api/schedule.h>
-
 typedef void (*schedule_pktio_start_fn_t)(int pktio_index, int num_in_queue,
 					  int in_queue_idx[]);
 typedef int (*schedule_thr_add_fn_t)(odp_schedule_group_t group, int thr);
diff --git a/platform/linux-generic/include/odp_shm_internal.h b/platform/linux-generic/include/odp_shm_internal.h
index 8bd105d9..93b3bb52 100644
--- a/platform/linux-generic/include/odp_shm_internal.h
+++ b/platform/linux-generic/include/odp_shm_internal.h
@@ -11,8 +11,6 @@
 extern "C" {
 #endif
 
-#include <odp/api/shared_memory.h>
-
 #define SHM_DEVNAME_MAXLEN (ODP_SHM_NAME_LEN + 16)
 #define SHM_DEVNAME_FORMAT "/odp-%d-%s" /* /dev/shm/odp-<pid>-<name> */
 
diff --git a/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h b/platform/linux-generic/include/odp_ticketlock_internal.h
similarity index 90%
rename from platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h
rename to platform/linux-generic/include/odp_ticketlock_internal.h
index 87432a71..37fa0f9d 100644
--- a/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h
+++ b/platform/linux-generic/include/odp_ticketlock_internal.h
@@ -1,22 +1,15 @@
-/* Copyright (c) 2016, Linaro Limited
+/* Copyright (c) 2013, Linaro Limited
  * All rights reserved.
  *
- * SPDX-License-Identifier: BSD-3-Clause
+ * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-/**
- * @file
- *
- * Ticketlock inline functions
- */
+#ifndef ODP_TICKETLOCK_INTERNAL_H_
+#define ODP_TICKETLOCK_INTERNAL_H_
 
-#ifndef _ODP_PLAT_TICKETLOCK_INLINES_H_
-#define _ODP_PLAT_TICKETLOCK_INLINES_H_
-
-#include <odp/api/ticketlock.h>
-#include <odp/api/atomic.h>
-#include <odp/api/sync.h>
-#include <odp/api/cpu.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /** @internal
  * Acquire ticket lock.
@@ -110,4 +103,8 @@ static inline int _odp_ticketlock_is_locked(odp_ticketlock_t *ticketlock)
 		odp_atomic_load_u32(&ticketlock->next_ticket);
 }
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/platform/linux-generic/include/odp_timer_internal.h b/platform/linux-generic/include/odp_timer_internal.h
index 91b12c54..642e55fd 100644
--- a/platform/linux-generic/include/odp_timer_internal.h
+++ b/platform/linux-generic/include/odp_timer_internal.h
@@ -14,11 +14,8 @@
 #ifndef ODP_TIMER_INTERNAL_H_
 #define ODP_TIMER_INTERNAL_H_
 
-#include <odp/api/align.h>
-#include <odp/api/debug.h>
 #include <odp_buffer_internal.h>
 #include <odp_pool_internal.h>
-#include <odp/api/timer.h>
 
 /**
  * Internal Timeout header
diff --git a/platform/linux-generic/include/odp_traffic_mngr_internal.h b/platform/linux-generic/include/odp_traffic_mngr_internal.h
index 9f821fe4..6bc53d77 100644
--- a/platform/linux-generic/include/odp_traffic_mngr_internal.h
+++ b/platform/linux-generic/include/odp_traffic_mngr_internal.h
@@ -20,8 +20,6 @@ extern "C" {
 #endif
 
 #include <pthread.h>
-#include <odp/api/traffic_mngr.h>
-#include <odp/api/packet_io.h>
 #include <odp_name_table_internal.h>
 #include <odp_timer_wheel_internal.h>
 #include <odp_pkt_queue_internal.h>
diff --git a/platform/linux-generic/include/odp_version_internal.h b/platform/linux-generic/include/odp_version_internal.h
new file mode 100644
index 00000000..3aa54998
--- /dev/null
+++ b/platform/linux-generic/include/odp_version_internal.h
@@ -0,0 +1,26 @@
+/* Copyright (c) 2013, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+#ifndef ODP_VERSION_INTERNAL_H_
+#define ODP_VERSION_INTERNAL_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ODP_VERSION_STR_EXPAND(x) #x
+#define ODP_VERSION_TO_STR(x) ODP_VERSION_STR_EXPAND(x)
+
+#define ODP_VERSION_API_STR \
+	ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
+	ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
+	ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4
index d3e5528c..1b1b883d 100644
--- a/platform/linux-generic/m4/configure.m4
+++ b/platform/linux-generic/m4/configure.m4
@@ -36,5 +36,4 @@ m4_include([platform/linux-generic/m4/odp_dpdk.m4])
 m4_include([platform/linux-generic/m4/odp_ipc.m4])
 m4_include([platform/linux-generic/m4/odp_schedule.m4])
 
-AC_CONFIG_FILES([platform/linux-generic/Makefile
-                 platform/linux-generic/include/odp/api/plat/static_inline.h])
+AC_CONFIG_FILES([platform/linux-generic/Makefile])
diff --git a/platform/linux-generic/odp_atomic.c b/platform/linux-generic/odp_atomic.c
index 0e40cda5..cfae4ad3 100644
--- a/platform/linux-generic/odp_atomic.c
+++ b/platform/linux-generic/odp_atomic.c
@@ -4,10 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/atomic.h>
-#if ODP_ABI_COMPAT == 1
-#include <odp/api/plat/atomic_inlines.h>
-#endif
+#include <odp_api.h>
 
 int odp_atomic_lock_free_u64(odp_atomic_op_t *atomic_op)
 {
diff --git a/platform/linux-generic/odp_barrier.c b/platform/linux-generic/odp_barrier.c
index a2c62676..f680f594 100644
--- a/platform/linux-generic/odp_barrier.c
+++ b/platform/linux-generic/odp_barrier.c
@@ -4,10 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/barrier.h>
-#include <odp/api/sync.h>
-#include <odp/api/cpu.h>
-#include <odp/api/atomic.h>
+#include <odp_api.h>
 
 void odp_barrier_init(odp_barrier_t *barrier, int count)
 {
diff --git a/platform/linux-generic/odp_buffer.c b/platform/linux-generic/odp_buffer.c
index b7910397..a2ff9748 100644
--- a/platform/linux-generic/odp_buffer.c
+++ b/platform/linux-generic/odp_buffer.c
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/buffer.h>
+#include <odp_api.h>
+
 #include <odp_pool_internal.h>
 #include <odp_buffer_internal.h>
 #include <odp_buffer_inlines.h>
diff --git a/platform/linux-generic/odp_byteorder.c b/platform/linux-generic/odp_byteorder.c
deleted file mode 100644
index a344c53f..00000000
--- a/platform/linux-generic/odp_byteorder.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#include <odp/api/byteorder.h>
-#if ODP_ABI_COMPAT == 1
-#include <odp/api/plat/byteorder_inlines.h>
-#endif
diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c
index 50a7e547..f6c27c58 100644
--- a/platform/linux-generic/odp_classification.c
+++ b/platform/linux-generic/odp_classification.c
@@ -4,25 +4,20 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/classification.h>
-#include <odp/api/align.h>
-#include <odp/api/queue.h>
-#include <odp/api/debug.h>
+#include <odp_api.h>
+
 #include <odp_internal.h>
 #include <odp_debug_internal.h>
 #include <odp_packet_internal.h>
-#include <odp/api/packet_io.h>
 #include <odp_packet_io_internal.h>
 #include <odp_classification_datamodel.h>
 #include <odp_classification_inlines.h>
 #include <odp_classification_internal.h>
-#include <odp/api/shared_memory.h>
 #include <protocols/eth.h>
 #include <protocols/ip.h>
 #include <string.h>
 #include <errno.h>
 #include <stdbool.h>
-#include <odp/api/spinlock.h>
 
 #define LOCK(a)      odp_spinlock_lock(a)
 #define UNLOCK(a)    odp_spinlock_unlock(a)
diff --git a/platform/linux-generic/odp_cpu.c b/platform/linux-generic/odp_cpu.c
index 282defd4..b7d1fb00 100644
--- a/platform/linux-generic/odp_cpu.c
+++ b/platform/linux-generic/odp_cpu.c
@@ -4,8 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/cpu.h>
-#include <odp/api/hints.h>
+#include <odp_api.h>
 
 uint64_t odp_cpu_cycles_diff(uint64_t c2, uint64_t c1)
 {
diff --git a/platform/linux-generic/odp_cpumask.c b/platform/linux-generic/odp_cpumask.c
index 64559a6d..7d9dc68e 100644
--- a/platform/linux-generic/odp_cpumask.c
+++ b/platform/linux-generic/odp_cpumask.c
@@ -4,13 +4,13 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <sched.h>
 #include <pthread.h>
 
-#include <odp/api/cpumask.h>
-#include <odp/api/init.h>
 #include <odp_debug_internal.h>
 
 #include <stdlib.h>
diff --git a/platform/linux-generic/odp_cpumask_task.c b/platform/linux-generic/odp_cpumask_task.c
index 10885ce6..b8ed3914 100644
--- a/platform/linux-generic/odp_cpumask_task.c
+++ b/platform/linux-generic/odp_cpumask_task.c
@@ -4,12 +4,13 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <sched.h>
 #include <pthread.h>
 
-#include <odp/api/cpumask.h>
 #include <odp_debug_internal.h>
 
 int odp_cpumask_default_worker(odp_cpumask_t *mask, int num)
diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c
index 4f17fd66..ff7ca1d5 100644
--- a/platform/linux-generic/odp_crypto.c
+++ b/platform/linux-generic/odp_crypto.c
@@ -4,19 +4,12 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
-#include <odp/api/crypto.h>
 #include <odp_internal.h>
-#include <odp/api/atomic.h>
-#include <odp/api/spinlock.h>
-#include <odp/api/sync.h>
-#include <odp/api/debug.h>
-#include <odp/api/align.h>
-#include <odp/api/shared_memory.h>
 #include <odp_crypto_internal.h>
 #include <odp_debug_internal.h>
-#include <odp/api/hints.h>
-#include <odp/api/random.h>
 #include <odp_packet_internal.h>
 
 #include <string.h>
diff --git a/platform/linux-generic/odp_errno.c b/platform/linux-generic/odp_errno.c
index 408a4b95..11384bc8 100644
--- a/platform/linux-generic/odp_errno.c
+++ b/platform/linux-generic/odp_errno.c
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier:	BSD-3-Clause
  */
 
-#include <odp/api/errno.h>
+#include <odp_api.h>
+
 #include <odp_internal.h>
 #include <string.h>
 #include <stdio.h>
diff --git a/platform/linux-generic/odp_event.c b/platform/linux-generic/odp_event.c
index cc3fb0ad..85436d26 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -4,12 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/event.h>
-#include <odp/api/buffer.h>
-#include <odp/api/crypto.h>
-#include <odp/api/packet.h>
-#include <odp/api/timer.h>
-#include <odp/api/pool.h>
+#include <odp_api.h>
+
 #include <odp_buffer_internal.h>
 #include <odp_buffer_inlines.h>
 #include <odp_debug_internal.h>
diff --git a/platform/linux-generic/odp_hash.c b/platform/linux-generic/odp_hash.c
index 55876c33..4da4fb22 100644
--- a/platform/linux-generic/odp_hash.c
+++ b/platform/linux-generic/odp_hash.c
@@ -37,8 +37,7 @@
  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <odp/api/hash.h>
-#include <odp/api/std_types.h>
+#include <odp_api.h>
 
 #include <stddef.h>
 
diff --git a/platform/linux-generic/odp_impl.c b/platform/linux-generic/odp_impl.c
index 3fc2d6ab..1f7023da 100644
--- a/platform/linux-generic/odp_impl.c
+++ b/platform/linux-generic/odp_impl.c
@@ -18,7 +18,8 @@
 extern "C" {
 #endif
 
-#include <odp/api/version.h>
+#include <odp_api.h>
+#include <odp_version_internal.h>
 
 #define ODP_VERSION_IMPL 0
 #define ODP_VERSION_IMPL_STR \
diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c
index 06c61435..6a80282e 100644
--- a/platform/linux-generic/odp_init.c
+++ b/platform/linux-generic/odp_init.c
@@ -3,9 +3,10 @@
  *
  * SPDX-License-Identifier:     BSD-3-Clause
  */
-#include <odp/api/init.h>
+
+#include <odp_api.h>
+
 #include <odp_debug_internal.h>
-#include <odp/api/debug.h>
 #include <unistd.h>
 #include <odp_internal.h>
 #include <odp_schedule_if.h>
diff --git a/platform/linux-generic/odp_name_table.c b/platform/linux-generic/odp_name_table.c
index b116904d..b7de6221 100644
--- a/platform/linux-generic/odp_name_table.c
+++ b/platform/linux-generic/odp_name_table.c
@@ -6,6 +6,8 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <stdint.h>
 #include <string.h>
 #include <malloc.h>
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index 34d720c7..b4376791 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -4,11 +4,10 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/packet.h>
+#include <odp_api.h>
+
 #include <odp_packet_internal.h>
 #include <odp_debug_internal.h>
-#include <odp/api/hints.h>
-#include <odp/api/byteorder.h>
 
 #include <protocols/eth.h>
 #include <protocols/ip.h>
diff --git a/platform/linux-generic/odp_packet_flags.c b/platform/linux-generic/odp_packet_flags.c
index 798fa115..9d83f9d4 100644
--- a/platform/linux-generic/odp_packet_flags.c
+++ b/platform/linux-generic/odp_packet_flags.c
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/packet_flags.h>
+#include <odp_api.h>
+
 #include <odp_packet_internal.h>
 
 #define retflag(pkt, x, layer) do {                      \
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c
index 98460a56..27f575ea 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -3,17 +3,15 @@
  *
  * SPDX-License-Identifier:     BSD-3-Clause
  */
+
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
-#include <odp/api/packet_io.h>
 #include <odp_packet_io_internal.h>
 #include <odp_packet_io_queue.h>
-#include <odp/api/packet.h>
 #include <odp_packet_internal.h>
 #include <odp_internal.h>
-#include <odp/api/spinlock.h>
-#include <odp/api/ticketlock.h>
-#include <odp/api/shared_memory.h>
 #include <odp_packet_socket.h>
 #include <odp_config_internal.h>
 #include <odp_queue_internal.h>
@@ -21,7 +19,6 @@
 #include <odp_classification_internal.h>
 #include <odp_debug_internal.h>
 #include <odp_packet_io_ipc_internal.h>
-#include <odp/api/time.h>
 
 #include <string.h>
 #include <inttypes.h>
diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c
index cf7c2c41..0330062a 100644
--- a/platform/linux-generic/odp_pool.c
+++ b/platform/linux-generic/odp_pool.c
@@ -4,10 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/pool.h>
-#include <odp/api/shared_memory.h>
-#include <odp/api/align.h>
-#include <odp/api/ticketlock.h>
+#include <odp_api.h>
 
 #include <odp_pool_internal.h>
 #include <odp_internal.h>
@@ -16,12 +13,12 @@
 #include <odp_config_internal.h>
 #include <odp_debug_internal.h>
 #include <odp_ring_internal.h>
+#include <odp_ticketlock_internal.h>
 
 #include <string.h>
 #include <stdio.h>
 #include <inttypes.h>
 
-#include <odp/api/plat/ticketlock_inlines.h>
 #define LOCK(a)      _odp_ticketlock_lock(a)
 #define UNLOCK(a)    _odp_ticketlock_unlock(a)
 #define LOCK_INIT(a) odp_ticketlock_init(a)
diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c
index aafe5671..51010747 100644
--- a/platform/linux-generic/odp_queue.c
+++ b/platform/linux-generic/odp_queue.c
@@ -4,29 +4,22 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/queue.h>
+#include <odp_api.h>
+
 #include <odp_queue_internal.h>
-#include <odp/api/std_types.h>
-#include <odp/api/align.h>
-#include <odp/api/buffer.h>
 #include <odp_buffer_internal.h>
 #include <odp_pool_internal.h>
 #include <odp_buffer_inlines.h>
 #include <odp_internal.h>
-#include <odp/api/shared_memory.h>
-#include <odp/api/schedule.h>
 #include <odp_schedule_if.h>
 #include <odp_config_internal.h>
 #include <odp_packet_io_internal.h>
 #include <odp_packet_io_queue.h>
 #include <odp_debug_internal.h>
-#include <odp/api/hints.h>
-#include <odp/api/sync.h>
-#include <odp/api/traffic_mngr.h>
+#include <odp_ticketlock_internal.h>
 
 #define NUM_INTERNAL_QUEUES 64
 
-#include <odp/api/plat/ticketlock_inlines.h>
 #define LOCK(a)      _odp_ticketlock_lock(a)
 #define UNLOCK(a)    _odp_ticketlock_unlock(a)
 #define LOCK_INIT(a) odp_ticketlock_init(a)
diff --git a/platform/linux-generic/odp_rwlock.c b/platform/linux-generic/odp_rwlock.c
index 13c17a2c..05c14a8a 100644
--- a/platform/linux-generic/odp_rwlock.c
+++ b/platform/linux-generic/odp_rwlock.c
@@ -4,10 +4,9 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <stdbool.h>
-#include <odp/api/atomic.h>
-#include <odp/api/rwlock.h>
-#include <odp/api/cpu.h>
 
 void odp_rwlock_init(odp_rwlock_t *rwlock)
 {
diff --git a/platform/linux-generic/odp_rwlock_recursive.c b/platform/linux-generic/odp_rwlock_recursive.c
index 6b022814..2a9f2b6a 100644
--- a/platform/linux-generic/odp_rwlock_recursive.c
+++ b/platform/linux-generic/odp_rwlock_recursive.c
@@ -4,8 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/rwlock_recursive.h>
-#include <odp/api/thread.h>
+#include <odp_api.h>
+
 #include <string.h>
 
 #define NO_OWNER (-1)
diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c
index e14d145b..eaeb9dec 100644
--- a/platform/linux-generic/odp_schedule.c
+++ b/platform/linux-generic/odp_schedule.c
@@ -4,22 +4,14 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <string.h>
-#include <odp/api/schedule.h>
 #include <odp_schedule_if.h>
-#include <odp/api/align.h>
-#include <odp/api/shared_memory.h>
 #include <odp_internal.h>
 #include <odp_debug_internal.h>
-#include <odp/api/thread.h>
-#include <odp/api/time.h>
-#include <odp/api/spinlock.h>
-#include <odp/api/hints.h>
-#include <odp/api/cpu.h>
-#include <odp/api/thrmask.h>
 #include <odp_config_internal.h>
 #include <odp_align_internal.h>
-#include <odp/api/sync.h>
 #include <odp_ring_internal.h>
 #include <odp_queue_internal.h>
 
diff --git a/platform/linux-generic/odp_schedule_if.c b/platform/linux-generic/odp_schedule_if.c
index daf6c98c..c8634265 100644
--- a/platform/linux-generic/odp_schedule_if.c
+++ b/platform/linux-generic/odp_schedule_if.c
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_schedule_if.h>
 
 extern const schedule_fn_t schedule_sp_fn;
diff --git a/platform/linux-generic/odp_schedule_sp.c b/platform/linux-generic/odp_schedule_sp.c
index ad01bfe7..388c2116 100644
--- a/platform/linux-generic/odp_schedule_sp.c
+++ b/platform/linux-generic/odp_schedule_sp.c
@@ -4,11 +4,9 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <string.h>
-#include <odp/api/ticketlock.h>
-#include <odp/api/thread.h>
-#include <odp/api/time.h>
-#include <odp/api/schedule.h>
 #include <odp_schedule_if.h>
 #include <odp_debug_internal.h>
 #include <odp_align_internal.h>
diff --git a/platform/linux-generic/odp_shared_memory.c b/platform/linux-generic/odp_shared_memory.c
index ba32deec..b6e9139a 100644
--- a/platform/linux-generic/odp_shared_memory.c
+++ b/platform/linux-generic/odp_shared_memory.c
@@ -4,10 +4,9 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_config_internal.h>
-#include <odp/api/debug.h>
-#include <odp/api/std_types.h>
-#include <odp/api/shared_memory.h>
 #include <_ishm_internal.h>
 #include <string.h>
 
diff --git a/platform/linux-generic/odp_sorted_list.c b/platform/linux-generic/odp_sorted_list.c
index 8a1dc3ac..e4b04c4e 100644
--- a/platform/linux-generic/odp_sorted_list.c
+++ b/platform/linux-generic/odp_sorted_list.c
@@ -6,6 +6,8 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <stdint.h>
 #include <string.h>
 #include <malloc.h>
diff --git a/platform/linux-generic/odp_spinlock.c b/platform/linux-generic/odp_spinlock.c
index cb0f0533..d2edf14e 100644
--- a/platform/linux-generic/odp_spinlock.c
+++ b/platform/linux-generic/odp_spinlock.c
@@ -4,8 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/spinlock.h>
-#include <odp/api/cpu.h>
+#include <odp_api.h>
+
 #include <odp_atomic_internal.h>
 
 void odp_spinlock_init(odp_spinlock_t *spinlock)
diff --git a/platform/linux-generic/odp_spinlock_recursive.c b/platform/linux-generic/odp_spinlock_recursive.c
index 5ed481c4..9531158d 100644
--- a/platform/linux-generic/odp_spinlock_recursive.c
+++ b/platform/linux-generic/odp_spinlock_recursive.c
@@ -4,8 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/spinlock_recursive.h>
-#include <odp/api/thread.h>
+#include <odp_api.h>
 
 #define NO_OWNER (-1)
 
diff --git a/platform/linux-generic/odp_std_clib.c b/platform/linux-generic/odp_std_clib.c
deleted file mode 100644
index 24df249d..00000000
--- a/platform/linux-generic/odp_std_clib.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#include <odp/api/std_clib.h>
-#if ODP_ABI_COMPAT == 1
-#include <odp/api/plat/std_clib_inlines.h>
-#endif
diff --git a/platform/linux-generic/odp_sync.c b/platform/linux-generic/odp_sync.c
deleted file mode 100644
index b7eb503c..00000000
--- a/platform/linux-generic/odp_sync.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Copyright (c) 2016, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#include <odp/api/sync.h>
-#if ODP_ABI_COMPAT == 1
-#include <odp/api/plat/sync_inlines.h>
-#endif
diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c
index 18c61dbe..15a22c8b 100644
--- a/platform/linux-generic/odp_system_info.c
+++ b/platform/linux-generic/odp_system_info.c
@@ -11,13 +11,12 @@
  *   All rights reserved.
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
-#include <odp/api/system_info.h>
 #include <odp_internal.h>
 #include <odp_debug_internal.h>
-#include <odp/api/align.h>
-#include <odp/api/cpu.h>
 #include <errno.h>
 #include <pthread.h>
 #include <sched.h>
diff --git a/platform/linux-generic/odp_thread.c b/platform/linux-generic/odp_thread.c
index 33a8a7f3..65cacdc2 100644
--- a/platform/linux-generic/odp_thread.c
+++ b/platform/linux-generic/odp_thread.c
@@ -4,18 +4,14 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <sched.h>
-#include <odp/api/thread.h>
-#include <odp/api/thrmask.h>
 #include <odp_internal.h>
-#include <odp/api/spinlock.h>
 #include <odp_config_internal.h>
 #include <odp_debug_internal.h>
-#include <odp/api/shared_memory.h>
-#include <odp/api/align.h>
-#include <odp/api/cpu.h>
 #include <odp_schedule_if.h>
 
 #include <string.h>
diff --git a/platform/linux-generic/odp_thrmask.c b/platform/linux-generic/odp_thrmask.c
index c176a5c6..ab458b4b 100644
--- a/platform/linux-generic/odp_thrmask.c
+++ b/platform/linux-generic/odp_thrmask.c
@@ -4,8 +4,7 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/thrmask.h>
-#include <odp/api/cpumask.h>
+#include <odp_api.h>
 
 void odp_thrmask_from_str(odp_thrmask_t *mask, const char *str)
 {
diff --git a/platform/linux-generic/odp_ticketlock.c b/platform/linux-generic/odp_ticketlock.c
index f18d78f5..574ee4e1 100644
--- a/platform/linux-generic/odp_ticketlock.c
+++ b/platform/linux-generic/odp_ticketlock.c
@@ -4,7 +4,9 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/plat/ticketlock_inlines.h>
+#include <odp_api.h>
+
+#include <odp_ticketlock_internal.h>
 
 void odp_ticketlock_init(odp_ticketlock_t *ticketlock)
 {
diff --git a/platform/linux-generic/odp_time.c b/platform/linux-generic/odp_time.c
index 81e05224..2178c7eb 100644
--- a/platform/linux-generic/odp_time.c
+++ b/platform/linux-generic/odp_time.c
@@ -4,11 +4,11 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <time.h>
-#include <odp/api/time.h>
-#include <odp/api/hints.h>
 #include <odp_debug_internal.h>
 
 static odp_time_t start_time;
diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c
index cf610bfa..b0d1d8ef 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -19,6 +19,8 @@
 #define TB_SET_PAD(x) (void)(x)
 #endif
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <errno.h>
@@ -31,27 +33,12 @@
 #include <inttypes.h>
 #include <string.h>
 
-#include <odp/api/align.h>
 #include <odp_align_internal.h>
-#include <odp/api/atomic.h>
 #include <odp_atomic_internal.h>
-#include <odp/api/buffer.h>
 #include <odp_buffer_inlines.h>
-#include <odp/api/cpu.h>
-#include <odp/api/pool.h>
 #include <odp_pool_internal.h>
-#include <odp/api/debug.h>
 #include <odp_debug_internal.h>
-#include <odp/api/event.h>
-#include <odp/api/hints.h>
 #include <odp_internal.h>
-#include <odp/api/queue.h>
-#include <odp/api/shared_memory.h>
-#include <odp/api/spinlock.h>
-#include <odp/api/std_types.h>
-#include <odp/api/sync.h>
-#include <odp/api/time.h>
-#include <odp/api/timer.h>
 #include <odp_timer_internal.h>
 
 #define TMO_UNUSED   ((uint64_t)0xFFFFFFFFFFFFFFFF)
diff --git a/platform/linux-generic/odp_timer_wheel.c b/platform/linux-generic/odp_timer_wheel.c
index f2c802a8..22eaf911 100644
--- a/platform/linux-generic/odp_timer_wheel.c
+++ b/platform/linux-generic/odp_timer_wheel.c
@@ -6,6 +6,8 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <stdint.h>
 #include <string.h>
 #include <malloc.h>
diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c
index 9dc3a864..4d0c232f 100644
--- a/platform/linux-generic/odp_traffic_mngr.c
+++ b/platform/linux-generic/odp_traffic_mngr.c
@@ -6,6 +6,8 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #define _GNU_SOURCE
 #include <stdint.h>
 #include <string.h>
@@ -18,7 +20,6 @@
 #include <sched.h>
 #include <unistd.h>
 #include <pthread.h>
-#include <odp/api/std_types.h>
 #include <protocols/eth.h>
 #include <protocols/ip.h>
 #include <odp_traffic_mngr_internal.h>
diff --git a/platform/linux-generic/odp_version.c b/platform/linux-generic/odp_version.c
index 7b704d05..ff29cfdd 100644
--- a/platform/linux-generic/odp_version.c
+++ b/platform/linux-generic/odp_version.c
@@ -4,7 +4,9 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
-#include <odp/api/version.h>
+#include <odp_api.h>
+
+#include <odp_version_internal.h>
 
 const char *odp_version_api_str(void)
 {
diff --git a/platform/linux-generic/odp_weak.c b/platform/linux-generic/odp_weak.c
index 0fbf6645..a2cff550 100644
--- a/platform/linux-generic/odp_weak.c
+++ b/platform/linux-generic/odp_weak.c
@@ -4,10 +4,10 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_internal.h>
-#include <odp/api/debug.h>
 #include <odp_debug_internal.h>
-#include <odp/api/hints.h>
 
 #include <stdarg.h>
 
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index 0eb025ae..bef8e03e 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -12,8 +12,6 @@
 #include <ctype.h>
 #include <unistd.h>
 
-#include <odp/api/cpumask.h>
-
 #include <odp_packet_io_internal.h>
 #include <odp_classification_internal.h>
 #include <odp_packet_dpdk.h>
diff --git a/platform/linux-generic/pktio/io_ops.c b/platform/linux-generic/pktio/io_ops.c
index fbf30ca7..e129e193 100644
--- a/platform/linux-generic/pktio/io_ops.c
+++ b/platform/linux-generic/pktio/io_ops.c
@@ -4,6 +4,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_packet_io_internal.h>
 
 /* Ops for all implementation of pktio.
diff --git a/platform/linux-generic/pktio/ipc.c b/platform/linux-generic/pktio/ipc.c
index 377f20e6..91bc2a5b 100644
--- a/platform/linux-generic/pktio/ipc.c
+++ b/platform/linux-generic/pktio/ipc.c
@@ -3,10 +3,12 @@
  *
  * SPDX-License-Identifier:     BSD-3-Clause
  */
+
+#include <odp_api.h>
+
 #include <odp_packet_io_ipc_internal.h>
 #include <odp_debug_internal.h>
 #include <odp_packet_io_internal.h>
-#include <odp/api/system_info.h>
 #include <odp_shm_internal.h>
 #include <_ishm_internal.h>
 
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index 70962839..2c31a4ef 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -10,7 +10,6 @@
 #include <odp_packet_io_internal.h>
 #include <odp_classification_internal.h>
 #include <odp_debug_internal.h>
-#include <odp/api/hints.h>
 
 #include <protocols/eth.h>
 #include <protocols/ip.h>
diff --git a/platform/linux-generic/pktio/pktio_common.c b/platform/linux-generic/pktio/pktio_common.c
index 611bb451..4108d77c 100644
--- a/platform/linux-generic/pktio/pktio_common.c
+++ b/platform/linux-generic/pktio/pktio_common.c
@@ -5,6 +5,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_packet_io_internal.h>
 #include <odp_classification_internal.h>
 #include <errno.h>
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 7d239686..e9210d74 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -41,7 +41,6 @@
 #include <odp_classification_datamodel.h>
 #include <odp_classification_inlines.h>
 #include <odp_classification_internal.h>
-#include <odp/api/hints.h>
 
 #include <protocols/eth.h>
 #include <protocols/ip.h>
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index 666aae6a..2c6b4ee0 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -5,6 +5,8 @@
  * SPDX-License-Identifier:     BSD-3-Clause
  */
 
+#include <odp_api.h>
+
 #include <odp_posix_extensions.h>
 
 #include <odp_packet_io_internal.h>
@@ -30,7 +32,6 @@
 #include <odp_classification_datamodel.h>
 #include <odp_classification_inlines.h>
 #include <odp_classification_internal.h>
-#include <odp/api/hints.h>
 
 #include <protocols/eth.h>
 #include <protocols/ip.h>
diff --git a/test/common_plat/validation/api/system/system.c b/test/common_plat/validation/api/system/system.c
index 57ff34eb..37b8759f 100644
--- a/test/common_plat/validation/api/system/system.c
+++ b/test/common_plat/validation/api/system/system.c
@@ -6,7 +6,6 @@
 
 #include <ctype.h>
 #include <odp_api.h>
-#include <odp/api/cpumask.h>
 #include "odp_cunit_common.h"
 #include "test_debug.h"
 #include "system.h"
