summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>2014-12-15 14:57:35 +1100
committerSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>2015-05-05 15:02:43 +1000
commit366ff957d2900eae6d26ad2f002b735302e7eb41 (patch)
treed47ece2860a00a0d462c1a9fc667edc2949a01f0
parent11996807cd4e79e35742aa4c4e19c6500141dfcc (diff)
downloadtalos-petitboot-366ff957d2900eae6d26ad2f002b735302e7eb41.tar.gz
talos-petitboot-366ff957d2900eae6d26ad2f002b735302e7eb41.zip
lib: Define autoboot_options, device_type helpers
Add the new autoboot_option struct, and helper functions for working with device_type enums. device_type_name() returns exact strings as used by platform code to read/write nvram params, so device_type_display_name() is added for use in user-visible strings. Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
-rw-r--r--discover/platform.c17
-rw-r--r--lib/Makefile.am1
-rw-r--r--lib/types/types.c51
-rw-r--r--lib/types/types.h15
4 files changed, 67 insertions, 17 deletions
diff --git a/discover/platform.c b/discover/platform.c
index 04798ac..4451589 100644
--- a/discover/platform.c
+++ b/discover/platform.c
@@ -17,23 +17,6 @@ static struct config *config;
static const char *kernel_cmdline_debug = "petitboot.debug";
-static const char *device_type_name(enum device_type type)
-{
- switch (type) {
- case DEVICE_TYPE_DISK:
- return "disk";
- case DEVICE_TYPE_OPTICAL:
- return "optical";
- case DEVICE_TYPE_NETWORK:
- return "network";
- case DEVICE_TYPE_ANY:
- return "any";
- case DEVICE_TYPE_UNKNOWN:
- default:
- return "unknown";
- }
-}
-
static void dump_config(struct config *config)
{
unsigned int i;
diff --git a/lib/Makefile.am b/lib/Makefile.am
index fbf2ee2..b39cc9b 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -38,6 +38,7 @@ lib_libpbcore_la_SOURCES = \
lib/pb-config/pb-config.h \
lib/process/process.c \
lib/process/process.h \
+ lib/types/types.c \
lib/types/types.h \
lib/talloc/talloc.c \
lib/talloc/talloc.h \
diff --git a/lib/types/types.c b/lib/types/types.c
new file mode 100644
index 0000000..059e52a
--- /dev/null
+++ b/lib/types/types.c
@@ -0,0 +1,51 @@
+#include <string.h>
+#include <types/types.h>
+#include <i18n/i18n.h>
+
+const char *device_type_display_name(enum device_type type)
+{
+ switch (type) {
+ case DEVICE_TYPE_DISK:
+ return _("Disk");
+ case DEVICE_TYPE_OPTICAL:
+ return _("Optical");
+ case DEVICE_TYPE_NETWORK:
+ return _("Network");
+ case DEVICE_TYPE_ANY:
+ return _("Any");
+ case DEVICE_TYPE_UNKNOWN:
+ default:
+ return _("Unknown");
+ }
+}
+
+const char *device_type_name(enum device_type type)
+{
+ switch (type) {
+ case DEVICE_TYPE_DISK:
+ return "disk";
+ case DEVICE_TYPE_OPTICAL:
+ return "optical";
+ case DEVICE_TYPE_NETWORK:
+ return "network";
+ case DEVICE_TYPE_ANY:
+ return "any";
+ case DEVICE_TYPE_UNKNOWN:
+ default:
+ return "unknown";
+ }
+}
+
+enum device_type find_device_type(const char *str)
+{
+ if (!strncmp(str, "disk", strlen("disk")))
+ return DEVICE_TYPE_DISK;
+ if (!strncmp(str, "optical", strlen("optical")))
+ return DEVICE_TYPE_OPTICAL;
+ if (!strncmp(str, "network", strlen("network")))
+ return DEVICE_TYPE_NETWORK;
+ if (!strncmp(str, "any", strlen("any")))
+ return DEVICE_TYPE_ANY;
+
+ return DEVICE_TYPE_UNKNOWN;
+}
diff --git a/lib/types/types.h b/lib/types/types.h
index f543b7f..e22dbc3 100644
--- a/lib/types/types.h
+++ b/lib/types/types.h
@@ -13,6 +13,10 @@ enum device_type {
DEVICE_TYPE_UNKNOWN,
};
+const char *device_type_display_name(enum device_type type);
+const char *device_type_name(enum device_type type);
+enum device_type find_device_type(const char *str);
+
struct device {
char *id;
enum device_type type;
@@ -118,6 +122,17 @@ struct boot_priority {
enum device_type type;
};
+struct autoboot_option {
+ enum {
+ BOOT_DEVICE_TYPE,
+ BOOT_DEVICE_UUID
+ } boot_type;
+ union {
+ enum device_type type;
+ char *uuid;
+ };
+};
+
struct config {
bool autoboot_enabled;
unsigned int autoboot_timeout_sec;
OpenPOWER on IntegriCloud