diff --git a/kernel/uart.cpp b/kernel/uart.cpp index 0d346b08..597bbfb6 100644 --- a/kernel/uart.cpp +++ b/kernel/uart.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 Jonas 'Sortie' Termansen. + * Copyright (c) 2011, 2016 Jonas 'Sortie' Termansen. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -148,6 +148,25 @@ void WriteChar(char c) outport8(PORT + IER, ier); } +void WriteString(const char* str) +{ + Write(str, strlen(str)); +} + +static size_t WriteCallback(void*, const char* chars, size_t size) +{ + Write(chars, size); + return size; +} + +void WriteF(const char* format, ...) +{ + va_list list; + va_start(list, format); + vcbprintf(NULL, WriteCallback, format, list); + va_end(list); +} + int TryPopChar() { // Save the IER and disable interrupts. diff --git a/kernel/uart.h b/kernel/uart.h index dfc4e588..73c92a2d 100644 --- a/kernel/uart.h +++ b/kernel/uart.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 Jonas 'Sortie' Termansen. + * Copyright (c) 2011, 2016 Jonas 'Sortie' Termansen. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -27,6 +27,9 @@ void Init(); void Read(uint8_t* buffer, size_t size); void Write(const void* buffer, size_t size); void WriteChar(char c); +void WriteString(const char* str); +__attribute__((format(printf, 1, 2))) +void WriteF(const char* format, ...); int TryPopChar(); } // namespace UART