|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 1/5] include: Provide ANSI control sequence helper
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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |