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

Re: [UNIKRAFT PATCH 1/5] include: Provide ANSI control sequence helper



Hi Simon,

This patch looks good, thanks.

Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>

On Mon, Sep 14, 2020 at 2:22 PM Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote:
>
> Provide ANSI control sequence helper macros with <uk/plat/console.h>. Those
> helpers and definitions can be used by console programs and ANSI console
> drivers (e.g., VGA).
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> ---
>  include/uk/plat/console.h | 65 +++++++++++++++++++++++++++++++++++++--
>  1 file changed, 63 insertions(+), 2 deletions(-)
>
> diff --git a/include/uk/plat/console.h b/include/uk/plat/console.h
> index 8c496ec4..514e88d6 100644
> --- a/include/uk/plat/console.h
> +++ b/include/uk/plat/console.h
> @@ -29,17 +29,78 @@
>   * 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.
> - *
> - * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
>   */
>
>  #ifndef __UKPLAT_CONSOLE_H__
>  #define __UKPLAT_CONSOLE_H__
>
> +#include <uk/essentials.h>
> +
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
>
> +/**
> + * ANSI control sequence helpers
> + */
> +#define __UK_ANSI_INTRO                        "\033["
> +#define __UK_ANSI_CMD0(cmd)            __UK_ANSI_INTRO cmd
> +#define __UK_ANSI_CMD1(cmd, arg)       __UK_ANSI_INTRO arg cmd
> +#define __UK_ANSI_CMD2(cmd, arg0, arg1)        __UK_ANSI_INTRO arg0 ";" arg1 
> cmd
> +#define UK_ANSI_CLEARLINE              __UK_ANSI_CMD0("K")
> +#define UK_ANSI_CLEARSCREEN            __UK_ANSI_CMD1("J", "2")
> +#define UK_ANSI_HOME                   __UK_ANSI_CMD0("H")
> +#define UK_ANSI_UP(n)                  __UK_ANSI_CMD1("A", STRINGIFY(n))
> +#define UK_ANSI_DOWN(n)                        __UK_ANSI_CMD1("B", 
> STRINGIFY(n))
> +#define UK_ANSI_RIGHT(n)               __UK_ANSI_CMD1("C"; STRINGIFY(n))
> +#define UK_ANSI_LEFT(n)                        __UK_ANSI_CMD1("D", 
> STRINGIFY(n))
> +#define UK_ANSI_POS(l, c)              __UK_ANSI_CMD2("H", STRINGIFY(l), \
> +                                                      STRINGIFY(c))
> +
> +#define __UK_ANSI_MOD1(m)              __UK_ANSI_CMD1("m", m)
> +#define __UK_ANSI_MOD2(m0, m1)         __UK_ANSI_CMD2("m", m0, m1)
> +#define UK_ANSI_MOD_RESET              __UK_ANSI_MOD1("0")
> +#define UK_ANSI_MOD_BOLD               __UK_ANSI_MOD1("1")
> +#define UK_ANSI_MOD_UNDERSCORE         __UK_ANSI_MOD1("4")
> +#define UK_ANSI_MOD_BLINK              __UK_ANSI_MOD1("5")
> +#define UK_ANSI_MOD_INVERT             __UK_ANSI_MOD1("7")
> +#define UK_ANSI_MOD_HIDE               __UK_ANSI_MOD1("8")
> +
> +#define __UK_ANSI_MOD_COLOR_FG0                "30"
> +#define __UK_ANSI_MOD_COLOR_FG1                "31"
> +#define __UK_ANSI_MOD_COLOR_FG2                "32"
> +#define __UK_ANSI_MOD_COLOR_FG3                "33"
> +#define __UK_ANSI_MOD_COLOR_FG4                "34"
> +#define __UK_ANSI_MOD_COLOR_FG5                "35"
> +#define __UK_ANSI_MOD_COLOR_FG6                "36"
> +#define __UK_ANSI_MOD_COLOR_FG7                "37"
> +#define __UK_ANSI_MOD_COLOR_BG0                "40"
> +#define __UK_ANSI_MOD_COLOR_BG1                "41"
> +#define __UK_ANSI_MOD_COLOR_BG2                "42"
> +#define __UK_ANSI_MOD_COLOR_BG3                "43"
> +#define __UK_ANSI_MOD_COLOR_BG4                "44"
> +#define __UK_ANSI_MOD_COLOR_BG5                "45"
> +#define __UK_ANSI_MOD_COLOR_BG6                "46"
> +#define __UK_ANSI_MOD_COLOR_BG7                "47"
> +
> +#define UK_ANSI_MOD_COLOR(fg, bg)      __UK_ANSI_MOD2( \
> +                                        UK_CONCAT(__UK_ANSI_MOD_COLOR_FG, 
> fg),\
> +                                        UK_CONCAT(__UK_ANSI_MOD_COLOR_BG, 
> bg))
> +#define UK_ANSI_MOD_COLORFG(fg)                __UK_ANSI_MOD1( \
> +                                        UK_CONCAT(__UK_ANSI_MOD_COLOR_FG, 
> fg))
> +#define UK_ANSI_MOD_COLORBG(bg)                __UK_ANSI_MOD1( \
> +                                        UK_CONCAT(__UK_ANSI_MOD_COLOR_BG, 
> bg))
> +
> +#define UK_ANSI_COLOR_BLACK            0
> +#define UK_ANSI_COLOR_RED              1
> +#define UK_ANSI_COLOR_GREEN            2
> +#define UK_ANSI_COLOR_YELLOW           3
> +#define UK_ANSI_COLOR_BLUE             4
> +#define UK_ANSI_COLOR_MAGENTA          5
> +#define UK_ANSI_COLOR_CYAN             6
> +#define UK_ANSI_COLOR_WHITE            7
> +
> +
>  /**
>   * Outputs a string to kernel console
>   * Note that printing does not stop on null termination
> --
> 2.20.1
>
>



 


Rackspace

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