diff options
author | Ian Moffett <ian@osmora.org> | 2025-07-01 21:16:58 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-07-01 21:16:58 -0400 |
commit | 5af7b47284b63715e1599b07873ebeb5f9edb257 (patch) | |
tree | 270911a871dc59abe7c7306d5b85ad777e33b9a9 /sys | |
parent | 65f1d611cfad98817a2b6d350737f38638a57f96 (diff) |
kernel: console: Introduce cons_screen features
Introduce a 'feat' field in the cons_screen structure to allow certain
console features to be turned on or off.
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/cons/cons.c | 3 | ||||
-rw-r--r-- | sys/dev/cons/cons_ansi.c | 8 | ||||
-rw-r--r-- | sys/include/dev/cons/cons.h | 2 | ||||
-rw-r--r-- | sys/include/sys/console.h | 44 |
4 files changed, 57 insertions, 0 deletions
diff --git a/sys/dev/cons/cons.c b/sys/dev/cons/cons.c index 8470a60..3eb7c33 100644 --- a/sys/dev/cons/cons.c +++ b/sys/dev/cons/cons.c @@ -488,7 +488,10 @@ void cons_init(void) { struct fbdev fbdev = fbdev_get(); + struct console_feat *featp; + featp = &g_root_scr.feat; + featp->ansi_esc = 1; g_root_scr.ch_col = 0; g_root_scr.ch_row = 0; g_root_scr.fg = CONSOLE_FG; diff --git a/sys/dev/cons/cons_ansi.c b/sys/dev/cons/cons_ansi.c index fafb4ff..e00bdc9 100644 --- a/sys/dev/cons/cons_ansi.c +++ b/sys/dev/cons/cons_ansi.c @@ -29,6 +29,7 @@ #include <sys/types.h> #include <sys/cdefs.h> +#include <sys/console.h> #include <dev/cons/cons.h> #include <dev/cons/ansi.h> #include <string.h> @@ -61,6 +62,8 @@ int ansi_feed(struct ansi_state *statep, char c) { struct cons_screen *scr = &g_root_scr; + struct console_feat *featp; + /* Standard colors */ static uint32_t colortab[] = { @@ -70,6 +73,11 @@ ansi_feed(struct ansi_state *statep, char c) ANSI_CYAN, ANSI_WHITE }; + featp = &scr->feat; + if (!featp->ansi_esc) { + return 0; + } + /* * Handle the control sequence introducer * bytes. diff --git a/sys/include/dev/cons/cons.h b/sys/include/dev/cons/cons.h index 7599dd5..aa9d8e3 100644 --- a/sys/include/dev/cons/cons.h +++ b/sys/include/dev/cons/cons.h @@ -32,6 +32,7 @@ #include <sys/types.h> #include <sys/spinlock.h> +#include <sys/console.h> #include <dev/video/fbdev.h> #include <dev/cons/consvar.h> #include <dev/cons/ansi.h> @@ -47,6 +48,7 @@ struct cons_char { struct cons_screen { struct fbdev fbdev; struct ansi_state ansi_s; + struct console_feat feat; /* Features */ uint32_t fg; uint32_t bg; diff --git a/sys/include/sys/console.h b/sys/include/sys/console.h new file mode 100644 index 0000000..8ab333f --- /dev/null +++ b/sys/include/sys/console.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2023-2025 Ian Marco Moffett and the Osmora Team. + * 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 Hyra 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 OWNER 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 _SYS_CONSOLE_H_ +#define _SYS_CONSOLE_H_ + +#include <sys/types.h> + +/* + * Console features + * + * @ansi_esc: If 1, ANSI escape codes are enabled + */ +struct console_feat { + uint8_t ansi_esc : 1; +}; + +#endif /* !_SYS_CONSOLE_H_ */ |