|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT PATCH 4/5] lib/ukboot: Additional Unikraft banners
Hi Simon,
This patch looks good, thanks.
Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>
On Mon, Sep 14, 2020 at 2:48 PM Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote:
>
> 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
>
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |