Function comments (v1)
This commit is contained in:
@@ -156,6 +156,14 @@ unsigned char kbdfr_shifted[128] =
|
||||
0
|
||||
};
|
||||
|
||||
/*
|
||||
* keyboard_handler - Keyboard event handler
|
||||
*
|
||||
* Is called from the interrupt dispatcher.
|
||||
* When a key is pressed or released, we get a scancode, and
|
||||
* it is then translated to an ASCII character.
|
||||
* Left Shift, Ctrl, and Alt keys are also taken into consideration.
|
||||
*/
|
||||
void keyboard_handler()
|
||||
{
|
||||
unsigned char scancode = inb(0x60);
|
||||
@@ -212,6 +220,12 @@ void keyboard_handler()
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* keyboard_init - Keyboard initialization
|
||||
* @layout: Desired layout
|
||||
*
|
||||
* Prepares the PS/2 keyboard to recieve input.
|
||||
*/
|
||||
void keyboard_init(unsigned char layout)
|
||||
{
|
||||
// Here we might go and select PS/2, USB, or other... (once we implement multiple keyboard protocols)
|
||||
|
||||
@@ -9,11 +9,25 @@
|
||||
|
||||
extern struct init_status init;
|
||||
|
||||
/*
|
||||
* outb - Writes a byte to a CPU port
|
||||
* @port: CPU port to write to
|
||||
* @data: Byte to write
|
||||
*
|
||||
* Writes a single byte to the serial interface.
|
||||
*/
|
||||
void outb(int port, unsigned char data)
|
||||
{
|
||||
__asm__ __volatile__("outb %%al, %%dx" :: "a" (data),"d" (port));
|
||||
}
|
||||
|
||||
/*
|
||||
* inb - Gets a byte in through a CPU port
|
||||
* @port: The CPU port to get a byte from
|
||||
*
|
||||
* Return:
|
||||
* <data> - byte got from port
|
||||
*/
|
||||
unsigned char inb(int port)
|
||||
{
|
||||
unsigned char data = 0;
|
||||
@@ -21,6 +35,13 @@ unsigned char inb(int port)
|
||||
return data;
|
||||
}
|
||||
|
||||
/*
|
||||
* serial_init - Initializes serial interface
|
||||
*
|
||||
* Return:
|
||||
* %-EIO - Input/output error
|
||||
* %0 - Success
|
||||
*/
|
||||
int serial_init()
|
||||
{
|
||||
outb(PORT + 1, 0x00); // Disable all interrupts
|
||||
@@ -45,12 +66,23 @@ int serial_init()
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* is_transmit_empty - Check if the serial transmit register is empty
|
||||
*
|
||||
* Return: Non-zero if the transmit register is empty and a new
|
||||
* byte can be written to the serial port, 0 otherwise.
|
||||
*/
|
||||
static int is_transmit_empty()
|
||||
{
|
||||
return inb(PORT + 5) & 0x20;
|
||||
}
|
||||
|
||||
// Serial kernel putchar
|
||||
/*
|
||||
* skputc - Serial kernel putchar
|
||||
* @c: character to write
|
||||
*
|
||||
* Writes a single character to the serial interface.
|
||||
*/
|
||||
void skputc(char c)
|
||||
{
|
||||
// TODO: Spinlock here (serial access)
|
||||
@@ -58,7 +90,12 @@ void skputc(char c)
|
||||
outb(PORT, c);
|
||||
}
|
||||
|
||||
// Serial kernel putstring
|
||||
/*
|
||||
* skputs - Serial kernel puts
|
||||
* @str: Message to write
|
||||
*
|
||||
* Writes a non-formatted string to serial output.
|
||||
*/
|
||||
void skputs(const char* str)
|
||||
{
|
||||
unsigned int i=0;
|
||||
|
||||
@@ -23,14 +23,22 @@ because this shitty implementation will be replaced one day by Flanterm
|
||||
extern struct flanterm_context* ft_ctx;
|
||||
extern struct init_status init;
|
||||
|
||||
// Overhead that could be avoided, right? (for printf)
|
||||
/*
|
||||
* _putchar - Writes a character to terminal
|
||||
* @character: character to write
|
||||
*/
|
||||
void _putchar(char character)
|
||||
{
|
||||
// TODO: Spinlock here (terminal access)
|
||||
flanterm_write(ft_ctx, &character, 1);
|
||||
}
|
||||
|
||||
// Debug-printing
|
||||
/*
|
||||
* kputs - Kernel puts
|
||||
* @str: String to write
|
||||
*
|
||||
* Writes a non-formatted string to terminal
|
||||
*/
|
||||
void kputs(const char* str)
|
||||
{
|
||||
size_t i=0;
|
||||
@@ -44,12 +52,26 @@ void kputs(const char* str)
|
||||
extern struct flanterm_context* ft_ctx;
|
||||
extern struct boot_context boot_ctx;
|
||||
|
||||
/*
|
||||
* flanterm_free_wrapper - free() wrapper for Flanterm
|
||||
* @ptr: pointer to free
|
||||
* @size: amount of bytes to free
|
||||
*
|
||||
* This function exists solely because the Flanterm initialization
|
||||
* function only accepts a free() function with a size parameter,
|
||||
* and the default one doesn't have it.
|
||||
*/
|
||||
void flanterm_free_wrapper(void* ptr, size_t size)
|
||||
{
|
||||
(void)size;
|
||||
kfree(ptr);
|
||||
}
|
||||
|
||||
/*
|
||||
* term_init - Video output/terminal initialization
|
||||
*
|
||||
* Uses Flanterm and the framebuffer given by Limine.
|
||||
*/
|
||||
void term_init()
|
||||
{
|
||||
uint32_t bgColor = 0x252525;
|
||||
|
||||
Reference in New Issue
Block a user