Hi, Bogdan This looks good to me as an evaluation example of the DDF, two comments:
1, Copyright (c) 2014, Linaro Limited needs to be updated. 2, make distcheck failures: Making all in ddf_ifs make[3]: Entering directory '/home/yihe01/workspace/odp-linux/opendataplane-1.14.0.0/_build/sub/example/ddf_ifs' CC ddf_ifs.lo CC ddf_ifs_enumr_class.lo CC ddf_ifs_enumr_dpdk.lo ../../../../example/ddf_ifs/ddf_ifs_enumr_dpdk.c:9:25: fatal error: ddf_ifs_api.h: No such file or directory compilation terminated. thanks and best regards, Yi On 21 June 2017 at 16:10, Bogdan Pricope <[email protected]> wrote: > Signed-off-by: Bogdan Pricope <[email protected]> > --- > example/Makefile.am | 4 +- > example/ddf_app/Makefile.am | 10 ++++ > example/ddf_app/odp_ddf_app.c | 49 +++++++++++++++++++ > example/ddf_ifs/Makefile.am | 26 ++++++++++ > example/ddf_ifs/ddf_ifs.c | 28 +++++++++++ > example/ddf_ifs/ddf_ifs.h | 18 +++++++ > example/ddf_ifs/ddf_ifs_api.h | 25 ++++++++++ > example/ddf_ifs/ddf_ifs_dev_dpdk.c | 25 ++++++++++ > example/ddf_ifs/ddf_ifs_dev_dpdk.h | 24 +++++++++ > example/ddf_ifs/ddf_ifs_devio_direct.c | 51 +++++++++++++++++++ > example/ddf_ifs/ddf_ifs_devio_direct.h | 20 ++++++++ > example/ddf_ifs/ddf_ifs_driver.c | 69 ++++++++++++++++++++++++++ > example/ddf_ifs/ddf_ifs_driver.h | 20 ++++++++ > example/ddf_ifs/ddf_ifs_enumr_class.c | 47 ++++++++++++++++++ > example/ddf_ifs/ddf_ifs_enumr_class.h | 20 ++++++++ > example/ddf_ifs/ddf_ifs_enumr_dpdk.c | 86 > +++++++++++++++++++++++++++++++++ > example/ddf_ifs/ddf_ifs_enumr_dpdk.h | 20 ++++++++ > example/ddf_ifs/ddf_ifs_enumr_generic.c | 57 ++++++++++++++++++++++ > example/ddf_ifs/ddf_ifs_enumr_generic.h | 20 ++++++++ > example/ddf_ifs/odp.conf | 4 ++ > example/m4/configure.m4 | 2 + > 21 files changed, 624 insertions(+), 1 deletion(-) > create mode 100644 example/ddf_app/Makefile.am > create mode 100644 example/ddf_app/odp_ddf_app.c > create mode 100644 example/ddf_ifs/Makefile.am > create mode 100644 example/ddf_ifs/ddf_ifs.c > create mode 100644 example/ddf_ifs/ddf_ifs.h > create mode 100644 example/ddf_ifs/ddf_ifs_api.h > create mode 100644 example/ddf_ifs/ddf_ifs_dev_dpdk.c > create mode 100644 example/ddf_ifs/ddf_ifs_dev_dpdk.h > create mode 100644 example/ddf_ifs/ddf_ifs_devio_direct.c > create mode 100644 example/ddf_ifs/ddf_ifs_devio_direct.h > create mode 100644 example/ddf_ifs/ddf_ifs_driver.c > create mode 100644 example/ddf_ifs/ddf_ifs_driver.h > create mode 100644 example/ddf_ifs/ddf_ifs_enumr_class.c > create mode 100644 example/ddf_ifs/ddf_ifs_enumr_class.h > create mode 100644 example/ddf_ifs/ddf_ifs_enumr_dpdk.c > create mode 100644 example/ddf_ifs/ddf_ifs_enumr_dpdk.h > create mode 100644 example/ddf_ifs/ddf_ifs_enumr_generic.c > create mode 100644 example/ddf_ifs/ddf_ifs_enumr_generic.h > create mode 100644 example/ddf_ifs/odp.conf > > diff --git a/example/Makefile.am b/example/Makefile.am > index dfc07b6..b209585 100644 > --- a/example/Makefile.am > +++ b/example/Makefile.am > @@ -8,4 +8,6 @@ SUBDIRS = classifier \ > switch \ > time \ > timer \ > - traffic_mgmt > + traffic_mgmt \ > + ddf_ifs \ > + ddf_app > diff --git a/example/ddf_app/Makefile.am b/example/ddf_app/Makefile.am > new file mode 100644 > index 0000000..e654202 > --- /dev/null > +++ b/example/ddf_app/Makefile.am > @@ -0,0 +1,10 @@ > +include $(top_srcdir)/example/Makefile.inc > + > +bin_PROGRAMS = odp_ddf_app$(EXEEXT) > +odp_ddf_app_LDFLAGS = $(AM_LDFLAGS) -shared > +odp_ddf_app_CFLAGS = $(AM_CFLAGS) -I${top_srcdir}/example > + > +noinst_HEADERS = \ > + $(top_srcdir)/example/example_debug.h > + > +dist_odp_ddf_app_SOURCES = odp_ddf_app.c > diff --git a/example/ddf_app/odp_ddf_app.c b/example/ddf_app/odp_ddf_app.c > new file mode 100644 > index 0000000..c2d7abf > --- /dev/null > +++ b/example/ddf_app/odp_ddf_app.c > @@ -0,0 +1,49 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +/** enable strtok */ > +#ifndef _GNU_SOURCE > +#define _GNU_SOURCE > +#endif > + > +#include <stdio.h> > +#include <stdlib.h> > + > +#include <example_debug.h> > +#include <odp_api.h> > +#include <odp_drv.h> > +#include <odp/helper/odph_api.h> > + > +int main(int argc, char *argv[]) > +{ > + odp_instance_t instance; > + > + (void)argc; > + (void)argv; > + > + EXAMPLE_DBG("Start DDF Application...\n"); > + > + /* Initialize ODP before calling anything else */ > + if (odp_init_global(&instance, NULL, NULL)) { > + EXAMPLE_ERR("Error: ODP global init failed.\n"); > + exit(EXIT_FAILURE); > + } > + > + if (odp_init_local(instance, ODP_THREAD_CONTROL)) { > + EXAMPLE_ERR("Error: ODP local init failed.\n"); > + exit(EXIT_FAILURE); > + } > + > + /* Print ddf objects*/ > + odpdrv_print_all(); > + > + /* Terminate ODP */ > + odp_term_local(); > + odp_term_global(instance); > + > + EXAMPLE_DBG("Exit DDF Application.\n"); > + return 0; > +} > diff --git a/example/ddf_ifs/Makefile.am b/example/ddf_ifs/Makefile.am > new file mode 100644 > index 0000000..b11cf3d > --- /dev/null > +++ b/example/ddf_ifs/Makefile.am > @@ -0,0 +1,26 @@ > +LIB = $(top_builddir)/lib > + > +AM_CPPFLAGS += -I$(srcdir) \ > + -I$(top_srcdir)/include \ > + -I$(top_srcdir)/platform/@with_platform@/include \ > + -I$(top_srcdir)/platform/@with_platform@/arch/@ARCH_DIR@ > + > +lib_LTLIBRARIES = $(LIB)/libddf_ifs.la > + > +noinst_HEADERS = \ > + $(srcdir)/ddf_ifs.h \ > + $(srcdir)/ddf_ifs_enumr_class.h \ > + $(srcdir)/ddf_ifs_enumr_dpdk.h \ > + $(srcdir)/ddf_ifs_enumr_generic.h \ > + $(srcdir)/ddf_ifs_dev_dpdk.h \ > + $(srcdir)/ddf_ifs_devio_direct.h \ > + $(srcdir)/ddf_ifs_driver.h > + > +__LIB__libddf_ifs_la_SOURCES = \ > + ddf_ifs.c \ > + ddf_ifs_enumr_class.c \ > + ddf_ifs_enumr_dpdk.c \ > + ddf_ifs_enumr_generic.c \ > + ddf_ifs_dev_dpdk.c \ > + ddf_ifs_devio_direct.c \ > + ddf_ifs_driver.c > diff --git a/example/ddf_ifs/ddf_ifs.c b/example/ddf_ifs/ddf_ifs.c > new file mode 100644 > index 0000000..cd4e48b > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs.c > @@ -0,0 +1,28 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include "odp_drv.h" > +#include "ddf_ifs.h" > +#include "ddf_ifs_enumr_class.h" > +#include "ddf_ifs_devio_direct.h" > +#include "ddf_ifs_driver.h" > + > +static ODPDRV_CONSTRUCTOR void ddf_ifs_construct(void) > +{ > + printf("%s()\n", __func__); > + > + register_enumerator_class(); > + > + register_devio_direct(); > + > + register_driver(); > +} > + > +static __attribute__((destructor)) void ddf_ifs_destruct(void) > +{ > + printf("%s()\n", __func__); > +} > diff --git a/example/ddf_ifs/ddf_ifs.h b/example/ddf_ifs/ddf_ifs.h > new file mode 100644 > index 0000000..980b520 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs.h > @@ -0,0 +1,18 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_H_ > +#define _ODP_DDF_IFS_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_api.h b/example/ddf_ifs/ddf_ifs_api.h > new file mode 100644 > index 0000000..757658e > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_api.h > @@ -0,0 +1,25 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_API_H_ > +#define _ODP_DDF_IFS_API_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#define DDF_IFS_DEV_API_NAME "ifs_api" > +#define DDF_IFS_DEV_API_VER 0 > +#define DDF_IFS_DEVIO_API_NAME "devio_api" > +#define DDF_IFS_DEVIO_API_VER 0 > + > +#define DDF_IFS_DRV_NAME "ddf_ifs_drv" > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_API_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_dev_dpdk.c > b/example/ddf_ifs/ddf_ifs_dev_dpdk.c > new file mode 100644 > index 0000000..d66a15c > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_dev_dpdk.c > @@ -0,0 +1,25 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include <string.h> > +#include "odp_drv.h" > +#include "ddf_ifs_dev_dpdk.h" > + > +odpdrv_device_t dpdk_device_create(odpdrv_enumr_t enumr, > + const char *dev_addr, > + void *enum_data) > +{ > + odpdrv_device_param_t param; > + > + printf("\t%s(%s)\n", __func__, dev_addr); > + > + param.enumerator = enumr; > + strcpy(param.address, dev_addr); > + param.enum_dev = enum_data; > + > + return odpdrv_device_create(¶m); > +} > diff --git a/example/ddf_ifs/ddf_ifs_dev_dpdk.h > b/example/ddf_ifs/ddf_ifs_dev_dpdk.h > new file mode 100644 > index 0000000..2a81f6a > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_dev_dpdk.h > @@ -0,0 +1,24 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_DEV_DPDK_H_ > +#define _ODP_DDF_IFS_DEV_DPDK_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#include "odp_drv.h" > + > +odpdrv_device_t dpdk_device_create(odpdrv_enumr_t enumr, > + const char *dev_addr, > + void *enum_data); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_DEV_DPDK_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_devio_direct.c > b/example/ddf_ifs/ddf_ifs_devio_direct.c > new file mode 100644 > index 0000000..ea508a0 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_devio_direct.c > @@ -0,0 +1,51 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include "odp_drv.h" > +#include "ddf_ifs_api.h" > +#include "ddf_ifs_devio_direct.h" > + > +static odpdrv_devio_t devio_direct; > + > +static int devio_direct_probe(odpdrv_device_t dev) > +{ > + (void)dev; > + > + printf("%s()\n", __func__); > + > + return 0; > +} > + > +static int devio_direct_remove(void) > +{ > + printf("%s()\n", __func__); > + > + return 0; > +} > + > +int register_devio_direct(void) > +{ > + odpdrv_devio_param_t param = { > + .api_name = DDF_IFS_DEVIO_API_NAME, > + .api_version = DDF_IFS_DEVIO_API_VER, > + .enumr_api_name = DDF_IFS_DEV_API_NAME, > + .enumr_api_version = DDF_IFS_DEV_API_VER, > + .probe = devio_direct_probe, > + .remove = devio_direct_remove, > + .ops = NULL > + }; > + > + printf("\t%s()\n", __func__); > + > + devio_direct = odpdrv_devio_register(¶m); > + if (ODPDRV_DEVIO_INVALID == devio_direct) { > + printf("\tError: failed to %s()\n", __func__); > + return -1; > + } > + > + return 0; > +} > diff --git a/example/ddf_ifs/ddf_ifs_devio_direct.h > b/example/ddf_ifs/ddf_ifs_devio_direct.h > new file mode 100644 > index 0000000..28c549d > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_devio_direct.h > @@ -0,0 +1,20 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_DEVIO_DIRECT_H_ > +#define _ODP_DDF_IFS_DEVIO_DIRECT_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +int register_devio_direct(void); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_DEVIO_DIRECT_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_driver.c b/example/ddf_ifs/ddf_ifs_ > driver.c > new file mode 100644 > index 0000000..2dc5870 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_driver.c > @@ -0,0 +1,69 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include <string.h> > +#include "odp_drv.h" > +#include "ddf_ifs_api.h" > +#include "ddf_ifs_driver.h" > + > +static odpdrv_driver_t ddf_ifs_driver; > +static int drv_data = 12; > + > +static int ddf_ifs_driver_probe(odpdrv_device_t dev, odpdrv_devio_t > devio, > + int devio_idx) > +{ > + printf("%s(dev, devio, devio_idx = %d)\n", __func__, devio_idx); > + > + (void)devio; > + > + odpdrv_device_set_data(dev, (void *)&drv_data); > + > + return 0; > +} > + > +static int ddf_ifs_driver_unbind(odpdrv_device_t dev, > + void (*callback)(odpdrv_device_t dev), > + uint32_t flags) > +{ > + printf("%s()\n", __func__); > + > + if (!(flags & ODPDRV_DRV_UNBIND_IMMEDIATE)) > + return -1; /* unsupported*/ > + > + callback(dev); > + > + return 0; > +} > + > +static int ddf_ifs_driver_remove(void) > +{ > + printf("%s()\n", __func__); > + > + return 0; > +} > + > +int register_driver(void) > +{ > + odpdrv_driver_param_t param = { > + .name = DDF_IFS_DRV_NAME, > + .devios = {{DDF_IFS_DEVIO_API_NAME, DDF_IFS_DEVIO_API_VER}, > + {"", 0}, {"", 0} }, > + .probe = ddf_ifs_driver_probe, > + .unbind = ddf_ifs_driver_unbind, > + .remove = ddf_ifs_driver_remove, > + }; > + > + printf("\t%s()\n", __func__); > + > + ddf_ifs_driver = odpdrv_driver_register(¶m); > + if (ODPDRV_DRIVER_INVALID == ddf_ifs_driver) { > + printf("Error: Failed to %s()\n", __func__); > + return -1; > + } > + > + return 0; > +} > diff --git a/example/ddf_ifs/ddf_ifs_driver.h b/example/ddf_ifs/ddf_ifs_ > driver.h > new file mode 100644 > index 0000000..4954c5a > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_driver.h > @@ -0,0 +1,20 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_DRIVER_H_ > +#define _ODP_DDF_IFS_DRIVER_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +int register_driver(void); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_DRIVER_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_enumr_class.c > b/example/ddf_ifs/ddf_ifs_enumr_class.c > new file mode 100644 > index 0000000..a7b5d51 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_enumr_class.c > @@ -0,0 +1,47 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include "odp_drv.h" > +#include "ddf_ifs_enumr_class.h" > +#include "ddf_ifs_enumr_dpdk.h" > +#include "ddf_ifs_enumr_generic.h" > + > +static odpdrv_enumr_class_t enumr_class; > + > +static int enumr_class_ifs_probe(void) > +{ > + printf("%s()\n", __func__); > + > + if (register_enumerator_dpdk(enumr_class)) > + return -1; > + > + if (register_enumerator_generic(enumr_class)) > + return -1; > + > + return 0; > +} > + > +static int enumr_class_ifs_remove(void) > +{ > + printf("%s()\n", __func__); > + > + return 0; > +} > + > +int register_enumerator_class(void) > +{ > + odpdrv_enumr_class_param_t param = { > + .name = "enumr_class_ifs", > + .probe = enumr_class_ifs_probe, > + .remove = enumr_class_ifs_remove > + }; > + > + printf("\t%s()\n", __func__); > + enumr_class = odpdrv_enumr_class_register(¶m); > + > + return 0; > +} > diff --git a/example/ddf_ifs/ddf_ifs_enumr_class.h > b/example/ddf_ifs/ddf_ifs_enumr_class.h > new file mode 100644 > index 0000000..42c02fc > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_enumr_class.h > @@ -0,0 +1,20 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_ENUMR_CLASS_H_ > +#define _ODP_DDF_IFS_ENUMR_CLASS_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +int register_enumerator_class(void); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_ENUMR_CLASS_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_enumr_dpdk.c > b/example/ddf_ifs/ddf_ifs_enumr_dpdk.c > new file mode 100644 > index 0000000..cc97e36 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_enumr_dpdk.c > @@ -0,0 +1,86 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include "odp_drv.h" > +#include "ddf_ifs_api.h" > +#include "ddf_ifs_enumr_dpdk.h" > +#include "ddf_ifs_dev_dpdk.h" > + > +static odpdrv_enumr_t dpdk_enumr; > + > +#define TEST_DPDK_DEV_CNT 3 > +#define DDF_DPDK_DEV_MAX 10 > + > +static odpdrv_device_t dpdk_dev[DDF_DPDK_DEV_MAX]; > +static int dpdk_dev_cnt; > +static int dpdk_enumr_probe(void) > +{ > + int dpdk_dev_cnt_detected = TEST_DPDK_DEV_CNT; /* detected with > + dpdk APIs*/ > + char dev_addr[ODPDRV_NAME_ADDR_SZ]; > + int i; > + > + printf("%s() - %d devices found\n", __func__, > dpdk_dev_cnt_detected); > + > + if (dpdk_dev_cnt_detected > DDF_DPDK_DEV_MAX) { > + dpdk_dev_cnt_detected = DDF_DPDK_DEV_MAX; > + printf("\tWarning: dpdk device count scaled down to %d\n", > + dpdk_dev_cnt_detected); > + } > + for (i = 0; i < dpdk_dev_cnt_detected; i++) { > + sprintf(dev_addr, "0000:01:00.%d", i); > + dpdk_dev[dpdk_dev_cnt] = dpdk_device_create(dpdk_enumr, > + dev_addr, > + NULL); > + if (dpdk_dev[dpdk_dev_cnt] == ODPDRV_DEVICE_INVALID) > + printf("\tError: unable to create device: %s\n", > + dev_addr); > + else > + dpdk_dev_cnt++; > + } > + > + return 0; > +} > + > +static int dpdk_enumr_remove(void) > +{ > + printf("%s()\n", __func__); > + return 0; > +} > + > +static int dpdk_enumr_register_notif(void (*event_handler) (uint64_t > event), > + int64_t event_mask) > +{ > + (void)event_handler; > + (void)event_mask; > + > + printf("%s()\n", __func__); > + > + return 0; > +} > + > +int register_enumerator_dpdk(odpdrv_enumr_class_t enumr_class) > +{ > + struct odpdrv_enumr_param_t param = { > + .enumr_class = enumr_class, > + .api_name = DDF_IFS_DEV_API_NAME, > + .api_version = DDF_IFS_DEV_API_VER, > + .probe = dpdk_enumr_probe, > + .remove = dpdk_enumr_remove, > + .register_notifier = dpdk_enumr_register_notif > + }; > + > + printf("\t%s()\n", __func__); > + > + dpdk_enumr = odpdrv_enumr_register(¶m); > + if (ODPDRV_ENUMR_INVALID == dpdk_enumr) { > + printf("\tError: failed to register_enumerator_dpdk()\n"); > + return -1; > + } > + > + return 0; > +} > diff --git a/example/ddf_ifs/ddf_ifs_enumr_dpdk.h > b/example/ddf_ifs/ddf_ifs_enumr_dpdk.h > new file mode 100644 > index 0000000..516d9e3 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_enumr_dpdk.h > @@ -0,0 +1,20 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_ENUMR_DPDK_H_ > +#define _ODP_DDF_IFS_ENUMR_DPDK_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +int register_enumerator_dpdk(odpdrv_enumr_class_t enumr_class); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_ENUMR_DPDK_H_*/ > diff --git a/example/ddf_ifs/ddf_ifs_enumr_generic.c > b/example/ddf_ifs/ddf_ifs_enumr_generic.c > new file mode 100644 > index 0000000..34a59a8 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_enumr_generic.c > @@ -0,0 +1,57 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#include <stdio.h> > +#include "odp_drv.h" > +#include "ddf_ifs_api.h" > +#include "ddf_ifs_enumr_generic.h" > + > +static odpdrv_enumr_t gen_enumr; > + > +static int gen_enumr_probe(void) > +{ > + printf("%s() - no devices found\n", __func__); > + return 0; > +} > + > +static int gen_enumr_remove(void) > +{ > + printf("%s()\n", __func__); > + return 0; > +} > + > +static int gen_enumr_register_notif(void (*event_handler) (uint64_t > event), > + int64_t event_mask) > +{ > + (void)event_handler; > + (void)event_mask; > + > + printf("%s()\n", __func__); > + > + return 0; > +} > + > +int register_enumerator_generic(odpdrv_enumr_class_t enumr_class) > +{ > + struct odpdrv_enumr_param_t param = { > + .enumr_class = enumr_class, > + .api_name = DDF_IFS_DEV_API_NAME, > + .api_version = DDF_IFS_DEV_API_VER, > + .probe = gen_enumr_probe, > + .remove = gen_enumr_remove, > + .register_notifier = gen_enumr_register_notif > + }; > + > + printf("\t%s()\n", __func__); > + > + gen_enumr = odpdrv_enumr_register(¶m); > + if (ODPDRV_ENUMR_INVALID == gen_enumr) { > + printf("\tError:failed to %s()\n", __func__); > + return -1; > + } > + > + return 0; > +} > diff --git a/example/ddf_ifs/ddf_ifs_enumr_generic.h > b/example/ddf_ifs/ddf_ifs_enumr_generic.h > new file mode 100644 > index 0000000..2f0b8b8 > --- /dev/null > +++ b/example/ddf_ifs/ddf_ifs_enumr_generic.h > @@ -0,0 +1,20 @@ > +/* Copyright (c) 2014, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +#ifndef _ODP_DDF_IFS_ENUMR_GENERIC_H_ > +#define _ODP_DDF_IFS_ENUMR_GENERIC_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +int register_enumerator_generic(odpdrv_enumr_class_t enumr_class); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /*_ODP_DDF_IFS_ENUMR_GENERIC_H_*/ > diff --git a/example/ddf_ifs/odp.conf b/example/ddf_ifs/odp.conf > new file mode 100644 > index 0000000..14968a7 > --- /dev/null > +++ b/example/ddf_ifs/odp.conf > @@ -0,0 +1,4 @@ > +module: > +{ > + modules = ("libddf_ifs.so.0"); > +}; > diff --git a/example/m4/configure.m4 b/example/m4/configure.m4 > index 620db04..9e7973b 100644 > --- a/example/m4/configure.m4 > +++ b/example/m4/configure.m4 > @@ -21,4 +21,6 @@ AC_CONFIG_FILES([example/classifier/Makefile > example/time/Makefile > example/timer/Makefile > example/traffic_mgmt/Makefile > + example/ddf_ifs/Makefile > + example/ddf_app/Makefile > example/Makefile]) > -- > 1.9.1 > >
