In order to eventually hide the implementation details of the interface, users will need to be able to create and destroy instances thereof. This patch adds the needed methods.
Signed-off-by: Richard Cochran <richardcoch...@gmail.com> --- interface.c | 19 +++++++++++++++++++ interface.h | 13 +++++++++++++ 2 files changed, 32 insertions(+) diff --git a/interface.c b/interface.c index 74a2512..63ed7e4 100644 --- a/interface.c +++ b/interface.c @@ -4,8 +4,27 @@ * @note Copyright (C) 2020 Richard Cochran <richardcoch...@gmail.com> * @note SPDX-License-Identifier: GPL-2.0+ */ +#include <stdlib.h> #include "interface.h" +struct interface *interface_create(const char *name) +{ + struct interface *iface; + + iface = calloc(1, sizeof(struct interface)); + if (!iface) { + return NULL; + } + interface_set_name(iface, name); + + return iface; +} + +void interface_destroy(struct interface *iface) +{ + free(iface); +} + void interface_ensure_tslabel(struct interface *iface) { if (!iface->ts_label[0]) { diff --git a/interface.h b/interface.h index 32eec7b..b61f4d6 100644 --- a/interface.h +++ b/interface.h @@ -25,6 +25,19 @@ struct interface { struct sk_ts_info ts_info; }; +/** + * Creates an instance of an interface. + * @param name The device which indentifies this interface. + * @return A pointer to an interface instance on success, NULL otherwise. + */ +struct interface *interface_create(const char *name); + +/** + * Destroys an instance of an interface. + * @param iface A pointer obtained via interface_create(). + */ +void interface_destroy(struct interface *iface); + /** * Ensures that an interface has a proper time stamping label. * @param iface The interface of interest. -- 2.20.1 _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel