[PATCH 1/2] menu: Make some parts of the menu available to other components

Schrempf Frieder frieder.schrempf at kontron.de
Tue Dec 10 16:47:40 CET 2019


From: Frieder Schrempf <frieder.schrempf at kontron.de>

In order to iterate over the menu entries and match for a specific
name in the pxe boot, we need to properly export the needed structs
and functions.

Signed-off-by: Frieder Schrempf <frieder.schrempf at kontron.de>
---
 common/menu.c  | 31 +------------------------------
 include/menu.h | 34 +++++++++++++++++++++++++++++++++-
 2 files changed, 34 insertions(+), 31 deletions(-)

diff --git a/common/menu.c b/common/menu.c
index 7b66d199a9..82b03f17f7 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -12,36 +12,7 @@
 
 #include "menu.h"
 
-/*
- * Internally, each item in a menu is represented by a struct menu_item.
- *
- * These items will be alloc'd and initialized by menu_item_add and destroyed
- * by menu_item_destroy, and the consumer of the interface never sees that
- * this struct is used at all.
- */
-struct menu_item {
-	char *key;
-	void *data;
-	struct list_head list;
-};
 
-/*
- * The menu is composed of a list of items along with settings and callbacks
- * provided by the user. An incomplete definition of this struct is available
- * in menu.h, but the full definition is here to prevent consumers from
- * relying on its contents.
- */
-struct menu {
-	struct menu_item *default_item;
-	int timeout;
-	char *title;
-	int prompt;
-	void (*item_data_print)(void *);
-	char *(*item_choice)(void *);
-	void *item_choice_data;
-	struct list_head items;
-	int item_cnt;
-};
 
 /*
  * An iterator function for menu items. callback will be called for each item
@@ -51,7 +22,7 @@ struct menu {
  * used for search type operations. It is also safe for callback to remove the
  * item from the list of items.
  */
-static inline void *menu_items_iter(struct menu *m,
+inline void *menu_items_iter(struct menu *m,
 		void *(*callback)(struct menu *, struct menu_item *, void *),
 		void *extra)
 {
diff --git a/include/menu.h b/include/menu.h
index 2d227c20bd..b3f8db87e4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -6,8 +6,40 @@
 #ifndef __MENU_H__
 #define __MENU_H__
 
-struct menu;
+/*
+ * Internally, each item in a menu is represented by a struct menu_item.
+ *
+ * These items will be alloc'd and initialized by menu_item_add and destroyed
+ * by menu_item_destroy, and the consumer of the interface never sees that
+ * this struct is used at all.
+ */
+struct menu_item {
+	char *key;
+	void *data;
+	struct list_head list;
+};
+
+/*
+ * The menu is composed of a list of items along with settings and callbacks
+ * provided by the user. An incomplete definition of this struct is available
+ * in menu.h, but the full definition is here to prevent consumers from
+ * relying on its contents.
+ */
+struct menu {
+	struct menu_item *default_item;
+	int timeout;
+	char *title;
+	int prompt;
+	void (*item_data_print)(void *);
+	char *(*item_choice)(void *);
+	void *item_choice_data;
+	struct list_head items;
+	int item_cnt;
+};
 
+void *menu_items_iter(struct menu *m,
+		void *(*callback)(struct menu *, struct menu_item *, void *),
+		void *extra);
 struct menu *menu_create(char *title, int timeout, int prompt,
 				void (*item_data_print)(void *),
 				char *(*item_choice)(void *),
-- 
2.17.1


More information about the U-Boot mailing list