[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 |