diff options
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/arch/i386/pic.h | 9 | ||||
| -rw-r--r-- | kernel/include/arch/i386/ps2_controller.h | 11 | ||||
| -rw-r--r-- | kernel/include/arch/i386/tmtty.h | 22 | ||||
| -rw-r--r-- | kernel/include/dev/ps2kbd.h | 6 | ||||
| -rw-r--r-- | kernel/include/io.h | 32 | ||||
| -rw-r--r-- | kernel/include/stdio.h | 18 | ||||
| -rw-r--r-- | kernel/include/stdlib.h | 15 | ||||
| -rw-r--r-- | kernel/include/string.h | 20 | ||||
| -rw-r--r-- | kernel/include/sys/cdefs.h | 6 |
9 files changed, 139 insertions, 0 deletions
diff --git a/kernel/include/arch/i386/pic.h b/kernel/include/arch/i386/pic.h new file mode 100644 index 0000000..5389086 --- /dev/null +++ b/kernel/include/arch/i386/pic.h @@ -0,0 +1,9 @@ +#ifndef i386_PIC_H
+#define i386_PIC_H
+
+extern "C" void pic_remap(int, int);
+void pic_send_eoi(unsigned char);
+void irq_set_mask(unsigned char);
+void irq_clear_mask(unsigned char);
+
+#endif
\ No newline at end of file diff --git a/kernel/include/arch/i386/ps2_controller.h b/kernel/include/arch/i386/ps2_controller.h new file mode 100644 index 0000000..6faa45d --- /dev/null +++ b/kernel/include/arch/i386/ps2_controller.h @@ -0,0 +1,11 @@ +#ifndef PS2_CONTROLLER_H
+#define PS2_CONTROLLER_H
+
+void initialize_ps2_controller();
+int ps2_dev_send_command(int, unsigned char);
+void inputbuffer_wait();
+void outputbuffer_wait();
+bool inputbuffer_check();
+bool outputbuffer_check();
+
+#endif
\ No newline at end of file diff --git a/kernel/include/arch/i386/tmtty.h b/kernel/include/arch/i386/tmtty.h new file mode 100644 index 0000000..6c65d25 --- /dev/null +++ b/kernel/include/arch/i386/tmtty.h @@ -0,0 +1,22 @@ +#ifndef TEXTMODE_TTY_H
+#define TEXTMODE_TTY_H
+
+#include <stddef.h>
+
+/* Text mode tty */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void terminal_initialize(void);
+void terminal_putchar(char c);
+void terminal_write(const char* data, size_t size);
+void terminal_writestring(const char* data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file diff --git a/kernel/include/dev/ps2kbd.h b/kernel/include/dev/ps2kbd.h new file mode 100644 index 0000000..2d1ecc2 --- /dev/null +++ b/kernel/include/dev/ps2kbd.h @@ -0,0 +1,6 @@ +#ifndef PS2_KBD_H
+#define PS2_KBD_H
+
+void keyboard_init();
+
+#endif
\ No newline at end of file diff --git a/kernel/include/io.h b/kernel/include/io.h new file mode 100644 index 0000000..b99f0ef --- /dev/null +++ b/kernel/include/io.h @@ -0,0 +1,32 @@ +#ifndef HW_IO_H
+#define HW_IO_H
+
+#include <stdint.h>
+
+// Used for io access
+
+static inline void outb(uint16_t port, uint8_t val)
+{
+ asm volatile ( "outb %0, %1" : : "a"(val), "Nd"(port) :"memory");
+ /* There's an outb %al, $imm8 encoding, for compile-time constant port numbers that fit in 8b. (N constraint).
+ * Wider immediate constants would be truncated at assemble-time (e.g. "i" constraint).
+ * The outb %al, %dx encoding is the only option for all other cases.
+ * %1 expands to %dx because port is a uint16_t. %w1 could be used if we had the port number a wider C type */
+}
+
+static inline uint8_t inb(uint16_t port)
+{
+ uint8_t ret;
+ asm volatile ( "inb %1, %0"
+ : "=a"(ret)
+ : "Nd"(port)
+ : "memory");
+ return ret;
+}
+
+static inline void io_wait(void)
+{
+ outb(0x80, 0);
+}
+
+#endif
\ No newline at end of file diff --git a/kernel/include/stdio.h b/kernel/include/stdio.h new file mode 100644 index 0000000..eb4e45b --- /dev/null +++ b/kernel/include/stdio.h @@ -0,0 +1,18 @@ +#ifndef _STDIO_H
+#define _STDIO_H 1
+
+#define EOF (-1)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int printf(const char* __restrict, ...);
+int putchar(int);
+int puts(const char*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file diff --git a/kernel/include/stdlib.h b/kernel/include/stdlib.h new file mode 100644 index 0000000..1d1ee32 --- /dev/null +++ b/kernel/include/stdlib.h @@ -0,0 +1,15 @@ +#ifndef _STDLIB_H
+#define _STDLIB_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+__attribute__((__noreturn__))
+void abort(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file diff --git a/kernel/include/string.h b/kernel/include/string.h new file mode 100644 index 0000000..4f6b5bd --- /dev/null +++ b/kernel/include/string.h @@ -0,0 +1,20 @@ +#ifndef _STRING_H
+#define _STRING_H 1
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int memcmp(const void*, const void*, size_t);
+void* memcpy(void* __restrict, const void* __restrict, size_t);
+void* memmove(void*, const void*, size_t);
+void* memset(void*, int, size_t);
+size_t strlen(const char*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file diff --git a/kernel/include/sys/cdefs.h b/kernel/include/sys/cdefs.h new file mode 100644 index 0000000..1e2c277 --- /dev/null +++ b/kernel/include/sys/cdefs.h @@ -0,0 +1,6 @@ +#ifndef _SYS_CDEFS_H
+#define _SYS_CDEFS_H 1
+
+
+
+#endif
\ No newline at end of file |
