X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7b8a1bcad75628f9add4590db2bb9b8e418ee8eb..refs/heads/nov/intr-tree:/lunaix-os/kernel/kprint/kprintf.c?ds=inline diff --git a/lunaix-os/kernel/kprint/kprintf.c b/lunaix-os/kernel/kprint/kprintf.c index 310b1f6..02bc0ee 100644 --- a/lunaix-os/kernel/kprint/kprintf.c +++ b/lunaix-os/kernel/kprint/kprintf.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -23,7 +24,7 @@ static struct kp_records kprecs = { .max_recs = MAX_KPENT_NUM, .kp_ent_wp = &kprecs.kp_ents.ents }; -export_symbol(debug, kprecs); +export_symbol(debug, kprintf, kprecs); static char* shift_level(const char* str, int* level) @@ -38,6 +39,16 @@ shift_level(const char* str, int* level) return str; } +static inline void +kprintf_put(int level, const char* buf, size_t sz) +{ + kprec_put(&kprecs, level, buf, sz); + + if (likely(sysconsole)) { + sysconsole->ops.write(sysconsole, buf, 0, sz); + } +} + static inline void kprintf_ml(const char* component, int level, const char* fmt, va_list args) { @@ -45,11 +56,7 @@ kprintf_ml(const char* component, int level, const char* fmt, va_list args) ksnprintf(buf, MAX_BUFSZ_HLF, "%s: %s\n", component, fmt); size_t sz = ksnprintfv(tmp_buf, buf, MAX_BUFSZ_HLF, args); - kprec_put(&kprecs, level, tmp_buf, sz); - - if (likely(sysconsole)) { - sysconsole->ops.write(sysconsole, tmp_buf, 0, sz); - } + kprintf_put(level, tmp_buf, sz); } void @@ -61,6 +68,15 @@ kprintf_m(const char* component, const char* fmt, va_list args) kprintf_ml(component, level, fmt, args); } +void +kprintf_v(const char* component, const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + kprintf_m(component, fmt, args); + va_end(args); +} + static void __twimap_kprintf_read(struct twimap* map) { @@ -87,7 +103,8 @@ kprintf_mapping_init() EXPORT_TWIFS_PLUGIN(kprintf, kprintf_mapping_init); -static void kprintf_init() { +void +kprintf_dump_logs() { if (unlikely(!sysconsole)) { return; } @@ -98,9 +115,9 @@ static void kprintf_init() { sysconsole->ops.write(sysconsole, pos->content, 0, pos->len); } } -lunaix_initfn(kprintf_init, call_on_postboot); -__DEFINE_LXSYSCALL3(void, syslog, int, level, const char*, fmt, va_list, args) +__DEFINE_LXSYSCALL3(void, syslog, int, level, + const char*, buf, unsigned int, size) { - kprintf_ml("syslog", level, fmt, args); + kprintf_put(level, buf, size); } \ No newline at end of file