summaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/lib/kio.h17
-rw-r--r--kernel/include/lib/klib.h9
2 files changed, 18 insertions, 8 deletions
diff --git a/kernel/include/lib/kio.h b/kernel/include/lib/kio.h
index 652a85b..ef22f95 100644
--- a/kernel/include/lib/kio.h
+++ b/kernel/include/lib/kio.h
@@ -31,8 +31,9 @@ void kputs(const char *s);
*
* @param format - the format string
* @param ... - variable args for the format
+ * @returns number of bytes written
*/
-__attribute__((format(printf, 1, 2))) void kprintf(const char *format, ...);
+__attribute__((format(printf, 1, 2))) int kprintf(const char *format, ...);
/**
* prints out a formatted string to a buffer
@@ -42,7 +43,7 @@ __attribute__((format(printf, 1, 2))) void kprintf(const char *format, ...);
* @param ... - variable args for the format
* @returns number of bytes written
*/
-__attribute__((format(printf, 2, 3))) size_t ksprintf(char *restrict s,
+__attribute__((format(printf, 2, 3))) int ksprintf(char *restrict s,
const char *format, ...);
/**
@@ -53,8 +54,9 @@ __attribute__((format(printf, 2, 3))) size_t ksprintf(char *restrict s,
* @param format - the format string
* @param ... - variable args for the format
* @returns number of bytes written
+ * @returns number of bytes that would of been written (past maxlen)
*/
-__attribute__((format(printf, 3, 4))) size_t ksnprintf(char *restrict s,
+__attribute__((format(printf, 3, 4))) int ksnprintf(char *restrict s,
size_t maxlen,
const char *format, ...);
@@ -63,8 +65,9 @@ __attribute__((format(printf, 3, 4))) size_t ksnprintf(char *restrict s,
*
* @param format - the format string
* @param args - variable arg list for the format
+ * @returns number of bytes written
*/
-void kvprintf(const char *format, va_list args);
+int kvprintf(const char *format, va_list args);
/**
* prints out a formatted string to a buffer
@@ -74,7 +77,7 @@ void kvprintf(const char *format, va_list args);
* @param args - variable arg list for the format
* @returns number of bytes written
*/
-size_t kvsprintf(char *restrict s, const char *format, va_list args);
+int kvsprintf(char *restrict s, const char *format, va_list args);
/**
* prints out a formatted string to a buffer with a given max length
@@ -83,9 +86,9 @@ size_t kvsprintf(char *restrict s, const char *format, va_list args);
* @param maxlen - the max len of the buffer
* @param format - the format string
* @param args - variable arg list for the format
- * @returns number of bytes written
+ * @returns number of bytes that would of been written (past maxlen)
*/
-size_t kvsnprintf(char *restrict s, size_t maxlen, const char *format,
+int kvsnprintf(char *restrict s, size_t maxlen, const char *format,
va_list args);
#endif /* kio.h */
diff --git a/kernel/include/lib/klib.h b/kernel/include/lib/klib.h
index 3afe925..cb1de01 100644
--- a/kernel/include/lib/klib.h
+++ b/kernel/include/lib/klib.h
@@ -185,13 +185,20 @@ char *btoa(size_t bytes, char *buf);
*/
unsigned int bound(unsigned int min, unsigned int value, unsigned int max);
+#define __PANIC_STR(x) __PANIC_STR2(x)
+#define __PANIC_STR2(x) #x
+
+#define panic(...) __panic(__PANIC_STR(__LINE__), __FILE__, __VA_ARGS__)
+#define assert(val, ...) do { if (!(val)) { panic(__VA_ARGS__); } } while (0)
+
/**
* Abort the kernel with a given message.
*
* @param format - the format string
* @param ... - variable args for the format
*/
-__attribute__((noreturn)) void panic(const char *format, ...);
+__attribute__((noreturn, format(printf, 3, 4)))
+void __panic(const char *line, const char *file, const char *format, ...);
/**
* Fill dst with a stack trace consisting of return addresses in order