Some C library calls are often used in data plane code. This API enables possibility to HW optimized implementation of those. Added first memcpy and memset.
Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com> --- include/odp.h | 1 + include/odp/api/std_clib.h | 64 +++++++++++++++++++++++++++ platform/linux-generic/Makefile.am | 2 + platform/linux-generic/include/odp/std_clib.h | 30 +++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 include/odp/api/std_clib.h create mode 100644 platform/linux-generic/include/odp/std_clib.h diff --git a/include/odp.h b/include/odp.h index 825c7e1..f2cd2d3 100644 --- a/include/odp.h +++ b/include/odp.h @@ -56,6 +56,7 @@ extern "C" { #include <odp/thrmask.h> #include <odp/spinlock_recursive.h> #include <odp/rwlock_recursive.h> +#include <odp/std_clib.h> #ifdef __cplusplus } diff --git a/include/odp/api/std_clib.h b/include/odp/api/std_clib.h new file mode 100644 index 0000000..2119ec4 --- /dev/null +++ b/include/odp/api/std_clib.h @@ -0,0 +1,64 @@ +/* Copyright (c) 2015, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @file + * + * ODP version of often used C library calls + */ + +#ifndef ODP_API_STD_CLIB_H_ +#define ODP_API_STD_CLIB_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup odp_std_clib ODP STD CLIB + * @details + * ODP version of often used C library calls + * @{ + */ + +/** + * Memcpy + * + * ODP version of C library memcpy function. It copies 'num' bytes from source + * to destination address. Source and destination memory blocks must not + * overlap. + * + * @param dst Pointer to destination memory block + * @param src Pointer to source memory block + * @param num Number of bytes to copy + * + * @return 'dst' address + */ +void *odp_memcpy(void *dst, const void *src, size_t num); + +/** + * Memset + * + * ODP version of C library memset function. It sets 'value' to first 'num' + * bytes of memory block pointed by 'ptr'. + * + * @param ptr Pointer to the memory block + * @param value Value to be set + * @param num Number of bytes to set + * + * @return 'ptr' address + */ +void *odp_memset(void *ptr, int value, size_t num); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 85c976d..fc202cc 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -41,6 +41,7 @@ odpinclude_HEADERS = \ $(srcdir)/include/odp/shared_memory.h \ $(srcdir)/include/odp/spinlock.h \ $(srcdir)/include/odp/spinlock_recursive.h \ + $(srcdir)/include/odp/std_clib.h \ $(srcdir)/include/odp/std_types.h \ $(srcdir)/include/odp/sync.h \ $(srcdir)/include/odp/system_info.h \ @@ -108,6 +109,7 @@ odpapiinclude_HEADERS = \ $(top_srcdir)/include/odp/api/shared_memory.h \ $(top_srcdir)/include/odp/api/spinlock.h \ $(top_srcdir)/include/odp/api/spinlock_recursive.h \ + $(top_srcdir)/include/odp/api/std_clib.h \ $(top_srcdir)/include/odp/api/std_types.h \ $(top_srcdir)/include/odp/api/sync.h \ $(top_srcdir)/include/odp/api/system_info.h \ diff --git a/platform/linux-generic/include/odp/std_clib.h b/platform/linux-generic/include/odp/std_clib.h new file mode 100644 index 0000000..c939c48 --- /dev/null +++ b/platform/linux-generic/include/odp/std_clib.h @@ -0,0 +1,30 @@ +/* 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/std_types.h> + +static inline void *odp_memcpy(void *dst, const void *src, size_t num) +{ + return memcpy(dst, src, num); +} + +static inline void *odp_memset(void *ptr, int value, size_t num) +{ + return memset(ptr, value, num); +} + +#ifdef __cplusplus +} +#endif + +#endif -- 2.6.0 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp