[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT PATCH 4/5] lib/ukboot: Additional Unikraft banners



Adds additional Unikraft banners to choose from. The "Powered by" banners are
intended to be the text-version of the official Unikraft project logo. The most
compatible variant (non-UTF8, non-extended ASCII) is set as the new default.

Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
 lib/ukboot/Config.uk   | 30 +++++++++++++--
 lib/ukboot/Makefile.uk |  3 ++
 lib/ukboot/banner.c    | 84 ++++++++++++++++++++++++++++++++++++++++++
 lib/ukboot/banner.h    | 50 +++++++++++++++++++++++++
 lib/ukboot/boot.c      | 11 ++----
 5 files changed, 167 insertions(+), 11 deletions(-)
 create mode 100644 lib/ukboot/banner.c
 create mode 100644 lib/ukboot/banner.h

diff --git a/lib/ukboot/Config.uk b/lib/ukboot/Config.uk
index 07139e2b..55550fe3 100644
--- a/lib/ukboot/Config.uk
+++ b/lib/ukboot/Config.uk
@@ -9,9 +9,33 @@ menuconfig LIBUKBOOT
        # FIXME: binary buddy allocator is hard-coded for now
 
 if LIBUKBOOT
-       config LIBUKBOOT_BANNER
-       bool "Show Unikraft banner"
-       default y
+       choice LIBUKBOOT_BANNER
+       prompt "Unikraft banner"
+       default LIBUKBOOT_BANNER_POWEREDBY
+               config LIBUKBOOT_BANNER_NONE
+               bool "None"
+
+               config LIBUKBOOT_BANNER_MINIMAL
+               bool "One liner"
+
+               config LIBUKBOOT_BANNER_CLASSIC
+               bool "Classic banner"
+
+               config LIBUKBOOT_BANNER_POWEREDBY
+               bool "Powered by Unikraft"
+
+               config LIBUKBOOT_BANNER_POWEREDBY_EA
+               bool "Powered by Unikraft (ASCII)"
+               help
+                 Please make sure that your console display supports
+                 extended ASCII characters
+
+               config LIBUKBOOT_BANNER_POWEREDBY_U8
+               bool "Powered by Unikraft (UTF-8)"
+               help
+                 Please make sure that your console display supports
+                 UTF-8
+       endchoice
 
        config LIBUKBOOT_MAXNBARGS
        int "Maximum number of arguments (max. size of argv)"
diff --git a/lib/ukboot/Makefile.uk b/lib/ukboot/Makefile.uk
index ea052019..9c10e5e4 100644
--- a/lib/ukboot/Makefile.uk
+++ b/lib/ukboot/Makefile.uk
@@ -5,6 +5,9 @@ CXXINCLUDES-$(CONFIG_LIBUKBOOT) += -I$(LIBUKBOOT_BASE)/include
 
 LIBUKBOOT_SRCS-y += $(LIBUKBOOT_BASE)/boot.c
 LIBUKBOOT_SRCS-y += $(LIBUKBOOT_BASE)/version.c
+ifneq ($(CONFIG_LIBUKBOOT_BANNER_NONE),y)
+LIBUKBOOT_SRCS-y += $(LIBUKBOOT_BASE)/banner.c
+endif
 
 # The main() is in the separate library to fool the LTO. Which is
 # trying to resolve the main() function call to whatever is available
