summaryrefslogtreecommitdiff
path: root/sys/include/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/include/dev')
-rw-r--r--sys/include/dev/cons/cons.h5
-rw-r--r--sys/include/dev/cons/consvar.h84
2 files changed, 89 insertions, 0 deletions
diff --git a/sys/include/dev/cons/cons.h b/sys/include/dev/cons/cons.h
index 8e2c2c6..3569c52 100644
--- a/sys/include/dev/cons/cons.h
+++ b/sys/include/dev/cons/cons.h
@@ -33,11 +33,14 @@
#include <sys/types.h>
#include <sys/spinlock.h>
#include <dev/video/fbdev.h>
+#include <dev/cons/consvar.h>
struct cons_char {
char c;
uint32_t fg;
uint32_t bg;
+ uint32_t x;
+ uint32_t y;
};
struct cons_screen {
@@ -53,6 +56,8 @@ struct cons_screen {
uint32_t ch_row; /* Current row */
uint32_t curs_col; /* Cursor col */
uint32_t curs_row; /* Cursor row */
+ struct cons_buf *ib; /* Input buffer */
+ struct cons_buf **ob; /* Output buffers */
struct cons_char last_chr;
struct spinlock lock;
};
diff --git a/sys/include/dev/cons/consvar.h b/sys/include/dev/cons/consvar.h
new file mode 100644
index 0000000..483d5f1
--- /dev/null
+++ b/sys/include/dev/cons/consvar.h
@@ -0,0 +1,84 @@
+/*
+ * 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 _DEV_CONSVAR_H_
+#define _DEV_CONSVAR_H_
+
+#include <sys/types.h>
+#include <sys/param.h>
+
+/* Buffer types */
+#define CONS_BUF_INPUT 0
+#define CONS_BUF_OUTPUT 1
+
+/* Buffer flags */
+#define CONS_BUF_CLEAN BIT(0) /* Not recently written to */
+
+extern struct cons_screen scr;
+
+/*
+ * The keyboard packet is two bytes
+ * and the bits are as follows:
+ *
+ * - 0:7 ~ ASCII character
+ * - 8:15 ~ Scancode
+ */
+struct cons_input {
+ union {
+ uint8_t chr;
+ uint8_t scancode;
+ };
+ uint16_t data;
+};
+
+/*
+ * A circular buffer for buffering
+ * keyboard input or console output.
+ */
+struct cons_buf {
+ union {
+ struct cons_input *ibuf;
+ struct cons_char *obuf;
+ void *raw;
+ };
+ uint8_t tail;
+ uint8_t head;
+ uint8_t type;
+ uint8_t flags;
+ size_t len;
+};
+
+struct cons_buf *cons_new_buf(uint8_t type, size_t len);
+int cons_obuf_push(struct cons_buf *bp, struct cons_char c);
+int cons_obuf_pop(struct cons_buf *bp, struct cons_char *res);
+
+int cons_ibuf_push(struct cons_screen *scr, struct cons_input input);
+int cons_ibuf_pop(struct cons_screen *scr, struct cons_input *res);
+
+#endif /* !_DEV_CONSVAR_H_ */