Message ID | 1478517324-11324-2-git-send-email-christophe.milard@linaro.org |
---|---|
State | New |
Headers | show |
Thanks Christophe for the answers to the questions. For this series: Reviewed-and-tested-by: Yi He <yi.he@linaro.org> On 7 November 2016 at 19:15, Christophe Milard <christophe.milard@linaro.org > wrote: > The driver registration function (and a draft of its parameters) is > defined, the goal being to define the driver registration framework only. > > Signed-off-by: Christophe Milard <christophe.milard@linaro.org> > --- > include/odp/drv/spec/driver.h | 76 ++++++++++++++++++++++++++++++ > +++++++++++++ > platform/Makefile.inc | 1 + > 2 files changed, 77 insertions(+) > create mode 100644 include/odp/drv/spec/driver.h > > diff --git a/include/odp/drv/spec/driver.h b/include/odp/drv/spec/driver.h > new file mode 100644 > index 0000000..406112b > --- /dev/null > +++ b/include/odp/drv/spec/driver.h > @@ -0,0 +1,76 @@ > +/* Copyright (c) 2016, Linaro Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: BSD-3-Clause > + */ > + > +/** > + * @file > + * > + * ODPDRV driver > + */ > + > +#ifndef ODPDRV_DRIVER_H_ > +#define ODPDRV_DRIVER_H_ > +#include <odp/visibility_begin.h> > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +/** > + * @addtogroup odpdrv_driver > + * @details > + * NIC driver interface to ODP > + * > + * @{ > + */ > + > +/** > + * Different busses drivers can handle: > + */ > +typedef enum odpdrv_bus_t { > + ODPDRV_BUS_UNKNOWN, /**< error case: no driver should use that > */ > + ODPDRV_BUS_PCI /**< pci bus, for all kind of pci drivers > */ > +} odpdrv_bus_t; > + > +/** > + * Different driver types > + */ > +typedef enum odpdrv_driver_types_t { > + ODPDRV_UNKNOWN_TYPE, /**< error case: no driver should use that > */ > + ODPDRV_PCI_VIRTIO, /**< pci virtio driver > */ > + ODPDRV_PCI_VFIO /**< pci_vfio: vfio interface required > */ > +} odpdrv_driver_type_t; > + > +/** > + * Parameter to be given at driver registration: > + */ > +typedef struct odpdrv_driver_param_t { > + const char *name; /**< Driver name. */ > + odpdrv_bus_t bus; /**< Driver bus. */ > + odpdrv_driver_type_t type; /**< Driver type. */ > +} odpdrv_driver_param_t; > + > +/** > + * Register a Driver. > + * A call to this function should be made by all drivers at init time. > + * (called by an init function in the driver, probably using gcc/clang > + * __constructor__ attribute. > + * > + * @param drv_param Pointer to a driver registration structure. > + * @return 0 on success, non-zero on error. On error, drivers > + * should release allocated resources and return. > + */ > +int odpdrv_driver_register(odpdrv_driver_param_t *drv_param); > + > +/** > + * @} > + */ > + > +#ifdef __cplusplus > +} > +#endif > + > +#include <odp/visibility_end.h> > +#endif > diff --git a/platform/Makefile.inc b/platform/Makefile.inc > index b31b95b..69ee878 100644 > --- a/platform/Makefile.inc > +++ b/platform/Makefile.inc > @@ -67,6 +67,7 @@ odpdrvspecinclude_HEADERS = \ > $(top_srcdir)/include/odp/drv/spec/barrier.h \ > $(top_srcdir)/include/odp/drv/spec/byteorder.h \ > $(top_srcdir)/include/odp/drv/spec/compiler.h \ > + $(top_srcdir)/include/odp/drv/spec/driver.h \ > $(top_srcdir)/include/odp/drv/spec/shm.h \ > $(top_srcdir)/include/odp/drv/spec/spinlock.h \ > $(top_srcdir)/include/odp/drv/spec/std_types.h \ > -- > 2.7.4 > >
diff --git a/include/odp/drv/spec/driver.h b/include/odp/drv/spec/driver.h new file mode 100644 index 0000000..406112b --- /dev/null +++ b/include/odp/drv/spec/driver.h @@ -0,0 +1,76 @@ +/* Copyright (c) 2016, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @file + * + * ODPDRV driver + */ + +#ifndef ODPDRV_DRIVER_H_ +#define ODPDRV_DRIVER_H_ +#include <odp/visibility_begin.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup odpdrv_driver + * @details + * NIC driver interface to ODP + * + * @{ + */ + +/** + * Different busses drivers can handle: + */ +typedef enum odpdrv_bus_t { + ODPDRV_BUS_UNKNOWN, /**< error case: no driver should use that */ + ODPDRV_BUS_PCI /**< pci bus, for all kind of pci drivers */ +} odpdrv_bus_t; + +/** + * Different driver types + */ +typedef enum odpdrv_driver_types_t { + ODPDRV_UNKNOWN_TYPE, /**< error case: no driver should use that */ + ODPDRV_PCI_VIRTIO, /**< pci virtio driver */ + ODPDRV_PCI_VFIO /**< pci_vfio: vfio interface required */ +} odpdrv_driver_type_t; + +/** + * Parameter to be given at driver registration: + */ +typedef struct odpdrv_driver_param_t { + const char *name; /**< Driver name. */ + odpdrv_bus_t bus; /**< Driver bus. */ + odpdrv_driver_type_t type; /**< Driver type. */ +} odpdrv_driver_param_t; + +/** + * Register a Driver. + * A call to this function should be made by all drivers at init time. + * (called by an init function in the driver, probably using gcc/clang + * __constructor__ attribute. + * + * @param drv_param Pointer to a driver registration structure. + * @return 0 on success, non-zero on error. On error, drivers + * should release allocated resources and return. + */ +int odpdrv_driver_register(odpdrv_driver_param_t *drv_param); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#include <odp/visibility_end.h> +#endif diff --git a/platform/Makefile.inc b/platform/Makefile.inc index b31b95b..69ee878 100644 --- a/platform/Makefile.inc +++ b/platform/Makefile.inc @@ -67,6 +67,7 @@ odpdrvspecinclude_HEADERS = \ $(top_srcdir)/include/odp/drv/spec/barrier.h \ $(top_srcdir)/include/odp/drv/spec/byteorder.h \ $(top_srcdir)/include/odp/drv/spec/compiler.h \ + $(top_srcdir)/include/odp/drv/spec/driver.h \ $(top_srcdir)/include/odp/drv/spec/shm.h \ $(top_srcdir)/include/odp/drv/spec/spinlock.h \ $(top_srcdir)/include/odp/drv/spec/std_types.h \
The driver registration function (and a draft of its parameters) is defined, the goal being to define the driver registration framework only. Signed-off-by: Christophe Milard <christophe.milard@linaro.org> --- include/odp/drv/spec/driver.h | 76 +++++++++++++++++++++++++++++++++++++++++++ platform/Makefile.inc | 1 + 2 files changed, 77 insertions(+) create mode 100644 include/odp/drv/spec/driver.h -- 2.7.4