diff --git a/lib/ukboot/banner.c b/lib/ukboot/banner.c
new file mode 100644
index 00000000..bc45b6aa
--- /dev/null
+++ b/lib/ukboot/banner.c
@@ -0,0 +1,84 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/*
+ * Unikraft Banner
+ *
+ * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
+ *
+ *
+ * Copyright (c) 2020, NEC Laboratories Europe GmbH, NEC Corporation.
+ *                     All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <uk/config.h>
+#include <stdio.h>
+
+
+void print_banner(FILE *out) {
+#if CONFIG_LIBUKBOOT_BANNER_POWEREDBY
+       fprintf(out, "Powered by\n");
+       fprintf(out, "o.   .o       _ _               __ _\n");
+       fprintf(out, "Oo   Oo  ___ (_) | __ __  __ _ ' _) :_\n");
+       fprintf(out, "oO   oO ' _ `| | |/ /  _)' _` | |_|  _)\n");
+       fprintf(out, "oOo oOO| | | | |   (| | | (_) |  _) :_\n");
+       fprintf(out, " OoOoO ._, ._:_:_,\\_._,  .__,_:_, \\___)\n");
+       fprintf(out, "%39s\n",
+               STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
+
+#elif CONFIG_LIBUKBOOT_BANNER_POWEREDBY_EA
+       fprintf(out, "Powered by\n");
+       fprintf(out, "\xDF\xFE   \xFE\xDC       _ _               __ _\n");
+       fprintf(out, "\xDF\xFE   \xDF\xDC  ___ (_) | __ __  __ _ ' _) :_\n");
+       fprintf(out, "\xDC\xDF   \xDC\xFE ' _ `| | |/ /  _)' _` | |_|  _)\n");
+       fprintf(out, "\xFE\xDF\xFE \xFE\xDC\xDF| | | | |   (| | | (_) |  _) 
:_\n");
+       fprintf(out, " \xFE\xDC\xDF\xDC\xFE ._, ._:_:_,\\_._,  .__,_:_, 
\\___)\n");
+       fprintf(out, "%39s\n",
+               STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
+
+#elif CONFIG_LIBUKBOOT_BANNER_POWEREDBY_U8
+       fprintf(out, "Powered by\n");
+       fprintf(out, "■▖   ▖■       _ _               __ _\n");
+       fprintf(out, "■▚   ■▞  ___ (_) | __ __  __ _ ´ _) :_\n");
+       fprintf(out, "▀■   ■▄ ´ _ `| | |/ /  _)´ _` | |_|  _)\n");
+       fprintf(out, "▄▀▄ ▗▀▄| | | | |   (| | | (_) |  _) :_\n");
+       fprintf(out, " ▚▄■▄▞ ._, ._:_:_,\\_._,  .__,_:_, \\___)\n");
+       fprintf(out, "%39s\n",
+               STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
+
+#elif CONFIG_LIBUKBOOT_BANNER_CLASSIC
+       fprintf(out, "Welcome to  _ __             _____\n");
+       fprintf(out, " __ _____  (_) /__ _______ _/ _/ /_\n");
+       fprintf(out, "/ // / _ \\/ /  '_// __/ _ `/ _/ __/\n");
+       fprintf(out, "\\_,_/_//_/_/_/\\_\\/_/  \\_,_/_/ \\__/\n");
+       fprintf(out, "%35s\n",
+               STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
+
+#else /* CONFIG_LIBUKBOOT_BANNER_MINIMAL  */
+       fprintf(out, "Powered by Unikraft " STRINGIFY(UK_CODENAME)
+               " (" STRINGIFY(UK_FULLVERSION) ")\n");
+#endif
+}
diff --git a/lib/ukboot/banner.h b/lib/ukboot/banner.h
new file mode 100644
index 00000000..906a4acb
--- /dev/null
+++ b/lib/ukboot/banner.h
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/*
+ * Unikraft Banner
+ *
+ * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
+ *
+ *
+ * Copyright (c) 2020, NEC Laboratories Europe GmbH, NEC Corporation.
+ *                     All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _LIBUKBOOT_BANNER_H_
+#define _LIBUKBOOT_BANNER_H_
+
+#include <uk/config.h>
+#include <uk/essentials.h>
+#include <stdio.h>
+
+#if CONFIG_LIBUKBOOT_BANNER_NONE
+static inline void print_banner(FILE *out __unused) { }
+#else
+void print_banner(FILE *out);
+#endif
+
+#endif /* _LIBUKBOOT_BANNER_H_ */
diff --git a/lib/ukboot/boot.c b/lib/ukboot/boot.c
index 3e92812d..a4e12bf7 100644
--- a/lib/ukboot/boot.c
+++ b/lib/ukboot/boot.c
@@ -66,6 +66,7 @@
 #if CONFIG_LIBUKSP
 #include <uk/sp.h>
 #endif
+#include "banner.h"
 
 int main(int argc, char *argv[]) __weak;
 
@@ -101,15 +102,9 @@ static void main_thread_func(void *arg)
                }
        }
 
-#if CONFIG_LIBUKBOOT_BANNER
-       printf("Welcome to  _ __             _____\n");
-       printf(" __ _____  (_) /__ _______ _/ _/ /_\n");
-       printf("/ // / _ \\/ /  '_// __/ _ `/ _/ __/\n");
-       printf("\\_,_/_//_/_/_/\\_\\/_/  \\_,_/_/ \\__/\n");
-       printf("%35s\n",
-              STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
+       print_banner(stdout);
        fflush(stdout);
-#endif
+
        /*
         * Application
         *
-- 
2.20.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.