Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
console.c File Reference
#include <console/console.h>
#include <hal/graphic/graphic.h>
#include <libk/serial.h>
#include <memory/kalloc.h>
#include <spinlock.h>
#include <str.h>
#include <type.h>
#include <hal/cpu/irq_lock.h>

Go to the source code of this file.

Data Structures

struct  console_entry_t
 
struct  console_ring_buffer_t
 

Macros

#define SLOT_EMPTY   0x00
 
#define SLOT_WRITING   0xFE
 
#define SLOT_DROPPED   0xFF
 
#define CONSOLE_BUFFER_SIZE   2048
 
#define CONSOLE_BUFFER_MASK   (CONSOLE_BUFFER_SIZE - 1)
 
#define SPIN_LIMIT   500000u
 
#define FLUSH_TEMP()
 

Functions

static void do_scroll (void)
 
static void advance_cursor (void)
 
static void put_char_raw (char c, uint32_t color)
 
static bool reserve_slot (uint32_t *out_idx)
 
static void put_into_buffer (const char *str, uint8_t len, uint32_t color)
 
static void console_flush (void)
 
int console_get_pos_x (void)
 
int console_get_pos_y (void)
 
void console_println (const char *str)
 
void console_print (const char *str, uint64_t len)
 
static char * val_to_str (uint64_t val, uint64_t base)
 
static void vprintf_internal (const char *fmt, __builtin_va_list args)
 
void console_printf (const char *fmt,...)
 
void console_vaprintf (const char *fmt, __builtin_va_list args)
 
void console_newline (void)
 
void console_chfg (uint32_t color)
 
void console_add_space (int n)
 
void console_set_pos (int x, int y)
 

Variables

static console_ring_buffer_t __console_buffer = {0}
 
static volatile unsigned char __console_flush_lock = 0
 
static spinlock_t __console_producer_lock = {0}
 
static int pos_x = 0
 
static int pos_y = 0
 
static uint32_t fgcolor = 0xFFFFFFFF
 

Macro Definition Documentation

◆ CONSOLE_BUFFER_MASK

#define CONSOLE_BUFFER_MASK   (CONSOLE_BUFFER_SIZE - 1)

Definition at line 14 of file console.c.

Referenced by console_flush(), and reserve_slot().

◆ CONSOLE_BUFFER_SIZE

#define CONSOLE_BUFFER_SIZE   2048

Definition at line 13 of file console.c.

Referenced by reserve_slot().

◆ FLUSH_TEMP

#define FLUSH_TEMP ( )
Value:
if (tidx > 0) { \
put_into_buffer(temp, (uint8_t)tidx, fgcolor); \
tidx = 0; \
}
static uint32_t fgcolor
Definition console.c:35
unsigned char uint8_t
Definition type.h:7

Referenced by vprintf_internal().

◆ SLOT_DROPPED

#define SLOT_DROPPED   0xFF

Definition at line 11 of file console.c.

Referenced by console_flush(), put_into_buffer(), put_into_buffer(), and serial2_flush().

◆ SLOT_EMPTY

#define SLOT_EMPTY   0x00

◆ SLOT_WRITING

#define SLOT_WRITING   0xFE

Definition at line 10 of file console.c.

Referenced by console_flush(), put_into_buffer(), put_into_buffer(), and serial2_flush().

◆ SPIN_LIMIT

#define SPIN_LIMIT   500000u

Definition at line 15 of file console.c.

Referenced by console_flush(), put_into_buffer(), put_into_buffer(), and serial2_flush().

Function Documentation

◆ advance_cursor()

static void advance_cursor ( void )
static

Definition at line 44 of file console.c.

References do_scroll(), pos_x, pos_y, screen_cols(), and screen_rows().

Referenced by put_char_raw().

◆ console_add_space()

void console_add_space ( int n)

◆ console_chfg()

void console_chfg ( uint32_t color)

Definition at line 351 of file console.c.

References fgcolor.

Referenced by kernel_debug_impl().

◆ console_flush()

◆ console_get_pos_x()

int console_get_pos_x ( void )

Definition at line 169 of file console.c.

References pos_x.

◆ console_get_pos_y()

int console_get_pos_y ( void )

Definition at line 170 of file console.c.

References pos_y.

◆ console_newline()

void console_newline ( void )

◆ console_print()

void console_print ( const char * str,
uint64_t len )

Definition at line 179 of file console.c.

References console_flush(), fgcolor, len, put_into_buffer(), and str().

◆ console_printf()

void console_printf ( const char * fmt,
... )

◆ console_println()

void console_println ( const char * str)

Definition at line 172 of file console.c.

References console_flush(), fgcolor, len, put_into_buffer(), str(), and strlen().

◆ console_set_pos()

void console_set_pos ( int x,
int y )

Definition at line 371 of file console.c.

References pos_x, pos_y, x, and y.

Referenced by start_tty().

◆ console_vaprintf()

void console_vaprintf ( const char * fmt,
__builtin_va_list args )

◆ do_scroll()

static void do_scroll ( void )
static

Definition at line 37 of file console.c.

References FONT_SIZE, pos_x, pos_y, rows, screen_rows(), and vxScroll().

Referenced by advance_cursor(), put_char_raw(), and tty_check_and_flush().

◆ put_char_raw()

static void put_char_raw ( char c,
uint32_t color )
static

Definition at line 54 of file console.c.

References advance_cursor(), BLACK, do_scroll(), next, pos_x, pos_y, putc(), and screen_rows().

Referenced by console_flush().

◆ put_into_buffer()

◆ reserve_slot()

static bool reserve_slot ( uint32_t * out_idx)
static

Definition at line 76 of file console.c.

References __console_buffer, CONSOLE_BUFFER_MASK, CONSOLE_BUFFER_SIZE, head, and tail.

Referenced by put_into_buffer().

◆ val_to_str()

static char * val_to_str ( uint64_t val,
uint64_t base )
static

Definition at line 189 of file console.c.

References base, kalloc(), and NULL.

Referenced by vprintf_internal().

◆ vprintf_internal()

static void vprintf_internal ( const char * fmt,
__builtin_va_list args )
static

Definition at line 214 of file console.c.

References fgcolor, FLUSH_TEMP, kfree2(), put_into_buffer(), strlen(), and val_to_str().

Referenced by console_printf(), and console_vaprintf().

Variable Documentation

◆ __console_buffer

console_ring_buffer_t __console_buffer = {0}
static

Definition at line 29 of file console.c.

Referenced by console_flush(), put_into_buffer(), and reserve_slot().

◆ __console_flush_lock

volatile unsigned char __console_flush_lock = 0
static

Definition at line 30 of file console.c.

Referenced by console_flush().

◆ __console_producer_lock

spinlock_t __console_producer_lock = {0}
static

Definition at line 31 of file console.c.

Referenced by console_add_space(), console_newline(), console_printf(), and console_vaprintf().

◆ fgcolor

uint32_t fgcolor = 0xFFFFFFFF
static

◆ pos_x

int pos_x = 0
static

Definition at line 33 of file console.c.

Referenced by advance_cursor(), console_get_pos_x(), console_set_pos(), do_scroll(), and put_char_raw().

◆ pos_y

int pos_y = 0
static

Definition at line 34 of file console.c.

Referenced by advance_cursor(), console_get_pos_y(), console_set_pos(), do_scroll(), and put_char_raw().